現在的位置: 首頁 > 綜合 > 正文

78 鏈表和數組的區別

2018年05月02日 ⁄ 綜合 ⁄ 共 825字 ⁄ 字型大小 評論關閉

78.鏈表和數組的區別在哪裡?
分析:主要在基本概念上的理解。
但是最好能考慮的全面一點,現在公司招人的競爭可能就在細節上產生,誰比較仔細,誰獲
勝的機會就大。

/*
78.鏈表和數組的區別在哪裡?
分析:主要在基本概念上的理解。
但是最好能考慮的全面一點,現在公司招人的競爭可能就在細節上產生,誰比較仔細,誰獲
勝的機會就大。

1.數組靜態分配內存,鏈表動態分配內存;
	數組必須事先定義固定的長度(元素個數),不能適應數據動態地增減的情況,
即在使用數組之前,就必須對數組的大小進行確定。當數據增加時,可能超出原先定義的元素個數;
當數據減少時,造成內存浪費。數組中插入、刪除數據項時,需要移動其它數據項。
	而鏈表採用動態分配內存的形式實現,可以適應數據動態地增減的情況,
需要時可以用new/malloc分配內存空間,不需要時用delete/free將已分配的空間釋放,
不會造成內存空間浪費,且可以方便地插入、刪除數據項。

2.數組在內存中連續,鏈表不連續;
	 數組中的數據在內存中是順序存儲的,而鏈表是隨機存儲的。
數組的隨機訪問效率很高,可以直接定位,但插入、刪除操作的效率比較低。
鏈表在插入、刪除操作上相對數組有很高的效率,而如果要訪問鏈表中的某個元素的話,
那就得從表頭逐個遍歷,直到找到所需要的元素為止,所以,鏈表的隨機訪問效率比數組低。

3.數組元素在棧區,鏈表元素在堆區;
	數組從棧中分配空間,對於程序員方便快速,但是自由度小。
	鏈表從堆中分配空間,自由度大,但是申請管理比較麻煩。
	
4.數組利用下標定位,時間複雜度為O(1),鏈表定位元素時間複雜度O(n);

5.數組插入或刪除元素的時間複雜度O(n),鏈表的時間複雜度O(1)。

鏈表不存在越界問題,數組有越界問題。數組便於查詢,
鏈表便於插入刪除,數組節省空間但是長度固定,鏈表雖然變長但是佔了更多的存儲空間。
如果需要快速訪問數據,很少或不插入和刪除元素,就應該用數組;
相反,如果需要經常插入和刪除元素就需要用鏈表數據結構了
*/

抱歉!評論已關閉.