當前位置:生活全書館 >

生活小竅門

> 陣列和順序連結串列的區別

陣列和順序連結串列的區別

陣列和順序連結串列的區別

陣列和順序連結串列的區別

1、陣列的記憶體需要提前確定,一旦確定不能更改其大小;而連結串列會動態分配記憶體;

2、陣列的記憶體空間在記憶體中是連續的;而連結串列的記憶體空間則不是連續的;

3、陣列的元素在棧區分配空間(即陣列儲存的元素都是為基本資料型別);而連結串列在堆區分配空間(即連結串列中儲存的元素為物件)

4、陣列查詢元素利用下標定位,時間複雜度為O(1);而連結串列定位元素的時間複雜度則為O(n);

5、陣列插入或刪除元素的時間複雜度為O(n);而連結串列插入和刪除的時間複雜度為O(1);

陣列

陣列的儲存方式是將元素在記憶體中連續存放,由於每個元素佔用記憶體相同,所以可以通過下標迅速訪問陣列中的任何元素。但是如果要在陣列中增加一個元素則需要移動大量元素,在記憶體中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想要刪除一個元素,同樣需要移動大量元素去填充掉被刪除的元素。所以說陣列查詢元素速度較快,而增刪元素速度較慢。

連結串列

連結串列恰好相反,連結串列中的元素在記憶體中不是順序儲存的,而是通過存在元素中的指標聯絡到一起的。比如:上一個元素有個指標指到下一個元素,以此類推,直到最後一個元素。如果需要訪問連結串列中的一個元素,則需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對於連結串列結構就非常簡單了,只要修改元素中的指標就可以了。所以說連結串列查詢元素速度較慢,而增刪元素速度較快。

標籤: 連結串列 陣列
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/xiaoqiaomen/px8pqy.html