數(shù)組和鏈表的區(qū)別

1. 數(shù)組和鏈表的區(qū)別

1.1 數(shù)組的特點

  • 在內存中,數(shù)組是一塊連續(xù)的區(qū)域。 拿上面的看電影來說,這幾個人在電影院必須坐在一起。
  • 數(shù)組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間。 比如看電影時,為了保證10個人能坐在一起,必須提前訂好10個連續(xù)的位置。這樣的好處就是能保證10個人可以在一起。但是這樣的缺點是,如果來的人不夠10個,那么剩下的位置就浪費了。如果臨時有多來了個人,那么10個就不夠用了,這時可能需要將第11個位置上的人挪走,或者是他們11個人重新去找一個11連坐的位置,效率都很低。如果沒有找到符合要求的作為,那么就沒法坐了。
  • 插入數(shù)據(jù)和刪除數(shù)據(jù)效率低,插入數(shù)據(jù)時,這個位置后面的數(shù)據(jù)在內存中都要向后移。刪除數(shù)據(jù)時,這個數(shù)據(jù)后面的數(shù)據(jù)都要往前移動。 比如原來去了5個人,然后后來又去了一個人要坐在第三個位置上,那么第三個到第五個都要往后移動一個位子,將第三個位置留給新來的人。 當這個人走了的時候,因為他們要連在一起的,所以他后面幾個人要往前移動一個位置,把這個空位補上。
  • 隨機讀取效率很高。因為數(shù)組是連續(xù)的,知道每一個數(shù)據(jù)的內存地址,可以直接找到給地址的數(shù)據(jù)。
  • 并且不利于擴展,數(shù)組定義的空間不夠時要重新定義數(shù)組。

鏈表的特點

  • 在內存中可以存在任何地方,不要求連續(xù)。 在電影院幾個人可以隨便坐。
  • 每一個數(shù)據(jù)都保存了下一個數(shù)據(jù)的內存地址,通過這個地址找到下一個數(shù)據(jù)。 第一個人知道第二個人的座位號,第二個人知道第三個人的座位號……
  • 增加數(shù)據(jù)和刪除數(shù)據(jù)很容易。 再來個人可以隨便坐,比如來了個人要做到第三個位置,那他只需要把自己的位置告訴第二個人,然后問第二個人拿到原來第三個人的位置就行了。其他人都不用動。
  • 查找數(shù)據(jù)時效率低,因為不具有隨機訪問性,所以訪問某個位置的數(shù)據(jù)都要從第一個數(shù)據(jù)開始訪問,然后根據(jù)第一個數(shù)據(jù)保存的下一個數(shù)據(jù)的地址找到第二個數(shù)據(jù),以此類推。 要找到第三個人,必須從第一個人開始問起。
  • 不指定大小,擴展方便。鏈表大小不用定義,數(shù)據(jù)隨意增刪。

各自的優(yōu)缺點

數(shù)組的優(yōu)點

  • 隨機訪問性強
  • 查找速度快

數(shù)組的缺點

  • 插入和刪除效率低
  • 可能浪費內存
  • 內存空間要求高,必須有足夠的連續(xù)內存空間。
  • 數(shù)組大小固定,不能動態(tài)拓展

鏈表的優(yōu)點

  • 插入刪除速度快
  • 內存利用率高,不會浪費內存
  • 大小沒有固定,拓展很靈活。

鏈表的缺點

  • 不能隨機查找,必須從第一個開始遍歷,查找效率低
- 數(shù)組 鏈表
讀取 O(1) O(n)
插入 O(n) O(1)
刪除 O(n) O(1)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 數(shù)組和鏈表是兩種基本的數(shù)據(jù)結構,他們在內存存儲上的表現(xiàn)不一樣,所以也有各自的特點。 大致總結一下特點和區(qū)別,拿幾個...
    喵了個嗚s閱讀 3,813評論 0 1
  • 重新回顧了下,總結如下: 1.數(shù)組查詢快:數(shù)組要求是一塊連續(xù)的內存空間來存儲,這就要求在物理上這一片空間是連續(xù)的,...
    InitialX閱讀 3,586評論 0 8
  • 數(shù)據(jù)結構與算法 1 數(shù)組 數(shù)組是將元素在內存中連續(xù)存放,由于每個元素占用內存相同,可以通過下標迅速訪問數(shù)組中任何元...
    凱玲之戀閱讀 1,473評論 0 4
  • 記得之前看過一個小故事:有一個媽媽帶著五歲的兒子去朋友新家做客,然后熊孩子把一杯白水潑到了鋼琴鍵上,主人心疼不已。...
    荻落閱讀 4,072評論 4 1
  • 先來一張經(jīng)典的圖: 畫的丑了點:)JVM的內存的運行時數(shù)據(jù)區(qū)分為:方法取、堆、棧、本地方法棧、程序計數(shù)器。其中方法...
    耳_總閱讀 328評論 0 0

友情鏈接更多精彩內容