1. 程式人生 > >資料結構中的中綴表示式轉化成字尾表示式

資料結構中的中綴表示式轉化成字尾表示式

接上一篇部落格。

已知操作符包括:+ , / , * , / , ( , ) ;

形如中綴表示式:a+b-a*((c+d)/e-f)+g

步驟

掃描項

項型別

動作

棧內內容

輸出

0

‘#’入棧,讀入下一個符號

#

1

a

運算元

直接輸出

#

a

2

+

操作符

isp(‘#’) < icp(‘+’),進棧

#+

3

b

運算元

直接輸出

#+

b

4

-

操作符

isp(‘+’) > icp(‘-’),退棧並退出

#

+

5

isp(‘#’) < icp(‘-’),進棧

#-

6

a

運算元

直接輸出

#-

a

7

*

操作符

isp(‘-’) < icp(‘*’),進棧

#-*

8

(

操作符

isp(‘*’) < icp(‘(’),進棧

#-*(

9

(

操作符

isp(‘(’) < icp(‘(’),進棧

#-*((

10

c

運算元

直接輸出

#-*((

c

11

+

操作符

isp(‘(’) < icp(‘+’),進棧

#-*((+

12

d

運算元

直接輸出

#-*((+

d

13

)

操作符

isp(‘+’) > icp(‘)’),退棧並輸出

#-*((

+

14

isp(‘(’) = icp(‘(’),直接退棧

#-*(

15

/

操作符

isp(‘(’) < icp(‘/’),進棧

#-*(/

16

e

運算元

直接輸出

#-*(/

e

17

-

操作符

isp(‘/’) > icp(‘-’),退棧並輸出

#-*(

/

18

isp(‘(’) < icp(‘-’),進棧

#-*(-

19

f

運算元

直接輸出

#-*(-

f

20

)

操作符

isp(‘-’) > icp(‘)’),退棧並輸出

#-*(

-

21

isp(‘(’) = icp(‘(’),直接退棧

#-*

22

+

操作符

isp(‘*’) > icp(‘+’),退棧並輸出

#-

*

23

isp(‘-’) > icp(‘+’),退棧並輸出

#

-

24

isp(‘#’) < icp(‘+’),進棧

#+

25

g

運算元

直接輸出

#+

g

26

#

操作符

isp(‘+’) > icp(‘#’),退棧並輸出

#

+

27

isp(‘#’) > icp(‘#’),退棧,結束

嗯,這樣就足夠清楚了。程式後續再補上。