1. 線性表
線性表是一類最簡單、最常用的數(shù)據(jù)結(jié)構(gòu)。簡單來說,一個(gè)線性表是n個(gè)元素的有限序列,其中n≥0,通常表示為(a1,a2,...,an)。其特點(diǎn)是,在非空的數(shù)據(jù)元素集合中:
(1)存在唯一的一個(gè)稱作“第一個(gè)”的元素
(2)存在唯一的一個(gè)稱作“最后一個(gè)”的元素
(3)除第一個(gè)元素外,集合中的每個(gè)元素均只有一個(gè)直接前驅(qū)
(4)除最后一個(gè)元素外,集合中的每個(gè)元素均只有一個(gè)直接后繼


最基本的節(jié)點(diǎn)結(jié)構(gòu)

在單向鏈表中插入結(jié)點(diǎn)時(shí),指針的變化情況

在單向鏈表中刪除結(jié)點(diǎn)時(shí),指針的變化情況

在雙向鏈表插入結(jié)點(diǎn)時(shí)的指針變化情況

在雙向鏈表刪除結(jié)點(diǎn)時(shí)的指針變化情況
2. 棧和隊(duì)列
棧是只能通過訪問它的一端來實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和檢索的一種線性數(shù)據(jù)結(jié)構(gòu)。即,棧的修改是按照先進(jìn)后出(FILO)的原則進(jìn)行的。

棧的5種基本運(yùn)算

兩個(gè)棧共享空間示意圖

鏈棧示意圖

隊(duì)列的頭、尾指針與隊(duì)列中元素之間的關(guān)系

循環(huán)隊(duì)列的頭、尾指針示意圖

鏈隊(duì)列示意圖

串值的鏈表存儲(chǔ)方式
3. 廣義表
廣義表是線性表的推廣,是由零個(gè)或多個(gè)單元素或子表所組成的有限序列。
-LS=(a1,a2,...,an)
其中ai(1≤i≤n)既可以是單個(gè)元素,又可以是廣義表,分別稱為原子和值表。

廣義表的鏈表結(jié)點(diǎn)結(jié)構(gòu)

廣義表的存儲(chǔ)結(jié)構(gòu)示意圖
4. 樹

樹的定義
注意:樹的定義是遞歸的,即一個(gè)樹由若干的子樹構(gòu)成,而子樹又由更小的子樹構(gòu)成。
樹的遍歷操作是樹中其他運(yùn)算的重要基礎(chǔ)。

幾種二叉樹
很容易區(qū)分:與滿二叉樹結(jié)點(diǎn)一一對(duì)應(yīng)的即為完全二叉樹,否則是非完全二叉樹。

二叉樹的順序儲(chǔ)存結(jié)構(gòu)
顯然順序存儲(chǔ)結(jié)構(gòu)對(duì)于完全二叉樹而言,既簡單又節(jié)省空間;但對(duì)一般的二叉樹則不適用。

二叉樹的鏈表存儲(chǔ)結(jié)構(gòu)

二叉樹轉(zhuǎn)化為樹和森林
5. 圖
圖是一種比數(shù)更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

有向圖和無向圖