[問題] 中序轉後序

看板C_and_CPP (C/C++)作者 (薯)時間16年前 (2009/12/07 21:30), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串2/2 (看更多)
從文字檔裡面讀取一個中序算式 (假設此算式一定對,無需檢查) 用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 ▎ ●> ● ▌ ﹍﹍ 囧> 幹... ▲ ■┘ ▎ ■ ▋ ︶■ 〈﹀ ∥ ▁▁∥ ▎ ﹀〉▊ 〈\ ψcockroach727 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.58.39

12/07 22:14, , 1F
最後一個是運算符號就直接error了阿
12/07 22:14, 1F

12/07 22:33, , 2F
我說的是後序的最後一個運算元@.@ 3+2 --> 3 2 +
12/07 22:33, 2F

12/07 22:34, , 3F
結果會變成 3 2 沒有+
12/07 22:34, 3F

12/07 23:18, , 4F
!IsNumber -> !(nextChar >= 48)&&(nextChar <= 57)
12/07 23:18, 4F
文章代碼(AID): #1B7GDzQ0 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B7GDzQ0 (C_and_CPP)