數組:
- 靜態分佈內存
- 根據下標定位元素
- 查找的時間複雜度爲O(1),插入或刪除的時間複雜度爲O(N)
- 初始化數組須要規定數組大小,不能擴展
數組優勢:
- 查找速度相較於鏈表更快
- 隨機訪問性更強,無序遍歷,直接訪問table[i]可快速定位
數組缺點:
- 刪除或插入的速度更慢
- 因爲數組大小是初始化時規定的,可能不能充分利用徹底,容易形成內存浪費
- 須要連續的內存空間,且剩餘內存必須足夠大。對內存要求較高
鏈表:
- 動態分佈內存
- 經過指針定位下位元素,單鏈表爲next()方法,雙鏈表除了next()方法外還有pre()方法定位上一位元素
- 插入或刪除的時間複雜度爲O(1),查找的時間複雜度爲O(N)
- 鏈表的長度是動態擴展的
鏈表的優勢:
- 插入的速度相較於數組更快
- 因爲鏈表長度動態擴展,因此能充分利用內存,不會存在內存浪費
鏈表的缺點
- 查找的速度更慢一些
- 不支持隨機訪問
單鏈表常見於雙鏈表的緣由
雙鏈表因爲相較於單鏈表每一個元素多了一個向前的指針,因此佔用的存儲空間更大,一個指針佔用的內存空間在64位系統是8個字節,n個字節就須要多8*N個內存消耗。內存浪費嚴重數組