图的深度优先遍历 DFS

    void DFS(MGraph *graph){

        int i, j;

        // 初始化 访问标记数组
        for(i = 0; i < MAX_VERTEX_NUM; i++){
                vertexStatusArr[i] = 0;             
        }   

        printf("\n");

        // 从每个点出发,, 递归深度遍历图的每个点
        for(j = 0; j < graph->vexnum; j ++){
                DFTcore(graph,j);           
        }   

        printf("\n");
    }
void DFTcore(MGraph *graph, int x){

        int i;

        // 如果该点 已经被访问过,则结束
        if(vertexStatusArr[x] == 1)
                return;

        printf("%c",graph->vexs[x]);

        vertexStatusArr[x] = 1;

        // 搜素与 该点 有边的 点 继续访问 。。。
        for(i = 0; i < graph->vexnum; i ++){
                if( graph->arcs[x][i].adj != 0)
                        DFTcore(graph,i);
        }

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