#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int computePostfixExpression(vector<char> postfixExpression)
{
stack<int> operands;
int leftOperand, rightOperand;
for(char ch : postfixExpression)
{
if (ch >= '0' && ch <= '9')
{
operands.push(ch - '0');
}
else
{
rightOperand = operands.top();
operands.pop();
leftOperand = operands.top();
operands.pop();
switch (ch)
{
case '+' :
operands.push(leftOperand + rightOperand);
break;
case '-' :
operands.push(leftOperand - rightOperand);
break;
case '*' :
operands.push(leftOperand * rightOperand);
break;
case '/' :
operands.push(leftOperand / rightOperand);
break;
}
}
}
return operands.top();
};
int main()
{
vector<char> postfixExpression{'9', '3', '2', '*', '+', '4', '2', '/', '-'};
cout << computePostfixExpression(postfixExpression) << endl;
return 0;;
}
C++ 后缀表达式/逆波兰表达式
最新推荐文章于 2024-06-30 10:56:16 发布