資料結構之DFS和BFS演算法

2021-10-25 04:13:20 字數 1575 閱讀 5589

#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演算法 是一種利用佇列 用佇列來儲...