數組、單鏈表、雙鏈表的關係區別

數組:

  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個內存消耗。內存浪費嚴重數組

相關文章
相關標籤/搜索