數組與鏈表的比較

數組,在內存上給出了連續的空間.

鏈表,內存地址上可以是不連續的,每個鏈表的節點包括原來的內存和下一個節點的信息(單向的一個,雙向鏈表的話,會有兩個).


數組優於鏈表的:
1.內存空間佔用的少,因爲鏈表節點會附加上一塊或兩塊下一個節點的信息.但是數組在建立時就固定了.所以也有可能會因爲建立的數組過大或不足引起內存上的問題.
2.數組內的數據可隨機訪問.但鏈表不具備隨機訪問性.這個很容易理解.

數組在內存裏是連續的空間.比如如果一個數組地址從100到200,且每個元素佔用兩個字節,那麼100-200之間的任何一個偶數都是數組元素的地址.可以直接訪問.鏈表在內存地址可能是分散的.所以必須通過上一節點中的信息找能找到下一個節點.
3.查找速度上.這個也是因爲內存地址的連續性的問題.


鏈表優於數組的:
1.插入與刪除的操作.如果數組的中間插入一個元素,那麼這個元素後的所有元素的內存地址都要往後移動.刪除的話同理.只有對數據的最後一個元素進行插入刪除操作時,才比較快.

鏈表只需要更改有必要更改的節點內的節點信息就夠了.並不需要更改節點的內存地址.
2.內存地址的利用率方面.不管你內存裏還有多少空間,如果沒辦法一次性給出數組所需的要空間,那就會提示內存不足,磁盤空間整理的原因之一在這裏.而鏈表可以是分散的空間地址.
3.鏈表的擴展性比數組好.因爲一個數組建立後所佔用的空間大小就是固定的.如果滿了就沒法擴展.只能新建一個更大空間的數組.而鏈表不是固定的,可以很方便的擴展.


鏈表和數組的本質差異 :
1 在訪問方式上 -------數組可以隨機訪問其中的元素 ;鏈表則必須是順序訪問,不能隨機訪問。    

2 空間的使用上-------- 鏈表可以隨意擴大 ;數組則不能。    



數組:
優點:使用方便 ,查詢效率 比鏈表高,內存爲一連續的區域。
缺點:大小固定,不適合動態存儲,不方便動態添加。

鏈表
優點:可動態添加刪除,大小可變。
缺點:只能通過順次指針訪問,查詢效率低。

順序表的優點:查找方便,適合隨機查找。 
順序表的缺點:插入、刪除操作不方便,因爲插入、刪除操作會導致大量元素的移動。


鏈表的特性是在中間任意位置添加刪除元素的都非常的快,不需要移動其它的元素。
通常鏈表每一個元素都要保存一個指向下一個元素的指針(單鏈表);雙鏈表的每個元素即要保存到下一個元素的指針,還要保存一個上一個元素的指針。
循環鏈表則把最後一個元素中保存下一個元素指針指向第一個元素。 


數組是一組具有相同類型和名稱的變量的集合。這些變量稱爲數組的元素,每個數組元素都有一個編號,這個編號叫做下標,我們可以通過下標來區別這些元素。數組元素的個數有時也稱之爲數組的長度。
數組在進行查找,排序操作是很方便;鏈表不需要連續空間,而且插入操作方便。













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章