博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中缀表达式转换成后缀表达式(只适用于加减乘除运算)
阅读量:6121 次
发布时间:2019-06-21

本文共 1696 字,大约阅读时间需要 5 分钟。

 

 

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 //获取符号的优先级 8 int getPriority(char c) 9 {10 int priority = -1;11 switch (c) {12 case '+':13 priority = 1;14 break;15 case '-':16 priority = 1;17 break;18 case '*':19 priority = 2;20 break;21 case '/':22 priority = 2;23 break;24 case '(':25 priority = 3;26 break;27 default:28 break;29 }30 return priority;31 }32 33 34 int main()35 {36 char c;37 stack
s;38 cin >> c;39 while (c != '#')40 {41 while (isdigit(c))42 {43 cout << c;44 cin >> c;45 if(!isdigit(c) && c != '#')46 cout << ' ';47 48 }49 if (c == ')')50 {51 //1.弹出元素并输出直到'('52 while (s.top() != '(')53 {54 cout << s.top() << ' ';55 s.pop();56 }57 //2.将"("也出栈58 s.pop();59 }60 else61 {62 // 下面是普通操作符的情况63 // 1.弹出栈元素直到发现优先级更低的元素64 while (!s.empty() && getPriority(c) <= getPriority(s.top()) && s.top() != '(')65 {66 cout << s.top() << ' ';67 s.pop();68 }69 //将本操作符入栈70 s.push(c);71 }72 cin >> c;73 }74 while (!s.empty())75 {76 cout << s.top() << ' ' ;77 s.pop();78 }79 cout << endl;80 return 0;81 }

 

转载于:https://www.cnblogs.com/FengZeng666/p/9448927.html

你可能感兴趣的文章
Office WORD如何取消开始工作右侧栏
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Android Annotation扫盲笔记
查看>>
React 整洁代码最佳实践
查看>>
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
移动端架构的几点思考
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>