資料結構與演算法(八)

2021-10-18 11:03:37 字數 950 閱讀 5328

運算元入棧,然後碰到操作符出棧頂的兩個運算元,之後得到結果加到棧頂。

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的棋盤,而且棋盤中總共需要...