棧的應用——後綴表示法(逆波蘭表示法)——Reverse Polish Notation

中綴表示法:平時所用的標準的四則運算表達式例如9 + (3 - 1) x 3 + 10 ÷ 2 稱爲中綴表示法

後綴表示法:一種不需要括號的後綴表示法 也被稱爲逆波蘭表示法:9 3 1 * + 10 2 / +

1.那麼從中綴表示法到後綴表示法是怎麼轉換的呢?

回答:從左到右便利表達式的每個數字和符號,遇到數字就輸出讓他稱爲後綴表達式的一部分,若是符號則判斷它與棧頂符號的優先級,如果是右括號或者優先級不高於(也就是<或者=)棧頂符號(乘除優先加減)則棧頂元素依次出棧,稱爲後綴表達式一部分,然後將當前符號進棧,一直到結束。

2.那麼後綴表達式如何計算?

回答:從左到右依次遍歷後綴表達式的每個數字和符號,遇到數字就進棧,遇到符號就將棧頂的兩個數字(1).先出棧 (2)再進行運算 (3)最後將運算結果進棧。最終得到結果。

3.就上面案例解釋如下:

在這裏插入圖片描述

1:中綴-後綴:9是數字先成爲後綴表達式一部分 +是符號先進棧 “(“是符號再進棧 —是符號 和棧頂元素”(“相比沒有可比性。接着是”)“和棧裏面的左”(” 完成匹配 。因此從左"(" 依次出棧直到")" 左括號上邊只有"—" 所以輸出"—"。到目前爲止是931—。接着3成爲後綴表達式一部分。接下來是×號 和棧頂元素+號相比 >= 因此入棧,接下來是+號 比×號小,優先級和最後一個+號一樣。因此全部出棧 目前是931—3*+。然後將當前符號+號入棧 接着是10數字成爲後綴表達式一部分,然後是÷號 比+號優先級高 入棧,接着是數字2繼續成爲後綴表達式一部分。到此可以看到已經初步結束了,這個時候棧中從下到上還留有+ 和 / 依次出棧。所以最終的後綴表達式結果爲如圖: 9 3 1 — 3 * + 10 2 / +

2:後綴計算:931依次進棧 然後遇到符號—,所以如圖3-1=2,2再入棧,3再入棧,接着遇到符號*,2×3 = 6,6入棧。接着是符號+,9+6=15,15入棧,10和2入棧,接着遇到/號。10/2=5,5入棧,接着遇到+號。15+5=20。最終結果就是爲20.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章