Post · 2009-10-28 12:22

Re: [Java][DS]中序轉後序式

作者Tony1223.bbs@aurora.mis.yzu.edu.tw (沉默是金)
標題Re: [Java][DS]中序轉後序式
時間北極光 (2009/10/28 Wed 12:02:53)
※ 引述《Tony1223 (Doing What I do!)》之銘言:
手算演算法模擬
簡單描述一下流程
拿個比較難的例子好了 1+31*2-5+7
1.拆token -> [1,+,31,*,2,-,5,+,7]
2. 依序把token 拿出來做處理 (建stack)
處理的步驟依照以下狀況處理
1.碰到.碰到數字直接印
2.碰到運算子就考慮優先權
所以是
token 處理狀況
1 -> stack [ ] output "1"
+ -> stack[+] output "1"
31 -> stack[+] output "1 31"
* -> 因為+ 優先權小於 * 所以 放進stack
stack [ + ,* ] output"1 31"
2 -> stack[ + , * ] output "1 31 2"
- -> 因為 * 優先權比 - 大 , 所以 * 要先pop出來 ,
stack [ + , - ] output "1 31 2 * "
5 -> stack [+ , - ] output "1 31 2 * 5"
+ -> 因為+跟-優先權相同, 相同時就pop出來 ,
stack [+,+] output "1 31 2 * 5 - "
7 -> stack [+ ,+ ] output "1 31 2 * 5 - 7 "
跑到結束了 , 把stack的都pop出來 所以是
output "1 31 2 * 5 - 7 + + "
就是這樣的運算過程
流程看懂了就剩搞懂程式要怎麼寫了
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *.╯ ╯ ╯ の物語.*
◥███████──────◣~◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼 *◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂~telnet://tony1223.no-ip.info
--
╭═ Origin ─═ 北極光 aurora.twbbs.org κλμ ─╣
╚─ Author ═─ 114-137-4-198.dynamic.hin
Replies
0
Likes
0
Reposts
0

Comments

No approved comments yet.