NOIP 普及组初赛 · NOIP 2010 普及组初赛试题 第 16 题

选择题 · 答案 A · 考点:链表、线性结构

← 整套速查表 NOIP 普及组初赛 全部真题

题目

双向链表中有两个指针域 llink 和 rlink,分别指向该结点的前驱及后继。设 $p$ 指向链表中的一个结点,它的左右结点均非空。现要求删除结点 $p$,则下面语句序列中错误的是( )。

答案:A

考点

链表 讲解 →链表 真题汇总 →线性结构

解题思维

这题考双向链表删除结点的指针重连。拿到题先想:删了p,p的前驱rlink得接p的后继,p的后继llink得接p的前驱。然后看选项里指针赋值的方向是不是反了,再想如果先改后继的前驱指回自己,链表就断了。

常见错误

最容易错在把‘后继的前驱’写成指向‘后继自己’,或者把‘前驱的后继’写成指向‘前驱自己’。比如A选项里p->rlink->llink = p->rlink,这行代码让p的后继的llink指向了p的后继自己,而不是p的前驱,导致链表断裂。还有学生可能误以为只要最后delete p就行,其实重连顺序错了,delete之前链表就已经断了。

详细解析(节选)

这道题考查双向链表中删除结点的指针重连逻辑。双向链表每个结点有两个指针域:llink指向前驱,rlink指向后继。删除结点p时,核心操作是让p的前驱的rlink指向p的后继,同时让p的后继的llink指向p的前驱,最后delete p。命题人喜欢挖‘顺序’和‘指向对象’的坑,比如把后继的前驱写成指向后继自己,或者把前驱的后继写成指向前驱自己,导致链表断裂。

正确删除语句是: p->llink->rlink = p->rlink; p->rlink->llink = p->llink; delete p;

逐项分析选项: A选项: p->rlink->llink = p->rlink; // 让p的后继的llink指向p的后继自己(错误!应指向p的前驱) p->llink->rlink = p->llink; // 让p的前驱的rlink指向p的前驱自己(错误!应指向p的后继) delete p; A完全反了——把前后指针都指向了结点自身,导致链表断裂。这是本题的错误选项。

B选项: p->llink->rlink = p->rlink; // 前驱的rlink接后继(正确) p->rlink->llink = p->llink; // 后继的llink接前驱(正确) delete p; B正确。

C选项: p->rlink->llink = p->llink; // 后继的llink接前驱(正确) p->rlink->llink->rlink = p->rlink; // 此时p->rlink->llink是前驱,再让它rlink接后继(正确) delete p; C正确,只是多了一步冗余操作。

D选项: p->llink->rlink = p->rlink; // 前驱的rlink接后继(正确) p->llink->rlink->llink = p->llink; // 此时p->llink->rlink是后继,再让它llink接前驱(正确) delete p; D正确,也是多了一步冗余操作。

易错点提醒: 1. 正确顺序:必须先让前驱的rlink接后继,再让后继的llink接前驱(或者反过来,但必须对应正确对象)。 2. A选项中的p->rlink->llink = p->rlink 是错的——让后继的前驱指回了后继本身,而不是前驱。 3. 学生可能误以为只要最后delete p就行,其实重连顺序错了,delete之前链表就已经断了。

考频趋势:线性结构在题库中仅考过4题,但链表相关题目高达81题,覆盖从GESP五级到2026年的多个级别,2024年单年就有26题,2025年16题,说明链表是高频考点。双向链表删除操作属于链表基础中的经典题型,历年NOIP普及组、提高组初赛均出现过,命题人常通过混淆‘前驱’和‘后继’的指向关系来设置陷阱。

预测:基于2024、2025年链表题目数量激增的趋势,未来几年链表相关题目仍将是高频考点。命题人可能会继续围绕‘删除’‘插入’‘遍历’等基础操作设置变式,比如单向链表删除、带头结点的链表删除、或者在复杂结构中定位并删除结点。暂无足够依据预测具体年份或题型,但链表操作的正确指针重连逻辑始终是必考内容。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断