數據結構----線性表

(1)線性表的定義:

即:由n(n>=0)個數據元素的有序序列;(如果n=0,則爲空表;當n>0,(a1,a2,…,an))

特點:1> 順序性(第一個元素無前驅,最後一個元素無後繼,其他的元素有且只有一個前驅和後繼);
     2> 有限性;
     3> 節點的數據類型都是相同的;

如下圖:
在這裏插入圖片描述

(2)線性表的存儲結構

第一種:順序存儲結構(使用一段連續的地址存儲),稱爲線性表;
順序結構下的三個重要的屬性:①數組 data ② 數組的長度 maxSize ③線性表的長度 length

注:1,數組的長度應該大於等於線性表的長度(reason:線性表要進行插入和刪除的操作);
   2,順序存儲結構需要預分配存儲空間;

如下圖:
在這裏插入圖片描述

(1)對線性表的操作

   ①插入操作

在這裏插入圖片描述

插入操作時間複雜度:
   假設現在有n個元素,
   最好的情況:元素插入的位置是最後一個,那麼此時其他的元素位置是不變的,時間複雜度爲O(1);
   最壞的情況:元素插入的位置是第一個,那麼此時其他的元素要一次依次往後移動,時間複雜度爲O(n);

②刪除操作

在這裏插入圖片描述

   刪除操作時間複雜度:
   假設現在有n個元素,
   最好的情況:刪除元素的位置是最後一個,那麼此時其他的元素位置是不變的,時間複雜度爲O(1);
   最壞的情況:刪除元素的位置是第一個,那麼此時其他的元素要依次往前移動,時間複雜度爲O(n);

(2)線性結構的特點:

      適用:快速的存取表中的元素;不需要額外的空間來存儲表中元素的關係;
      缺點:對於插入和刪除操作比較麻煩;造成存儲空間的碎片問題;難以確定存儲空間的容量大小問題;

第二種:鏈式存儲結構(數據域+指針域)
鏈式存儲結構又包含 單鏈表,靜態鏈表,循環鏈表,雙向鏈表;

注:不需要分配存儲空間

(1)單鏈表結構如下圖:

在這裏插入圖片描述

操作:查找,從第一個元素開始,順序往下找,最好的情況時間複雜度爲O(1),最壞的情況是O(n);

插入:先遍歷,再插入
在這裏插入圖片描述

插入時間複雜度:查找操作O(n);插入操作O(1);

刪除:先遍歷,再刪除

在這裏插入圖片描述

刪除時間複雜度:查找操作O(n);刪除操作O(1);

(2)循環鏈表:將單鏈表的最後的null指針指向頭結點
結構如下圖:
在這裏插入圖片描述

(3)雙向鏈表:在單鏈表的每個節點中,設置一個指向其前驅節點的指針域。

結構如圖所示:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章