ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:27.50KB ,
资源ID:7567097      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7567097.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验——中缀表达式向后缀表达式的转化(包括四则运算和幂运算)——详细注释.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构实验——中缀表达式向后缀表达式的转化(包括四则运算和幂运算)——详细注释.doc

1、数据结构实验中缀表达式向后缀表达式的转化(包括四则运算和幂运算)详细注释#include#include/*输入输出说明:输入,输入一中缀表达式并紧接符号 # 以结束输入,输入样例如下,a+b*c+(d*e+f)*g#c*a+b*d-(e+f*g)*h#a*(b+c/(d+e+f)+g)-h#输入注意,括号一律用圆括号输出,输出相应后缀表达式,输出样例如下,abc*+de*f+g*+ca*bd*+efg*+h*-abcde+f+/+g+*h-#带幂运算的优先级顺序(左低右高)“ + “,“ * “,“ ( “ + “,“ “,“ ( “注意,加减具有同一优先级,乘除具有同一优先级,且幂运算“

2、“与乘法运算“ * “的优先级顺序不具有可比性!#样例输入:3*65*2#3*23223+2*5-5#6+3*23*223*4+5#样例输出:3652*323223*?5*+5-63232234*+5+注意:第二组数据输出中的“ ? “本该是“ 2 “,经过长时间测试及数据对比,至今仍未找到确切原因,故尚且属于未知错误,作特殊情况处理!*/struct hichar ch;hi *next;hi *plus_minus(hi *tempstack)while(tempstack!=NULL)if(tempstack-ch=()/如果遇到左括号就返回“空”,return NULL;/因为说明要输

3、入的元素本身就包含在一组括号中else if(tempstack-ch=+|tempstack-ch=-)return tempstack;tempstack=tempstack-next;return NULL;/没有找到优先级更高的则返回“空”hi *mul_div(hi *tempstack)while(tempstack!=NULL)if(tempstack-ch=(|tempstack-ch=)return NULL;else if(tempstack-ch=*|tempstack-ch=/)return tempstack;tempstack=tempstack-next;retu

4、rn NULL;hi *power(hi *tempstack,hi *temptail)while(tempstack!=NULL)if(tempstack-ch=()return NULL;else if(tempstack-ch=)/如果有幂运算就全部弹出return temptail;/所以返回尾部地址tempstack=tempstack-next;return NULL;hi *sign(hi *tempstack)while(tempstack!=NULL)if(tempstack-ch=()return tempstack;tempstack=tempstack-next;re

5、turn NULL;int main()int i,j;hi *stack,*temp,*freenode,*tail,*index,*pointer;temp=(hi*)malloc(sizeof(hi);stack=(hi*)malloc(sizeof(hi);/这里和temp区别开申请内存后面比较好处理tail=stack;tail-next=NULL;/提前封栈while(true)scanf(“%c“,if(temp-ch=#)/输入停止while(stack!=NULL)if(stack-ch=(|stack-ch=)printf(“nFool, error!“);break;pr

6、intf(“%c“,stack-ch);stack=stack-next;puts(“);break;/处理操作符if(temp-ch=|temp-ch=+|temp-ch=-|temp-ch=*|temp-ch=/|temp-ch=(|temp-ch=)/处理幂运算if(temp-ch=)/如果是幂运算符就直接压栈temp-next=stack;stack=temp;temp=(hi*)malloc(sizeof(hi);/处理加减else if(temp-ch=+|temp-ch=-)pointer=plus_minus(stack);/加减时先考虑优先级低的if(pointer=NULL

7、)pointer=power(stack,tail);if(pointer=NULL)pointer=mul_div(stack);/再考虑优先级高的if(pointer=NULL)temp-next=stack;stack=temp;temp=(hi*)malloc(sizeof(hi);/ tail-next=NULL;/试试可不可以再开始的时候就封栈else if(pointer!=NULL)while(stack!=pointer)printf(“%c“,stack-ch);freenode=stack;stack=stack-next;free(freenode);printf(“%

8、c“,stack-ch);stack-ch=temp-ch;/处理乘除else if(temp-ch=*|temp-ch=/)pointer=mul_div(stack);if(pointer=NULL)temp-next=stack;stack=temp;temp=(hi*)malloc(sizeof(hi);/ tail-next=NULL;else if(pointer!=NULL)while(stack!=pointer)printf(“%c“,stack-ch);freenode=stack;stack=stack-next;free(freenode);printf(“%c“,st

9、ack-ch);stack-ch=temp-ch;/处理括号else if(temp-ch=(|temp-ch=)if(temp-ch=()temp-next=stack;stack=temp;temp=(hi*)malloc(sizeof(hi);/ tail-next=NULL;else if(temp-ch)pointer=sign(stack);if(pointer=NULL)printf(“nFool, error!n“);break;else if(pointer!=NULL)while(stack!=pointer)/注意圆括号的输出printf(“%c“,stack-ch);freenode=stack;stack=stack-next;free(freenode);freenode=stack;stack=stack-next;free(freenode);/处理操作数elsechar markch=temp-ch;printf(“%cn“,markch);printf(“%c“,temp-ch);/如果不是操作符就默认为操作数输出system(“pause“);return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报