逆波兰表达式求值c++空格
时间: 2024-07-24 14:01:39 浏览: 66
逆波兰表达式.cpp
5星 · 资源好评率100%
逆波兰表达式(Reverse Polish Notation,RPN),也称为后缀表达式,是一种无需使用括号就能明确表达运算顺序的方式。在C++中,如果你需要实现逆波兰表达式的求值,可以采用栈的数据结构。基本步骤如下:
1. 初始化两个栈,一个用于存放操作数,另一个用于存放操作符。
2. 遍历输入的逆波兰表达式字符串,对于每个字符:
- 如果它是一个数字,就将其压入操作数栈。
- 如果它是运算符,从栈顶弹出足够次数的操作数进行计算,并将结果压回栈顶,然后将当前运算符压入运算符栈。
3. 当遍历完所有字符后,运算符栈顶部剩余的就是最终的结果。
这是一个简单的C++代码示例,使用了STL中的stack:
```cpp
#include <iostream>
#include <string>
#include <stack>
int evalPostfix(const std::string& postfix) {
std::stack<int> numStack;
for (char token : postfix) {
if (isdigit(token)) {
int num = token - '0';
numStack.push(num);
} else {
int b = numStack.top(); numStack.pop();
int a = numStack.top(); numStack.pop();
switch (token) {
case '+': numStack.push(a + b); break;
case '-': numStack.push(a - b); break;
case '*': numStack.push(a * b); break;
case '/': numStack.push(a / b); break;
// 添加其他支持的运算符...
}
}
}
return numStack.top();
}
int main() {
std::string expression = "2 3 + 4 *";
int result = evalPostfix(expression);
std::cout << "Result of the RPN expression is: " << result << std::endl;
return 0;
}
```
阅读全文