C语言数据结构_图的遍历-深度优先搜索
//深度优先搜索一个连通图
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);
}