【图论】数组模拟邻接表存储(链式前向星)

图的邻接表存储法 又叫链式存储法 可以用数组模拟

定义


struct edge{
    int next;     //下一条边的编号
    int to;      //这条边到达的点
    int dis;     //这条边的长度 
}edge[size];
//COYG

核心代码 加入一条从from到to距离为dis的单向边



inline void add(int from,int to,int dis)
{
    edge[++num].next=head[from];
    edge[num].to=to;
    edge[num].dis=dis;
    head[from]=num;
} 
//COYG


举一个例子吧 别喷图
呵呵

图上每一个边上的数字 既是编号 也是长度
就是这样一个简单图 按照上面的代码 存储完之后各数组的情况是这样的

这里写图片描述

next数组是这样存的:对于一条边 假如之前已经加入过与这条边同一起点的边 则储存最靠后的同起点边的编号 如果之前没有加入过任何与这条边同起点的边 则next数组的值为0
dis数组是存储的当前这条边的长度
to数组很好理解 它存储的就是你现在输入的这条边的末端点
head[i]代表第i个点为端点连接的最后一条边的编号

主要要点就这些
继续努力

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值