#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#include"MGraph.h"
void DFS(MGraph G,int v);// 从第v个顶点出发递归地深度优先遍历图G
void DFSTraverse(MGraph G);// 图G存在,从第1个顶点起,深度优先遍历图G,并对每个顶点调用函数visit一次且仅一次
int visited[MAX_VERTEX_NUM]; // 访问标志数组(全局量)
int main()
{
MGraph g;
VertexType v1,v2;
CreateGraphF(g); /* 利用数据文件创建无向图*/
Display(g); /* 输出无向图*/
printf("深度优先遍历序列:\n");
DFSTraverse(g);
return 0;
}
void DFS(MGraph G,int v)
{
// 从第v个顶点出发递归地深度优先遍历图G
/********** Begin **********/
int w;
visited[v]=1;
visit(G.vexs[v]);
for(w=FirstAdjVex(G,G.vexs[v]);w>=0;w=NextAdjVex(G,G.vexs[v],G.vexs[w]))
if(!visited[w])
DFS(G,w);
/********** End **********/
}
void DFSTraverse(MGraph G)
{ //图G存在,从第1个顶点起,深度优先遍历图G,并对每个顶点调用函数visit一次且仅一次
/********** Begin **********/
int v;
for(v=0;v<G.vexnum;v++)
visited[v]=0;
for(v=0;v<G.vexnum;v++)
if(!visited[v])
DFS(G,v);
printf("\n");
/********** End **********/
}