字首 中綴 字尾表示式

2021-10-25 13:32:37 字數 1756 閱讀 6425

字首、中綴、字尾表示式是對表示式的不同記法,其區別在於運算子相對於運算元的位置不同,字首表示式的運算子位於運算元之前,中綴和字尾同理

舉例:中綴表示式:1 + (2 + 3) × 4 - 5

字首表示式:- + 1 × + 2 3 4 5

字尾表示式:1 2 3 + 4 × + 5 -

中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。

雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。對計算機來說,計算字首或字尾表示式的值非常簡單

字首表示式的運算子位於兩個相應運算元之前,字首表示式又被稱為字首記法或波蘭式

從右至左掃瞄表示式

遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(棧頂元素 op 次頂元素),並將結果入棧

重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果

示例:計算字首表示式的值:- + 1 × + 2 3 4 5

從右至左掃瞄,將5,4,3,2壓入堆疊;

2)遇到+運算子,彈出2和3(2為棧頂元素,3為次頂元素),計算2+3的值,得到5,將5壓入棧;

3)遇到×運算子,彈出5和4,計算5×4的值,得到20,將20壓入棧;

4)遇到1,將1壓入棧;

5)遇到+運算子,彈出1和20,計算1+20的值,得到21,將21壓入棧;

6)遇到-運算子,彈出21和5,計算21-5的值,得到16為最終結果

可以看到,用計算機計算字首表示式是非常容易的,不像計算字尾表示式需要使用正則匹配

字尾表示式與字首表示式類似,只是運算子位於兩個相應運算元之後,字尾表示式也被稱為字尾記法或逆波蘭式

與字首表示式類似,只是順序是從左至右:

從左至右掃瞄表示式

遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算(次頂元素op 棧頂元素),並將結果入棧

重複上述過程直到表示式最右端,最後運算得出的值即為表示式的結果

示例:計算

計算字尾表示式的值:1 2 3 + 4 × + 5 -

1)從左至右掃瞄,將1,2,3壓入棧;

2)遇到+運算子,3和2彈出,計算2+3的值,得到5,將5壓入棧;

3)遇到4,將4壓入棧

4)遇到×運算子,彈出4和5,計算5×4的值,得到20,將20壓入棧;

5)遇到+運算子,彈出20和1,計算1+20的值,得到21,將21壓入棧;

6)遇到5,將5壓入棧;

7)遇到-運算子,彈出5和21,計算21-5的值,得到16為最終結果

轉化步驟:

按照運算子的優先順序對所有的運算單位加括號

將運算子移動到對應括號的前面(字首表示式)或後面(字尾表示式)

去掉括號,得到字首或字尾表示式

示例:

中綴表示式:1+(2+3)×4-5

1)加括號

式子變成 ((1+((2+3)×4))-5)

2)移動運算子

對於字首表示式,變成了 -(+(1×(+(23)4))5)

對於字尾表示式:變成了((1((23)+4)×)+5)-

3)去掉括號

字首表示式: - + 1 × + 2 3 4 5

字尾表示式:1 2 3 + 4 × + 5 -

字首 中綴 字尾表示式

它們都是對表示式的記法,因此也被稱為字首記法 中綴記法和字尾記法。它們之間的區別在於運算子相對與運算元的位置不同 字首表示式的運算子位於與其相關的運算元之前 中綴和字尾同理。舉例 3 4 5 6 就是中綴表示式 3 4 5 6 字首表示式 3 4 5 6 字尾表示式 中綴表示式 中綴記法 中綴表示式...

字首 中綴 字尾表示式

最近筆試的過程中老是有中綴轉換為字首,或是中綴轉換為字尾的問題,資料結構學了這麼久真的是記不清了,今天重新複習了一下,藉此機會總結一下 中綴 我們正常理解的表示式的書寫方式 字首 操作符全部位於運算元的前面,運算元的順序為從右到左依次壓棧的順序,操作符為從左到右依次壓棧的順序 字尾 不包含括號,運算...

字首 中綴 字尾表示式

它們都是對表示式的記法,因此也被稱為字首記法 中綴記法和字尾記法。它們之間的區別在於運算子相對與運算元的位置不同 字首表示式的運算子位於與其相關的運算元之前 中綴和字尾同理。舉例 3 4 5 6 就是中綴表示式 3 4 5 6 字首表示式 3 4 5 6 字尾表示式 中綴表示式 中綴記法 中綴表示式...