精華區beta Visual_Basic 關於我們 聯絡資訊
※ 引述《Dumkas (逃逸的影像)》之銘言: : ※ 引述《Ihope (我期待..)》之銘言: : : 請問一下什麼是「前序」、「後序」??? : 雖然我不會 : 不過我記得是演算法的一種 : 好像跟堆疊有關 : 可以去programming板問~ 一般的運算式分三種 中序式 我們平常在用的式子 ex:a*b 前序式 將運算子(+,-,*,/)放在運算元前面 ex:*ab 後序式 將運算子放在運算元後面 ex:ab* 由於中序式有()的出現 以電腦處現較不方便 而前序式及後序式均無() 因為出現的順序決定了運算的順序 所以可以堆疊處理 而後序式在做計算時只需一個堆疊 前序式需兩個 故許多人常轉換成後序式運算 至於怎麼轉 看以下範例 (程式的跑法就請各位自行查書 因為太長了我不PO了) [中序式轉前序式] 設中序式為 a*(b+c)/d-e (紙筆算法) 標出順序 ((a*(b+c))/d)-e 移運算子 -(/(*a(+bc))d)e 去括號 -/*a+bcde [中序式轉後序式] 同樣以上例說明 (紙筆算法) 標出順序 ((a*(b+c))/d)-e 移運算子 ((a(bc+)*)d/)e- 去括號 abc+*d/e- [後序式運算] 讀入一字元 若為運算元則堆入堆疊 若為運算子則取出兩個運算元運算後堆回堆疊 設後序式為 635+*4/7- 也就是中序式的6*(3+5)/4-7 讀入 堆疊 6 運算元 堆入 (6) 3 運算元 堆入 (6)(3) 5 運算元 堆入 (6)(3)(5) + 運算子 運算 (6) 讀出3&5 作+得8 堆回 (6)(8) * 運算子 運算 (空) 讀出6&8 作*得48 堆入 (48) 4 運算元 堆入 (48)(4) / 運算子 運算 (空) 讀出48&4 作/得12 堆回 (12) 7 運算元 堆入 (12)(7) - 運算子 運算 (空) 讀出12&7 作-得5 堆回 (5) 最後堆疊裡剩下的那一個數就是答案 此例中就是5 可以檢查一下:6*(3+5)/4-7=6*8/4-7=48/4-7=12-7=5 -- 呼~~~終於打完了~~~ -- ≡ File Edit Search Run Compile Debug Project Options Window Help [0] ══════════════ LPH66.CPP ═══════════════╗ #include <PTT.h> #include <BBS.h> C:\DJGPP>gpp LPH66.cpp -o LPH66.exe -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 163.15.56.3
Ihope:實在是太感謝這位前輩了.... 推 218.166.73.125 05/14
fivedollars:隨便一本資料結構的書都有吧... 推 61.216.126.107 05/14
LPH66:我才高一..... 推 163.15.56.3 05/20