一、问题描述
求有向图的简单路径 编写一个程序,设计相关算法完成以下功能。
(1)输出如图所示的有向图 G 从顶点 5 到顶点 2 的所有简单路径。
(2)输出如图所示的有向图 G 从顶点 5 到顶点 2 的所有长度为 3 的简单路径。
(3)输出如图所示的有向图 G 从顶点 5 到顶点 2 的所有最短路径。
二、问题解决
#include <stdio.h>
#include <malloc.h> #define INF 32967 //定义∞
#define MAXV 100 //最大顶点个数 typedef char InfoType;
typedef struct
{ int no; //顶点编号 InfoType info; //顶点信息
}VertexType; //顶点类型 typedef struct ArcNode
{ int adjvex; //该边的邻接点编号 struct ArcNode *nextarc; //指向下一条边的指针 int weight; //该边的相关信息,如权值(用整型
表示)
}ArcNode; //边结点类型 typedef struct VNode
{ InfoType info; //顶点其他信息 int cnt; //存放顶点入度,仅用于拓扑排序 ArcNode *firstarc; //指向第一条边
}VNode; //邻接表结点类型 typedef struct
{ VNode adjlist[MAXV]; //邻接表头结点数组 int n; //图中顶点数 int e; //图中边数
}AdjGra