十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
题目
假设图 G 采用邻接表存储,设计一个算法,输出图 G 中从顶点 u 到v 的
所有简单路径。
分析
采用深度优先遍历的方法,在 DFS 算法的基础上改为 G、u、v、path 和d 共5 个形参, 其中 path 数组存放路径(初始为空),d 表示路径长度(初始为-1),查找从顶点 u 到v 的所有简单路径过程如图所示。
代码
void FindPath(AGraph *G,int u,int v,int path[],int d)
//d 是到当前为止已走过的路径长度,调用时初值为-1
{int w,i;
ArcNode *p;
d++; //路径长度增 1
path[d] =u; //将当前顶点添加到路径中
visited[u] =1; //置已访问标记
if (u == v) //找到一条路径则输出
printf("%2d" , path[i]); //输出路径
p=G->adjlist[u].firstarc; //p 指向 v 的第一个相邻点
while (p!=NULL)
{w=p->adjvex; //w 为顶点 u 的相邻顶点
if(visited[w]==0) //若 w 顶点未访问,递归访问它
FindPath(G, w,v , path, d);
p=p->nextarc; //p 指向 v 的下一个相邻点
}
visited[u]=0; /恢复环境,使该顶点可重新使用
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧