后缀表达式是指的将两个操作数之间的操作符移到两个操作数之后的表达式。比如原来的表达式为(1-2)*(4+5)=-9,写成后缀表达式就成了 1 2 - 4 5 + *C++表示
时间: 2024-05-07 10:19:55 浏览: 17
可以使用栈来实现后缀表达式的计算。
具体步骤如下:
1. 从左到右遍历后缀表达式中的每一个元素;
2. 如果当前元素是操作数,则将其入栈;
3. 如果当前元素是操作符,则从栈中pop出两个操作数,并根据操作符进行计算;
4. 将计算结果入栈;
5. 重复步骤1到4,直到表达式全部处理完毕;
6. 最后栈中剩余的元素即为表达式的计算结果。
下面是用C++实现后缀表达式计算的代码示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int evalRPN(string tokens) {
stack<int> s;
for (int i = 0; i < tokens.size(); i++) {
if (tokens[i] == ' ') continue;
else if (isdigit(tokens[i])) {
int num = 0;
while (i < tokens.size() && isdigit(tokens[i])) {
num = num * 10 + (tokens[i] - '0');
i++;
}
i--;
s.push(num);
}
else {
int num2 = s.top();
s.pop();
int num1 = s.top();
s.pop();
switch (tokens[i]) {
case '+': s.push(num1 + num2); break;
case '-': s.push(num1 - num2); break;
case '*': s.push(num1 * num2); break;
case '/': s.push(num1 / num2); break;
}
}
}
return s.top();
}
int main() {
string tokens = "1 2 - 4 5 + *";
int result = evalRPN(tokens);
cout << result << endl;
return 0;
}
```
此代码的输出结果为-9,与原表达式的计算结果一致。