JAVA 使用栈实现中缀表达式转换后缀表达式 一文中详细说明了如何将中缀表达式转换成后缀表达式。
那么如何计算后缀表达式的结果呢?
后缀表达式的求值思路:
1、从左到右扫描后缀表达式
2、如果遇到操作数,将其压入栈中。
3、如果遇到操作符,则从栈中弹出两个操作数,计算结果,然后把结果入栈。
4、遍历完后缀表达式,则计算完成,此时的栈顶元素即为计算结果。
例如:后缀表达式"3 4 + 5 × 6 - "
(1) 初始化栈,栈顶指针为空,从左至右扫描;
(2) 遇到操作数3,入栈;
(3) 遇到操作数4,入栈;
(4) 遇到操作符+,弹出栈中两个元素4,3(4 为栈顶元素,3 为次顶元素),计算结果7入栈;
(5) 遇到操作数5,入栈;
(6) 遇到运算符*,弹出栈中两个元素5,7,并计算5*7=35,计算结果35入栈 ;
(7) 遇到操作数6,入栈;
(8) 遇到操作符-,弹出栈中两个元素35,6,并计算35-6=29,计算结果入栈29,由此得出最终结果。
本文,需要先定义一个后缀表达式,为了方便数字和符号使用空格隔开。