逆波兰表达式c++
时间: 2023-08-03 18:25:00 浏览: 109
逆波兰表达式(Reverse Polish Notation, RPN)也叫后缀表达式,是一种将运算符放置于操作数后面的表示数学表达式的方法。下面是一个简单的逆波兰表达式求值的C++代码示例:
```c++
#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;
bool isOperator(const string& op) {
return op == "+" || op == "-" || op == "*" || op == "/";
}
int eval(int a, int b, const string& op) {
if (op == "+") return a + b;
if (op == "-") return a - b;
if (op == "*") return a * b;
if (op == "/") return a / b;
return 0;
}
int rpnEval(const string& expr) {
stack<int> nums;
stringstream ss(expr);
string token;
while (ss >> token) {
if (isOperator(token)) {
int b = nums.top();
nums.pop();
int a = nums.top();
nums.pop();
nums.push(eval(a, b, token));
} else {
nums.push(stoi(token));
}
}
return nums.top();
}
int main() {
string expr = "3 4 + 5 * 6 -";
int result = rpnEval(expr);
cout << expr << " = " << result << endl;
return 0;
}
```
以上代码可以计算逆波兰表达式 "3 4 + 5 * 6 -" 的结果,输出结果为: "3 4 + 5 * 6 - = 17"。
阅读全文