棧與逆波蘭表示式

2021-10-04 06:29:27 字數 1071 閱讀 2062

逆波蘭表示式又叫做做字尾表示式。在通常的表示式中,二元運算子總是置於與之相關的兩個物件之間,這是中綴表示式,而逆波蘭表示式是每一運算子都置於其運算物件之後,所以稱為字尾表示式。

舉例:中綴:4+5

字尾:4 5 +

逆波蘭表達的式的實現符合棧先進後出的特性。

演算法:輸入你要計算的逆波蘭表示式,然後以此讀取判斷,如果是數字則將其壓棧,如果讀取到『+』,『-』,『*』,『/』,其中的乙個,將之前壓棧的資料出棧然後進行對用的運算操作,再將其壓棧。然後繼續向後讀取重複之前的判斷操作。

需要注意的是,本題要得到所得結果的整數部分,python中『/』會得到小數部分並且影響最後結果,所以用到『//『來進行運算,同時,因為會有負數運算,為了防止出現錯誤,可以用-(-n // m)形式在兩個數乘積為負時進行運算。

a =

for i in tokens:

if i in

["+"

,"-"

,"*"

,"/"]:

m = a.pop(

) n = a.pop(

)if i ==

"+":

t = n + m

elif i ==

"-":

t = n - m

elif i ==

"*":

t = n * m

else

:if n * m >0:

t = n // m

else

: t =-(

-n // m)

else

:int

(i))

return a.pop(

)

ifname== 「main」:

a = solution()

t = [「10」,「6」,「9」,「3」,"+","-11","","/","",「17」,"+",「5」,"+"]

b = a.evalrpn(t)

print(b)

波蘭表示式和逆波蘭表示式(棧)

中綴表示式如1 2 2 1 其運算子一般出現在運算元之間,因此稱為中綴表示式,也就是大家程式設計中寫的表達 式。編譯系統不考慮表示式的優先級別,只是對表示式從左到右進行掃瞄,當遇到運算子時,就把其前面的兩 個運算元取出,進行操作。為達到上述目的,就要將中綴表示式進行改寫,變為字尾表示式 如上面的表示...

波蘭表示式與逆波蘭表示式

2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...

波蘭表示式 逆波蘭表示式

中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...