python資料結構(一)

2021-10-04 20:57:00 字數 1577 閱讀 8844

在這裡插入**片線性結構:線性結構是一種有序資料項的集合,其中每乙個資料項都有唯一的前驅和後繼(第乙個沒有前驅,最後乙個沒有後繼),好比我們房子的左右鄰居都是唯一的。

線性結構總有兩端,不同線性結構的關鍵區別在於資料項增減的方式,有的結構只允許在一段操作,有的結構允許在兩端操作。下面介紹幾種基本的線性結構

棧:資料的加入移除只發生在一端的線性結構,這一端叫做棧頂,另一端叫做棧底。一摞盤子就是乙個棧,因為新增和取出都只能在一端進行。

特點:先進後出lifo(last in first out),就好像盤子,後加入的一定先被使用。這種特性就是次序反轉,word上的撤銷操作就是應用的例子。

用python來定義乙個類,這裡需要用到python原生的資料集list,我們這裡將list的末尾設定為棧頂

class

stack

:def

__init__

(self)

: self.items=

defisemptty

(self)

:#檢視棧是否為空

return self.items==

defpush

(self,item)

:#為棧新增元素

defpop

(self)

:#刪除棧元素

return self.items.pop(

)def

peek

(self)

:#檢視棧頂元素

return self.items[

len(self.items)-1

]def

size

(self)

:#檢視棧的長度

return

len(self.items)

from pythonds.basic.stack import stack

defparchecker

(symbolstring)

: s=stack(

) balanced=

true

index=

0while index<

len(symbolstring)

and balanced:

symbol=symbolstring[index]

if symbol==

"(":

s.push(symbol)

else

:if s.isempty():

balanced=

false

else

:s.pop(

) index+=

1if balanced and s.isempty():

return

true

else

:return

false

print

(parchecker(

'(())'))

print

(parchecker(

'(('

))

這就是小括號的匹配方法

Python資料結構(一)

演算法研究的是時空複雜度,它具有有窮性,確定性,可行性,還有輸入 輸出等特點 窮舉 萬能演算法 求n個數的全排列 8皇后問題 分而治之 減而治之 二分查詢 減而治之 歸併排序 分而治之 貪心 最小生成樹 prim,kruskal 單源最短路 dijkstra 動態規劃 揹包 士兵路徑 複雜度從小到大...

Python資料結構 列表(一)

這一節介紹python中最基本的資料結構 列表。列表的表示如下 123 abc hahah 456 0 列表中的每一項,我們稱之為乙個元素。1 使用中括號把所有元素都括起來。2 元素之間用逗號分割 3 元素之間的型別沒有要求,可以一樣,也可以不一樣。例子中的元素既有字串型別,也有整數型別。列表是一種...

資料結構python版(一)

1 演算法的由來 1 抽象的計算概念 能行可計算 由有限數量的明確有限指令構成 指令執行在有限步後終止 指令每次執行都能獲得唯一的結果 原則上可以由人單獨採用紙筆完成,而不依靠其他輔助 每條指令可以機械性地被準確執行,不需要智慧型和靈感 2 圖靈機計算模型 一條無限長的分格紙帶,每格可以記錄1個符號...