陣列與鍊錶的區別

2022-07-17 02:30:20 字數 561 閱讀 4350

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

回憶下陣列的概念 ,所謂陣列,是相同資料型別的元素按一定順序排列的集合。根據概念我們可以知道陣列在記憶體中連續,鍊錶不連續;由於不同的儲存方式導致陣列靜態分配記憶體,鍊錶動態分配記憶體,陣列元素在棧區,鍊錶元素在堆區;由於陣列在記憶體中連續,我們可以利用下標定位,時間複雜度為o(1),鍊錶定位元素時間複雜度o(n);但是由於陣列的連續性陣列插入或刪除元素的時間複雜度o(n),鍊錶的時間複雜度o(1)。總結一下,陣列和鍊錶的區別如下

1.陣列靜態分配記憶體,鍊錶動態分配記憶體

2.陣列在記憶體中連續,鍊錶不連續

3.陣列元素在棧區,鍊錶元素在堆區

4.陣列利用下標定位,時間複雜度為o(1),鍊錶定位元素時間複雜度o(n);

5.陣列插入或刪除元素的時間複雜度o(n),鍊錶的時間複雜度o(1)。

以單鏈表為例,根據鍊錶的定義我們先定義鍊錶節點的資料結構

陣列與鍊錶的區別

來自網路 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前有時無法準確確定陣列的大小,只能將陣列定義成足夠大小,這樣陣列中有些空間可能不被使用,從而造成記憶體空間的浪費。鍊錶是一種常見的資料組織形式,它...

鍊錶與陣列的區別

鍊錶和陣列一樣是一種資料結構。陣列是將元素在記憶體中連續存放,由於每個元素占用記憶體相同,所以可以通過下標迅速訪問陣列中任何元素。但是如果要在陣列中增加乙個元素,需要移動大量元素,在記憶體中空出乙個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想刪除乙個元素,同樣需要移動大量元素去填掉被移...

陣列與鍊錶的區別

1.基於空間的考慮 陣列的儲存空間是靜態,連續分布的,估計過大造成空間浪費,估計太小又將使空間溢位機會增多。而鍊錶的儲存空間是動態分布的,只要記憶體空間尚有空閒,就不會產生溢位 鍊錶中每個節點除了資料域外,還有指標域,儲存密度小於1 陣列為 儲存空間利用率就越高。2.基於時間的考慮 陣列中任意節點都...