陣列,在記憶體上給出了連續的空間。鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原來的記憶體和下乙個節點的資訊(
單向的乙個,雙向鍊錶的話,會有兩個)。
a. 記憶體空間占用的少,因為鍊錶節點會附加上一塊或兩塊下乙個節點的資訊。
但是陣列在建立時就固定了。所以也有可能會因為建立的陣列過大或不足引起記憶體上的問題。
b. 陣列內的資料可隨機訪問,但鍊錶不具備隨機訪問性。這個很容易理解,陣列在記憶體裡是連續的空間,比如如果乙個陣列位址從
100到
200,且每個元素占用兩個位元組,那麼
100-200
之間的任何乙個偶數都是陣列元素的位址,可以直接訪問。
鍊錶在記憶體位址可能是分散的。所以必須通過上一節點中的資訊找能找到下乙個節點。
c. 查詢速度上。這個也是因為記憶體位址的連續性的問題,查詢速度較快。
a. 插入與刪除的操作。如果陣列的中間插入乙個元素,那麼這個元素後的所有元素的記憶體位址都要往後移動。刪除的話同理。只有對資料的最後乙個元素進行插入刪除操作時,才比較快。鍊錶只需要更改有必要更改的節點內的節點資訊就夠了。並不需要更改節點的記憶體位址。
b. 記憶體位址的利用率方面。不管你記憶體裡還有多少空間,如果沒辦法一次性給出陣列所需的要空間,那就會提示記憶體不足,磁碟空間整理的原因之一在這裡。而鍊錶可以是分散的空間位址。
c. 鍊錶的擴充套件性比陣列好。因為乙個陣列建立後所占用的空間大小就是固定的,如果滿了就沒法擴充套件,只能新建乙個更大空間的陣列;而鍊錶不是固定的,可以很方便的擴充套件。
在選用那種結構儲存的時候需要依照所用的場景,如果需要很多對資料的訪問,則適合使用陣列;如果需要對資料進行很多的插入刪除操作,則適合使用鍊錶。 還有就是不能確定元素的個數時,可以使用鍊錶來動態分配。
陣列和鍊錶的優缺點
array與list,使指資料結構概念上的陣列與鍊錶的優缺點吧.如果指的是array類 或介面 與list介面的優缺點的話,就不好理解了.陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原?吹哪詿婧拖亂桓黿詰愕男畔?單向的乙個,雙向鍊錶的話,會有兩個 陣列優於鍊...
陣列和鍊錶的優缺點比較
1 陣列在記憶體中是逐個存放的,也就是說倘若陣列的第乙個元素在位址 a,則陣列第二個元素就在位址 a 1。而鍊錶則不是,鍊錶每個節點沒有相對固定的位置關係。某個節點在位址a 其後的節點不一定是 a 1,而在記憶體的其他空閒區域,呈現一種隨機的狀態。2 陣列一旦顯式的被申明後,其大小就固定了,不能動態...
鍊錶與陣列的優缺點
陣列是將元素在記憶體中連續存放,由於每個元素占用記憶體相同,可以通過下標迅速訪問陣列中任何元素。但是如果要 在陣列中增加乙個元素,需要移動大量元素,在記憶體中空出乙個元素的空間,然後將要增加的元素放在其中。同樣的 道理,如果想刪除乙個元素,同樣需要移動大量元素去填掉被移動的元素。如果應用需要快速訪問...