上图是具体的结构 ,要明确vertices是顶点数组,firstarc是第一个指向顶点的指针,nextarc是指向下一个顶点的指针,adjvex是相邻顶点的值,也就是在vertices的索引位置.
int visited[MAXSIZE];
int exist_path_len(ALGraph G,int i,int j,int k)
{
if(i==j&&k==0) return 1;
else if(k>0)
{
visited[i]=1;
for(p=G.vertices[i].firstarc;p!=NULL;p=p->nextarc)
{
m=p->adjvex;
if(!visited[m])
if(exist_path_len(G,m,j,k-1)) return 1;
}
visited[i]=0;
}
return 0;
}
假如寻找无向图中1-4 ,k为3的路径
第一次路径为 1-3-4 ,查找失败,此时visited[3]已经被置为1,若不把visited[3]恢复为0,在递归到1-2-3-4这条路径时,会认为visited[3]已经访问过,从而寻找失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)