表达式(a+b)*c可以用逆波兰式为ab+c*来表示,计算时,将ab+c*按从左到右的顺序压入栈中,并且按照遇到运算符就把栈顶两个元素出栈,执行运算,得到的结果再入栈的原则来进行处理,那么ab+c*的执行结果如下:
1)a入栈
2)b入栈
3)遇到运算符“+”,将a和b出栈,执行a+b的操作,得到结果d=a+b,再将d入栈
4)c入栈
5)遇到运算符“*”,将d和c出栈,执行d*c的操作,得到结果e,再将e入栈
经过以上运算,计算机就可以得到(a+b)*c的运算结果e了。
输入:10,6,9,3,+,-11,*,/,*,17,+,5,+
输出:22
解释:
该算式转化为常见的中缀算术表达式为:
((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22