问答题
采用链接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径算法。【中国海洋大学2005九(18分)】
【正确答案】正确答案:这里给出与36题不同的另一种求解方法。判断顶点i和j间是否有长度为k的简单路径,采用深度优先遍历,找到f的第一个邻接点adj,再从adj出发递归地求是否存在adj到j的长度为k-1的简单路径。核心语句段如下: if(i==j&&k==0)return 1; //找到了一条路径,且长度符合要求 else if(k>0) {visited[i]=1; for(p=g[i].firstarc;p;p=p->next) {adj=p->adjvex; if(!visited[adj]) if(path_k(G,adj,j,k-i))return1; //剩余路径长度减一 } Visited[i]=0; //访问过的结点可以出现在另一条路径中 } return 0 ; //顶点i和j间没有长度为k的简单路径
【答案解析】