图的遍历(广度优先)

     图的广度优先遍历(非递归)分析:主要思想用队列实现,(与二叉树的层次遍历类似,)第一个结点A入队,然后与其相关的结点都入队,A出队并输出A已经被访问,,此时找与队首元素(假设为B)相关的结点,全部入队,B出队并输出B已经被访问,依次循环直到队列为空。


//图的遍历(广度优先)
void DFS(AdjMatrix *G,Visit *V)
{
    
    int queue[10];
    int front=0,rear=0,i=1,j;
    queue[++rear]=1;
    printf(“结点1已入队!\n”);
    V->a2[0]=1;
   //printf(“%5d”,G->vexnum);
    while(front!=rear)
    {

    for(j=1;j<=G->vexnum;j++)
    {
    if(G->a[i][j]==1&&V->a2[j-1]==0)
    {
    queue[++rear]=V->a1[j-1];
    printf(“结点%d已入队!\n”,V->a1[j-1]);
    V->a2[j-1]=1;
    }
    
    
    }
    i++;
    //出队
    
    front++;
    printf(“%d已出队!\n”,queue[front]);
    }
    printf(“图已遍历完!!!\n”);
    
}

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/Smallsun_229/article/details/42066643
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞