问答题 设计算法以判断给定的无向图G中是否存在一条以网为起点的包含所有顶点的简单路径,若存在,返回TRUE,否则,返回FALSE(注:本算法中可以调用以下几个函数:FIRSTADJ(G,V)——返回图G中顶点V的第一个邻接点的号码,若不存在,则返回0;NEXTADJ(G,W)——返回图G中顶点V的邻接点中处于W之后的邻接点的号码,若不存在,则返回0;NODES(G)——返回图G中的顶点数)。【合肥工业大学1999五、5(8分)】
【正确答案】正确答案:使用深度优先遍历。设图的顶点信息就是顶点编号,用nuin记录访问顶点个数,当num等于图的顶点个数(题中的NODES(G)),输出所访问的顶点序列,顶点序列存在path中,path和visited数组,顶点计数器num,均是全局变量,都已初始化。语句片段如下: visited[v0]=1;path[++num]=v0; if(num==nodes(G) //有一条简单路径,输出之 {for(i=i;i<=num;i++)cout<adjvex]==0)SPathdfs(p一>adjvex); //深度优先遍历 p=p一>next; //下一个邻接点 }//while visited[v0]_0 ; num一一; //取消访问标记,使该顶点可重新使用
【答案解析】