一、中綴表達式轉後綴表達式(機算)
初始化一個棧,用於保存暫時還不確定運算順序的運算符。
從左到右處理各個元素,直到末尾。可能遇到三種情況:
①遇到操作數。直接加入後綴表達式。
②遇到界限符。遇到“(”直接入棧;遇到“)”則依次彈出棧內運算符並加入後綴表達式,直到彈出“(”爲止。
注:“(”不加入後綴表達式。
③遇到運算符。依次彈出棧中優先級高於或等於當前運算符的所有運算符,並加入後綴表達式,若碰到“(”或棧空則停止。之後再把當前運算符入棧。
例:
圖示
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
二、中綴表達式的計算(用棧實現)
用棧實現中綴表達式的計算:
初始化兩個棧,操作數棧和運算符棧
若掃描到操作數,壓入操作棧
若掃描到運算符或界限符,則按照“中綴轉後綴”相同的邏輯壓入運算符棧(期間也會彈出運算符,每當彈出一個運算符時,就需要再彈出兩個操作棧的棧頂元素並執行相應運算,運算結果再壓回操作數棧)
例:
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩