字首表示式(波蘭表示式)
- 字首表示式又稱波蘭式,字首表示式的運算子位於運算元之前
- 舉例說明: (3+4)×5-6 對應的字首表示式就是 - × + 3 4 5 6
字首表示式求值
字首表示式的計算機求值
從右至左掃描表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(棧頂元素 和 次頂元素),並將結果入棧;重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果
例如: (3+4)×5-6
對應的字首表示式就是 - × + 3 4 5 6
, 針對字首表示式求值步驟如下:
- 從右至左掃描,將
6、5、4、3
壓入堆疊 - 遇到+運算子,因此彈出
3
和4
(3為棧頂元素,4為次頂元素),計算出3+4
的值,得7
,再將7入棧 - 接下來是
×
運算子,因此彈出7
和5
,計算出7×5=35
,將35
入棧 - 最後是-運算子,計算出
35-6
的值,即29
,由此得出最終結果
中綴表示式
中綴表示式
中綴表示式就是常見的運算表示式,如(3+4)×5-6
中綴表示式的求值是我們人最熟悉的,但是對計算機來說卻不好操作(前面我們講的案例就能看的這個問題),因此,在計算結果時,往往會將中綴表示式轉成其它表示式來操作(一般轉成字尾表示式.)
中綴表示式對於我們人來好搞,計算機他算不算明白,就離譜
計算機不知道怎麼算這個優先順序
字尾表示式(逆波蘭表示式)
字尾表示式
字尾表示式又稱逆波蘭表示式,與字首表示式相似,只是運算子位於運算元之後
中舉例說明: (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 * + |
a+d*(b-c) | a d b c - * + |
a=1+3 | a 1 3 + = |
字尾表示式的計算機求值
從左至右掃描表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(次頂元素 和 棧頂元素),並將結果入棧;重複上述過程直到表示式最右端,最後運算得出的值即為表示式的結果
例如: (3+4)×5-6 對應的字尾表示式就是 3 4 + 5 × 6 - , 針對字尾表示式求值步驟如下:
- 從左至右掃描,將3和4壓入堆疊;
- 遇到+運算子,因此彈出4和3(4為棧頂元素,3為次頂元素),計算出3+4的值,得7,再將7入棧;
- 將5入棧;
- 接下來是×運算子,因此彈出5和7,計算出7×5=35,將35入棧;
- 將6入棧;
- 最後是-運算子,計算出35-6的值,即29,由此得出最終結果
本作品採用《CC 協議》,轉載必須註明作者和本文連結