#include <iostream>
#include <stack>
using namespace std;
bool isNumber(char c)
{
if (c >= '0' && c <= '9')
return true;
return false;
}
int calRPN(stack<char>& stk)
{
char top = stk.top();
stk.pop();
if (isNumber(top))
{
return top - '0';
}
else
{
int b = calRPN(stk);
int a = calRPN(stk);
if (top == '+')
return a + b;
else if (top == '-')
return a - b;
else if (top == '*')
return a * b;
else if (top == '/')
return a / b;
}
return -1;
}
int main()
{
stack<char> stk;
stk.push('5');
stk.push('6');
stk.push('+');
stk.push('3');
stk.push('*');
int res = calRPN(stk);
return 0;
}calculate reverse polish notation
最新推荐文章于 2020-04-16 10:44:55 发布
本文介绍了一个使用C++实现的逆波兰表达式求值算法。该算法通过栈来处理运算符和操作数,能够计算包含加减乘除运算的逆波兰表达式。示例代码展示了如何将数值和运算符压入栈中,并通过递归调用计算最终结果。
5万+

被折叠的 条评论
为什么被折叠?



