常用数据结构之图的两种存储方式

图由结点的有穷结合V和边的集合E组成。为了与树形结构进行区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对。若两个顶点之间存在一条边,则表示这两个顶点具有相邻的关系。

图通常有两种存储方式,即邻接矩阵和邻接表。

下面介绍一下邻接矩阵。设G=(V,E)是具有n个结点的图,顶点序号依次为0,1,2,3、、、n-1。G的邻接矩阵是具有如下定义的方阵A:

A[i][j]=1表示顶点i与顶点j邻接,即i与j之间有一条边或者弧。

A[i][j]=0表示顶点i与顶点j不邻接

邻接矩阵是图的顺序存储结构。

邻接矩阵的结构型定义如下:

struct VerType{
	
	int no;//顶点的编号 
	char info;//顶点的其他信息 
	
};
struct MGraph{
	
	int n,e;//结点数目与边数
	int edges[maxn][maxn];//邻接矩阵的定义 
	int VerType[maxn]; //存放结点的信息
	
};

关于邻接表的形式: 

struct ArcNode{
	int adjvex;//这条边所指向的结点信息
	struct ArcNode *nextarc;//该顶点指向下一条边的指针
	int info;//这条边的相关信息如权值 
}; 
struct VNode {
	char data;//顶点信息 
	ArcNode *firstarc;//指向第一条边的指针 
};
struct Agraph{
	
	VNode adjlist[maxn];//邻接表 
	int n,e;//顶点数目和边数 
};

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值