線性表是一種線性結構,它是具有相同型別的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,表示鍊錶為空。...