链表和邻接表的总结

本文总结了链表和邻接表的概念及其在数据结构中的应用。针对链表,通过两个例题阐述了双链表如何支持在任意位置插入或删除,并在保持顺序的情况下解决实际问题。而在邻接表部分,解释了它作为图论中的关键结构,如何基于单链表扩展以适应图的操作。
摘要由CSDN通过智能技术生成

链表和邻接表的总结

链表结构是之前我所不了解的一个结构,今天才认真的去琢磨

链表顾名思义,可以说就是一个链子一样左右的节点相互串在一起,会相互影响相互进行操作的,可以用数组l和数组r分别连接每个点的前端和后端,然后删除本节点只需要把左连右右连左即可

正如信息学奥赛进阶指南里面所叙述的链表支持在任意位置插入或删除,但只能按顺序依次访问其中的元素因此在下面这个题目中很适用,可以删除掉对后面操作有影响的节点

双链表:

例题1

题目链接如下

根据题意可简单表述成要找寻一个节点k前的所有值,使得a[k]-a[i]最小i<k

我们可以很轻易的想到用排序去找到一个最接近k的数,这样相减肯定会更小,但是不妥之处就是会将原来的顺序打乱导致无法辨别是否会在k以前

这个时候就有一种很巧妙的用链表的方法了。

可以用l和r分别去记录一个点左右两端的编号,可以先用一个数组p把每一个序号排序后在序列中的序号记录下来,然后用n从前往后进行操作,每次取出在排序中的标号id,再取出该该标号左右两端的标号即l[id]和r[id],分别作差看哪个更优秀,取那个点作答案,再删除当前这个点(用左连右右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值