9.2图的存储结构 9.2.1 邻接矩阵存储方法

9.2.1 邻接矩阵存储方法

邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n(n>0)个顶点的图,顶点的顺序依次为(vo,v1,...,vn-1),则G的邻接矩阵A是n阶方阵,其定义如下:

(1)如果G是无向图,则:

(2)如果G是有向图,则:


(3)如果G是带权无向图,则:


或表示为:


(4)如果G是带权有向图,则:


或表示为:


邻接矩阵的特点如下:

  • 图的邻接矩阵表示是唯一的
  • 无向图的邻接矩阵一定是一个对称矩阵。因此,按照压缩存储的思想,在具体存放邻接矩阵时只需存放上(或下)三角形阵的元素即可。
  • 不带权的有向图的邻接矩阵一般来说是一个稀疏矩阵,因此,当图的顶点较多时,可以采用三元组表的方法存储邻接矩阵。
  • 对于无向图,邻接矩阵的第i行(或第i列)非零元素(或非元素)的个数正好是第i个顶点vi的度。
  • 对于有向图,邻接矩阵的第i行(或第i列)非零元素(或非)元素的个数正好是第i个顶点vi的出度(或入度)。
  • 用邻接矩阵方法存储图,很容易确定图中任意两个顶点之间是否有边相连。但是,要确定图中有多少条边,则必须按行、按列对每个元素进行检测,所花费的时间代价很大。这是用邻接矩阵存储图的局限性。

邻接矩阵的数据类型定义如下:

#define MAXV <最大顶点个数>         /*在后面的类型定义中都使用到本宏定义*/
#define InfoType int
typedef struct
{
	int no;                   /*顶点编号*/
	InfoType info;            /*顶点其他信息*/
}VertexType;                  /*顶点类型*/
typedef struct                /*图的定义*/
{
	int edges[MAXV][MAXV];    /*邻接矩阵*/
	int n,e;                  /*顶点数,弧数*/
	VertexType vexs[MAXV];    /*存放顶点信息*/
}MGraph;

int returnInt(int i){
	return i;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值