前缀表达式和后缀表达式——有时也被成为波兰表达式和逆波兰表达式——是对仅包含二元关系运算符和括号的表达式的变形。
事实上,前缀表达式和后缀表达式没有本质区别,因此只要会了前缀表达式,就会了后缀表达式——记住,前缀表达式是把运算符提到最前面的表达式,而后缀表达式反之。
对于一个这样的式子:
a+b/c
我们按照运算符优先级依次操作:
a+/bc
+a/bc
这样就将所有符号提到了整个式子的最前面。
对于包含括号的表达式,例如:
2+3(4-(5+6))/7
操作流程依然是按照运算符优先级的。
2+3(4-+5 6)/7
2+3(-4+5 6)/7
2+3(-4+5 6)/7
2+/3-4+5 6 7
+2/3-4+5 6 7
而如果要求后缀表达式,那操作就反之——从优先级最低的操作符开始,把操作符提到最右边。
还是一样的例子:
2 3(4-(5+6))/7+
2 3(4-(5+6))7/+
2 3(4-(5+6))7/+
2 3(4(5+6)-)7/+
2 3 4 5 6+-*7/+