首先了解順序表和鏈表的概念
1.順序表(類似STL庫中的vector)
順序表是在計算機內存中以數組形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。
線性表采用順序存儲的方式稱為順序表。
優點:
(1)空間利用率高(連續存放)
(2)存取速度高效,通過下標直接存儲和讀取。
缺點:
(1)插入和刪除比較慢。(插入或刪除一個元素時需要遍歷移動元素來重新排一次順序)
(2)不可以增長長度,有空間限制,當需要存儲的元素個數可能多於順序表元素時,可能出現“溢出”問題。當元素個數遠遠小於預先分配的空間是,會造成空間浪費。
2.鏈表(類似STL庫中的list)
鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列的節點組成,節點可以在運行時動態生成。每個節點由兩部分組成:數據域(存儲數據元素)和指針域(存放下一個節點的地址)。
鏈表的種類:單鏈表、雙向鏈表、循環鏈表
優點:
(1)插入和刪除的速度快,保留原有的物理順序(插入或刪除時,只需要改變指針指向即可)。
(2)沒有空間限制,存儲元素的個數無上限,基本只與內存空間大小有關。
缺點:
(1)存取元素比較慢(不能進行索引訪問,只能從頭結點開始順序查找)
(2)占用額外的空間用來存儲指針(不連續存放,空間碎片多)
總結:
頻繁查找卻很少插入和刪除操作可以用順序表存儲,堆排序,二分查找適宜用順序表。
頻繁插入和刪除卻很少查找可以使用鏈表存儲。
若線性表長度變化不大,事先知道線性表的大致長度,且主要操作時查找,則采用順序表。若線性表長度變化較大或根本不知道多大時,且主要操作是插入、刪除,則采用鏈表。
順序表:順序存儲,隨機讀取。
鏈表:隨機存儲,順序讀取。