关于图的存储方法 (静态邻接表、前向星、边集数组)

本文详细介绍了图的三种存储方法:邻接矩阵、邻接表(动态链表和静态链表)以及边集数组。静态链表通过数组模拟链表结构,而前向星通过排序优化减少了额外的next数组。最后提到了这些存储方法在Dijkstra算法和SPFA算法中的应用。
摘要由CSDN通过智能技术生成

一、邻接矩阵(不多说了)  G[u][v]

二、邻接表

                  1、动态链表(指针)      一个数组表头(u)+ struct结点(v),相链,若有权值等信息再在结点里加相应域。

                  2、静态链表(数组)      first数组(模拟表头、u)+ 边集数组(编号e,u、v)+ next数组(模拟指针相指)。这个跟1看似有点区别(前者链的是点,后者链的是边),其实是没区别,因为要用数组实现链表,所以对1中所有结点实行e编号,意义就是“边”。

通常实现方法: 开五个数组 first[MAXN]; u[MAXM], v[MAXM], w[MAXM], next[MAXM]。

三、边集数组

就是把所有边放在一个数组里,这样就可以完成遍历所有边的操作了(很土吧= =)。通常要根据实际需要做一些辅助储存。

1、上面的数组实现邻接表就是边集数组再加上first数组和next数组。

2、前向星。跟1很相似的,区别是他对边集数组按u点(前一个端点)升序排序,使得由同一个点出发的边都集中在一起了。再加上辅助数组 f[MAXN](跟前面first数组类似的作用),存 结点i 出发的第一个边

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值