2012年4月3日 星期二

【資料結構】中序式轉後序式

摘重點:


解法:
a+b*d+c/d   =>    ((a+(b*d))+(c/d)) -> abd*+cd/+


例如(a+b)*(c+d)這個式子,依演算法的輸出過程如下:



OPSTACKOUTPUT
((-
a(a
+(+a
b(+ab
)-ab+
**ab+
(*(ab+
c*(ab+c
+*(+ab+c
d*(+ab+cd
)*ab+cd+
--ab+cd+*



PreFix、InFix、PostFix


PreFix(前序式):* + 1 2 + 3 4

InFix(中序式): (1+2)*(3+4)

PostFix(後序式):1 2 + 3 4 + *

(1+2)*(3+4)




後序存取模式:

讀取堆疊
11
21 2
+3 // 1+2 後存回
33 3
43 3 4
+3 7 // 3+4 後存回
*21 // 3 * 7 後存回



---------------------------------------------------------------------------------------------------------------
參考:
1.
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/InFixPostfix.htm
2.
http://www2.lssh.tp.edu.tw/~hlf/class-1/lang-c/stack2.htm

沒有留言:

張貼留言