我需要实现DFS从顶点查找所有可能的路径,说“项目”
到目前为止,我有以下,我不明白我要去哪里错了。DFS找到所有可能的路径 - 我哪里错了?
void dfs()
{
int i;
for(i=1;i<=nodecount;i++)
{
visited[i]=0;
}
push(item);
while(top!=0)
{
pop();
visited[item]=1;
for(i=1;i<nodecount;i++)
{
if(topo[item][i]==1)
{
if(visited[i]==0)
{
item=i;
visited[i]=1;
push(item);
}
}
}
}
}
示例: 如果我有一个无向图,其中
- 节点1被连接到2,4-
- 节点2被连接到1,4,3
- 节点3是连接到2,5,6
- 节点4连接到1,2,5
- 节点5连接到4,3,6
- 节点6连接到3,5-
有了这个代码,如果项= 2,那么我应该得到
- 2-1-4-5-6-3
- 2- 1
- 2-1-4
- 2-2-1-5-6-3
等。
但我正在逐渐
- 1-4
- 1-4-5
- 1-4
- 1-4-3
你认为什么是错的? – sashas
如果项目是“1”,而不是像说“1 2 4 5”那样获得路径,那么我得到“2 3 2 4”或类似的东西。首先,即使我跟踪访问哪些节点,节点仍在重复。其次,源(项目)不在路径中的节点列表中。 – user24603
'while(top!= 0){...}'你不会改变'top'的值,是吗?但是,您需要提供更多信息。您需要创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – pzaenger