中缀表达式求值实验报告

中缀表达式求值实验报告

ID:11858955

大小:34.00 KB

页数:3页

时间:2018-07-14

中缀表达式求值实验报告_第1页
中缀表达式求值实验报告_第2页
中缀表达式求值实验报告_第3页
资源描述:

《中缀表达式求值实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中缀表达式求值实验报告徐晨晖PB11005030一、程序功能简易的中缀表达式求值和中缀表达式转换成后缀表达式。二、存储结构:栈运算符栈:typedefstructoptr{charelem;structoptr*next;}OPTRMode;//栈的结点类型typedefOPTRMode*OPTRStack;//栈的头结点运算数栈:typedefstructopnd{doubleelem;structopnd*next;}OPNDMode;//栈的结点类型typedefOPNDMode*OPNDStack;//栈的头结点三、算法思想的描述intmain()

2、{OPTRStackOPTR;//定义运算符栈OPTRInitStack_OPTR(OPTR);//初始化OPNDStackOPND;//定义运算数栈OPNDInitStack_OPND(OPND);//初始化doubleb,p,q;inti,j=0,k=1,n;charc,e,x,theta;charf[100];printf("==简易中缀表达式转换为后缀表达式,并求值==");printf("1.运行0.退出");scanf("%d",&i);while(i){Push_OPTR(OPTR,'#');printf("输入合法的中缀表达式,

3、以'#'结束");getchar();j=0;while((c=getchar())!='#'){f[j]=c;j++;}f[j]='#';n=j;j=0;printf("后缀表达式为:");while(j<=n){if(!isOperator(f[j])){//如果不是运算符b=f[j]-48;printf("%c",f[j]);while(!isOperator(f[++j])&&f[j]!='#'){b=b*10+(f[j]-48);printf("%c",f[j]);}Push_OPND(OPND,b);//进运算数栈OPNDprintf(""

4、);}else{//是运算符GetTop_OPTR(OPTR,e);while(e!=f[j]){switch(Precede(e,f[j])){case'<'://栈顶元素优先权低Push_OPTR(OPTR,f[j]);break;case'='://脱括号并接受下一字符Pop_OPTR(OPTR,x);break;case'>'://退栈并将运算结果出栈Pop_OPTR(OPTR,theta);printf("%c",theta);Pop_OPND(OPND,q);Pop_OPND(OPND,p);Push_OPND(OPND,Operate(p,t

5、heta,q));break;}if(OPTR->next==NULL

6、

7、e=='(')e=f[j];elseGetTop_OPTR(OPTR,e);}j++;}}GetTop_OPND(OPND,b);printf("表达式的值=%lf",b);printf("1.运行0.退出");scanf("%d",&i);}return(0);}一、各个函数名为:运算符栈:voidInitStack_OPTR(OPTRStack&s);//初始化空栈voidPush_OPTR(OPTRStack&s,chare);//进栈intGetTop_OPT

8、R(OPTRStacks,char&e);//读栈顶intPop_OPTR(OPTRStack&s,char&e);//出栈运算数栈:voidInitStack_OPND(OPNDStack&s);//初始化空栈voidPush_OPND(OPNDStack&s,doublee);//进栈intGetTop_OPND(OPNDStacks,double&e);//读栈顶intPop_OPND(OPNDStack&s,double&e);//出栈其他:charPrecede(chara,charb);//比较算符优先级高低doubleOperate(doub

9、lea,chartheta,doubleb);//计算intisOperator(charc);//判断是否是运算符一、测试与分析本程序只适用与简易的表达式求值,只能对正整数进行运算。由于编程水平有限,时间紧,无法再进一步强化。测试时:输入表达式(3+2-1)*6/3#二、对实验和课程学习的体会和意见在调试时,发现还是存在很简单的的问题。导致时间的浪费。

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

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

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