下载此文档

数据结构 运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.docx


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
2013级计科1301班 2015年4月29日
实验题目
运用链栈实现10进制到8进制和16进制的转换。
运用堆栈实现逆波兰表达式
需求分析
入栈的顺序和出栈的顺序对程序的影响,计算方法是“除N取余法”,并且把得出的结果逆序输出,恰好满足栈先入后出的结构顺序。需要注意逆波兰表达式的执行顺序。
3. 概要设计
(1) 主函数main()。
(2) 定义链栈并初始化 ListCall(Ca *H)
(3) 元素入栈函数push()
(4) 元素出栈函数Out()
(5) 表达式计算函数

(1)10进制到8进制和16进制的转换代码:
#include<>
#include<>
typedef struct calculate
{
int data;
struct calculate *next; //定义链栈
}Calu,*Ca;
Ca Ca1;
void ListCal(Ca *H) //链栈初始化
{
*H=(Ca)malloc(sizeof(Calu));
(*H)->next=NULL;
(*H)->data=0;
}
int push(Calu *top,int x) //数据入栈
{
Calu *temp;
temp=(Calu*)malloc(sizeof(Calu));
if(temp==NULL) return 0;
temp->data=x;
temp->next=top->next;
top->next=temp;
return 1;
}
int Out(Calu *top,int *x) //数据出栈
{
Calu *temp;
temp=top->next;
if(temp==NULL) return 0;
top->next=temp->next;
*x=temp->data;
free(temp);
return *x;
}
int main()
{
char answer='y';
int num,num2,num1,num3,i; //num为十进制数。num1,
//num2储存余数,num1储存商
ListCal(&Ca1); //初始化
while(answer=='y')
{
fflush(stdin);
num1=0;
num3=0;
i=0;
printf("请输入十进制数N\n");
scanf("%d",&num);
num1=num;
while(num1!=0)
{
num2=num1%8; //八进制数计算
num1=num1/8; //并将每个计算结果存入栈中
push(Ca1,num2);
i++; //计算8进制位数
}
printf("N div 8=");
while(i!=0)
{
printf("%d",Out(Ca1,&num3)); //将栈中数据导出,出栈的顺序与进栈顺序相反
i--;
}
printf("\n");
while(num!=0)
{
num2=num%16; //16进制

数据结构 运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人buhouhui915
  • 文件大小72 KB
  • 时间2017-11-27
最近更新