棧的應用 四則運算(字尾表示式)

2021-10-02 13:31:23 字數 753 閱讀 6539

那麼字尾表示法如何寫出來的呢?

先看乙個簡單的例子

乙個中綴四則表示式:

9+(3-1)x3+10/2

變成字尾表示式:

9 3 1 - 3 x + 10 2 / +

那麼它是怎麼變的呢?

先別急,我們先來看看計算機是如何計算字尾表示式的。

規則:從左到右遍歷表示式的每個數字和符號,遇到數字就進棧,遇到符號就將棧頂的兩個數字出棧,一直獲得最終的結果。

(從左1列到右看)13

2322

61059

99915

1515

20我們從左向右看:

字尾表示式前三個931都是數字!那麼!進棧!!

然後他們遇到了減號!最上面兩個出列!3-1=2!你給我回去!

就變成了第二列的92了。以此類推,直到最後。

在我們了解計算機如何去求字尾表示式之後。我們就能猜出如何去從乙個中綴表示式去寫乙個字尾表示式

規則:從左往右遍歷

遇到數字,寫它!

遇到符號,收入棧(含括號)

比較符號的優先順序!然後拿出來,寫它!

如此迴圈!

成了!9+(3-1)x3+10/2

還是這個例子

我們可以這樣思考

931931-

931-3

931-3*

931-3*+

931-3*+10 2

931-3*+10 2/

9 3 1 - 3 * + 10 2 / +

中綴 字尾表示式 四則運算

中綴表示式轉化為字尾表示式,並通過字尾表示式計算值 轉化規則 出棧 出棧後元素新增到字尾表示式的末尾 中綴表示式掃瞄完畢後,若棧內元素不為空,依次出棧直到棧為空,出棧元素新增到字尾表示式後 舉例 3 2 5 4 2 過程如下 建立操作符棧,以及儲存字尾表示式的佇列 從頭到尾掃瞄中綴表示式,首先掃瞄到...

四則運算表示式分解,前中字尾表示式(棧的應用)

前 中 字尾表示式的轉換 首先需要明白三者之間的轉換 自然表示式轉換為前 中 字尾表示式,其實是很簡單的。首先將自然表示式按照優先順序順序,構造出與表示式相對應的二叉樹,然後對二叉樹進行前 中 字尾遍歷,即得到前 中 字尾表示式。舉例說明將自然表示式轉換成二叉樹 a b c d 根據表示式的優先順序...

四則運算表示式分解,前中字尾表示式(棧的應用)

前 中 字尾表示式的轉換 首先需要明白三者之間的轉換 自然表示式轉換為前 中 字尾表示式,其實是很簡單的。首先將自然表示式按照優先順序順序,構造出與表示式相對應的二叉樹,然後對二叉樹進行前 中 字尾遍歷,即得到前 中 字尾表示式。舉例說明將自然表示式轉換成二叉樹 a b c d 根據表示式的優先順序...