中綴和字尾表示式之間的轉換

2021-08-02 05:56:55 字數 1056 閱讀 6599

舉例:

(3 + 4) × 5 - 6 就是中綴表示式

- × + 3 4 5 6 字首表示式

3 4 + 5 × 6 - 字尾表示式

字首表示式(字首記法、波蘭式)

字首表示式的運算子位於運算元之前。

中綴表示式(中綴記法)

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

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

字尾表示式(字尾記法、逆波蘭式)

字尾表示式與字首表示式類似,只是運算子位於運算元之後。

轉換

中綴轉字尾:先將中綴表示式表示成根樹形式:

根樹與表示式的關係:前序遍歷根樹即得到字首表示式(波蘭式

),中序遍歷根樹即得到中綴表示式,後序遍歷根樹即得到字尾表示式.

根樹的例子:

因此對上一步形成的根樹後序遍歷,就完成了中綴轉字尾.

字尾轉中綴:運算元從左到右依次入棧,遇到計算符號就將棧頂次棧頂的兩個數取出計算,結果放入棧頂

參考:離散數學及其應用(第六版)

字尾表示式和中綴表示式的轉換

不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 即2 1 3 很好理解,就是乙個符號只對其前面兩個數作用 如a b c d e f 這是怎麼搞出來的呢?選最靠中的那個優先順序最低的符號開始 把算數式分為2個部分,若符...

中綴和字尾表示式的轉換

1 設定乙個符號棧,並把符號 壓入棧中,並規定 的優先順序最低 2 從左往右掃瞄表示式,如果是字母就直接傳送給字尾表示式 3 如果是運算子,就與棧頂的運算子進行比較 4 如果讀到的是左括號,則左括號入棧 5 如果讀到的是右括號,則從運算子棧中彈出運算子,一直到把左括號也彈出來為止 因為括號裡的運算子...

中綴表示式轉換字尾表示式

中綴表示式是最自然 最易被人類理解的表達方式,但是計算機處理起來並不顯得方便,這時,字尾表示式就發揮作用了 例如 計算表示式 a b c d 的值,程式裡需要不斷的判斷運算子的優先順序,先計算括號裡的子表示式 假如我們將上述表示式轉換為字尾表示式 a b c d 你會發現現在是不需要括號了 這時我們...