C语言数据结构_图的遍历-深度优先搜索

image-20220216215434878

//深度优先搜索一个连通图
void DFS(VNode G[], int v){
    int w;
    visit(v);       //访问当前顶点
    visited[v] = 1;     //将顶点v对应访问标记置1
    w = FirstAdj(G, v);     //找到顶点v的第一个邻接点,如果无邻接点,返回-1
    while(w != -1){
        if(visited[w] == 0)     //该顶点未被访问
        DFS(G, w);      //递归地进行深度优先搜索
        w = NextAdj(G, v);          //找到顶点v的下一个邻接点,如果无邻接点,返回-1
    }
}

//对图G=(V,E)进行深度优先搜索的主算法
void Travel_DFS(VNode G[], int visited[], int n){
    int i;
    for(i=0; i<n; i++)
        visited[i] = 0;         //将标记数组初始化为0
    for(i=0; i<n; i++)
        if(visited[i] == 0)         //若有顶点未被访问,从该顶点开始继续深度优先搜索
            DFS(G, i);
}

image-20220216220533629

image-20220216220606934

posted @ 2022-03-08 20:26  zonkidd  阅读(66)  评论(0编辑  收藏  举报