逆波兰表达式求值C++
时间: 2023-11-14 21:01:52 浏览: 111
逆波兰表达式求值是一种常用的数学表达式求值方法,可以使用栈来实现。下面是一个简单的C++代码示例:
```cpp
#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;
int evalRPN(string tokens) {
stack<int> st;
stringstream ss(tokens);
string token;
while (getline(ss, token, ' ')) {
if (token == "+" || token == "-" || token == "*" || token == "/") {
int operand2 = st.top();
st.pop();
int operand1 = st.top();
st.pop();
if (token == "+")
st.push(operand1 + operand2);
else if (token == "-")
st.push(operand1 - operand2);
else if (token == "*")
st.push(operand1 * operand2);
else if (token == "/")
st.push(operand1 / operand2);
} else {
st.push(stoi(token));
}
}
return st.top();
}
int main() {
string expression = "3 4 + 2 *";
int result = evalRPN(expression);
cout << "Result: " << result << endl;
return 0;
}
```
在这个例子中,我们使用栈来存储操作数,遇到运算符时从栈中取出相应数量的操作数进行计算,然后将结果压入栈中。最后栈中剩下的元素就是表达式的求值结果。以上代码中的表达式 "3 4 + 2 *" 的求值结果为 14。
请注意,这只是一个简单的示例,实际应用中可能需要考虑更多情况,如错误处理、负数处理等。
阅读全文