邻接矩阵和邻接表

邻接表和邻接矩阵

                                             ——图的两种存储结构

邻接矩阵

用二维数组表示:

如下图所示,图中有1指向2,1指向3,3指向4,4指向1共四种情况。

故在矩阵中,[1][2],[1][3],[3][4],[4][1]四个位置被标记上了1,而其余为0的地方则表示没有指向关系。


注意点:

1.由这种标记方式可以看出,对于无向图来说,(a,b)和(b,a)属于同一条边,故在矩阵中[a][b],[b][a]都会被标记上,所以无向图的邻接矩阵是关于主对角线的对称矩阵,而有向图的邻接矩阵一般不具有对称性;

2.对于无向图来说,顶点i的度=邻接矩阵第i行的元素的和;

   对于有向图来说,顶点i的入度=第i列元素的和,顶点i的出度=第i行元素的和;

3.用0,1标记大多只针对无权图,如果为有权图的话标记的为权值;

 

缺点:

一般图的边比较少,且邻接矩阵的非零元素比较少,属于稀疏矩阵,所以很大程度上会造成空间的浪费。

 

 

邻接表

它是图的链式存储结构:

1.为每一个顶点建立一个单链表;

2.第i个单链表中包含顶点Vi的所有邻接顶点;

表示法:

1.头结点:

 

Date(数据域:存放顶点Vi的信息)Firstarc(链域:指向单链表的第一个结点)

2.表结点:

Adjvex

(邻接点域:表Vi邻接点的位置)

Nextarc

(链域:指向下一个边或弧的结点)

Info、

(数据域:如权值)

3.每个单链表都设有一个头结点;

4.每个单链表的头结点另外用顺序存储结构存储。

 

 

注意:

1.第i条链表上的节点数为Vi的出度(求出度容易,求入度难,求入度用逆邻接表);

2.邻接表是不唯一的,因为各个边结点的入链的顺序是任意的;

3.邻接表形成之后,形成的图却是唯一的;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值