标签:nxt cnt head edge 链式 转载 前向星
链式前向星是一种以存边的方式储存图的数据结构,经常在各种竞赛中使用。
链式前向星储存的每个边由三个变量储存:\(to\),\(v\),\(nxt\)。
其中,\(from\)和\(to\)代表这条边连接的两个点,\(v\)代表这条边的权值,\(nxt\)代表同一个\(from\)的下一条边
我们一般用一个\(head\)数组来储存每个点的最后输入的一条边的编号,每次添加新的边时将这个编号赋给这个边,然后再使用这个边的编号来更新\(head\)。通过这个编号我们就可以通过每个边的\(nxt\)来找到下一条边。
假如我们存储这样的一个图:
那么它在链式前向星中可以表示为:
我们可以写一个add函数来帮助我们添加边
void add(const gg &from,const gg &to,const gg &v)
{
cnt++; //边的计数++
edge[cnt].to=to;
edge[cnt].v=v;
edge[cnt].nxt=head[from];
head[from]=cnt;
return;
}
对于链式前向星,我们经常使用这样的for循环来枚举边
for(gg i=head[n];i;i=edge[i].nxt) //n为from边
{
//此处添加枚举代码,i为边在edge数组中的编号
}
标签:nxt,cnt,head,edge,链式,转载,前向星 来源: https://www.cnblogs.com/firesonz/p/link-star.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。