a+d*(b-c)--->a,d,b,c,-,*,+
a=1+3 ---> a,1,3,+,=
从上面的例子可以看出:(1) 在两种表示中,运算对象出现的顺序相同;(2) 在后缀表示中,运算符按实际计算顺序从左到右排列...这种表达式很反人类,但是对计算机很友好,因为计算机运算是利用栈数据结构。
解题思路:
可以看出逆波兰表达式中的每一个运算符属于该运算符前的两个数字间的运算。...如:
如波兰表达式:1,2,+
则加号前两个数字为1,2。其运算符就是加号:1+2
得出结果:1+2=3
如波兰表达式:1,2,3,+,-
则加号前两个数字为2,3。...其运算符就是加号:2+3
得出结果2+3=5,则波兰表达式变为:1,5,-
减号前两个数字为1,5,其运算符就是减号:1-5
得出结果1-5=-4
由上面的的例子思路就很清晰了,直接用指针遍历表达式,遇到数字就入栈...最后栈内只剩一个元素 即表达式运算结果。