資料結構之陣列 單鏈表和雙鏈表的介紹

2021-08-07 22:26:35 字數 1433 閱讀 7706

線性表是一種線性結構,它是具有相同型別的n(n≥0)個資料元素組成的有限序列。本章先介紹線性表的幾個基本組成部分:陣列、單向鍊錶、雙向鍊錶;

陣列有上界和下界,陣列的元素在上下界內是連續的

陣列的特點是:資料是連續的;隨機訪問速度快。

陣列中的難點是多維陣列和動態陣列。多維陣列本質上也是通過一維陣列實現的。至於動態陣列,是指數組的容量能動態增長的陣列;對於c語言而言,若要提供動態陣列,需要手動實現;而對於c++而言,stl提供了vector

單向鍊錶(單鏈表)是鍊錶的一種,它由節點組成,每個節點都包含下乙個節點的指標。

單鏈表的示意圖如下:

單鏈表刪除節點

刪除」節點30」

刪除之前:」節點20」 的後繼節點為」節點30」,而」節點30」 的後繼節點為」節點40」。

刪除之後:」節點20」 的後繼節點為」節點40」。

單鏈表新增節點

在」節點10」與」節點20」之間新增」節點15」

新增之前:」節點10」 的後繼節點為」節點20」。

新增之後:」節點10」 的後繼節點為」節點15」,而」節點15」 的後繼節點為」節點20」。

雙向鍊錶(雙鏈表)是鍊錶的一種。和單鏈表一樣,雙鏈表也是由節點組成,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。

雙鏈表的示意圖如下:

雙鏈表刪除節點

刪除」節點30」

刪除之前:」節點20」的後繼節點為」節點30」,」節點30」 的前繼節點為」節點20」。」節點30」的後繼節點為」節點40」,」節點40」 的前繼節點為」節點30」。

刪除之後:」節點20」的後繼節點為」節點40」,」節點40」 的前繼節點為」節點20」。

雙鏈表新增節點

在」節點10」與」節點20」之間新增」節點15」

資料結構 談談單鏈表和雙鏈表

陣列的特點 在記憶體中連續 利用下標定位元素,因此查詢操作的時間複雜度為o 1 增加與刪除元素時,需要進行移動,因此增加與刪除操作的時間複雜度為o n 陣列大小固定,不能直接擴容。如果需要擴容,也是建立乙個更大的陣列,再將元素複製過去。鍊錶的特點 在記憶體中可以不連續 增加與刪除元素的操作很方便,只...

資料結構 單鏈表雙鏈表9 18

單鏈表結點類node宣告如下,成員變數data表示結點的資料域,儲存資料元素,資料型別為t,next表示結點的指標域,儲存後繼結點的位址。檔名為node.h template class node public t data node next node this next null node t ...

資料結構之單鏈表 雙鏈表的基本操作

單鏈表雙鏈表中經常糾結的概念 1 鍊錶是否有含有頭結點 1 帶頭結點的煉表頭指標head指向頭結點,資料域不含任何資訊,只是指向鍊錶的第乙個儲存資訊的結點,head next等於null則表示鍊錶為空 2 不帶頭結點的煉表頭指標head直接指向儲存資訊的第乙個結點,head null,表示鍊錶為空。...