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

作者: Poemrain | 来源:发表于2017-10-17 23:51 被阅读14次

    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入队列

    }

    }

    }

    相关文章

      网友评论

        本文标题:广度优先搜索(Breadth-First-Search)

        本文链接:https://www.haomeiwen.com/subject/wigjuxtx.html