C语言:图算法
图算法
·
① 图的两种存储结构。图算法都是基于某种存储结构的,如果连存储结构都含糊不清楚,肯定
是设计不出来正确的算法,更谈不上设计好的图算法。因此务必去熟悉图的邻接矩阵和邻接
表的存储结构
② 图的两种遍历算法。很多图的算法基本都是基于图的遍历算法(正如二叉树的算法是基于
二叉树的基本遍历算法一样)。一般涉及不带权图的最短或最长路径时可以考虑采用广度
优先遍历算法;而涉及到查找所有简单路径时可考虑采用深度优先遍历算法。
图的邻接矩阵存储结构定义如下:
#define MaxVertexNum 100 //顶点数目的最大值
typedef char VertexType; //顶点的数据类型
typedef int EdgeType; //带权图中边上权值的数据类型
typedef struct
{
VertexType Ver[MaxVertexNum]; //顶点表
EdgeType Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵、边表
int vexnum, arcnum;
}MGraph;
图的邻接表存储结构定义如下:
#define MaxVertexNum 100 //顶点数目的最大值
typedef struct ArcNode //边表结点
{
int adjvex; //该弧所指向的顶点的位置
struct ArcNode *next; //指向下一条弧的指针
//InfoType info; //网的边权值
}ArcNode;
typedef struct VNode //定点表结点
{
VertexType data; //顶点信息
ArcNode *first; //指向第一条依附该顶点的弧的指针
}VNode,AdjList[MaxVertexNum];
typedef struct
{
AdjList vertices; //邻接表
int vexnum,arcnum; //图的顶点数和弧数
}ALGraph; //ALGraph 是以邻接表存储的图类型
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)