忍不住想給前幾個數據結構進行一下總結。
對於線性表我們分爲順序表和鏈接表,分類的依據是節點的物理存儲關係。順序
表中每個節點其物理存儲關係就表現了它的節點的邏輯關係,即每個節點的存儲
空間都是緊挨着,也就是說一個順序表的物理存儲空間就是一大塊物理存儲空間。 而鏈接表通過節點間的鏈接關係將表中的節點聯繫起來,也就是說
其節點間的邏輯關係是由鏈接實現的,存儲上,各個節點並不是緊挨着。
其中順序表又根據它的實現方式分爲兩個類:
- 一個是一體式順序表, 一個是動態的順序表。
一體式順序表將順序表的信息和節點放在同一存儲塊中,
動態的順序表將順序表的信息和節點的存儲塊分開來存放
python中list就是通過動態的結構實現的。
鏈接表我們很清楚,分爲普通的鏈接表,循環鏈接表,雙向鏈接表,循環雙向鏈接表。
python字符串本質上也是一種線性表的實現,如python中的str類型就是通過一體式順序表
實現的,因爲str是一個不可變類型(當然對於字符串最主要的還是它的匹配
算法,樸素匹配算法和KMP算法)
然後就是棧和隊列,和列表一樣,棧和隊列也是存儲元素的容器,其實,棧和
隊列就是一種特殊的線性表,它允許的操作比較少,是一種侷限性的線性表。
棧和隊列可以使用兩種類型的線性表來實現。
從上面的敘述可以看出來,線性表是絕大多數數據結構的基礎,包括後面的二
叉樹等都可以使用線性表來實現。