1、順序表存儲
原理:將表中元素一個個存入一組連續的存儲單元中,這種存儲結構是順序結構。采用順序存儲結構的線性表簡稱為“ 順序表”。
優點:簡單易用 使用的是聯系的內存空間 可以借助CPU的緩存機制 預讀取數組中的數據 所以訪問效率比較高
缺點:1.插入和刪除比較慢
2.不可以增長長度
3:如果申請的過大 系統可能沒有足夠的內存空間給分配,會導致內存不足,如果聲明過小 就會導致不夠用 如果不夠用 只能申請一個更大的空間 還要把原數組的數據copy 過去 影響效率
比如:插入或者刪除一個元素時,整個表需要遍歷移動元素來重新排一次順序 C# 中 如 ArrayList List 等
2、鏈式表存儲
原理:鏈表存儲是在程序運行過程中動態的分配空間,只要存儲器還有空間,就不會發生存儲溢出問題
優點:插入和刪除速度快,保留原有的物理順序
缺點:查找速度慢,因為查找時,需要循環鏈表訪問 並且鏈式存儲在內存中不連續 這樣對CPU的緩存不友好 沒辦法做到預先讀取 鏈表除了要存儲本身數據外 還要額外維護 前 后節點的指針,對內存要求的嚴格的程序 是不友好的~而且鏈表頻繁的刪除和新增 會導致內存也頻繁的申請 釋放 容易產生內存碎片 導致GC 頻繁的去回收
比如:插入或者刪除一個元素時,只需要改變指針指向即可 C# 中 LinkedList<T>
總結 在實際開發中 我們還是要權衡 自己的使用場景 來決定 使用什么樣的數據結構