1. 程式人生 > >【資料結構】連結串列的概念以及分類

【資料結構】連結串列的概念以及分類

在上一篇文章中,寫到了順序表。我們知道順序表和連結串列都屬於線性表。既然都是儲存資料,幹啊費那麼大勁整這麼多,所以它們倆肯定有各自的優點和缺點。

 

優點

缺點

順序表

1.支援隨機訪問

1.增容時成倍增長,有空間浪費

2.中間或者頭部插入資料時效率不高 O(N)

連結串列

1.用多少開多少,直接鏈上去,沒有空間浪費

2.頭尾插入效率高 O(1)

1.不支援隨機訪問

連結串列的概念

 

連結串列

是一種物理儲存結構非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。如下圖所示,在資料結構中,a1裡面的指標儲存著a2的地址,這樣一個連結一個,就形成了連結串列。


連結串列的種類 

 在實際中,連結串列有許多形式,不止是上圖中簡簡單單的樣子。以下情況組合起來就有八種形式的連結串列:

 

下面介紹一下它們各自的結構,通過圖可以理解得更深刻

不帶頭單鏈表

  1. 單向、雙向
  2. 帶頭、不帶頭
  3. 迴圈、非迴圈

不帶頭雙向連結串列 

 帶頭單鏈表

迴圈單鏈表

帶頭雙向迴圈連結串列

雖然有很多的連結串列結構,但其實,我們最常用的就是兩種結構:

 

 

  • 無頭單向非迴圈連結串列:結構簡單,一般不會單獨用來存資料。實際中更多是作為其他資料結構的子結構,如雜湊桶、圖的鄰接表等等。另外這種結構在筆試面試中出現很多。
  • 帶頭雙向迴圈連結串列:結構最複雜,一股用在單獨儲存資料。 實際中使用的連結串列資料結構,都是帶頭雙向迴圈連結串列。另外這個結構雖然結構複雜,但是使用程式碼實現以後會發現結構會帶來很多優勢,實現反而簡單了,後面我們程式碼實現了就知道了。