链表前向星存储图

一般给出a,b节点,权值为w,我们可以创建结构体存储。
cnt全局变量,结构体存储的是边。
存储的是边的起点,终点,权值
node.to存储的是边的终点,node.nex存储的是起点相同的邻边,
node.v存储的是边的权值。
head[ ]数组保存的是边的序号,
如:1为根节点,2,3,4为子节点。
那么1,2为边的话,e[1].nex=0,head[1]=1;
1,3为边的话,e[2].nex=1,head[1]=2;
1,4为边的话,e[3].nex=2,head[1]=3;
所以当我们访问1,4的时候,通过序号可以得到兄弟节点与1的边(1,3),再可以得到1,2的边。

struct node{
	//to 终点
	//nex 下一条邻边
	//v 边的权值
	ll to,nex,v;		
}e[size<<1+1];

void add(int a,int b,int w){
	e[++cnt].to=b;
	e[cnt].v=w;
	e[cnt].nex=head[a];		//记录上一条邻边的序号
	head[a]=cnt;			//记录当前边的序号
}
//遍历x的子节点
for(int i=head[x];i!=0;i=e[i].nex)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值