服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言算法积累图的遍历邻接表简单路径

C语言算法积累图的遍历邻接表简单路径

2022-12-16 14:37aprilzj123 C/C++

这篇文章主要为大家介绍了C语言算法积累图的遍历邻接表简单路径实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目

假设图用邻接表表示,设计一个算法,输出从顶点Vi到Vj的所有简单路径

关键字: 图,邻接表,简单路径

思路:

Vi=u,Vj=v

本题采用基于递归的深度优先遍历算法,从结点u出发,递归深度优先遍历图中各个结点,若访问到结点v,则输出该搜索路径上的结点。

为此,设置:一个path数组来存放路径上的结点(初始为空),d表示路径长度(初始为-1)。

查找从顶点u到v 的简单路径过程说明如下

(假设查找函数名为FindPath()):

1)FindPath(G,u,v,path,d):

d++;path[d]=u;

若找到u的未访问过的相邻结点u1,则继续下去,

否则置visited[u]=0并返回。

2)FindPath(G,u1,v,path,d):

d++;path[d]=u1;

若找到u1的未访问过的相邻结点u2,则继续下去,

否则置visited[u1]=0并返回。

3)以此类推,继续上述递归过程,直到ui=v,输出path

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void FindPath (AGraph *G,int u,int v,int path[],int d){
      int w;//w是每一次遍历中,当前结点的下一个邻接顶点的代表变量
      ArcNode*p;
      d++;//路径长度增加1
      path[d]=u;//将当期顶点添加到路径中
      visited[u]=1;//设置已访问结点
      if(u==v)//找到一条路径则输出
           print(path[]);//输出路径上的结点
      p=G->adjlist[u].firstarc;//p指向u的第一个相邻点
      while(p!=NULL){     //遍历u的所有相邻点
        w=p->adjvex;//w为下一个邻接顶点
        if(visited[w]==0)//若顶点w未访问,递归访问它
           FindPath(G,w,V,path,d);
        p=p->nextarc;//p指向u的下一个相邻点
      }
      visited[u]=0;//恢复环境,使该顶点可重新使用
  }
       

以上就是C语言算法积累图的遍历邻接表简单路径的详细内容,更多关于C语言图遍历邻接表简单路径的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/aprilzj123/article/details/105874675

延伸 · 阅读

精彩推荐
  • C/C++C++11 简单实现线程池的方法

    C++11 简单实现线程池的方法

    这篇文章主要介绍了C++11 简单实现线程池的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    轻风々9272021-09-30
  • C/C++C++事件驱动型银行排队模拟

    C++事件驱动型银行排队模拟

    这篇文章主要为大家详细介绍了C++事件驱动型银行排队模拟,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    xmwd6972021-04-16
  • C/C++C++实现简单计算器功能

    C++实现简单计算器功能

    这篇文章主要为大家详细介绍了C++实现简单计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    我来试试11112021-09-06
  • C/C++vscode刷acm、leetcode的题目

    vscode刷acm、leetcode的题目

    vscode是一款越来越受码农们喜爱的软件,大多数人学习编程绕不开的一部分就是算法,很多人都喜欢刷LeetCode的题目,本文就来介绍一下...

    叶梨子10812021-11-16
  • C/C++基于C++全局变量的声明与定义的详解

    基于C++全局变量的声明与定义的详解

    本篇文章是对C++全局变量的声明与定义进行了详细的分析介绍,需要的朋友参考下...

    C++教程网3952020-12-14
  • C/C++vscode C++开发环境配置步骤详解(教你如何用vscode编写写C++)

    vscode C++开发环境配置步骤详解(教你如何用vscode编写写C++)

    这篇文章主要介绍了vscode C++开发环境配置详细教程(教你如何用vscode编写写C++),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一...

    浅花迷人10872021-08-29
  • C/C++C语言程序设计第五版谭浩强课后答案(第二章答案)

    C语言程序设计第五版谭浩强课后答案(第二章答案)

    这篇文章主要介绍了C语言程序设计第五版谭浩强课后答案(第二章答案),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    月已满西楼11172021-10-29
  • C/C++C语言实现运筹学中的马氏决策算法实例

    C语言实现运筹学中的马氏决策算法实例

    这篇文章主要介绍了C语言实现运筹学中的马氏决策算法,简单介绍了马氏决策的概念,并结合实例形式分析了C语言实现马氏决策算法的具体实现技巧,需要的...

    reghi8342021-06-02