數據結構-順序表和鏈表之間優缺點


1、順序表存儲

原理:將表中元素一個個存入一組連續的存儲單元中,這種存儲結構是順序結構。采用順序存儲結構的線性表簡稱為“ 順序表”。

優點:簡單易用 使用的是聯系的內存空間  可以借助CPU的緩存機制  預讀取數組中的數據  所以訪問效率比較高

缺點:1.插入和刪除比較慢

           2.不可以增長長度    

           3:如果申請的過大  系統可能沒有足夠的內存空間給分配,會導致內存不足,如果聲明過小 就會導致不夠用  如果不夠用 只能申請一個更大的空間 還要把原數組的數據copy 過去  影響效率

比如:插入或者刪除一個元素時,整個表需要遍歷移動元素來重新排一次順序  C# 中 如 ArrayList List 等

2、鏈式表存儲

原理:鏈表存儲是在程序運行過程中動態的分配空間,只要存儲器還有空間,就不會發生存儲溢出問題

優點:插入和刪除速度快,保留原有的物理順序

缺點:查找速度慢,因為查找時,需要循環鏈表訪問  並且鏈式存儲在內存中不連續  這樣對CPU的緩存不友好  沒辦法做到預先讀取  鏈表除了要存儲本身數據外 還要額外維護 前 后節點的指針,對內存要求的嚴格的程序 是不友好的~而且鏈表頻繁的刪除和新增 會導致內存也頻繁的申請 釋放   容易產生內存碎片    導致GC 頻繁的去回收  

比如:插入或者刪除一個元素時,只需要改變指針指向即可  C# 中 LinkedList<T>

總結  在實際開發中  我們還是要權衡 自己的使用場景 來決定 使用什么樣的數據結構


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM