各數據結構的基本概念和術語彙總
緒論
什麼是數據結構?
一般來說,用計算機解決一個具體問題時,大致需要經過下列幾個步驟:
1️⃣ 首先要從具體問題抽象出一個適當的數學模型
2️⃣ 然後設計一個解決此數學模型的算法
3️⃣ 最後編出程序,進行測試、調整 直至得到最終解答
自然語言 ——> 抽象數學模型 ——> 程序語言 ——> 運算
基本概念和術語
算法和算法分析
線性結構
線性表
- 線性表(Linear List)是最常用且最簡單的一種數據結構。一個線性是 n 個數據元素的有限序列。
- 線性表中元素可以是各種各樣的,同一線性表中元素必定具有相同的特性,即屬同一數據對象,相鄰數據元素之間存在着序偶關係
線性表的順序表示
線性表的順序表示指的是 用一組地址連續的存儲單元 依次存儲線性表的數據元素。
線性表中任一數據元素都可以 隨機存取 ,所以 線性表的順序存儲結構是一種隨機存取的存儲結構。
線性表的鏈式表示
n 個結點鏈接成一個鏈表,即爲線性表的鏈式存儲結構。
由於此鏈表的每一個結點中只包含一個指針域,故又稱 線性鏈表 或 單鏈表
在 單鏈表 中,取得第 i 個數據元素必須從頭指針出發尋找,因此 單鏈表是一種非隨機存取的存儲結構。
循環鏈表(Circular Linked List) 是另一種形式的鏈式存儲結構。它的特點是表中最後一個結點的指正域指向頭結點整個鏈表形成一個環
循環鏈表中任一結點出發均可找到表中其他結點。
雙向鏈表(Double Linked List) 的結點有兩個指針域,其一指向直接後繼,另一指向直接前驅。
雙向鏈表特點就是更方便找前驅結點。
線性表的順序、鏈式存儲結構比較
棧和隊列
棧和隊列也是線性表, 其特殊性在於棧和隊列的基本操作是線性表的子集,他們是操作受限的線性表。
非線性結構
樹和二叉樹
圖的定義和基本術語
圖:
- V:頂點(數據元素)的 有窮非空 集合
- E:邊的 有窮 集合
無向圖:每條邊都是無方向的
有向圖:每條邊都是有方向的
完全圖:任意兩個點都有一條邊相連
稀疏圖: 有很少邊或弧的圖
稠密圖:有較多邊或弧的圖
網:邊、弧帶權的圖
鄰接:有邊、弧相連的兩個頂點之間的關係
- 存在 ,則稱 和 互爲 鄰接點
- 存在 ,則稱 鄰接到 , 鄰接於
關聯(依附):邊、弧與頂點之間的關係
- 存在 或 ,則稱該邊、弧關聯於 和
頂點的度:與該頂點相關聯的邊的數目,記爲
在 有向圖 中,頂點的度等於該頂點的 入度 與 出度 之和
頂點 V 的入度 是以 V 爲 終點 的有向邊的條數,記作
頂點 V 的出度 是以 V 爲 始點 的有向邊的條數,記作
路徑:接續的邊構成的頂點序列。
路徑長度:路徑上邊或弧的數目 / 權值之和。
迴路(環):第一個頂點和最後一個頂點相同的路徑。
簡單路徑:除路徑起點和終點可以相同外,其餘頂點均不相同的路徑。
簡單迴路(簡單環):除路徑起點和終點相同外,其餘頂點均不相同的路徑。
連通圖(強連通圖)
在無(有)向圖 中,若對任何兩個頂點 v、u 都存在從 v 到 u 的路徑,
則稱 G 是 連通圖(強連通圖)。
權與網
- 圖中邊或弧所具有的相關數稱爲 權。表明從一個頂點到另一一個頂點的距離或耗費。
- 帶權的圖稱爲 網。
子圖
設有兩個圖 、,若 ,則稱 是 的 子圖。
連通分量(強連通分量)
- 無向圖 G 的 極大連通子圖 稱爲 G 的 連通分量
- 極大連通子圖意思是:該子圖是G連通子圖,將G的任何不在該子圖中的頂點加入,子圖不再通
有向圖 G 的 極大強連通子圖 稱爲 G 的 強連通分量。
極大強連通子圖意思是:
該子圖是 G 的強連通子圖,將 D 的任何不在該子圖中的頂點加入,子圖不再是強連通的。
極小連通子圖:該子圖是 G 的連通子圖,在該子圖中刪除任何一條邊,子圖不再連通。
生成樹:包含無向圖 G 所有頂點的極小連通子圖。
生成森林:對非連通圖,由各個連通分量的生成樹的集合。
✍ 碼字不易,記得點贊 👍 收藏 ⭐️