#define M 20 #include "stdio
h" #include "stdlib
h" #include "malloc
h" typedef struct{/*定义图*/ int V[M]; int R[M][M]; int vexnum; }Graph; void creatgraph(Graph *g,int n){/*创建图*/ int i,j,r1,r2; g->vexnum=n; for(i=1;iV[i]=i; } for(i=1;iR[r1][r2]=1; g->R[r2][r1]=1; scanf("%d,%d",&r1,&r2); } } void printgraph(Graph *g){/*打印图的邻接矩阵*/ int i,j; for(i=1;ivexnum;i++) { for(j=1;jvexnum;j++) { printf("%2d ",g->R[i][j]); } printf("\n"); } } int visited[M];/*全局变量:访问标志数组*/ void visitvex(Graph *g,int vex){/*访问顶点*/ printf("%d ",g->V[vex]); } int firstadjvex(Graph *g,int vex){/*获取第一个未被访问的邻接节点*/ int w,i; for(i=1;ivexnum;i++) { if(g->R[vex][i]==1&&visited[i]==0) { w=i; break; } else { w=0; } } return w; } int nextadjvex(Graph *g,int vex,int w){/*获取下一个未被访问的邻接节点*/ int t; t=firstadjvex(g,w); return t; } void DFS