下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:中缀表达式转化为后缀表达式算法及其后缀表达式计算算法的实现。内容:掌握栈的存储结构的C语言描述。 掌握中缀表达式和后缀表达式的存储结构。 掌握后缀表达式算法的实现。string1i?=0;读入字符串string1,i=0start流程图:YString1i是否为数字NString2中存放转化好的后缀表达式z后缀表达式结果的计算calcolate()i+先向string2中存入一个空格,再判断该字符类型。为减价乘除号,判断栈顶元素优先级,比其高,先将栈顶元素出栈到string2 中,再将其入栈。为开阔号,直接进栈。为闭括号,将栈顶元素依次弹出存入string2 中,直至遇到开阔号。直接存入
2、字符串string2中YN输出运算结果endcalcolate():依次扫描string2中的字符,遇到数字则将其转化为整型数据存入栈中,遇运算符则将栈中栈顶的两个元素取出参与运算,并将计算结果放入栈中,如此直到运算符全部用完,最后一次运算结果即为后缀表达式的计算结果。程序代码:#include#include#include#include#define MAX 60#define DEMAX 15#define NULL 0char string1MAX;char string2MAX;int j=0;struct node char data;int num;struct node *n
3、ext;struct node *Initialization()/初始化栈链,链栈不带头结点struct node *top;top=(struct node *)malloc(sizeof(struct node);top-data=;top-num=0;top-next=NULL;return top;struct node *assort(struct node *s)/输入字符串struct node *p,*top;int i;top=s;int m;char a;gets(string1);m=strlen(string1); for(i=0;i=m;i+)a=string1i;
4、if(0=string1i&string1idata=a;p-next=top; top=p; break; case *: case /:string2j= ;j+;if(top-data=*)|(top-data=/)string2j=top-data;j+; /比其高,现将栈顶运算符出栈,再进栈。top-data=a;break;elsep=(struct node *)malloc(sizeof(struct node);/否,直接进栈p-data=a;p-next=top;top=p;break; case +: case -:string2j= ;j+;if(top-data=+|
5、top-data=-|top-data=*|top-data=/)string2j=top-data;j+;top-data=a;break;else p=(struct node *)malloc(sizeof(struct node);p-data=a;p-next=top;top=p;break; case ):string2j= ;j+;if(top-data=)printf(input error);break;while(top-data!=()string2j=top-data;j+;p=top;top=top-next;free(p); p=top;top=top-next;f
6、ree(p);break;while(top-data!=)string2j=top-data;j+;p=top;top=top-next;free(p);string2j=#; printf(转化后的后缀表达式为:%sn,string2);return top;struct node *calcolate(struct node *s)struct node *top,*p;char *q;int x,y,a;int i,n;top=s;/指向栈顶的指针for(i=0;i=0&string2i=0&string2nnum=a;p-next=top;top=p;i=n-1;elseif(str
7、ing2i=#) /遇#号结束标志,输出栈中的最后计算结果printf(计算结果为:%dn,top-num);elseif(string2i= )elsey=top-num;p=top;top=top-next;free(p);x=top-num;p=top;top=top-next;free(p);switch(string2i)case +:a=x+y; p=(struct node *)malloc(sizeof(struct node); p-num=a;p-next=top;top=p; break; case -:a=x-y; p=(struct node *)malloc(sizeof(struct node ); p-num=a;p-next=top;top=p; break; case *:a=x*y; p=(struct node *)malloc(sizeof(struct node ); p-num=a;p-next=top;top=p; break; case /:a=(float)x/y; p=(struct node *)malloc(sizeof(struct node ); p-num=a;p-next=top;top=p; break;return 0;main()struct node *to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年重庆市驾驶理论模拟试卷
- 2026年重庆市人教版部编版高一数学必修第一册单元测试卷
- 2025-2026年四川省人教版四年级英语下册第7单元课时作业
- 2026年江苏省苏教版高中化学必修第一册第4章元素周期律测试题
- 2025-2026年浙江省人教版初中物理下册第8章同步练习题
- 2025-2026年人教版高中生物高二年级下册细胞结构与功能习题
- 2025-2026年交通安全法规与驾驶行为测试卷
- 2025-2026年吉林省北师大版高二语文现代文阅读强化试卷
- Z世代审美变迁驱动刻花玻璃杯产品迭代策略研究
- ESG评级体系下全棉农业端社会责任投资的财务转化路径
- T/CCS 037-2023综采工作面矿压智能化监测系统技术规范
- 科学(3-6年级)课程标准解读
- 民事起诉状(机动车交通事故责任纠纷)
- 2025年度房地产行业工会工作计划
- 教师岗位安全培训课件
- 委托他人办理退休手续的委托书模板
- 节约集约建设用地标准 DG-TJ08-2422-2023
- 老年衰弱综合征衰弱
- 化工原理期末考试试题库含答案
- 电工技术基础与技能 认识实训室及安全用电
- 英语必修三全部单词默写自检表直接打印版
评论
0/150
提交评论