概述
链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。
步骤
1、建图
void addEdge(int start ,int end ,int distance)
{
edge[cnt].to=end;
edge[cnt].dis=distance;
edge[cnt].next=head[start];
head[start]=cnt++;
}
2、遍历
for(int i=0;i<n;i++){
for(int j=head[i];j!=-1;j=edge[j].next){
printf("%d ->%d %d\n",j,edge[j].next,edge[j].dis);
}
}
举例
如图
我们输入边的顺序为:
1 2
2 3
3 4
1 3
4 1
1 5
4 5
那么排完序后就得到:
编号: 1 2 3 4 5 6 7
起点u: 1 1 1 2 3 4 4
终点v: 2 3 5 3 4 1 5
head[1] = 1 edge[1] = 3
head[2] = 4 edge[2] = 1
head[3] = 5 edge[3] = 1
head[4] = 6 edge[4] = 2
这样在遍历时是倒着遍历的,也就是说与输入顺序是相反的,不过这样不影响结果的正确性