图的存储表示:1.邻接矩阵,2.邻接表,3.有向图的十字链表,4.无向图的邻接多重表
1.邻接矩阵
#define FINITY 5000
#define m 20
typedef char vertextype;
typedef int edgetype;
typedef struct{
vertextype vexs[m];
edgetype edges[m][m];
int n,e;
}mgraph;
2.邻接表
#define m 20
typedef char datatype;
typedef struct node{
int adjvex;
struct node *next;
}edgenode;
typedef struct vnode{
datatype vertex;
edgenode *firstedge;
}vertexnode;
typedef struct{
vertexnode adjlist[m];
int n,e;
}adjgraph;
3.无向图的邻接多重表
#define m 20
typedef char vertextype;
struct edge{
BOOL mark;
int vertexi;
int vertexj;
struct edge *linki;
struct edge *linkj;
};
typedef struct vnode{
vertextype vertex;
struct edge *firstedge;
}*graph;
struct node head[m];
4.有向图的十字链表
#define m 20
typedef char vertextype;
typedef struct ArcBox{
int tailvex,headvex;
struct ArcBox *tlink,*hlink;
}ArcBox;
typedef struct VexNode{
vertextype data;
ArcBox *firstin,*firstout;
}VexNode;
typedef struct{
vexnode xlist[m];
int vexnum,arcnum;
}Graph;
本文介绍了图数据结构的四种主要存储方式:邻接矩阵、邻接表、无向图的邻接多重表及有向图的十字链表。通过具体的数据结构定义展示了每种存储方式的特点与应用场景。
2万+

被折叠的 条评论
为什么被折叠?



