后缀表达式/逆波兰表达式
运算表达式的种类
-
a + b:中缀表达式 (Infix Notation)
,原因是运算符号在两个运算对象的中间。 -
+ - a * b c d:前缀表达式 (Prefix Notation)
,运算符在运算对象前面,又称为波兰表达式。 -
a b c * - d +:后缀表达式 (Prefix Notation)
,运算符在运算对象后面,又称为逆波兰表达式。
后缀表达式的优点
- 相较于前缀表达式更易于转换,
最左边一定为数字
。 - 不用括号,
依靠运算顺序确定运算符的优先级
。 - 更符合计算机的计算方式。计算机通过从左至右读取后缀表达式,就可以将遇到的运算对象压入栈,在遇到运算符时就弹出两个运算对象,完成计算,再将结果压入栈。最后留在栈中的就是计算结果。
中缀表达式转换为后缀表达式的方法
a + b * c - (d + e)
-
按照运算符的优先级对所有的运算单位加括号。
((a + (b * c)) - (d + e))
-
转换中缀与后缀表达式后缀:把运算符号移动到对应的括号后面。
((a (b c) * ) + (d e) + ) -
-
把括号去掉,记得到了后缀表达式
a b c * + d e + -
可以发现,后缀表达式是不需要括号来调整运算优先级的。