字首表達式(波蘭表達式)
字首表達式也稱為波蘭表達式,字首表達式的運算符位于操作數之前 如
( 3 + 4 ) * 5 - 6
對應的字首表達式為
- * + 3 4 5 6
字首表達式的計算機求值
從右至左掃描表達式,遇到數值時,将數字壓入棧中,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算,并将結果入棧,重複執行 ,最後留在棧裡的元素即為結果
如 (3 + 4 )5 - 6 的字首表達式為 ` -+ 3 4 5 6
1.從右至左掃描,将 6、5、4、3壓入棧 2.遇到 + 運算符時,彈出3和4計算出3+4=7,再将7入棧 3.接下來是
*
運算符,彈出7和5,計算得出35,再次入棧 4.最後是
-`運算符,計算出35-6即位29,此時29即為最終結果
中綴表達式
中綴表達式,即為我們平常看到的表達式,人了解起來很容易
如
( 3 + 4 ) * 5 - 6
中綴表達式計算機了解起來困難
如 完成一個中綴表達式的計算(https://www.zihanzy.com/articles/327)
為了友善,一般我們要将中綴表達式,轉換為字首或字尾表達式在給計算機進行運算。
如 完成一個字尾表達式的計算 (https://www.zihanzy.com/articles/331 )
字尾表達式(逆波蘭表達式)
字尾表達式也稱為逆波蘭表達式與字首表達式相似,隻是運算符位于操作數之後
如
( 3 + 4 ) * 5 - 6
對應的字尾表達式為
3 4 + 5 * 6 -
如
a + b
=
a b +
a+(b-c)
=
a b c - +
a + (b - c) * d
=
a b c - d *
字尾表達式計算求值
從左至右掃描表達式,遇到數值時,将數字壓入棧中,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算,并将結果入棧,重複執行 ,最後留在棧裡的元素即為結果
如 (3 + 4 ) 5 - 6 的字首表達式為 ` 3 4 + 5 6 -
1.從左至右掃描,将3 4 壓入棧 2.遇到 + 運算符時,彈出4和3計算出3+4=7,再将7入棧 3.接下來是
*
運算符,彈出5和7,計算得出35,再次入棧 4.最後是
-`運算符,計算出35-6即位29,此時29即為最終結果