用c++写一段利用栈来实现后缀表达式的代码
时间: 2024-01-27 20:06:04 浏览: 75
C语言利用栈实现对后缀表达式的求解
以下是一段用栈来实现后缀表达式的C++代码:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int postfixEval(string postfix) {
stack<int> s;
for (int i = 0; i < postfix.length(); i++) {
char ch = postfix[i];
if (isdigit(ch)) {
s.push(ch - '0');
} else {
int op2 = s.top();
s.pop();
int op1 = s.top();
s.pop();
switch (ch) {
case '+':
s.push(op1 + op2);
break;
case '-':
s.push(op1 - op2);
break;
case '*':
s.push(op1 * op2);
break;
case '/':
s.push(op1 / op2);
break;
}
}
}
return s.top();
}
int main() {
string postfix = "34+2*";
cout << "Postfix expression: " << postfix << endl;
cout << "Result: " << postfixEval(postfix) << endl;
return 0;
}
```
这段代码使用了一个 `stack` 来存储数字,遍历后缀表达式中的每个字符。如果字符是数字,则将其转换为整数并推入栈中。如果字符是操作符,则从栈中弹出两个数字,进行相应的计算,并将结果推入栈中。最后,栈顶即为后缀表达式的值。
阅读全文