数据结构:邻接表

之前我看了很久都没有搞明白邻接表,现在终于差不多搞懂了,特此记录。

那么,邻接表是什么呢?邻接表嘛,就是邻接的表。

其实邻接表不好理解,主要是开的数组比较多,容易弄混,这一分钟好像弄懂了,下一分钟就不知如何下手了。

那么接下来:

每一个数组的作用

head[点的序号] = 从它出发的最后一次输入的边的编号
from[边的序号] = 边的起点;
to[边的序号] = 边的终点;
nxt[边的序号] = 输入的上一个从这条边的出发点出发的边的编号;
edge[边的序号] = 边的权值

ATTENTION!

  1. next是保留字!
  2. 当然也可以使用结构体。
  3. 其中除了head[]和,数组的下标全部都是边而不是点!
  4. from[]to[]分别是起点和终点(经常可以不用from[]);
  5. 有的书上的ver[](如《算法竞赛进阶指南》)就是这里的to[]。

add()函数

使用邻接表存图的时候,用到的add()函数:

void add(int x, int y, int z) {
    to[++tot] = y, edge[tot] = z; //edge为边的权值,可视情况而用
    nxt[tot] = head[x], head[x] = tot;
}

好好理解一下,反正我一开始就是卡在“每一个数组的作用”这里。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值