已有邻接表表示的有向图,请编程判断从第u顶点至第v顶点是否有简单路径,若有则打印出该路径上的顶点。

admin2019-08-01  51

问题 已有邻接表表示的有向图,请编程判断从第u顶点至第v顶点是否有简单路径,若有则打印出该路径上的顶点。

选项

答案void Allpath(AdjList g,vertype u,vertype v){ //求有向图g中顶点u到顶点v的所有简单路径,初始调用形式 int top=0,s[]; s[++top]=u;visited[u]=1; while(top>0||p){ p=g[s[top]].firstarc; //第一个邻接点 while(p!=null&&visited[p一>adjvex]==1)P=p一>next; //下一个访问邻接点表 if(p==null)top--; //退栈 else{ i=p一>adjvex; //取邻接点(编号) if(i==v){ //找到从u到v的一条简单路径,输出 for(k=1;k<=top;k++)printf(“%3d”,S[k]); printf(“%3d\n”,v): }//if else{visited[i]=1;s[++top]=i;} //else深度优先遍历 }//else }//while }

解析
转载请注明原文地址:https://jikaoti.com/ti/wAGjFFFM
0

最新回复(0)