bfs

实现如图(邻接矩阵)的BFS
bfs

void BFStraverse(MGraph G)
{
    int i, j;
    SqQueue Q;                                        //辅助队列
    for (i = 0; i < G.numVertexes; i++)
        visited[i] = 0;                                //初始化都为0
    InitQueue(&Q);                                    //初始化辅助队列
    for (i = 0; i < G.numVertexes; i++)                //对每一个点做循环
    {
        if (!visited[i])                            //若没有被访问        
        {
            visited[i] = 1;                                //将当前结点设置为已访问
            printf("%c", G.verx[i]);                    //输出顶点信息
            EnQueue(&Q, i);                                //将该顶点入队列
            while (QueueEmpty(Q))                        //当前队列不为空
            {
                DeQueue(&Q, &i);                        //将对头元素出队,并将其值传给i
                for (j = 0; j < G.numVertexes; j++)
                {
                    if (G.arc[i][j] == 1 && !visited[j])        //判断其他顶点若与当前顶点存在边且未被访问过
                    {
                        visited[j] = 1;                            //标记为已访问
                        printf("%c", G.verx[j]);                //打印结点信息
                        EnQueue(&Q, j);                            //将该结点入队
                    }
                }
            }
        }
    }
}

 

上一篇:最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)


下一篇:allure快速安装