图的链式存储结构解析(邻接表、逆邻接表、十字链表、邻接多重表)

本文详细介绍了图的四种链式存储结构:邻接表、逆邻接表、十字链表和邻接多重表。邻接表通过数组存储顶点,并为每个顶点建立单链表,存储与其相连的边。逆邻接表则用于存储顶点的入度。十字链表结合了邻接表和逆邻接表的优点,便于快速查找入度和出度。邻接多重表主要用于存储无向图,每个节点代表与两个顶点相关的边。这些结构在存储空间和效率上有各自的优势,适用于不同场景。

图的矩阵表示法比较消耗空间,需要花费$ n 2 n^2 n2$个单元存储边(弧)。在边数较少的情况下比较浪费。我们这里来讨论图的链式存储结构。

图的链式结构主要有四类:邻接表、逆邻接表、十字链表、邻接多重表。

前两个算比较好理解的,后两个更复杂一点。

邻接表


实际上邻接表都是使用数组来存储顶点,然后对每一个顶点建立一个单链表,第i个但链表中的节点表示依附于顶点vi的边(对有向图是以vi为尾的弧)。以下分类只是一些很细微的区别。

无向图的邻接表

对无向图来说第i个单链表中的结点表示依附于顶点vi的边。

在G的邻接表中,同一条边对应两个结点。
无向图G的邻接表,顶点vi的度为第i个单链表的长度。
若无向图G有n个顶点和e条边,需n个表头结点和2e个表结点

无向图邻接表

有向图的邻接表

第i个单链表中的表结点,表示以顶点vi为尾的弧(vi,vj)的弧头

若有向图G有n个顶点和e条弧,则需n个表头结点和e个表结点。
有向图G的邻接表,顶点vi的出度为第i个单链表的长度。
求顶点vi的入度需遍历全部单链表,统计结点值为i的结点数。

有向图的邻接表

逆邻接表

逆邻接表也很好理解,只是将出度改为入度了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5IkD5A5T-1625671611460)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210705235744239.png)]

十字链表


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值