c++中缀表达式求值
时间: 2023-08-03 18:18:06 浏览: 181
C++ 中缀表达式求值可以通过将中缀表达式转换为后缀表达式,然后再用栈来计算后缀表达式的值。
以下是一个简单的实现:
```c++
#include <iostream>
#include <stack>
#include <string>
#include <sstream>
#include <cctype>
using namespace std;
int eval(string expr) {
stack<int> s;
stringstream ss(expr);
char c;
while (ss >> c) {
if (isdigit(c)) {
ss.putback(c);
int num;
ss >> num;
s.push(num);
}
else if (c == '+' || c == '-' || c == '*' || c == '/') {
int b = s.top();
s.pop();
int a = s.top();
s.pop();
int res;
if (c == '+') res = a + b;
else if (c == '-') res = a - b;
else if (c == '*') res = a * b;
else if (c == '/') res = a / b;
s.push(res);
}
}
return s.top();
}
int main() {
string expr = "2 + 3 * 4 - 6 / 2";
int res = eval(expr);
cout << res << endl;
return 0;
}
```
这个实现假设中缀表达式中只包含加、减、乘、除和数字,不包含括号。如果表达式有括号,需要先处理括号。
阅读全文