#include
#include
using
namespace std;
typedef
int status;
typedef
char vertextype;
typedef
int selemtype;
typedef
int arctype;
#define mvnum 100
#define maxsize 100
//棧空間
#define maxqsize 100
//佇列空間
#define ok 1
#define error 0
bool visited[mvnum]
;typedef
struct
//圖的鄰接矩陣法儲存表示
amgraph;
typedef
struct
sqqueue;
void
initqueue
(sqqueue &q)
//構造乙個空佇列q
void
enqueue
(sqqueue &q, arctype e)
//插入元素e為q的新的隊尾元素
bool
queueempty
(sqqueue q)
//判斷是否為空隊
void
dequeue
(sqqueue &q, arctype &u)
//隊頭元素出隊並置為u
intlocatevex
(amgraph g,
char v[10]
)//尋找v所在位置
intfirstadjvex
(amgraph g ,
int v)
//返回v的第乙個鄰接點
return-1
;}intnextadjvex
(amgraph g ,
int u ,
int w)
//返回v相對於w的下乙個鄰接點
return-1
;}status createudn
(amgraph &g)
//採用鄰接矩陣法創捷無向網
return ok;
}void
dfs(amgraph g,
int v)
//鄰接矩陣表示圖的深度優先搜尋遍歷
void
bfs(amgraph g,
int v)
//鄰接矩陣表示圖的廣度優先遍歷}}
}void
main()
printf
("\n從哪個節點出發深度開始遍歷:");
cin>>i;
v=locatevex
(g,i)
;printf
("圖的深度優先搜尋遍歷是:");
dfs(g,v)
;printf
("圖的廣度優先搜尋遍歷是:");
bfs(g,v)
;}
資料結構與演算法(bfs與dfs)
引言 經過上一次的學習,我們明白了圖的基本操作。這一次,我們學習圖的兩種基本演算法 bfs與dfs。2.bfs演算法 後記介紹 dfs演算法也叫深度優先搜尋,核心思想是從某一位置或者狀態出發,進行搜尋,直到找到為止。形象的可以認為是所有的可能都走一邊,既暴力。深度優先遍歷圖的方法是,從圖中某頂點v出...
推免複習之資料結構與演算法 DFS和BFS
dfs是深度優先遍歷,一般使用遞迴實現,優先選擇深度方向遍歷。bfs是廣度優先遍歷,一般使用迴圈和佇列實現,優先廣度方向上的遍歷,這兩個演算法都很常見,不多解釋。直接放 include include includeusing namespace std void inputgraph vector...
DFS和BFS演算法
本質區別 bfs 的重點在於佇列,而 dfs 的重點在於遞迴。這是它們的本質區別。dfs 演算法 是一種利用遞迴 實質上是用棧來儲存未訪問的結點,先進後出 實現的搜尋演算法,直到找到解或走不下去為止。簡單來說,其搜尋過程和 不撞南牆不回頭 樹的先序遍歷 類似。bfs演算法 是一種利用佇列 用佇列來儲...