資料結構中的字首表示式和字尾表示式


書寫算術表示式的表達方式稱為記法。算術表示式可以用三種不同但等效的記法來編寫,即不改變表示式的本質或輸出。這些記法是:

  • 中綴表示式

  • 字首表示式

  • 字尾表示式

中綴記法是我們編寫不同數學表示式時使用的普通記法。字首和字尾記法則有所不同。

字首記法

在這種記法中,運算子位於運算元**之前**,即運算子寫在運算元前面。例如,**+ab**。這相當於其中綴記法**a + b**。字首記法也稱為**波蘭表示法**。

字尾記法

這種記法風格稱為**逆波蘭表示法**。在這種記法風格中,運算子位於運算元**之後**,即運算子寫在運算元之後。例如,**ab+**。這相當於其中綴記法**a + b**。

示例

表示式編號中綴記法字首記法字尾記法
1a + b+ a ba b +
2(a + b) * c* + a b ca b + c *
3a * (b + c)* a + b ca b c + *
4a / b + c / d+ / a b / c da b / c d / +
5(a + b) * (c + d)* + a b + c da b + c d + *
6((a + b) * c) - d- * + a b c da b + c * d -

表示式解析

正如我們所討論的,設計算法或程式來解析中綴記法並不是一種非常有效的方法。相反,這些中綴記法首先被轉換為字尾或字首記法,然後再計算。

要解析任何算術表示式,我們還需要考慮運算子的優先順序和結合性。

優先順序

當一個運算元位於兩個不同的運算子之間時,哪個運算子首先獲取運算元由運算子對其他運算子的優先順序決定。例如:

𝑎 + 𝑏 ∗ 𝑐 → 𝑎 + (𝑏 ∗ 𝑐)

由於乘法運算優先於加法運算,因此將首先計算 b * c。稍後將提供運算子優先順序表。

更新於:2020年8月11日

29K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告