1. 程式人生 > 其它 >資料結構——線性表

資料結構——線性表

  1. 線性表的定義

    線性表是具有相同特性資料元素的一個有限序列。序列中所含元素個數叫做線性表的長度。除了頭尾元素,其餘元素都只有一個直接前驅和直接後繼。

  2. 線性表的儲存結構

    1. 順序儲存結構(順序表)

      原理:把線性表中的所有元素按照其邏輯順序,一次儲存到從指定的儲存位置開始的一塊連續的儲存空間中(邏輯與物理統一)。

      優點:

      1. 空間利用率高。(區域性性原理,連續存放,命中率高)
      2. 存取速度高效,通過下表來直接儲存。

      缺點:

      1. 插入和刪除比較慢
      2. 不可以增長長度

      時間複雜度:查詢\(O(1)\),插入和刪除\(O(n)\)

    2. 鏈式儲存結構(連結串列)

      原理:在程式執行過程中動態的分配空間,相鄰資料元素課隨意存放,每個結點不僅包含所存放的資訊,還包含元素之間的邏輯關係的資訊。

      優點:

      1. 插入和刪除速度快,保留原有的物理順序。
      2. 沒有空間限制,儲存元素的個數只與記憶體空間大小有關。

      缺點:

      1. 佔用額外的空間一儲存指標
      2. 查詢速度慢,

      時間複雜度:查詢\(O(n)\),插入和刪除\(O(1)\)

      連結串列的\(5\)中形式。

      1. 單鏈表:每個結點中包含資料域和一個指標域,用於只想後繼結點。終端結點指向空
      2. 迴圈單鏈表:與單鏈表幾乎一樣,只是終端結點指向連結串列中的第一個結點。
      3. 雙鏈表:每個結點中包含一個數據與和兩個指標域,一個指向當前結點的的前驅,一個指向當前結點的後繼。開始結點(或者頭結點)的前指標和終端結點的尾指標為空。
      4. 迴圈雙鏈表:與雙鏈表幾乎一樣,只是開始結點(或者頭結點)的前指標指向終端結點,終端結點的尾指標指向開始結點(或者頭結點)
      5. 靜態連結串列(借組一維陣列表示):陣列中的每個結點包含兩個部分,一個是資料元素,一個是指標,指向當前結點的直接後繼在陣列中的位置。
  3. 順序表和連結串列的比較

    1. 空間的比較
      1. 儲存分配的方式:順序表的儲存空間是一次性的分配,連結串列的儲存空間是多次分配的。
      2. 儲存密度(\(=\frac{結點值域所佔的儲存量}{結點結構所佔的儲存總量}\)):順序表\(=1\),連結串列\(<1\)
    2. 時間的比較
      1. 存取方式:順序表可以隨機存取,也可以順序存取;連結串列只能順序存取
      2. 插入和刪除是移動元素的個數:順序表平均移動一半元素;連結串列不需要移動元素,只需要修改指標。