一. 圖的儲存結構及實現
圖可以使用兩種儲存結構,分別是鄰接矩陣和鄰接表。
鄰接矩陣以矩陣的形式儲存圖所有頂點間的關係。鄰接矩陣具有以下特點:
1,鄰接矩陣是正矩陣,即橫縱維數相等。
2,矩陣的每一行或一列代表乙個頂點,行與列的交點對應這兩個頂點的邊。
3,矩陣的點代表邊的屬性,1代表有邊,0代表無邊,所以矩陣的對角線都是0,因為對角線上對應的橫縱軸代表相同的頂點,邊沒有意義。
4,如果是無向圖,那麼矩陣是對稱矩陣;如果是有向圖則不一定。
5,如果是有權圖,矩陣點數值可以是權值。
6,鄰接矩陣表示圖的關係非常清晰,但消耗空間較大。
鄰接表是以一組鍊錶來表示頂點間關係,有以下特點:
1,鄰接表示乙個有但鍊錶組成的陣列
2,圖中的每乙個頂點都有乙個鏈,陣列的大小等於圖中頂點的個數。
3,無向圖的鏈的第乙個元素是本頂點,後繼分別連線著和這個頂點相連的頂點;有向圖的鏈第乙個頂點是本頂點,後繼是以本頂點為起點的邊的終點。
4,如果是有權圖,可以在節點元素中設定權值屬性
5,鄰接鍊錶關係表示不如鄰接矩陣清晰,資料結構相對複雜,但節省空間。
二.最小生成樹
在一給定的無向圖g = (v, e) 中,(u, v) 代表連線頂點 u 與頂點 v 的邊(即),而 w(u, v) 代表此邊的權重,若存在 t 為 e 的子集(即)且為無迴圈圖,使得的 w(t) 最小,則此 t 為 g 的最小生成樹。
最小生成樹其實是最小權重生成樹的簡稱。
三.最短路徑
最短路徑問題是圖論研究中的乙個經典演算法問題, 旨在尋找圖(由結點和路徑組成的)中兩結點之間的最短路徑。 演算法具體的形式包括:
確定起點的最短路徑問題 - 即已知起始結點,求最短路徑的問題。
確定終點的最短路徑問題 - 與確定起點的問題相反,該問題是已知終結結點,求最短路徑的問題。在無向圖中該問題與確定起點的問題完全等同,在有向圖中該問題等同於把所有路徑方向反轉的確定起點的問題。
確定起點終點的最短路徑問題 - 即已知起點和終點,求兩結點之間的最短路徑。
四.aov網與拓撲排序
對aov網進行拓撲排序的基本思想是:
1)從aov網中選擇乙個沒有前驅的頂點輸出它;
2)從aov網中刪去該頂點,並且刪去所有以該頂點為尾的弧;
3)重複上述兩步,直到全部頂點都被輸出,或aov網中不存在沒有前驅的頂點。
第六章 資料結構
存放同一種資料型別的多個元素的容器,通過索引 記憶體偏移量 進行元素的訪問,陣列的大小一旦確定就不能改變。陣列其實也是線性表結構,在記憶體中陣列的元素是緊挨著連續儲存的。特點 查詢快 增刪慢 舉例 定義乙個陣列 int arr new int 想在2的後面插入乙個新的元素11,這時候就需要定義乙個新...
資料結構第六章樹
第六章 樹 1.樹是n個結點的有限集。n 0時稱為空樹。在任意乙個非空樹中 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,其餘節點可分為m個互不相交的有限集,其中每乙個集合又是一棵樹,並成為根的子樹。2.結點分類 結點擁有的子樹稱為結點的度。度為0的結點稱為葉結點或終端節點 度不為0的結點稱為...
資料結構第六章小結
第六章主要學習圖,感覺有蠻多概念和演算法要去記住,可能會造成混淆 在學習過程中,感覺不是實打實的掌握,還得多看看書。思維導圖如下 個人小測中 1 使用鄰接矩陣a儲存無向網路,若i號頂點與j號頂點之間不存在邊,則a i j 值為多少 連通圖中 鄰接矩陣 連通為1,不連通為0,無向網路連通為權值,不連通...