運算元入棧,然後碰到操作符出棧頂的兩個運算元,之後得到結果加到棧頂。
def
postfix_evaluation
(postfix, operand)
: stack =
# 運算元棧
for i in postfix:
# 1、若為運算元(字母):入棧
if97
<=
ord(i)
<=
122:
i =float(""
.join(operand[
str(i)])
)# 將字母在字典中對應的值取出並轉換成浮點型
# 2、若是運算子:將兩個運算元出棧,計算它們的值,再把結果入棧
else
: operand2 = stack.pop(
) operand1 = stack.pop(
)# 呼叫operator_definition函式求中間結果
)return stack.pop(
)# operator_definition函式實現對運算子的定義以及中間結果的計算
defoperator_definition
(operand1, operand2, operator)
:if operator ==
'+':
return operand1 + operand2
if operator ==
'-':
return operand1 - operand2
if operator ==
'×':
return operand1 * operand2
if operator ==
'÷':
return operand1 / operand2
資料結構與演算法分析(八) BFS演算法
圖的組成 頂點 vertices 邊 edges 圖的一些概念 1.鄰接 adjacent v1和v2相連線 2.路徑 path 乙個頂點序列 3.圈 cycle 乙個頂點出現了兩次 圖的表示 1.鄰接矩陣 空間大,但是速度快 2.鄰接表 空間小,但速度慢 實現 實現的是無權圖 1.根據邊的數目確定...
資料結構與演算法(八)希爾排序
希爾排序 1.希爾排序的產生 希爾排序是由科學家donald l.shell提出的,希爾排序基於插入排序,並新增了一些新的特性,從而大大提高插入排序的執行效率。2.插入排序的缺陷,多次移動 參見 插入排序 假如乙個很小的資料在靠右端的位置上。那麼要將該資料排序到正確的位置上,則所有的中間資料都需要向...
資料結構與演算法 遞迴 八皇后
八皇后問題介紹 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。由於西洋棋是乙個8 8的棋盤,而且棋盤中總共需要...