链式前向星是一种非常优秀地存储图的方式,在存储过程中,我们采用链式方式存储每个点连接的边,相比于邻接表存储,优势在于可以更好地分配内存,不用受到python等语言中开数组动态的特点导致的数组空间浪费
通常不需要使用链式前向星
看网上都是通过c++来实现链式前向星的,遂使用python给后来者一些参考(狗头保命)
对链式前向星的原理做一些解释,如图,如果我们的数据如下
4
1 2 20
1 3 50
2 4 80
3 1 90
其中1 2 20 表示从点1到点2有一条边权为20的边
如果是采用邻接表方式,我们是将[2,20]加入字典或者列表的方式,而采用链式前向星的方式,我们是对每一条边编号,这个编号来自于边输进来的顺序,每个前向星中有三个属性,e1表示对于编号为cnt的边,边的终点是什么,w1自然表示边权
重点在于h1这一个属性,他指的是与u相连的上一条边的编号,通过从头遍历到尾的方式,我们就可以知道所有与u这个节点连接的边

下面是代码
#********************************************
# * Author: liuaaa
# ********************************************
#n表示顶点个数,m表示边个数
n = 10000
m = int(1e4)+10

文章介绍了链式前向星作为一种优化内存的图存储方法,对比了它与邻接表的区别,并提供了Python实现的代码示例,用于添加边和遍历节点的连接边情况。
最低0.47元/天 解锁文章
253





