一、邻接矩阵
//邻接矩阵结构体定义
typedef struct
{
int no; //顶点编号
char info; //顶点其他信息,题目中无要求可不写
}VertexType; //顶点类型
typedef struct
{
int edge[maxSize][maxSize]; //邻接矩阵定义,如果是有权图,int改为float
int n,e; //分别为顶点数和边数
VertexType vex[maxSize]; //存放结点信息
}MGraph; //图的邻接矩阵类型
二、邻接表
//邻接表存储的定义表示
typedef struct ArcNode
{
int adjvex; //该边所指向的结点的位置
ArcNode *nextarc; //指向下一条边的指针
int info; //该边的相关信息(如权值),这一句用的不多,可不写
}ArcNode;
typedef struct
{
char data; //顶点信息
ArcNode *firstarc; //指向第一条边的指针
}VNode;
typedef struct
{
VNode adjlist[maxSize]; //邻接表
int n,e; //顶点数和边数
}AGraph; //图的邻接表类型
三、邻接多重表
#define MAX_VERTEX_NUM 20 //图中顶点的最大个数 #define InfoType int //边含有的信息域的数据类型 #define VertexType int //图顶点的数据类型 typedef enum {unvisited,visited}VisitIf; //边标志域 typedef struct EBox{ VisitIf mark; //标志域 int ivex,jvex; //边两边顶点在数组中的位置下标 struct EBox * ilink,*jlink; //分别指向与ivex、jvex相关的下一个边 InfoType *info; //边包含的其它的信息域的指针 }EBox; typedef struct VexBox{ VertexType data; //顶点数据域 EBox * firstedge; //顶点相关的第一条边的指针域 }VexBox; typedef struct { VexBox adjmulist[MAX_VERTEX_NUM];//存储图中顶点的数组 int vexnum,degenum;//记录途中顶点个数和边个数的变量 }AMLGraph;