输出图中两点间的全部路径(可直接测试)

  • 需要提前了解图以及图的存储和遍历的相关知识、回溯递归等要点,以下是具体代码实现
//输出图中一个点到另一个点的所有的路径
#include <iostream>
#include <stdio.h>
#include <stack>
#define null NULL
#define max_n 101using namespace std;
//邻接表
typedef int vexType;
int visited[max_n];typedef struct arcnode{vexType vexid;struct arcnode *nextarc;
}ArcNode,Vnode,vexList[max_n];typedef struct {int vexnum,edgenum;vexList vexs;
}ALGraph;
//初始化操作
void clear_visited(){fill(visited,visited+max_n,false);
}void init_g(ALGraph &g){for(int i=0;i<=g.vexnum;i++){g.vexs[i].vexid=i;g.vexs[i].nextarc=null;}}
//展示图
void show_g(ALGraph g){for(int i=1;i<=g.vexnum;i++){cout<<g.vexs[i].vexid<<"->";ArcNode *p=g.vexs[i].nextarc;while(p){cout<<p->vexid<<"-";p=p->nextarc;}cout<<"^"<<endl;}
}
//存储图的搜索路径
int my_index=0;
int my_path[max_n];
//获得一个点到另一个点的全部的路径
void GetAllPath(ALGraph g,int i,int j);
/*4 4 1 41 21 32 43 4*/
/*4 5 1 41 21 32 32 43 4*/
int main() {//构造无向邻接表ALGraph graph;int m,n,u,v,ii,jj;cin>>n>>m>>ii>>jj;graph.vexnum=n;graph.edgenum=m;init_g(graph);for(int i=0;i<m;i++){cin>>u>>v;ArcNode *p=(ArcNode *)malloc(sizeof(ArcNode));ArcNode *q=(ArcNode *)malloc(sizeof(ArcNode));p->vexid=u; p->nextarc=null;q->vexid=v; q->nextarc=null;p->nextarc=graph.vexs[v].nextarc;graph.vexs[v].nextarc=p;q->nextarc=graph.vexs[u].nextarc;graph.vexs[u].nextarc=q;}//展示图show_g(graph);//输出结点i到j的所有路径(i!=j)GetAllPath(graph,ii,jj);return 0;
}
//核心代码
void GetAllPath(ALGraph g,int i,int j){if(i==j){for(int k=0;k<my_index;k++){printf("%d ",my_path[k]);}printf("\n");my_index--;visited[i]=false;return;}if(!visited[i]){visited[i]=true;my_path[my_index++]=i;}ArcNode *p=g.vexs[i].nextarc;while(p){if(!visited[p->vexid]){visited[p->vexid]=true;my_path[my_index++]=p->vexid;GetAllPath(g,p->vexid,j);}p=p->nextarc;}my_index--;visited[i]=false;
}

输出图中两点间的全部路径相关推荐

  1. python两点之间最短距离_最短路径(图中两点间最短路径)

    packagecom.cn.datastruct;importjava.util.Scanner;//最短路径求解 public classDistMin {static classGraphMatr ...

  2. 求图中两点间的所有的最短路径

    一.理论篇 \quad 如下图所示,是一个有7个顶点的图,每条边权值均为1,试问从点0点6,有多少条最短路径呢,分别是什么? \quad 我们可以直观的看出来,一共有4条最短路径,分别是 0-> ...

  3. matlab两点之间的所有路径,引用 在图中搜索两点间的所有路径matlab编程

    引用 在图中搜索两点间的所有路径matlab编程 2018-09-18 function possiablePaths = findPath(Graph, partialPath, destinati ...

  4. 用两种遍历方法判断图中两点是否有路径

    用两种遍历方法判断图中两点是否有路径(可直接测试) 邻接表.图.图的两种遍历以及图中路径的基本概念,可以去自行了解和学习(下面是代码实践)可直接在自己主机测试 #include <iostrea ...

  5. 数据结构 || 图深度优先搜索遍历以及求两点间的简单路径

    本文图的存储结构是基于无向图的邻接多重表实现的 图的深度优先搜索的递归遍历 void DFS(AMLGraph G, int i) {cout << G.adjmulist[i].data ...

  6. 图中长度为k的路径的计数

    Problem Description 题目给出一个有n个节点的有向图,求该有向图中长度为k的路径条数.方便起见,节点编号为1,2,-,n,用邻接矩阵表示该有向图.该有向图的节点数不少于2并且不超过5 ...

  7. 图 矩阵 两点间有m的路径 矩阵乘法_代数图论I: 基本理论和无向图的同调

    本文内容: 1 图的基本概念 2 无向图的同调理论 1 图的基本概念 首先我们来复习一下图的定义: [图] 图是一个对 , 这里 是一个集合,集合的元素叫做 顶点(vertices), 而 的元素是二 ...

  8. 学校的校园景点平面图(校园景点迷你地图C++数据结构)(查询图中顶点间的最短路径查询图中任意两个顶点间的所有路径)

    学校的校园景点平面图(校园景点迷你地图C++&数据结构) 设计要求: (1)建图 以图中顶点表示主要景点,并存放景点的编号.名称.简介等信息: (2)查询 该系统可以查询景点的信息: 查询图中 ...

  9. java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...

    参考博客: https://blog.csdn.net/jinzk123/article/details/52231527 https://blog.csdn.net/qq_40998706/arti ...

最新文章

  1. oracle监听器动态注册于静态注册的区别
  2. 【题解】Luogu P2730 魔板
  3. Filter过滤不了Action的问题
  4. python - 定时拍照并发送到qq
  5. RabbitMQ消息追踪之Firehose
  6. oracle sqlldr详解,sqlldr详解
  7. Hibernate之事务处理
  8. mysql事务隔离级别及传播机制
  9. L1-005. 考试座位号-PAT团体程序设计天梯赛GPLT
  10. quartus仿真20:模8的二进制计数器
  11. vscode 连接服务器jupyter_VScode中使用jupyter notebook
  12. php 删除服务器指定目录图片
  13. 文本分类(三) | (6) 番外篇(预训练语言模型的另一种使用方式)
  14. 世界品牌新500强揭晓 中国移动央视海尔入前百名
  15. 【Oracle】建立关联三个表的视图
  16. 蛮力算法解决问题(c语言)
  17. Spring:配置Spring
  18. 新唐单片机如何生成精确延迟
  19. 大学四年,我因为使用这几个学习方法,成为了同学眼中的“大神”、BUG克星!
  20. 0x800703e3复制文件错误

热门文章

  1. 迷你php搭建,laravel 30分站搭建迷你博客
  2. 前端像素单位都有哪些?px、rpx、em、rem......?
  3. Fedora 25 NTP服务器配置
  4. I2S接口硬件定义及电气连接方式
  5. c语言中的实型变量语法,在C语言中的实型变量分为两种类型
  6. 100天,离开学校的日子......
  7. python .db 查看表信息_python查询excel数据库表
  8. 进入信息与计算科学这个专业后我的感受
  9. Python基础必掌握的正则表达式功能标志用法详解
  10. 放一些收集的前端知识点上来,方便查阅