逆波蘭表示式又叫做做字尾表示式。在通常的表示式中,二元運算子總是置於與之相關的兩個物件之間,這是中綴表示式,而逆波蘭表示式是每一運算子都置於其運算物件之後,所以稱為字尾表示式。
舉例:中綴: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 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...