后綴表達式/逆波蘭表達式
運算表達式的種類
-
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 + -
可以發現,后綴表達式是不需要括號來調整運算優先級的。