順序表和鏈表詳解及實現


首先了解順序表和鏈表的概念

1.順序表(類似STL庫中的vector)

順序表是在計算機內存中以數組形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。

線性表采用順序存儲的方式稱為順序表。

優點:

(1)空間利用率高(連續存放)

(2)存取速度高效,通過下標直接存儲和讀取。

缺點:

(1)插入和刪除比較慢。(插入或刪除一個元素時需要遍歷移動元素來重新排一次順序)

(2)不可以增長長度,有空間限制,當需要存儲的元素個數可能多於順序表元素時,可能出現“溢出”問題。當元素個數遠遠小於預先分配的空間是,會造成空間浪費。

2.鏈表(類似STL庫中的list)

鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列的節點組成,節點可以在運行時動態生成。每個節點由兩部分組成:數據域(存儲數據元素)和指針域(存放下一個節點的地址)。

鏈表的種類:單鏈表、雙向鏈表、循環鏈表

優點:

(1)插入和刪除的速度快,保留原有的物理順序(插入或刪除時,只需要改變指針指向即可)。

(2)沒有空間限制,存儲元素的個數無上限,基本只與內存空間大小有關。

缺點:

(1)存取元素比較慢(不能進行索引訪問,只能從頭結點開始順序查找)

(2)占用額外的空間用來存儲指針(不連續存放,空間碎片多)

總結:

頻繁查找卻很少插入和刪除操作可以用順序表存儲,堆排序,二分查找適宜用順序表。

頻繁插入和刪除卻很少查找可以使用鏈表存儲。

若線性表長度變化不大,事先知道線性表的大致長度,且主要操作時查找,則采用順序表。若線性表長度變化較大或根本不知道多大時,且主要操作是插入、刪除,則采用鏈表。

順序表:順序存儲,隨機讀取。

鏈表:隨機存儲,順序讀取。

 


免責聲明!

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



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