中缀表达式转后缀表达式(逆波兰表达式)
来源:互联网 发布:政法工作大数据对策 编辑:程序博客网 时间:2024/06/04 18:17
比较适合C++的转换方法
个人觉得这种写法比较漂亮
#include <iostream>#include <stack>#include <string>using namespace std;/* 中缀表示法 转 逆波兰表示法(RPN) 【一】读取一个字符 1. 如果遇到的是一个数字,输出 2. 如果遇到的是一个左括号,入棧 3. 如果遇到的是一个右括号,出棧,直到遇到一个左括号(若没有左括号,出错) 4. 如果遇到的是一个运算符 1. 如果棧为空或比栈顶运算符优先级高,入棧,回到 【一】 ( 左括号的优先级最低) 2. 如果栈顶运算符优先级较高,弹出栈顶运算符,回到 4.1*/string RPN(string& exp){ stack<char> opStack; string rString; const string blank = " "; int len = exp.length(); for(int i = 0; i < len; i++) { char ch = exp.at(i); switch (ch) { case ' ': break; case '(': opStack.push(ch); break; case ')': while( ( ch = opStack.top() ) != '(') { rString.append(blank + ch); opStack.pop(); } case '+': case '-': case '*': case '/': while(1) { if( opStack.empty() || opStack.top() == '(' || ( ch == '*' || ch == '/' ) && (opStack.top() == '+' || opStack.top() == '-') ) { opStack.push(ch); break; } else { rString.append(blank + opStack.top()); opStack.pop(); } } break; // 对数字的处理 default: rString.append(blank + ch); break; } } while( !opStack.empty()) { if(opStack.top() != '(') rString.append(blank + opStack.top()); opStack.pop(); } return rString;}int main(){ string exp; while(1) { getline(cin,exp); if(exp != "#") cout << exp << " , " << RPN(exp) << endl; else break; } return 0;}
0 0
- 中缀表达式转后缀表达式(逆波兰表达式)
- 中缀表达式转后缀表达式(逆波兰表达式)
- 逆波兰表达式 中缀表达式 后缀表达式
- 中缀表达式转后缀表达式(逆波兰式)
- 中缀表达式转后缀表达式(又称逆波兰式)
- 中缀表达式转后缀表达式(逆波兰)
- 数据结构--中缀表达式转为后缀表达式(逆波兰表达式)
- 前缀、中缀、后缀表达式(逆波兰表达式)
- 【基础知识】【中缀转逆波兰(后缀)表达式】
- 逆波兰式(中缀表达式转成后缀表达式)
- 【数据结构】中缀表达式转换后缀表达式(逆波兰式)
- 中缀表达式转化为后缀表达式,计算中缀表达式,计算后缀表达式(有注释)(逆波兰表达式)
- 中缀表达式转逆波兰
- 中缀表达式转后缀表达式(逆波兰式)的C++代码
- 【数据结构】逆波兰表示法(RPN):中缀表达式转后缀表达式
- NYOJ-35-表达式求值(中缀式转后缀式 逆波兰表达式)
- 数据结构-----栈(逆波兰表达式)----中缀转后缀
- 逆波兰:将中缀表达式转为后缀表达式
- Windows 通过公钥访问Git Server
- C# 多线程协同完成一个任务
- HDU 3572 Task Schedule (DINIC 邻接表实现)
- CentOS / RHEL / Scientific Linux 6 Enable & Install EPEL Repo
- JW Player 网页视频媒体播放插件
- 中缀表达式转后缀表达式(逆波兰表达式)
- Maximal Rectangle -- LeetCode
- LeetCode(Validate Binary Search Tree) 判断一个二叉树是否是二叉搜索树
- poj 1226:Substrings
- cloudstack Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (install) on projec
- Discuz! X3.1 给您贴子里的图片加上ALT和title属性
- LIstview与scroll嵌套的解决方案,你懂了吗?
- Nginx + Tomcat 配置集群负载均衡
- 假设派生类继承自两个基类,而两个基类中有同名虚函数,问虚表