非递归dfs

xialeijie368 2011-09-25 07:57:48
void dfs(graph g, int v0)
{
initstack(s);
push(&s,v0);
while(!empty(s))
{pop(s,&v0);
if(!visited[v])
{visit(v);visited[v]=true;}
w=firstadjvertex(g,v);
while(w!=-1)
{if(!visited[w]) push(&s,w);
w=nextadjvertex(g,v,w);
}
}
}

这是书上的算法 我怎么看都不对 循环中那个w=nextadjvertex怎么看都是错的 大家指点下
...全文
242 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
failuer 2011-09-26
  • 打赏
  • 举报
回复
回溯应该就是非递归的dfs吧?
AndyZhang 2011-09-26
  • 打赏
  • 举报
回复
肯定有另外的函数,lz看看其他地方
lvjing_CSDN 2011-09-25
  • 打赏
  • 举报
回复
w=firstadjvertex(g,v);的意思是活的图g中节点v的第一个和其相邻的节点。
while(w!=-1)
{if(!visited[w]) push(&s,w);
w=nextadjvertex(g,v,w);
}
这段循环就是得到和节点v相邻的且没有被访问过的每个节点,并入栈。
xialeijie368 2011-09-25
  • 打赏
  • 举报
回复
废话 我当然知道 我说的是它这个思想就是错的 [Quote=引用 2 楼 w170532934 的回复:]

哥们,你别把数据结构上的东西拿来就用啊。人家的意思在告诉你思想,而不是给你能够运行的代码。nextadjvertex是一个函数,用来获得下个节点的。Do you understand??
[/Quote]
W170532934 2011-09-25
  • 打赏
  • 举报
回复
哥们,你别把数据结构上的东西拿来就用啊。人家的意思在告诉你思想,而不是给你能够运行的代码。nextadjvertex是一个函数,用来获得下个节点的。Do you understand??
Jake443403168 2011-09-25
  • 打赏
  • 举报
回复
这应该是调用一个函数,lz代码没贴全也不好说

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧