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

2021-09-01 18:39:05 字數 1292 閱讀 4516

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

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

步驟掃瞄項

項型別動作

棧內內容輸出0

『#』入棧,讀入下乙個符號#1

a運算元

直接輸出#a

2+操作符isp(『#』) < icp(『+』),進棧#+3

b運算元

直接輸出#+b

4-操作符isp(『+』) > icp(『-』),退棧並退出#+

5isp(『#』) < icp(『-』),進棧#-6

a運算元

直接輸出#-a

7*操作符isp(『-』) < icp(『*』),進棧

#-*8

(操作符

isp(『*』) < icp(『(』),進棧

#-*(9(

操作符isp(『(』) < icp(『(』),進棧

#-*((10c

運算元直接輸出

#-*((c11

+操作符

isp(『(』) < icp(『+』),進棧

#-*((+12d

運算元直接輸出

#-*((+d13

)操作符

isp(『+』) > icp(『)』),退棧並輸出

#-*((+14

isp(『(』) = icp(『(』),直接退棧

#-*(15/

操作符isp(『(』) < icp(『/』),進棧

#-*(/16e

運算元直接輸出

#-*(/e17

-操作符

isp(『/』) > icp(『-』),退棧並輸出

#-*(/18

isp(『(』) < icp(『-』),進棧

#-*(-19f

運算元直接輸出

#-*(-f20

)操作符

isp(『-』) > icp(『)』),退棧並輸出

#-*(-21

isp(『(』) = icp(『(』),直接退棧

#-*22

+操作符

isp(『*』) > icp(『+』),退棧並輸出#-*

23isp(『-』) > icp(『+』),退棧並輸出#-

24isp(『#』) < icp(『+』),進棧

#+25

g運算元

直接輸出#+g

26#操作符isp(『+』) > icp(『#』),退棧並輸出#+

27isp(『#』) > icp(『#』),退棧,結束

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

將中綴表示式轉化成字尾表示式

中綴變字尾主要的思想就是將需要的運算子先做乙個對映 對於任意表示式,式中從頭開始掃,遇到非運算子,即任意數字或字母直接輸出 遇到運算子考慮放入棧中 若棧空則放入 若棧不為空,判斷棧頂的優先順序是否 待放入的運算子,若 小於則將其壓入棧中 若不小於,則將棧一直 pop,知道運算子可以放入棧中 當然還有...

將中綴表示式轉化成字尾表示式(逆波蘭式)

直接上 中綴表示式 轉換成 字尾表示式 逆波蘭式 include include struct stack int get priority char c int isempty struct stack s struct stack createstack unsigned int len voi...

將中綴表示式轉化成字尾表示式來計算值

題目很簡單,就是給出乙個表示式 例如2 3 5 6 然後我們得出他的值。未接觸這個方法前,我是用了一種很複雜的方法 爆肝警告 將中綴表示式 就是我們要求的表示式 轉化成字尾表示式來解決就會比較簡單。對於中綴表示式和字尾表示式的概念這裡就不說了,只將方法呈現出來。例如乙個中綴表示式 a b c d e...