我們平常所寫的標準形式的表示式叫做中綴式,我們可以用棧來把他轉換成字尾式。假設只允許操作+,*,(,),並堅持普通的優先順序發則。還要假設表示式是合法的。
如將表示式 a + b * c + ( d * e + f ) * g轉換成字尾式是a b c * + d e * f + g * +
思路 :當讀到乙個運算元時,立即把他放到輸出中。而把操作符放進乙個棧中。當遇到左括號時我們也要將其推入棧中。
從乙個空棧開始計算。如果遇到乙個右括號,那麼就將棧元素彈出,將彈出的元素寫出直到遇到對應的左括號,但是這個左括號不輸出但是要彈出,相應的,如果我們遇到任何其他的操作符,就先從棧中彈出操作符知道發現優先順序更低的為止,然後再將操作符入棧。除非是在處理乙個「)」時,否則絕不從棧中彈出「(」。
最後,如果讀到輸入的末尾,就將棧元素全部彈出寫到輸出中。
中綴到字尾的轉換 棧實現
include include include include 2018.4.4 棧的鍊錶實現 stack initial stack int isempty stack s void dispose stack stack s void push stack s,elementtype x voi...
資料結構 中綴到字尾的轉換
問題描述 請編寫程式將乙個中綴表示式轉換為字尾表示式。輸入僅一行,是乙個中綴表示式。輸入的符號中只有這些基本符號 0123456789 並且不會出現形如2 3的格式,所有數字都是個位數,表示整除運算。輸出僅一行,是轉換後的字尾表示式。數字之間 運算子之間 數字和運算子之間都用乙個空格隔開 參見樣例 ...
中綴 字首 字尾互相轉換
中綴表示式 a b c d e 第一步 按照運算子的優先順序對所有的運算單位加括號 a b c d e 第二步 字首 把運算符號移動到對應的括號前面 a bc de 把括號去掉 a bc de 字首表示式 字尾 把運算符號移動到對應的括號後面 a bc de 把括號去掉 abc de 字尾表示式 從...