<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數組和鏈表有何區別

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-02-19 15:33 ? 次閱讀

數組和鏈表的區別,這個問題,不僅面試中經常遇到,考研的同學也得掌握才行。

這兩個的區別,還得從他們在內存里面的布局講起。

5554628c-cef8-11ee-a297-92fbcf53809c.png ?

數組是一塊連續的內存,這塊內存可以在??臻g也可以在堆空間:

5571febe-cef8-11ee-a297-92fbcf53809c.png ?

一般都會有個容量限制,比如:

int arr[5];
就表示數組有 5 個元素,在內存中占 20 個字節。

55881708-cef8-11ee-a297-92fbcf53809c.png ?

而且為了方便使用,數組在存儲數據的時候盡量保持連續。

55a7c13e-cef8-11ee-a297-92fbcf53809c.png ?

鏈表在內存中不用連續,位置由系統隨機分配,所以這就需要某種機制能把各個數據串聯起來。

鏈表由一個一個結點組成,每個結點都分成數據域和指針域,指針域指向下一個結點。

這種結構也決定了鏈表沒有容量限制,只要內存夠用,就能保存更多的數據。

55bd89ec-cef8-11ee-a297-92fbcf53809c.png ?

數組和鏈表的訪問方式也不一樣。

數組因其在內存中連續排布,訪問的時候只要數組名加上數組下標就能精確定位到指定的元素。

55d9e4c0-cef8-11ee-a297-92fbcf53809c.png ?

數組名本身表示數組首元素的地址,加上下標,其實就是個偏移量,所以就訪問速度而言,數組的效率確實要高。

鏈表因為在內存中排布不連續,所以不支持這種隨機訪問。要鎖定某個結點,必須得借助指針,一步一步向下移動,結點越多,訪問的效率越低。

他倆的最大區別,還得是插入和刪除,尤其是針對開頭的插入和刪除操作。

假設都往第一個位置插入元素。

如果是數組,在空間還沒有滿的情況下,先要把后面的元素逐個向后移動,然后把第一個位置騰出來,再把新元素放進去。 所以數組里面的元素越多,插入的效率也就越低。

鏈表的插入方法完全不一樣,先來一個新結點,填上數據域和指針域,然后修改頭節點的指向關系,不管鏈表中有多少個結點,插入的步驟都是這么多。

所以在插入和刪除操作上,大部分情況下鏈表的效率要高于數組。

數組和鏈表在軟件開發中出現的場景很高,數組簡單,鏈表更實用。


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數組
    +關注

    關注

    1

    文章

    409

    瀏覽量

    25645
  • 鏈表
    +關注

    關注

    0

    文章

    80

    瀏覽量

    10472

原文標題:數組和鏈表的區別

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言-鏈表(單向鏈表、雙向鏈表)

    在前面章節已經學習了數組的使用,數組的空間是連續空間,數組的大小恒定的,在很多動態數據存儲的應用場景下,使用不方便;而這篇文章介紹的鏈表結構,支持動態增加節點,釋放節點,比較適合存儲動
    的頭像 發表于 09-09 11:30 ?1419次閱讀

    伺服電機和步進電機的過載特性區別

    倍速鏈輸送具有哪些優點?伺服電機和步進電機的控制方式區別?伺服電機和步進電機的過載特性區別
    發表于 10-11 06:31

    伺服電機和步進電機區別?

    伺服電機和步進電機區別?
    發表于 10-12 08:50

    字符數組和字符指針區別

    之前學習C語言的時候也有單獨研究記錄過字符數組和字符指針,嵌入式開發,發現在實際開發中有時完全忘記了這兩者的區別,今日特地再來一番總結。筆記1當用一個char...
    發表于 12-15 06:27

    進程管理的同步與互斥區別以及聯系

    進程管理的同步與互斥區別?進程管理的同步與互斥聯系?
    發表于 12-23 06:15

    指針數組數組指針及其函數指針區別

    進程的五種狀態模型分別是哪些呢?指針數組數組指針及其函數指針區別呢?
    發表于 12-24 07:28

    指針數組數組指針什么區別和聯系呢

    什么是指針數組數組指針?指針數組數組指針到底是什么?指針數組數組指針
    發表于 12-24 06:55

    在RT-Thread中普通鏈表和侵入式鏈表區別

    ,這個成員變量是一個通用的鏈表結點。二者區別普通的鏈表和侵入式鏈表區別在于普通的鏈表結點的指針
    發表于 04-11 15:15

    詳談數組和指針的區別與聯系

    詳談數組和指針的區別與聯系
    的頭像 發表于 06-29 15:18 ?2.2w次閱讀
    詳談<b class='flag-5'>數組</b>和指針的<b class='flag-5'>區別</b>與聯系

    C語言指針和數組區別

    在C語言教程中我們使用通過數組名通過偏移和指針偏移都可以遍歷數組,那么指針和數組到底有什么區別??
    的頭像 發表于 07-18 16:29 ?1585次閱讀

    C語言_鏈表總結

    本篇文章介紹C語言鏈表相關知識點,涉及鏈表的創建、單向鏈表、循環鏈表、雙向鏈表、單向循環鏈表,
    的頭像 發表于 08-14 09:53 ?1512次閱讀

    unpacked數組和packed數組的主要區別

    unpacked數組和packed數組的主要區別是unpacked數組在物理存儲時不能保證連續,而packed數組則能保證在物理上連續存儲。
    的頭像 發表于 10-18 09:13 ?1983次閱讀

    鏈表的基礎知識

    ,也就是數組,數組的每個元素之間的地址是連續的;對于鏈式存儲來說,也就是平常所說的鏈表,鏈表每個元素之間的地址并不是連續的,而是分散的,他們之間的聯系通過結點的 next 指針來建立。
    的頭像 發表于 01-20 17:00 ?783次閱讀
    <b class='flag-5'>鏈表</b>的基礎知識

    鏈表和雙鏈表區別在哪里

    鏈表和雙鏈表區別鏈表的每一個節點中只有指向下一個結點的指針,不能進行回溯。 雙鏈表的每一個節點給中既有指向下一個結點的指針,也有指向
    的頭像 發表于 07-27 11:20 ?1190次閱讀
    單<b class='flag-5'>鏈表</b>和雙<b class='flag-5'>鏈表</b>的<b class='flag-5'>區別</b>在哪里

    數組鏈表在內存中的區別 數組鏈表的優缺點

    數組鏈表在內存中的區別 數組鏈表的優缺點? 數組鏈表
    的頭像 發表于 02-21 11:30 ?298次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>