数据结构算法:中缀表达式转化为后缀表达式.doc

数据结构算法:中缀表达式转化为后缀表达式.doc

ID:56867424

大小:375.50 KB

页数:5页

时间:2020-07-16

数据结构算法:中缀表达式转化为后缀表达式.doc_第1页
数据结构算法:中缀表达式转化为后缀表达式.doc_第2页
数据结构算法:中缀表达式转化为后缀表达式.doc_第3页
数据结构算法:中缀表达式转化为后缀表达式.doc_第4页
数据结构算法:中缀表达式转化为后缀表达式.doc_第5页
资源描述:

《数据结构算法:中缀表达式转化为后缀表达式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、题目:中缀表达式转化为后缀表达式算法及其后缀表达式计算算法的实现。内容:掌握栈的存储结构的C语言描述。掌握中缀表达式和后缀表达式的存储结构。掌握后缀表达式算法的实现。string1[i]?='';读入字符串string1[],i=0start流程图:YString1[i]是否为数字NString2中存放转化好的后缀表达式z后缀表达式结果的计算calcolate()i++先向string2中存入一个空格,再判断该字符类型。为减价乘除号,判断栈顶元素优先级,比其高,先将栈顶元素出栈到string2中,再将其入栈。为开阔号,直接进栈。为闭括号,将栈顶元素

2、依次弹出存入string2中,直至遇到开阔号。直接存入字符串string2中YN输出运算结果endcalcolate():依次扫描string2中的字符,遇到数字则将其转化为整型数据存入栈中,遇运算符则将栈中栈顶的两个元素取出参与运算,并将计算结果放入栈中,如此直到运算符全部用完,最后一次运算结果即为后缀表达式的计算结果。程序代码:#include#include#include#include#defineMAX60#defineDEMAX15#defineNULL0cha

3、rstring1[MAX];charstring2[MAX];intj=0;structnode{chardata;intnum;structnode*next;};structnode*Initialization()//初始化栈链,链栈不带头结点{structnode*top;top=(structnode*)malloc(sizeof(structnode));top->data='@';top->num=0;top->next=NULL;returntop;}structnode*assort(structnode*s)//输入字符串{stru

4、ctnode*p,*top;inti;top=s;intm;chara;gets(string1);m=strlen(string1);for(i=0;i<=m;i++){a=string1[i];if('0'<=string1[i]&&string1[i]<='9'){string2[j]=string1[i];j++;}else{switch(a){case'(':{p=(structnode*)malloc(sizeof(structnode));p->data=a;p->next=top;top=p;break;}case'*':case'/'

5、:string2[j]='';j++;if((top->data=='*')

6、

7、(top->data=='/')){string2[j]=top->data;j++;//比其高,现将栈顶运算符出栈,再进栈。top->data=a;break;}else{p=(structnode*)malloc(sizeof(structnode));//否,直接进栈p->data=a;p->next=top;top=p;break;}case'+':case'-':{string2[j]='';j++;if(top->data=='+'

8、

9、top->data=='-

10、'

11、

12、top->data=='*'

13、

14、top->data=='/'){string2[j]=top->data;j++;;top->data=a;break;}else{p=(structnode*)malloc(sizeof(structnode));p->data=a;p->next=top;top=p;break;}}case')':{string2[j]='';j++;if(top->data=='@'){printf("inputerror");break;}while(top->data!='('){string2[j]=top->data

15、;j++;p=top;top=top->next;free(p);}p=top;top=top->next;free(p);break;}}}}while(top->data!='@'){string2[j]=top->data;j++;p=top;top=top->next;free(p);}string2[j]='#';printf("转化后的后缀表达式为:%s",string2);returntop;}structnode*calcolate(structnode*s){structnode*top,*p;char*q;intx,y,a;in

16、ti,n;top=s;//指向栈顶的指针for(i=0;i<=j;i++)//遍历字符串str

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

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

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