數據結構與算法系列——數組和鏈表

數據結構與算法系列——數組和鏈表

數組的介紹

在每一種編程語言種,基本都有數組這種數據類型,當然它不僅是一種數據類型,還是一種基礎、簡單的數據結構。

數組的定義是:數組是一種線性表數據結構,他用一組連續的內存空間,來儲存一組相同類型的數據

數組的特點

數組是一種線性表,線性表就是數據像一條線一樣,排列成一條有序的隊,每個數據只有前和後兩個方向。數組在內存中的儲存是連續的,聲明數組的時候會在內存中找一塊連續的空間,來依次儲存數組的每個數據。數組需要預留儲存空間,在使用前需要先申請內存的大小,很有可能會浪費空間。數組隨機訪問效率高,因為在內存中是連續的,所以可以直接訪問該地址的數據。但是數組因為連續這一特點使得它的的插入和刪除效率低,因為需要把插入和刪除位置後邊的所有數據後挪或者前移。數組不利於動態擴展,數組一旦定義,長度是固定的,擴展起來比較麻煩,需要重新定義數組。

數組的優點

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

數組的缺點

  • 插入和刪除效率低
  • 不易於擴展
  • 對內存要求高,需要連續的空間
  • 有可能造成內存的浪費

鏈表的介紹

鏈表也是一種基本的數據結構,它有一系列節點組成,每個節點包括一個數據結構(用來存放各類型的數據),還包括一個指向下一個節點的指針。

鏈表的特點

鏈表和數組一樣也是線性表,但是鏈表在內存中的儲存是非連續、非順序的。每一個數據都保存了一個指針,指向下一個數據的內存地址,這樣通過這個指針就可以找到下一個數據,也正是因為是非連續的,所以隨機訪問和數據的查找比較麻煩,每次都要從頭開始依次向後直到找到目標數據為止。但是插入和刪除操作比較容易,因為不是連續有序的,所以插入的時候,只需要把前一個數據的指針指向新數據,然後新數據的指針指向後一個數據就可以了,刪除的時候只需要把後一個數據告訴前一個數據就可以了,其他的數據都不需要做修改。鏈表還支持動態擴展,可以隨意增加和刪除數據。

鏈表的優點

  • 插入、刪除速度快
  • 內存利用率高,不浪費
  • 易於擴展

鏈表的缺點

  • 不能隨機訪問,查找效率低

最後我們用前邊學習的時間複雜度來分析數組和鏈表的操作

數據結構與算法系列——數組和鏈表

總結

對於已知大小,並且對數據操作讀取較多,插入、刪除較少,可以直接用數組。由於鏈表在有時候不能直接儲存基本數據類型,所以性能會有一點點的損耗。

我們在平時業務邏輯的時候可以直接使用像鏈表這種容器類,雖然有一點點性能損耗,但影響很小。但如果做底層的開發,對性能要求比較高的時候,直接用數組更為合適。


如果覺得對你有幫助,可以推薦和分享給你的朋友


分享到:


相關文章: