資料結構——線性表
阿新 • • 發佈:2022-01-10
-
線性表的定義
線性表是具有相同特性資料元素的一個有限序列。序列中所含元素個數叫做線性表的長度。除了頭尾元素,其餘元素都只有一個直接前驅和直接後繼。
-
線性表的儲存結構
-
順序儲存結構(順序表)
原理:把線性表中的所有元素按照其邏輯順序,一次儲存到從指定的儲存位置開始的一塊連續的儲存空間中(邏輯與物理統一)。
優點:
- 空間利用率高。(區域性性原理,連續存放,命中率高)
- 存取速度高效,通過下表來直接儲存。
缺點:
- 插入和刪除比較慢
- 不可以增長長度
時間複雜度:查詢\(O(1)\),插入和刪除\(O(n)\)。
-
鏈式儲存結構(連結串列)
原理:在程式執行過程中動態的分配空間,相鄰資料元素課隨意存放,每個結點不僅包含所存放的資訊,還包含元素之間的邏輯關係的資訊。
優點:
- 插入和刪除速度快,保留原有的物理順序。
- 沒有空間限制,儲存元素的個數只與記憶體空間大小有關。
缺點:
- 佔用額外的空間一儲存指標
- 查詢速度慢,
時間複雜度:查詢\(O(n)\),插入和刪除\(O(1)\)。
連結串列的\(5\)中形式。
- 單鏈表:每個結點中包含資料域和一個指標域,用於只想後繼結點。終端結點指向空。
- 迴圈單鏈表:與單鏈表幾乎一樣,只是終端結點指向連結串列中的第一個結點。
- 雙鏈表:每個結點中包含一個數據與和兩個指標域,一個指向當前結點的的前驅,一個指向當前結點的後繼。開始結點(或者頭結點)的前指標和終端結點的尾指標為空。
- 迴圈雙鏈表:與雙鏈表幾乎一樣,只是開始結點(或者頭結點)的前指標指向終端結點,終端結點的尾指標指向開始結點(或者頭結點)
- 靜態連結串列(借組一維陣列表示):陣列中的每個結點包含兩個部分,一個是資料元素,一個是指標,指向當前結點的直接後繼在陣列中的位置。
-
-
順序表和連結串列的比較
- 空間的比較
- 儲存分配的方式:順序表的儲存空間是一次性的分配,連結串列的儲存空間是多次分配的。
- 儲存密度(\(=\frac{結點值域所佔的儲存量}{結點結構所佔的儲存總量}\)):順序表\(=1\),連結串列\(<1\)
- 時間的比較
- 存取方式:順序表可以隨機存取,也可以順序存取;連結串列只能順序存取
- 插入和刪除是移動元素的個數:順序表平均移動一半元素;連結串列不需要移動元素,只需要修改指標。
- 空間的比較