表达式:主要由操作数、操作符组成。
中缀表达式:操作符在两个操作数之间的表达式
如:a/(b-c)+d*e
前缀表达式:操作符放在两个操作数之前的表达式
从后往前求值
如:+/a-bc*de
后缀表达式:操作符放在两个操作数之后的表达式(逆波兰表达式)
从前往后求值
如:abc-/de*+
非中缀表达式的求值过程,一定要看明白是前缀还是后缀。
具体的过程始终都是先找到操作符,然后反向去找最近的操作数,进行合并求值。
后缀表达式中无括号,求值时无需考虑操作符的优先级,计算简便,故编译程序中常用。对中缀表达式求值的过程为:
(1)中缀表达式->后缀表达式
(2)对后缀表达式求值
后缀表达式求值:
(1)从左往右顺序扫描后缀表达式;
(2)遇到操作数就进栈;
(3)遇到操作符就从栈中弹出两个操作数,并执行该操作符规定的运算;
并将结果进栈;
(4)重复上述操作,直到表达式结束。
弹出栈顶元素即为结果。