邻接表的深度优先遍历
void DFSTraverse(ALGraph* G)
{
int i;
for (i=0;i<G->n;i++)
visited[i]=false;
for (i=0;i<G->n;i++) //确保每一个顶点都遍历过,如果有孤立的也可以
if (!visited[i])
DFS(G,i);
}
void DFS(ALGraph* G, int i)
{
EdgeNode* p;
printf("访问顶点:%c\n",G->adjlist[i].vertex);
fflush(stdout);
visited[i]=true;
p=G->adjlist[i].firstedge;
while (p)
{
if (!visited[p->adjvex])
DFS(G,p->adjvex);
p=p->next;
}
}
邻接矩阵的只需要
for (int j=0;j<G->n;j++)
if (G->edges[i][j]==1&&!visited[j])
DFS(G,j);
结果