1. 程式人生 > >數組與鏈表的區別

數組與鏈表的區別

style 集合 根據 刪除 clas ali 排列 align 運行時

鏈表的相關知識整理

什麽是鏈表

  鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。

鏈表與數組的區別

  回憶下數組的概念 ,所謂數組,是相同數據類型的元素按一定順序排列的集合。根據概念我們可以知道數組在內存中連續,鏈表不連續;由於不同的存儲方式導致數組靜態分配內存,鏈表動態分配內存,數組元素在棧區,鏈表元素在堆區;由於數組在內存中連續,我們可以利用下標定位,時間復雜度為O(1),鏈表定位元素時間復雜度O(n);但是由於數組的連續性數組插入或刪除元素的時間復雜度O(n),鏈表的時間復雜度O(1)。總結一下,數組和鏈表的區別如下
  1.數組靜態分配內存,鏈表動態分配內存
  2.數組在內存中連續,鏈表不連續
  3.數組元素在棧區,鏈表元素在堆區
  4.數組利用下標定位,時間復雜度為O(1),鏈表定位元素時間復雜度O(n);
  5.數組插入或刪除元素的時間復雜度O(n),鏈表的時間復雜度O(1)。

C#實現鏈表的基本操作

  以單鏈表為例,根據鏈表的定義我們先定義鏈表節點的數據結構

數組與鏈表的區別