推 fj90406:謝謝大大的解答,不過像(b)小題,如果在把其轉回中序,不 03/22 18:01
→ fj90406:不會造成說"ab-" → "a-b"嗎? 03/22 18:02
posfix轉回infix如下所示
http://img257.imageshack.us/img257/706/40549062.jpg

推 fj90406:小弟我個人見解是"是否應該把負號與減號分別判定"(雖然外 03/22 18:05
→ fj90406:觀一樣) 03/22 18:05
※ 編輯: crazykk 來自: 60.244.36.139 (03/22 18:26)
推 fj90406:感謝高手的解答,對於這些題目,已無惑 謝謝您!!! 03/22 18:30
補上用Stack轉換(即是電腦實際轉換方法)
可參考程式 http://tinyurl.com/ybxuka3
我以(b)來講解 a*-b+c
step1.先補上括號 ((a*(-b))+c) 接著從運算式最左邊開始往右SCAN
step2."(" push到stack中 | ( |
|___|
stack
step3."(" push到stack中 | ( |
| ( |
|___|
stack
step4."a" 運算元,直接印出a,所以目前輸出是 a
step5."*" push到stack中 | * |
| ( |
| ( |
|___|
stack
step6."(" push到stack中 | ( |
| * |
| ( |
| ( |
|___|
stack
step7."-" push到stack中 | - |
| ( |
| * |
| ( |
| ( |
|___|
stack
step8."b" 運算元,直接印出b,所以目前輸出是 a b
step9.")" 執行pop()且印出pop的結果,直到遇到左括號(括號不印)
目前stack: | * | ,輸出結果 a b -
| ( |
| ( |
|___|
stack
step10.")"同上,目前stack: | ( |,輸出結果 a b - *
|___|
stack
step11."+" push到stack | + |
| ( |
|___|
stack
step12."c" 運算元,直接印出c,所以目前的輸出是 a b - * c
step13.")"執行pop()且印出pop的結果,輸出結果 a b - * c +
所以postfix是 a b - * c +
※ 編輯: crazykk 來自: 60.244.36.139 (03/22 19:50)