制作这种算法讲解的文章真的不容易 就点个免费的赞吧
说到图的存储方式,共有三种:邻接矩阵、邻接表还有今天的主角链式前向星
邻接矩阵和邻接表大家可以上网查一下,本蒟蒻还是建议大家使用链式前向星
介绍:
知周所众,邻接表是利用点来存储的
而链式前向星正相反,它是利用边来存储的
思想:
每条边都有一个编号
每条边都有三个基本信息:
1.这条边的起点,如果是无向图,哪个点其实都可以,但有向图就不一样了,因题而论
2.这题边的重点,同上
3.这条边的权值 有没有也是因题而论
存储方式:
既可以用三个数组来分别表示上面所说的
而本蒟蒻一般使用一个结构体直接搞定
定义部分代码:
struct Edge{
int a,b,w;
}edges[N];
处理:
比如说输入一个m,下面m行,每行三个数u,v,x分别代表每条边的起点终点和权值
输入部分:
scanf("%lld",&m);
int m2=0;//随时记录有几条边
for (int i=1;i<=m;i++){
int u,v,x;
scanf("%lld%lld%lld",&u,&v,&w);
e[++m].a=u;
e[m].b=v;
e[m].w=w;
}
大佬们这时候就要问了:这 么 简 单 ?
是的就是这么简单
链式前向星的基本方法就介绍到此,后面我会发布一篇图论算法的讲解
制作这种算法讲解的文章真的不容易 就点个免费的赞吧