//邻接表是图的一种链式存储方式.
采用邻接表表示图一般需要两个表结构:
边表和表头结点
在邻接表中,图的每一个顶点都建立一个单链表,
弧结点由3个域组成,分别为邻接点域, 数据域和指针域
邻接点域:与相应的表头顶点相邻顶点的位置
数据域:存储与边或弧的信息
指针域:指示与表头相邻接的下一个顶点
表头结点:数据域和指针域
图的邻接表存储结构描述如下:
#define MaxSize 50 //顶点个数的最大值
typedef enum{DG,DN,UG,UN}GraphKind; //图的类型:有向图 , 有向网, 无向图和无向网
typedef struct ArcNode //边结点的类型定义
{
int adjvex; //弧指向的顶点的位置
InfoPtr *info; //与弧相关的信息
struct ArcNode *nextarc; //指向下一个与该结点相邻接的顶点
}ArcNode;
typedef struct VNode //头结点的类型定义
{
VertexType data; //用于存储顶点
ArcNode *firstarc; //指向第一个与该顶点邻接的顶点
}VNode, AdjList[MaxSize];
typedef struct //图的类型定义
{
AdjList vertex;// 表头结点数组
int vexnum, arcnum;//图的顶点数目与弧的数目
}AdjGraph;
数据结构之邻接表
最新推荐文章于 2025-04-28 17:16:43 发布