陣列和鍊錶的區別

2021-09-12 07:51:28 字數 1134 閱讀 5158

陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原來的記憶體和下乙個節點的資訊(單向的乙個,雙向鍊錶的話,會有兩個).

陣列優於鍊錶的:

1.記憶體空間占用的少,因為鍊錶節點會附加上一塊或兩塊下乙個節點的資訊.但是陣列在建立時就固定了.所以也有可能會因為建立的陣列過大或不足引起記憶體上的問題.

2.陣列內的資料可隨機訪問.但鍊錶不具備隨機訪問性.這個很容易理解.陣列在記憶體裡是連續的空間.比如如果乙個陣列位址從100到200,且每個元素占用兩個位元組,那麼100-200之間的任何乙個偶數都是陣列元素的位址.可以直接訪問.鍊錶在記憶體位址可能是分散的.所以必須通過上一節點中的資訊找能找到下乙個節點.

3.查詢速度上.這個也是因為記憶體位址的連續性的問題.不羅索了.

鍊錶優於陣列的:

1.插入與刪除的操作.如果陣列的中間插入乙個元素,那麼這個元素後的所有元素的記憶體位址都要往後移動.刪除的話同理.只有對資料的最後乙個元素進行插入刪除操作時,才比較快.鍊錶只需要更改有必要更改的節點內的節點資訊就夠了.並不需要更改節點的記憶體位址.

2.記憶體位址的利用率方面.不管你記憶體裡還有多少空間,如果沒辦法一次性給出陣列所需的要空間,那就會提示記憶體不足,磁碟空間整理的原因之一在這裡.而鍊錶可以是分散的空間位址.

3.鍊錶的擴充套件性比陣列好.因為乙個陣列建立後所占用的空間大小就是固定的.如果滿了就沒法擴充套件.只能新建乙個更大空間的陣列.而鍊錶不是固定的,可以很方便的擴充套件.

陣列與鍊錶的優缺點;

陣列:

優點:使用方便 ,查詢效率 比煉表高,記憶體為一連續的區域 

缺點:大小固定,不適合動態儲存,不方便動態新增

鍊錶: 優點:可動態新增刪除 大小可變

缺點:只能通過順次指標訪問,查詢效率低

補充:

順序表的優點:查詢方便,適合隨機查詢

順序表的缺點:插入、刪除操作不方便,因為插入、刪除操作會導致大量元素的移動

鏈結表的優點:插入、刪除操作方便,不會導致元素的移動,因為元素增減,只需要調整指標。

順序表的缺點:查詢方便,不適合隨機查詢

1 在訪問方式上

陣列可以隨機訪問其中的元素

鍊錶則必須是順序訪問,不能隨機訪問

2 空間的使用上

鍊錶可以隨意擴大

陣列則不能

陣列和鍊錶區別

談到鍊錶與陣列的區別,可以從幾個不同的角度來談,首先從邏輯結構上說,兩者都是資料結構的一種,但存在區別,陣列是申請的一塊連續的記憶體空間,並且是在編譯階段就要確定空間大小的,同時在執行階段是不允許改變的,所以它不能夠隨著需要的改變而增加或減少空間大小,所以當資料量大的時候,有可能超出了已申請好的陣列...

陣列和鍊錶的區別

陣列與鍊錶的區別 1.基於空間的考慮 陣列的儲存空間是靜態,連續分布的,估計過大造成空間浪費,估計太小又將使空間溢位機會增多。而鍊錶的儲存空間是動態分布的,只要記憶體空間尚有空閒,就不會產生溢位 鍊錶中每個節點除了資料域外,還有指標域,儲存密度小於1 陣列為 儲存空間利用率就越高。2.基於時間的考慮...

陣列和鍊錶的區別

1 陣列的儲存空間是一大片連續的,鍊錶的儲存空間是不定的,每個鍊錶的節點元素都會儲存該節點的資料和下個節點的位址指向。陣列初使化必須制定大小,而鍊錶卻不需要便是這個原因。2 就增刪改查而言,陣列因為位址是連續的,所以陣列的查詢修改很快,但是增刪的時候由於需要移動後面所有的元素反而較慢,對應的鍊錶在查...