常见的存图的方法有 邻接矩阵
但是如果数据过大的话二维数组开不下,这就需要换一种存图的方法,这里介绍链式前向星
链式前向星的结构由两部分组成
第一部分 是一个结构体
typedef struct
{
int the_end;//边的结尾(默认为0,若边从0开始则需要初始化为-1)
int w;//边的权值
int next;//下一条边在edge数组中的下标
}EDGE;
EDGE edge[500005];
edge[i]表示输入的第i条边
第二部分是一个head数组,head[i]表示以i为起点的第一条边在edge数组中的位置,即edge数组的下标
当以i为起点的边增加一条时,假设这条边在edge数组中的位置为edge[j],那么edge[j].next=head[i],然后head[i]=j;
即将以i为起点的第二条边放在第一条边前面,然后让head[i]等于第二条边的位置,也就是说head[i]表示以i为起点的最后输入的那条边在edge中的位置。