链式前向星介绍
什么是链式前向星?
链式前向星是一种常用的图存储结构,其思路类似于邻接链表法,只是实现方式有所不同,链式向前星更像是用数组模拟链表。
与一般的邻接链表法不同,链式向前星储存的图的每条边都有编号。
以下是链式前向星的存储结构:
cnt
:用来记录当前所有边的数量first
数组:用来存储从某个节点出发的第一条边,例如first[0] == 3
可以得出从0
号节点出发的第一条边的编号为3
edges
数组:用来记录每条边的信息,对于每个edges[i]
都有 3 个域:to
:记录边的终点weight
:记录边的权重next
:记录从当前起点出发下一条边的编号,例如:若edges[i]
的起点为j
号节点,则edges[i].next
表示从j
出发的下一条边
示例:
如上图,这就是链式向前星存储图的方式了,其中编号为 -1 的边表示不存在,即没有其他的出边。
若我们需要新增一条从
i
到j
的边,只需更新在edges
数组内增加元素并且使其新增边的next
等于first[i]
,然后更新first[i]
为新增的边的编号即可。
代码
1 |
|
链式前向星介绍
https://goer17.github.io/2023/03/06/链式前向星介绍/