資料結構第六章小結

2022-08-21 08:54:07 字數 1244 閱讀 8961

第六章主要學習圖,感覺有蠻多概念和演算法要去記住,可能會造成混淆;

在學習過程中,感覺不是實打實的掌握,還得多看看書。

思維導圖如下

個人小測中

1、使用鄰接矩陣a儲存無向網路,若i號頂點與j號頂點之間不存在邊,則a[i][j]值為多少

連通圖中 鄰接矩陣 連通為1,不連通為0,無向網路連通為權值,不連通為無窮或者是選擇乙個不與其他權值混淆的最大值。

2、如果從無向圖的任一頂點出發進行一次深度優先搜尋可訪問所有頂點,(不論是深度優先還是廣度優先)

連通圖,連通分量為其本身(注意審題意)

作業題1、對於帶權無向圖 g = (v, e),m 是 g 的最小生成樹,則 m 中任意兩點 v1 到 v2 的路徑一定是它們之間的最短路徑

錯誤;從最小生成樹的演算法來看,有乙個相似的步驟,都是從中選擇最小且不會造成迴路的權值,在選擇過程中是比較目前頂點的鄰接點的邊的權值大小,題意是任意兩點,

這是無法保證的,例如a到b權值3,a到c權值為4,b到c權值為5,按照演算法路徑為a到b,a到c,本身b到c最短路徑為5,而所建構路徑為7,並不是最短路徑。

2、p 是頂點 s 到 t 的最短路徑,如果該圖中的所有路徑的權值都加 1,p 仍然是 s 到 t 的最短路徑。

錯誤;如果p是由多頂點連線而成,權值都加1,無法保證最終會小於其他路徑(如s到t自身連通,權值為12,而目前p最短路徑為11,權值都加1,那麼此時p並不再是最短路徑)。

實踐題題目會使用到類似圖的dfs演算法

解題思路

先儲存到乙個記錄座標陣列,同時建立乙個輔助陣列visit,記錄是否已被訪問

從0開始遍歷

首先需要保證第一步在允許範圍內可以到達i點

(d+7.5)*(d+7.5) >= p[i].x*p[i].x + p[i].y*p[i].y)

不可以則訪問下乙個下標,如果可以呼叫演算法,記錄visit[i]被訪問;

判斷是否直接從i到岸,能則直接返回;

if(d >= 50 - fabs(p[i].x) || d >= 50 - fabs(p[i].y)) return

true

;不能則繼續判斷

能否從i到j,在判斷是否到岸,即使用遞迴演算法

else

//由於使用遞迴,得到成功答案還需要返回bool值以及退出遞迴

} }

}

資料結構 第六章學習小結

思維導圖 演算法小結 1.鄰接矩陣儲存 1 define mvnum 100 最大頂點數 2 typedef char vertextype 假設頂點的資料型別為字元型 3 typedef int arctype 假設邊的權值型別為整型 45 typedef struct 6arcnode 1112...

第六章 資料結構

存放同一種資料型別的多個元素的容器,通過索引 記憶體偏移量 進行元素的訪問,陣列的大小一旦確定就不能改變。陣列其實也是線性表結構,在記憶體中陣列的元素是緊挨著連續儲存的。特點 查詢快 增刪慢 舉例 定義乙個陣列 int arr new int 想在2的後面插入乙個新的元素11,這時候就需要定義乙個新...

資料結構第六章樹

第六章 樹 1.樹是n個結點的有限集。n 0時稱為空樹。在任意乙個非空樹中 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,其餘節點可分為m個互不相交的有限集,其中每乙個集合又是一棵樹,並成為根的子樹。2.結點分類 結點擁有的子樹稱為結點的度。度為0的結點稱為葉結點或終端節點 度不為0的結點稱為...