數據結構筆記——棧的應用(二)

一、中綴表達式轉後綴表達式(機算)

初始化一個棧,用於保存暫時還不確定運算順序的運算符。

從左到右處理各個元素,直到末尾。可能遇到三種情況:

①遇到操作數。直接加入後綴表達式。

②遇到界限符。遇到“(”直接入棧;遇到“)”則依次彈出棧內運算符並加入後綴表達式,直到彈出“(”爲止。

注:“(”不加入後綴表達式。

③遇到運算符。依次彈出棧中優先級高於或等於當前運算符的所有運算符,並加入後綴表達式,若碰到“(”或棧空則停止。之後再把當前運算符入棧。

例:

 圖示

 

二、中綴表達式的計算(用棧實現)

用棧實現中綴表達式的計算:

初始化兩個棧,操作數棧和運算符棧

若掃描到操作數,壓入操作棧

若掃描到運算符或界限符,則按照“中綴轉後綴”相同的邏輯壓入運算符棧(期間也會彈出運算符,每當彈出一個運算符時,就需要再彈出兩個操作棧的棧頂元素並執行相應運算,運算結果再壓回操作數棧)

 例:

三、總結

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