数据结构:邻接表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

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

那么接下来:
每⼀个数组的作⽤
head[点的序号] = 从它出发的最后⼀次输⼊的边的编号
from[边的序号] = 边的起点;
to[边的序号] = 边的终点;
nxt[边的序号] = 输⼊的上⼀个从这条边的出发点出发的边的编号;
edge[边的序号] = 边的权值
ATTENTION!
next是保留字!
当然也可以使⽤结构体。

其中除了head[],数组的下标全部都是边⽽不是点!
from[]和to[]分别是起点和终点(经常可以不⽤from[]);
有的书上的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;
}
好好理解⼀下,反正我⼀开始就是卡在“每⼀个数组的作⽤”这⾥。

相关文档
最新文档