python實現資料結構的基礎

2021-08-15 16:51:25 字數 1059 閱讀 5760

資料結構是計算機儲存、組織資料的方式。不同語言只是資料結構實現的不同工具,但本質是一樣的。

python的強大之處在於其自帶的資料結構:列表 list,元組 tuple,字典 dict 等,都非常的強大,尤其是列表,在它們的基礎上可以方便快捷的實現常用的資料結構:棧,佇列,鍊錶,樹等,而沒有必要重複造輪子。

棧,是一種僅允許在表的一端進行插入和刪除運算的受限線性表,滿足後進先出原則。

佇列,是一種僅允許在表的前端進行刪除操作,而在表的後端進行插入操作的受限線性表,滿足先進先出原則。

python 中的列表,其自有的 insert() 函式可以在任意位置插入, pop() 函式可以在任意位置彈出並刪除。

因此,在 python 中,棧和佇列可以用列表實現。

樹,是一種典型的非線性結構,可以用來表示層次關係,因表示的樣子很像一顆倒立的樹而得名。

在樹中,最簡單也是應用最廣泛的是二叉樹,同樣包括儲存資料元素的資料域和儲存左右孩子節點位址的指標域。

在c語言中,因為指標的加持,可以很直觀的實現鍊錶和樹等需要指標的資料結構,而在 python 中,雖然沒有顯式的指標,但每個變數,除了基本資料型別(int,float 等),都是乙個『引用』。

引用:當你建立乙個物件並給它賦乙個變數的時候,這個變數僅僅引用那個物件,而不是表示這個物件本身!也就是說,變數名指向你計算機中儲存那個物件的記憶體。這被稱作名稱到物件的引用。

可以看出,引用類似於指標,只是不能進行指標運算,比如, p + 1 指向下乙個元素之類的。

因此,在 python 中,鍊錶和樹可以通過定義節點類和引用來實現。

在本專欄接下來的文章中,會用 python 去實現基本的資料結構:棧,佇列,鍊錶和樹,並都會附上乙個小的應用例項。然後結合劍指offer 中的資料結構相關筆試題,用 python 來完成,以更好地延伸到資料結構更多的操作和實踐中去,希望本專欄能助你在 python 程式設計學習之路一臂之力。

本專欄許多內容參考自經典書籍:problem solving with algorithms and data structures using python 在此對作者深表感謝!

資料結構基礎 python實現堆排序

堆的概念 堆是一種完全二叉樹,就是除了最後一層之外的其他每一層都被完全填充,並且所有結點都保持向左對齊的樹。就像碼金字塔的磚塊,必須從頭到底,從左到右乙個乙個碼,不能空缺。堆有兩種型別 大根堆,小根堆 大根堆 每個結點的值都大於或等於左右孩子結點 小根堆 每個結點的值都小於或等於左右孩子結點 大根堆...

基礎資料結構 之 佇列(python實現)

隊也是程式設計開發中常見的一種資料結構。棧和隊可用來模擬函式的遞迴過程。隊的特點為先入先出,主要操作包括入隊和出隊。入隊時需判斷隊是否已滿,出隊時需判斷隊是否為空。下面給出乙個隊的python實現的例子 class queue object def init self,size 8 self.que...

資料結構 Python實現

參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...