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