数据结构——图 寻找一条路径

本文探讨如何利用深度优先搜索(DFS)算法在图数据结构中实现寻找路径的功能。通过递归方式,DFS能够有效地遍历图的边集,找到路径。
摘要由CSDN通过智能技术生成

用DFS来实现 findPath 的功能。

因为在深度优先搜索中,路径的边集已隐含在递归过程中,因此利用DFS设计是比较容易的。

bool Network::FindPath(int v, int w, int &length, int path[])
{//Find a path from v to w, return length and path in  path[0:length]. Return false if there is no path.
  //first vertex in path is always v
  path[0] = v;
  length = 0; //current path length
  if (v == w) return true;
  //initialize for recursive path finder
  int n = Vertices();
  InitializePos(); //iterator
  int *reach = new int [n+1];
  for (int i = 1; i<= n; i++)
   reach[i] = 0;
 
  //search for path
  bool x = findPath(v, w, length, path, reach);
  
  DeactivatePos();
  delete [] reach;
  return x;
}

bool Network::findPath(int v, int w, int &length, int path[], int reach[])
{// Actual path finder v != w.
 // Performs a depth-first search for a path to w.
  reach[v] = 1;
  int u = Begin(v);
  while (u) {
   i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值