图的深度优先遍历
void visit(AdjMatrix *G,int v0) {
printf("%d ",G->vertex[v0]);
}
int FirstAdjVertex(AdjMatrix G,int v0)
{ int i,w;
for (i=1;i<=G.vexnum;i++)
{ if((G.arcs[v0][i]!=0) && visited[i]==0){
w=i;
break;
}
else{
w=0;
break;
}
}
return w;
}
int NextAdjVertex(AdjMatrix G,int v0,int w){
int t;
t=FirstAdjVertex(G,w);
return t;
}
void TraverseGraph(AdjMatrix G){
int vi;
void DepthFirstSearch(AdjMatrix,int);
for (vi=1;vi<=G.vexnum;vi++)
visited[vi]=0;
for (vi=1;vi<=G.vexnum;vi++)
{ if (!visited[vi])
DepthFirstSearch(G,vi);
printf("%d",G.vertex[vi]);
}
}
void DepthFirstSearch(AdjMatrix *G,int v0)
{ void visit(AdjMatrix,int);
int j;
visit(*G,v0);
int w;
visited[v0]=1;
w=FirstAdjVertex(*G,v0);
while (w!=-1)
{ if (!visited[w])
DepthFirstSearch(G,w);
w=NextAdjVertex(*G,v0,w);
}
}
请问如何输出已经遍历过的节点,怎么加代码,急!!!!!!!!请高手指点