波兰表达式c++
时间: 2023-08-04 11:23:44 浏览: 44
波兰表达式是一种前缀表达式,即运算符位于操作数之前。以下是一个简单的 C++ 实现:
```c++
#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;
int evaluate(string expr) {
stack<int> s;
// 分割表达式,并倒序入栈
istringstream iss(expr);
string token;
while (iss >> token) {
if (token == "+" || token == "-" || token == "*" || token == "/") {
int b = s.top(); s.pop();
int a = s.top(); s.pop();
if (token == "+") s.push(a + b);
else if (token == "-") s.push(a - b);
else if (token == "*") s.push(a * b);
else if (token == "/") s.push(a / b);
} else {
s.push(stoi(token));
}
}
return s.top();
}
int main() {
string expr = "+ 2 * 3 4";
cout << evaluate(expr) << endl; // 输出 14
return 0;
}
```
这个实现使用了一个栈来存储操作数,遇到运算符时弹出栈顶的两个元素,进行计算后再将结果入栈。最终栈中剩下的元素就是表达式的计算结果。