陣列、單鏈表、雙鏈表的關係區別
阿新 • • 發佈:2019-04-08
陣列:
- 靜態分佈記憶體
- 根據下標定位元素
- 查詢的時間複雜度為O(1),插入或刪除的時間複雜度為O(N)
- 初始化陣列需要規定陣列大小,不能擴充套件
陣列優點:
- 查詢速度相較於連結串列更快
- 隨機訪問性更強,無序遍歷,直接訪問table[i]可快速定位
陣列缺點:
- 刪除或插入的速度更慢
- 由於陣列大小是初始化時規定的,可能不能充分利用完全,容易造成記憶體浪費
- 需要連續的記憶體空間,且剩餘記憶體必須足夠大。對記憶體要求較高
連結串列:
- 動態分佈記憶體
- 通過指標定位下位元素,單鏈表為next()方法,雙鏈表除了next()方法外還有pre()方法定位上一位元素
- 插入或刪除的時間複雜度為O(1),查詢的時間複雜度為O(N)
- 連結串列的長度是動態擴充套件的
連結串列的優點:
- 插入的速度相較於陣列更快
- 由於連結串列長度動態擴充套件,所以能充分利用記憶體,不會存在記憶體浪費
連結串列的缺點
- 查詢的速度更慢一些
- 不支援隨機訪問
單鏈表常見於雙鏈表的原因
雙鏈表由於相較於單鏈表每個元素多了一個向前的指標,所以佔用的儲存空間更大,一個指標佔用的記憶體空間在64位系統是8個位元組,n個位元組就需要多8*N個記憶體消耗。