图的遍历(DFS)
程序员文章站
2022-03-03 11:27:18
...
深度优先遍历:(思想:递归)
1.访问顶点v;
2.选择一个与顶点v相邻且没有被访问过的顶点w,从w触发深度优先遍历;
3.知道图中的与v相邻的所有顶点都被访问过为止;
深度优先遍历的递归:
vis[max]={0};//全局变量用于记录顶点是否访问过
void dfs(adjgraph *g,int v)
{
int w;
arcnode *p;
printf("%d ",v);//访问v顶点
vis[v]=1;
p=g->adjlist[v].firststarc;//找v的第一个邻接点
while(p!=NULL)//v的所有邻接点
{
w=p->adjvex;
if(vis[w]==0)//w未访问,从w开始深度优先遍历
{
dfs(g,w);
}
p=p->next;//找v的下一个邻接点
}
}
上一篇: 排列组合(遍历)回溯法
下一篇: 图的遍历(dfs)