表达式求值栈简单c++语言版
时间: 2023-08-22 07:03:29 浏览: 91
表达式求值【栈】C++
好的,以下是一个简单的 C++ 语言代码实现,利用栈实现表达式求值的功能:
```cpp
#include <iostream>
#include <stack>
#include <cctype>
using namespace std;
int evaluate(string exp) {
stack<int> s;
for (int i = 0; i < exp.length(); i++) {
if (isdigit(exp[i])) {
s.push(exp[i] - '0');
} else {
int op1 = s.top();
s.pop();
int op2 = s.top();
s.pop();
switch (exp[i]) {
case '+':
s.push(op2 + op1);
break;
case '-':
s.push(op2 - op1);
break;
case '*':
s.push(op2 * op1);
break;
case '/':
s.push(op2 / op1);
break;
default:
cout << "Error: Invalid operator" << endl;
exit(1);
}
}
}
return s.top();
}
int main() {
string exp;
cout << "Enter an expression: ";
cin >> exp;
int result = evaluate(exp);
cout << "Result: " << result << endl;
return 0;
}
```
这个程序中,我们使用了 C++ 标准库中的 stack 容器,省去了自己实现栈的操作。在 `evaluate` 函数中,我们遍历表达式字符串,遇到数字字符时,将其转换为整数并压入栈中;遇到运算符时,从栈中弹出两个操作数进行计算,并将结果压入栈中。最终,栈中只剩下一个元素,即为表达式的值。
希望这个程序能够帮到您。
阅读全文