本篇介紹一些常見的c語言資料結構.
1. 棧( stack)
-棧就是一種具有後進先出 lifo(last in first out) 特性的資料結構;
-棧是一種只能在一端進行增刪操作的資料結構, 該位置叫做棧頂;
-棧屬於邏輯結構中的線性結構, 可以分別採用物理結構中的順序結構和鏈式結構進行實現.
2. 佇列( queue)
-佇列本質就是一種具有先進先出 fifo(first in first out) 特性的資料結構;
-佇列是一種在兩端進行增刪操作的資料結構, 其中插入元素的一端叫做隊尾,刪除元素的一端叫做隊首/隊頭;
-佇列屬於邏輯結構中的線性結構, 可以分別採用物理結構中的順序結構和鏈式結構進行實現.
3. 鍊錶( list)
3.1 基本概念
由若干個位址不連續的節點序列組成且不同的節點之間通過指標連線組成的資料結構, 叫做鍊錶.
3.2 基本分類
(1)單向線性鍊錶
-鍊錶中的第乙個節點叫做頭節點, 指向頭節點的指標叫做頭指標;
-鍊錶中的最後乙個節點叫做尾節點, 指向尾節點的指標叫做尾指標;
-鍊錶中尾節點的後指標是乙個空指標.
(2)單向迴圈鍊錶
-單向迴圈鍊錶與單向線性鍊錶類似, 所不同的是讓尾節點的後指標指向了頭節點, 首尾相接構成環狀結構.
(3)雙向線性鍊錶
-鍊錶中頭節點的前指標和尾節點的後指標都是空指標.
(4)雙向迴圈鍊錶
-雙向迴圈鍊錶與雙向線性鍊錶類似, 所不同的是讓尾節點的後指標指向頭節點, 頭節點的前指標指向尾節點, 首尾相接構成環狀結構.
(5)陣列鍊錶
-鍊錶中的每乙個元素都是乙個陣列, 也就是由陣列構成的鍊錶.
(6)鍊錶陣列
- 陣列中的每乙個元素都是乙個鍊錶.
(7)二維鍊錶
- 鍊錶中的每乙個元素都是乙個一維鍊錶的一維鍊錶, 也就是由鍊錶構成的鍊錶.
4. 二叉樹( binarytree)
4.1 基本概念
二叉樹就是指每個節點最多有兩個子節點的樹形結構.
4.2 基本特徵
-樹形結構中, 最起的節點叫做根節點, 整棵樹只有乙個根節點, 根節點沒有父節點, 可以有子節點, 除了根節點之外, 其他每個節點都有且只有乙個父節點;
-樹形結構中沒有任何子節點的節點叫做葉子節點, 葉子節點只有父節點沒有子節點;
-樹形結構中除了根節點和葉子節點之外, 剩下的其他節點都叫做枝節點, 枝節點既有父節點
也有子節點;
-如果該二叉樹中每層節點的個數都達到了最大值, 並且所有的枝節點都有兩個子節點, 這樣的二叉樹叫做滿二叉樹;
-如果該二叉樹中除了最下層之外, 其他各層的節點數都達到了最大值, 並且最下面一層的節點都連續集中在左邊, 這樣的二叉樹叫做完全二叉樹;
-二叉樹具有遞迴巢狀式的空間結構特徵, 因此採用遞迴的方法處理二叉樹, 常常可以使得演算法更加簡潔, 具體處理方法如下.
處理( 二叉樹) node;4.4 二叉樹的遍歷方式
(1)先序遍歷( dlr => data left right)
先遍歷根節點 => 遍歷左子樹 => 遍歷右子樹
(2)中序遍歷( ldr => left data right)又叫做先根遍歷
先遍歷左子樹 => 遍歷根節點 => 遍歷右子樹
(3)後序遍歷( lrd=> left right data)
先遍歷左子樹 => 遍歷右子樹 => 遍歷根節點 又叫做中根遍歷又叫做後根遍歷
4.5 有序二叉樹
滿足以下三個條件的二叉樹即為有序二叉樹
(1)若左子樹非空, 則左子樹上的所有節點元素值都小於等於根節點元素值
(2)若右子樹非空, 則右子樹上的所有節點元素值都大於等於節點元素值
(3)左右子樹內部也分別滿足以上特徵
c語言 鍊錶 C語言鍊錶例項 玩轉鍊錶
下圖為最一簡單鍊錶的示意圖 第 0 個結點稱為頭結點,它存放有第乙個結點的首位址,它沒有資料,只是乙個指標變數。以下的每個結點都分為兩個域,乙個是資料域,存放各種實際的資料,如學號 num,姓名 name,性別 和成績 score 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同...
c語言鍊錶 鍊錶
在儲存一大波數的時候,我們通常使用陣列,但有時候陣列顯得不夠靈活,比如有一串已經從小到大排序好的數 2 3 5 8 9 10 18 26 32 現在需要往這串數中插入6使其得到的新序列仍符合從小到大排列。如果我們使用陣列來實現這一操作,則需要將8和8後面的數字都依次往後挪一位,如果你覺得這幾個數不算...
c語言 鍊錶 C語言之鍊錶入門
鍊錶三要素 1 頭指標 head 是用來說明鍊錶開始了,頭指標就代表鍊錶本身 所以以後要訪問鍊錶,就要訪問頭指標 2 結點 node 鍊錶中每乙個結構體變數 3 尾指標 用來說明鍊錶的結束 它是乙個空指標,null include includetypedef struct stud 定義了乙個結構...