作者liu2007 (薯)
看板C_and_CPP
標題[問題] 中序轉後序
時間Mon Dec 7 21:30:30 2009
從文字檔裡面讀取一個中序算式 (假設此算式一定對,無需檢查)
用scan的方式將其數字以及運算元還有括號分開依原本的順序放入陣列
(雖然名稱是堆疊)
之後在依照網路上的方法用Stack 依照其priority pop() 或 push()
可是問題是執行的時候
總是會少最後一個運算元
如果每處理一個數字或括號或運算元然後印出PostFix 跟 Stack 裡的內容時
又會出現很奇怪的現象:起初兩個物件近來的時候,堆疊 top 會加一,
可是印出其PostFix 和 Stack的內容卻是空格
等到處理第三個物件的時候又會突然從其中之一跳出
不知道為什麼
最後
如果算式是以括號作結尾
譬如 2+3*4+(3+2*3)
或是 2+3*4+(3+2)
就會正確印出後序
可是如果是沒有括號
那麼最後一個運算元( +,-,*,/)
會不見
debug 好久
希望有空的鄉民能幫小弟看看
感謝
<(_._)>
這是程式碼
http://nopaste.csie.org/f3c7b
--
肝不好 ▁▁ ● ◤
肝若好
人生是黑白的 ▏ ◤
考卷是空白的
▏ ◤
、 ﹐
● ●b 囧 ▎ ●> ● ◤
▌ ﹍﹍ 0 ▊囧>
幹...
▲ ■┘ ■ ▎ ■ █◤ ▌ ㄏ▋ ︶■
〈﹀ ∥ ▁▁∥ ▎ ﹀〉◤
▋ ▊ 〈\
ψcockroach727
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.58.39
推 cooper6334:最後一個是運算符號就直接error了阿 12/07 22:14
→ liu2007:我說的是後序的最後一個運算元@.@ 3+2 --> 3 2 + 12/07 22:33
→ liu2007:結果會變成 3 2 沒有+ 12/07 22:34
推 ledia:!IsNumber -> !(nextChar >= 48)&&(nextChar <= 57) 12/07 23:18