图的存储

图的存储

邻接矩阵法

1
2
3
4
5
6
7
8
#define MaxVertexNum 100									//顶点数目的最大值
typedef char VertexType; //顶点的数据类型
typedef int EdgeType; //带权图中边上权值的数据类型
typedef struct{
VertexType Vex[MaxVertexNum]; //顶点表
EdgeType Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵,边表
int vexnum,arcnum; //图中当前顶点数和弧数
}MGraph;

邻接表法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define MaxVertexNum 100									//图中顶点数目的最大值
typedef struct ArcNode{ //边表结点
int adjvex; //该弧所指向的顶点的位置
struct ArcNode *next; //指向下一条弧的指针
//InfoType infp; //网的边权值
}ArcNode;
typedef struct VNode{ //顶点表结点
VertexType data; //顶点信息
ArcNode *first; //指向第一条依附该顶点的弧的指针
}VNode,AdjList[MaxVertexNum];
typedef struct{
AdjList vertices; //邻接表
int vexnum,arcnum; //图的顶点数和弧数
}ALGraph; //ALGraph是以邻接表存储的图的类型

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!