1.图的邻接矩阵存储结构
#define MaxVertexNum 100 //顶点最大数目
typedef char VertexType //顶点的数据类型
typedef int EdgeType //带权图中边上权值的数据类型
typedef struct{
VertexType Vex[MaxVertexNum]; //顶点表
EdgeType Edge[MaxVertexNum][MaxVertexNum]; //边表
int vexnum,arcnum; //当前顶点和弧数
}
2.图的邻接表存储结构
#define MaxVertexNum 100 //顶点最大数目
typedef char VertexType //顶点的数据类型
typedef int EdgeType //带权图中边上权值的数据类型
typedef struct ArcNode{
int adjvex;//弧所指向的顶点的位置
struct ArcNode *next;
}ArcNode;
typedef struct VNode{
VertexType data;//顶点信息
ArcNode *first;//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MaxVertexNum];
typedef struct{
AdjList vertices;//邻接表
int vexnum,arcnum;//图的顶点数和弧数
}ALGraph;//以邻接表存储的图的类型
3.十字链表
#define MaxVertexNum 100
typedef struct ArcNode{
int tailvex,headvex;//弧的头尾结点
struct ArcNode *hlink,*tlink;//指向弧头相同和弧尾相同的结点
//InfoType info;
}ArcNode;
typedef struct VNode{ //顶点表结点
VertexType data;//顶点信息
ArcNode *firstin,*firstout;//指向第一条入弧和出弧
}VNode;
typedef struct {
VNode xlist[MaxVertexNum];//邻接表
int vernum,arcnum;//图的顶点数和弧数
}GLGraph;//
4.邻接多重表
#define MaxVertexNum 100
typedef struct ArcNode{
bool mark;//访问标记
int ivex,jvex;//分别指向该弧的两个结点
struct ArcNode *ilink,*jlink;//分别指向两个顶点的下一条边
//InfoType info;//相关信息指针
}ArcNode;
typedef struct VNode{ //顶点表结点
VertexType data;//顶点信息
ArcNode *firstEdge;//指向第一条入依附该顶点的边
}VNode;
typedef struct {
VNode adjmulist[MaxVertexNum];//邻接表
int vernum,arcnum;//图的顶点数和弧数
}AMLGraph;//