链式前向星
参考自:https://blog.csdn.net/acdreamers/article/details/16902023
前向星:
前向星是一种数据结构,以储存边的方式来存储图。通常用在点的数目太多,或两点之间有多条弧的时候。除了不能直接用起点终点定位以外,前向星几乎是完美的。
再来看看前向星的构造方法:把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的所有边在数组中的起始位置和存储长度。
链式前向星:
1 void add(int u,int v,int w) 2 { 3 edge[cnt].w = w; 4 edge[cnt].to = v; 5 edge[cnt].next = head[u]; 6 head[u] = cnt++; 7 }
相关解释:
u:边的起点
v:边的终点
edge[i].to表示第i条边的终点,edge[i].next表示与第i条边同起点的下一条边的存储位置,edge[i].w为边权值。
head[]是用来表示以i为起点的第一条边存储的位置(注意这里的第一条边并不是字面上的第一条,其实是在以i为起点的所有边的最后输入的那个编号。emmmm,不知道怎么用语言描述,就相当于按某种顺序的第一条开始边吧( ̄▽ ̄)