图的存储结构

1、邻接矩阵(稠密图
#define maxvertexnum 100;
typedef struct{
 char ver[maxvertexnum];//顶点表
 int edge[maxvertexnum][maxvertexnum];//边表
 int arcnum,vernum;//图当前的边数和顶点数
}Mgraph;
2、邻接表(稀疏图)(顺序存储加链式存储)
//顶点
typedef struct Vnode{
 Vnode *firstarc;//指向第一个顶点的位置
 VertexType data;//当前顶点的数据值
}AdjList[maxvertexnum];
//弧
typedef struct Arcnode{
 Vnode *nextarc;//指向下一个由当前顶点指向的节结点
 InfoType weigh;//边的权值
 int adjvex;//该结点在数组中位置
};
//邻接表
typedef struct{
 AdjList adj;//顶点表
 int arcnum,vertexnum;//边数和顶点数
 Graphkind kind;//图的种类
}AlGraph;
3、十字链表(有向图)
#defind max//最多的顶点数
typedef enum{dg,udg,dn,udn}Graphkind ;//图的种类
/*dg-有向图;udg-无向图;dn-有向网;udn-无向网*/
//顶点结构
typedef struct Vnode{
 vertextype data;//顶点的数据域
 Vnode *firstin;//指向当前结点的第一个结点的位置
 Vnode *firstout;//由当前结点支出的第一个结点的位置
}Vnode;
//边表结构
typedef struc Arcnode{
 int headvex,tailvex;//弧线的弧头和弧尾顶点在顶点数组中的下标位置
 Vnode *hlink,*tlink;//分别指向下一个同一个弧头或弧尾顶点的弧结点
 int info;//权值
}
//十字链表结构
typedef struct{
 Vnode[max];//顶点表
 int vertexnum,arcnum;//顶点个数和弧的个数
}OrthList;
4、邻接多重表(无向图的链式存储)
#define max;//顶点数的最大值
typedef struct{
 VertexType data;//数据
 Vnode *first;//该顶点依附的第一条边
}Vnode;
typedef struct{
 int ivex,jvex;//该边的两边的顶点位置
 Vnode *ilink,*jlink;//分别指向下一个依附于同一个顶点的边结点
}endgenode;
typedef struct{
 Vnode vertex[num];//顶点表
 int vexnum,edgenum;//顶点和边的个数
}AdjMultiList;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值