陣列和連結串列的區別
-
陣列是將元素在記憶體中連續存放,由於每個元素佔用記憶體相同,可以通過下標迅速訪問陣列中任何元素。但是如果要在陣列中增加一個元素,需要移動大量元素,在記憶體中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想刪除一個元素,同樣需要移動大量元素去填掉被移動的元素。如果應用需要快速訪問資料,很少或不插入和刪除元素,就應該用陣列。
-
連結串列恰好相反,連結串列中的元素在記憶體中不是順序儲存的,而是通過存在元素中的指標聯絡到一起。比如:上一個元素有個指標指到下一個元素,以此類推,直到最後一個元素。如果要訪問連結串列中一個元素,需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對於連結串列資料結構就非常簡單了,只要修改元素中的指標就可以了。如果應用需要經常插入和刪除元素你就需要用連結串列資料結構了。
*C++語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前有時無法準確確定陣列的大小,只能將陣列定義成足夠大小,這樣陣列中有些空間可能不被使用,從而造成記憶體空間的浪費。連結串列是一種常見的資料組織形式,它採用動態分配記憶體的形式實現。需要時可以用new分配記憶體空間,不需要時用delete將已分配的空間釋放,不會造成記憶體空間的浪費。
(1) 從邏輯結構角度來看
a, 陣列必須事先定義固定的長度(元素個數),不能適應資料動態地增減的情況。當資料增加時,可能超出原先定義的元素個數;當資料減少時,造成記憶體浪費。
b,連結串列動態地進行儲存分配,可以適應資料動態地增減的情況,且可以方便地插入、刪除資料項。(陣列中插入、刪除資料項時,需要移動其它資料項)
(2)從記憶體儲存角度來看
a,(靜態)陣列從棧中分配空間, 對於程式設計師方便快速,但自由度小。
b, 連結串列從堆中分配空間, 自由度大但申請管理比較麻煩.
-----介紹的很詳細,簡單但有些地方容易忘,所以轉過來和大家一起分享!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29012686/viewspace-1162417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試-陣列和連結串列的區別面試陣列
- 陣列和連結串列陣列
- 資料結構之連結串列與陣列(1):陣列和連結串列的簡介資料結構陣列
- 陣列與連結串列陣列
- 資料結構之陣列和連結串列資料結構陣列
- day1-陣列和連結串列陣列
- 陣列、連結串列、堆疊和佇列學習陣列佇列
- 可變陣列——連結串列前言陣列
- 陣列模擬單連結串列陣列
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 刪除陣列中的元素(連結串列)陣列
- 線性結構 陣列與連結串列陣列
- 歸併排序:陣列和連結串列的多種實現排序陣列
- 聊聊陣列與連結串列,棧與佇列陣列佇列
- 關於多項式的加和、乘積可用連結串列和陣列陣列
- 建立連結串列兩種方法的區別
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 線性表(陣列、連結串列、佇列、棧)詳細總結陣列佇列
- golang切片和陣列的區別Golang陣列
- javascript陣列和物件的區別JavaScript陣列物件
- 常見的線性列表結構---【陣列、連結串列、棧、佇列、堆】陣列佇列
- 資料結構-棧(通過陣列和單向連結串列實現)資料結構陣列
- 頭插法和尾插法建立連結串列區別
- “軟連結”和“硬連結”的區別
- 硬連結和軟連結的區別
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列
- L2-022 重排連結串列【陣列】陣列
- L2-002 連結串列去重【陣列】陣列
- 陣列模擬單連結串列你會了嗎?陣列
- 資料結構--單連結串列(通過陣列實現)資料結構陣列
- 【淺出 PHP】陣列相加和陣列合並的區別PHP陣列
- 重溫四大基礎資料結構:陣列、連結串列、佇列和棧資料結構陣列佇列
- 為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低陣列
- C/C++ 陣列連結串列表示式計算C++陣列
- 陣列與連結串列等順序表逆置薦陣列
- 資料結構與演算法整理總結---陣列,連結串列資料結構演算法陣列
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- JS陣列中(for...in)和(for...of)的區別JS陣列