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

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

ID:51998817

大小:66.50 KB

页数:8页

时间:2020-03-21

数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc_第1页
数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc_第2页
数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc_第3页
数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc_第4页
数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc_第5页
资源描述:

《数据结构_运用链栈实现10进制到8进制和16进制的转换运用堆栈实现逆波兰表达式源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、〃定义链栈〃链栈初始化〃数据入栈〃数据出栈1.实验题目(1)运用链栈实现10进制到8进制和16进制的转换。(2)运用堆栈实现逆波兰表达式2.需求分析入栈的顺序和出栈的顺序对程序的影响,计算方法是“除N取余法”,并且把得出的结果逆序输岀,恰好满足栈先入示出的结构顺序。需要注意逆波兰表达式的执行顺序。3.概要设计(1)主函数main()。(2)定义链栈并初始化ListCall(CaH=(Ca)malloc(sizeof(Calu));(*H)->next=NULL;(*H)->data=O;}intpush(Cal

2、u*top,intx){Calu*temp;temp=(Calu*)malloc(sizeof(Calu));if(temp==NULL)return0;temp->data=x;temp->next二top->next;top->next二temp;return1;}intOut(Calu*top,int*x)H)(3)元素入栈函数push()(4)元素出栈函数Out()(5)表达式计算函数4.详细设计(1)10进制到8进制和16进制的转换代码:#include#include

3、.h>typedefstructcalculate{intdata;structcalculate*next;}Calu,*Ca;CaCal;voidUstCal(Ca*H)Calu*temp;temp=top->next;if(temp==NULL)return0;toponext=temp->next;*x=temp->data;free(temp);return*x;}intmain(){charanswer='yr;intnum,num2,numl,num3J;ListCal(&Cal);while(a

4、nswer=='y‘){fflush(stdin);numl二0;num3=0;i=0;printfC'iW输入十进制数NH);scanf(”%d”,&num);numl二num;while(numl!=0){num2=numl%8;numl=num昭;push(Cal,num2);i++;}printfC'Ndiv8=");while(i!=0){printf("%d"/Out(Cal,&num3));i-;}printf(””);while(num!=0){num2=num%16;num=num/1

5、6;push(Cal,num2);//num为十进制数。numl,//num2储存余数,numl储存商〃初始化〃八进制数计算〃并将每个计算结果存入栈中〃计算8进制位数〃将栈屮数据导出,出栈的顺序与进栈顺序相反//16进制数运算〃同样进栈i++;〃计算16进制位数}printfC'Ndiv16=");while(i!=O){printf("%d"/0ut(Cal,&num3));i-;}printfC'calculateagain?(y/n)");scanf("%c'&answer);}system("paus

6、eH);return0;}使用说明:10进制数转8进制和16进制:提示先输入10进制数,得出8进制和16进制数结果,判断是否继续输入,输入Y继续输入,否则结束。测试结果:r*wC:ProgramFiles(x86)MicrosoftVisualStudioMyProjectsgfDebuggf.exeRitS/crSWgXN1234Ndiv8=2322Ndiu16=4132calculateagain?请按任意键继续.••(2)逆波兰表达式代码:#include#incl

7、ude#defineadd43厂运算符加号+'的ASCII码*/#definesubs45厂运算符减号「的ASCII码*/#definemult42厂运算符乘号的ASCH码*/#definediv47广运算符除号7’的ASCH码*/#defineMAXSIZE100厂定义表达书长度上限为100*/typedefstruct{intstkdata[MAXSIZE];/*用数组来表示栈空间,定义长度为MAXSIZE的栈*/inttop;厂栈顶指针*/}STKzone;typedefSTKzone

8、*STK;/*建立一个新的栈*/typedefenum{True=1,False=0}boo;//boo是O+基本类型,true'false是保留字typedefenum{ok,error}status;STKzoneexpSTKzone;STKexpSTK;STKinitSTK(STKzone*stack_zone){严执行栈初始化,建栈指针*/stack_zone->top=-1;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。