用C++实现波兰表达式
时间: 2023-07-12 14:16:53 浏览: 211
波兰表达式是一种前缀表达式,其运算符位于操作数之前。以下是一个用C++实现波兰表达式求值的例子:
```c++
#include <iostream>
#include <stack>
#include <string>
#include <cctype>
using namespace std;
int evaluate(string exp) {
stack<int> stk;
for (int i = exp.size() - 1; i >= 0; --i) {
if (isdigit(exp[i])) {
stk.push(exp[i] - '0');
} else {
int op1 = stk.top(); stk.pop();
int op2 = stk.top(); stk.pop();
int res;
switch (exp[i]) {
case '+': res = op1 + op2; break;
case '-': res = op1 - op2; break;
case '*': res = op1 * op2; break;
case '/': res = op1 / op2; break;
}
stk.push(res);
}
}
return stk.top();
}
int main() {
string exp = "* + 2 3 4";
cout << evaluate(exp) << endl;
return 0;
}
```
以上是一个简单的实现,假设表达式中只包含四则运算和单个数字。程序的思路是从右往左扫描表达式,遇到数字则入栈,遇到运算符则取出栈顶两个操作数进行运算并将结果入栈。最后栈中剩下的元素即为表达式的值。
阅读全文