需要了解的是,圖的廣度搜尋遍歷類似於二叉樹的層次遍歷,用到了隊的操作
**如下
#include
#include
#define ok
1#define error
0#define true
1#define false
0#define maxvex
100typedef int datatype;
/*設定隊資料型別,可修改*/
typedef int vextype;
typedef int edgetype;
typedef structqueue;
/*定義棧結構體*/
typedef structmgraph;
/*鄰接矩陣*/
void
ini_queue
(queue *q)
int in_queue
(queue *
q,datatype e)
else
return
false;}
int empty_queue
(queue q
)int out_queue
(queue *
q,datatype *e)
return
true;}
int creat_mgraph
(mgraph *m)
returnok;
}void
mprint
(mgraph m
)printf
("________________________________________\n");
}int visit[
maxvex]=
;/*visit陣列標記頂點訪問情況*/
int bfsm
(mgraph m
,datatype v
)returnok;
/*當隊中不在有元素,則遍歷結束*/
}
測試**
int main()
return0;
}/*樣例輸入:
5 41 2 3 4 5
1 32 3
2 52 4
以第三個結點開始: 3
得到 3 1 2 4 5
*/
廣度優先搜尋鄰接矩陣表示 (C語言)
在圖論演算法中圖的表示主要有有鄰接矩陣和鄰接表兩種表示法,在這篇文章之前,已經發布了dijkstra演算法的鄰接表表示法 dijkstra演算法的鄰接表表示 兩種表示法的演算法思路是一樣的,只是表示的方式不同而帶來了 表示上的細微區別。個人認為鄰接矩陣的表示法更為簡潔,有鄰接表有些繁瑣。由於思路相似...
深度優先遍歷(鄰接矩陣)
problem description 無向連通圖的頂點值為字元型且互不相等,採用鄰接矩陣儲存。請從儲存下標為0的頂點開始深度優先遍歷,在選取下乙個未被訪問的鄰接點時,優先選擇儲存下標小的頂點,輸出該遍歷序列。input 有多組資料,每組第一行為兩個整數n和e,表示n個頂點和e條邊 0using n...
檢驗深度優先和廣度優先的程式 鄰接矩陣儲存結構
圖的遍歷 對圖的搜尋就是對圖中頂點的遍歷。圖中各頂點的關係比較複雜 乙個頂點可能有多 個鄰接頂點,也可能是獨立頂點 非連通圖 為了不重複地訪問所有頂點,需設立乙個訪 問標誌陣列visited,並置其初值為false 未被訪問 遍歷時只訪問那些未被訪問過的 頂點,且在訪問後,將其訪問標誌的值改為tru...