无向图的深度优先遍历

voidDFS(graph*g,inti){intj;intvisited[n];for(j=0;j<n;j++)visited[j]=0;printf("node:%c... void DFS (graph *g, int i )
{ int j ; int visited[n];
for ( j = 0; j< n; j++ )
visited [j] = 0;
printf("node:%c\n",g->vexs[i]);
visited[i]=1;
for ( j= 0; j<n; j++ )
if (g->arcs[i][j]==1&&( ! visited[j] ))
DFS (g,j);
}

介个函数好像不对,结果是两个结点无限交替输出,请问错在哪?
展开
 我来答
Irreappearable
2012-05-18 · TA获得超过4956个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3142万
展开全部
for ( j = 0; j< n; j++ )
visited [j] = 0;

这段是什么意图? 如果是要把所有节点的visited设置为false的话,应该在DFS函数之外做。因为这是初始化操作,否则你每次递归调用DFS,都会先把所有visited清空,这样你就永远没有访问过的节点了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式