Infix,Postfix,Prefix之轉換
1.infix
對機器來說麻煩
2.postfix
compiler只需要由左至右scan一次即可,已經免除優先權、結合性
3.prefix
優:compiler只需要由右至左scan一次
缺:中序轉前序需要兩個stack持(但中序轉後序只需一個stack)
—>Infix轉Postfix
I.x = nexttoken(infix)
II.若x為operand則印出
III.否則,分兩種情況
case1:若是”)“則pop直到遇到”(”
case2:否則看優先權,若x>stack—>top則push入stack
x<stack—>top則pop直到x>stack—>top為止
IV.把x放入stack
V.若沒有infix了則將所有stack值pop出
—>”(“在stack外優先權最高,在stack內優先權最低
—>右結合之operator,在stack外stack內
—>計算
1.postfix
I.若是operand則push入stack
II.若是operator則pop出適當數量,運算完在push入stack(在stack越晚pop出的放越前面做運算)
2.prefix
I.由右至左,其餘同postfixII.運算時,在stack越早pop出的放越前面做運算
—>stack應用:文法頗析、回文判斷、字串判斷