資料結構--陣列、單向連結串列、雙向連結串列

GeorgeIT發表於2018-08-26

線性表:

順序線性表和連結串列

順序線性表:

  1. 就是陣列(c語言),初始化固定陣列的大小,申請連續的記憶體分配。
  2. 可能面臨的問題有:陣列邊界溢位,不夠存,需要重新申請新的連續的記憶體空間,造成記憶體浪費,效能下降,擴充性差。
  3. 陣列實際大小可能沒有等於初始化定義的,也造成記憶體浪費。
  4. 但是相對連結串列來說,陣列的優點是透過陣列下標可以快速找到資料的記憶體地址,查詢效率高(o(1)),但是相反,插入和刪除資料,後面的資料都要進行移動,效率低(o(n))。

連結串列:

  1. 分為單向連結串列、雙向連結串列、迴圈連結串列等。
  2. 跟陣列最大的不同的是,連結串列是不連續的記憶體,其利用的是整合碎片記憶體空間起來組成一個連結串列,合理利用和節約了記憶體空間,提高效能。
  3. 資料變動不會受到類似陣列邊界等限制,動態能力比較高,擴充性好。
  4. 單向連結串列查詢資料的效率需要從表頭一步一步的往下找,查詢效率低(o(n))。
  5. 雙向連結串列就是為了解決查詢效率問題而誕生的,其可以從連結串列的任何一個位置從兩邊開始尋找,使用二分法查詢的效率明顯提高了,查詢效率最高的還是陣列。
  6. 雙向連結串列比單向連結串列多了一個屬性,來指向上一個節點的地址,其查詢效率是用過犧牲空間換時間的做法。
  7. 連結串列的插入和刪除效率(o(1))比陣列高,因為它不涉及到後面整組資料的變動,只需要前或者前後的指向屬性做修改就可以了。

單向連結串列結構圖:

用物件導向的思想就是有兩個屬性,一個是值,一個是指向。末尾的指標指向空值

file

雙向連結串列結構圖:

有三個屬性,一個是值,一個是前一個節點的指標 ,一個是下一個節點的指標,前後的指標指向空值
file

總結:

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章