1. 程式人生 > >綜述 ------ 線性表,字串,棧和佇列

綜述 ------ 線性表,字串,棧和佇列

忍不住想給前幾個資料結構進行一下總結。

對於線性表我們分為順序表和連結表,分類的依據是節點的物理儲存關係。順序
中每個節點其物理儲存關係就表現了它的節點的邏輯關係,即每個節點的儲存
空間都是緊挨著,也就是說一個順序表的物理儲存空間就是一大塊物理儲存空間。 而連結表通過節點間的連結關係將表中的節點聯絡起來,也就是說
其節點間的邏輯關係是由連結實現的,儲存上,各個節點並不是緊挨著。

其中順序表又根據它的實現方式分為兩個類:

  • 一個是一體式順序表, 一個是動態的順序表。

一體式順序表將順序表的資訊和節點放在同一儲存塊中,
動態的順序表將順序表的資訊和節點的儲存塊分開來存放

python中list就是通過動態的結構實現的。

連結表我們很清楚,分為普通的連結表,迴圈連結表,雙向連結表,迴圈雙向連結表。

python字串本質上也是一種線性表的實現,如python中的str型別就是通過一體式順序表
實現的,因為str是一個不可變型別(當然對於字串最主要的還是它的匹配
演算法,樸素匹配演算法和KMP演算法)

然後就是棧和佇列,和列表一樣,棧和佇列也是儲存元素的容器,其實,棧和
佇列就是一種特殊的線性表,它允許的操作比較少,是一種侷限性的線性表。
棧和佇列可以使用兩種型別的線性表來實現。

從上面的敘述可以看出來,線性表是絕大多數資料結構的基礎,包括後面的二
叉樹等都可以使用線性表來實現。