轉自:https://blog.csdn.net/iteye_4185/article/details/82574934
1.假定有中綴表達式1 + (( 2 + 3)* 4 ) – 5,請將它轉化為后綴表達式。
方法一:利用表達式樹
方法二:利用輔助棧
從左到右遍歷中綴表達式的每個操作數和操作符。
當讀到操作數時,立即把它輸出,即成為后綴表達式的一部分;
若讀到操作符,判斷該符號與棧頂符號的優先級,若該符號優先級高於棧頂元素,則將該操作符入棧,否則就一次把棧中運算符彈出並加到后綴表達式尾端,直到遇到優先級低於該操作符的棧元素,然后把該操作符壓入棧中。
如果遇到”(”,直接壓入棧中,如果遇到一個”)”,那么就將棧元素彈出並加到后綴表達式尾端,但左右括號並不輸出。最后,如果讀到中綴表達式的尾端,將棧元素依次完全彈出並加到后綴表達式尾端。
上述鏈接中給出了圖解。
224. 基本計算器,可練習。