栈的表达式之计算中缀、前缀和后缀表达式
发布日期:2021-06-29 15:42:38
浏览次数:2
分类:技术文章
本文共 1615 字,大约阅读时间需要 5 分钟。
1.计算中缀表达式
//判断运算符优先级int getPriority(char op){ if(op=='+'||op=='-') return 0; else return 1;} //计算表达式int calsub(float opnd1,char op,float opnd2,float &result){ if(op=='+') result=opnd1+opnd2; if(op=='-') result=opnd1-opnd2; if(op=='*') result=opnd1*opnd2; if(op=='\') { if(fabs(opnd2)='0'&&exp[i]<='9') { s2[++top2]=exp[i]; i++; } else if(exp[i]=='(') { s1[++top1]=exp[i]; i++; } else if(exp[i]=='+'||exp[i]=='-'||exp[i]=='*'||exp[i]=='\') { if(top1==-1||s1[top1]=='('||getPriority(exp[i])>getPriority(s1[top1])) { s1[++top1]=exp[i]; i++; } else { //计算 int flag=calstack(s1,top1,s2,top2); if(flag==0) return 0; } } else if(exp[i]==')') { while(s1[top1]!='(') { //计算 int flag=calstack(s1,top1,s2,top2); if(flag==0) return 0; } --top1; ++i; } } while(top1!=-1) { //计算 int flag=calstack(s1,top1,s2,top2); if(flag==0) return 0; } return s2[top2];}
2.计算后缀表达式(次顶 op 栈顶)
float calPostFix(char exp[]){ float s[maxsize];int top=-1; for(int i=0;exp[i]!='\0';i++) { if('0'<=exp[i]&&exp[i]<='9') s[++top]=exp[i]-'0'; else { float opnd1,opnd2,result; char op;int flag; opnd2=s[top--];op=exp[i]; opnd1=s[top--]; flag=calsub(opnd1,op,opnd2,result); if(flag==0) { cout<<"error"<
3.计算前缀表达式(栈顶op次顶)
float calPreFix(char exp[],int len){ float s[maxsize];int top=-1; for(i=len-1;i>=0;i--) { if('0'<=exo[i]&&exp[i]<='9') s[++top]=exp[i]-'0'; else { float opnd1,opnd2,result; char op; int flag; opnd1=s[top--]; opnd2=s[top--]; flag=calsub(opnd1,op,opnd2,result); if(flag==0) { cout<<"error"<
转载地址:https://codingchaozhang.blog.csdn.net/article/details/85256477 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月24日 01时12分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
为什么说卷积神经网络,是深度学习算法应用最成功的领域之一?
2021-07-02
在电网工作,有多高大上?
2021-07-02
「2020年大学生电子设计竞赛分享」电源题,省一等奖!
2021-07-02
又一国产开源微内核操作系统上线!源代码已开放下载
2021-07-02
10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……
2021-07-02
如何才能学好单片机?
2021-07-02
一根网线有这么多“花样”,你知道吗?
2021-07-02
雷军1994年写的诗一样的代码,我把它运行起来了!
2021-07-02
知乎热议:嵌入式开发中C++好用吗?
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
嵌入式开发中常用的几种通信接口总结
2019-04-29
什么?电路板上还要喷漆?
2019-04-29
读博读废了是种什么样的体验?
2019-04-29
2020年,技术圈十大“翻车”事件!
2019-04-29
C语言状态机编程思想
2019-04-29
为什么很多电器设备都要使用单片机?
2019-04-29
在中国做操作系统研发 20 年是种什么体验?
2019-04-29
PCB走线角度为90度到底行不行?
2019-04-29
这个 17 岁的黑客天才,破解了第一代 iPhone!
2019-04-29
在STM32价格疯长下,哪些国产32可以替代?
2019-04-29