数据结构和算法分享专题算法与数据结构数据结构

广度优先搜索(Breadth-First-Search)

2017-10-17  本文已影响14人  Poemrain

bool visited[MAX_VERTEX_NUM];   

//访问标记数组

void BFSTraverse(Graph G){

//对图G进行广度优先遍历,设访问函数为visit()

for(i=0;i<G.vexnum,i++)

visited[i] = FALSE;   

//访问标记数组初始化

InitQueue(Q);   

//初始化辅助队列Q

for(i=0;i<G.vexnum;i++)   

//从0号顶点开始遍历

if(!visited[i])   

//对每个连通量调用一次BFS

BFS(G,i);   

//Vi未访问过,从Vi开始BFS

}

void BFS(Graph G, int V){

//从顶点v出发,广度优先遍历图G,算法借助一个辅助队列Q

visit(v);     

//访问初始顶点v

visited[v] = TRUE;     

//对v做已访问标记

Enqueue(Q,v);     

//顶点v入队列

while(! isEmpty(Q)){

DeQueue(Q,v);      

//顶点v出队列

for(w = FirstNeighbor(G,v); w>=0; w=NextNeighbor(G,v,w))

//检测v所有邻接点

if(! visited[w]){      

//w为v的尚未访问的邻接顶点

visit(w);     

//访问定点w

EnQueue(Q,w);      

//顶点w入队列

}

}

}

上一篇 下一篇

猜你喜欢

热点阅读