1. 程式人生 > >陣列、單鏈表、雙鏈表的關係區別

陣列、單鏈表、雙鏈表的關係區別

開發十年,就只剩下這套架構體系了! >>>   

陣列:

  1. 靜態分佈記憶體
  2. 根據下標定位元素
  3. 查詢的時間複雜度為O(1),插入或刪除的時間複雜度為O(N)
  4. 初始化陣列需要規定陣列大小,不能擴充套件

 

陣列優點:

  1. 查詢速度相較於連結串列更快
  2. 隨機訪問性更強,無序遍歷,直接訪問table[i]可快速定位

 

 

陣列缺點:

  1. 刪除或插入的速度更慢
  2. 由於陣列大小是初始化時規定的,可能不能充分利用完全,容易造成記憶體浪費
  3. 需要連續的記憶體空間,且剩餘記憶體必須足夠大。對記憶體要求較高

 

 

 

連結串列:

  1. 動態分佈記憶體
  2. 通過指標定位下位元素,單鏈表為next()方法,雙鏈表除了next()方法外還有pre()方法定位上一位元素
  3. 插入或刪除的時間複雜度為O(1),查詢的時間複雜度為O(N)
  4. 連結串列的長度是動態擴充套件的

 

 

連結串列的優點:

  1. 插入的速度相較於陣列更快
  2. 由於連結串列長度動態擴充套件,所以能充分利用記憶體,不會存在記憶體浪費

 

 

連結串列的缺點

  1. 查詢的速度更慢一些
  2. 不支援隨機訪問

 

 

 

單鏈表常見於雙鏈表的原因

 

雙鏈表由於相較於單鏈表每個元素多了一個向前的指標,所以佔用的儲存空間更大,一個指標佔用的記憶體空間在64位系統是8個位元組,n個位元組就需要多8*N個記憶體消耗。