CSP-J 入门级 · CSP 2022 入门级第一轮 第 11 题

选择题 · 答案 D · 考点:链表

← 整套速查表 CSP-J 入门级 全部真题

题目

以下哪组操作能完成在双向循环链表结点 $p$ 之后插入结点 $s$ 的效果(其中,next 域为结点的直接后继,prev 域为结点的直接前驱):( )。

答案:D

考点

链表 讲解 →链表 真题汇总 →

解题思维

这题考双向循环链表插入,核心是改四个指针。拿到题先想:s 的 next 和 prev 得先接上原链表,再去动 p 的 next 和原后继的 prev,否则改 p->next 会丢引用,顺序反了必错。

常见错误

最容易错的是先改 p->next 指向 s,再想改原后继的 prev 时,p->next 已经是 s 了,根本找不到原后继,导致逻辑全乱。另外,很多人记不住双向链表的对称性,以为像单向链表那样只改 next 就行,忘了 prev 也要同步更新,结果链表断裂成单向或者成环错误。还有选项里把 s->next 赋值给 p->next 这种写法,一旦 p->next 被提前修改,s->next 就拿到了新值,彻底错了。

详细解析(节选)

考点与概念:双向循环链表每个结点都有 next(后继)和 prev(前驱)。在结点 p 之后插入 s,本质是把 s 夹在 p 和原来的后继之间,需要同时改四个指针:s 的 prev、s 的 next、p 的 next、原来后继的 prev。顺序一旦错,就会丢失某个结点的引用,链表就断了或成环。命题人最爱考的就是这个“改指针顺序”,因为代码里四行操作看着差不多,但中间哪一行先执行,结果天差地别。他们喜欢把正确的四行打乱顺序,或者把 s 的 next 赋值写成 p->next,诱导学生没看清就选。拿到题先想:s 的 next 和 prev 得先接上原链表,再去动 p 的 next 和原后继的 prev,否则改 p->next 会丢引用,顺序反了必错。具体怎么推:第一步,s->next = p->next,把 s 的后继指向 p 原来的后继;第二步,p->next->prev = s,让原来的后继指回 s;第三步,s->prev = p,s 的前驱指 p;第四步,p->next = s,p 的后继指 s。这样四个指针都连上了,且没有提前修改 p->next 导致丢失原后继。验证选项:A 先改 p->next->prev=s,此时 p->next 还是原后继,但后面 s->next=p->next 会把 s 的 next 写成原后继,正确;可紧接着 p->next=s,之后 s->next=p->next 会把 s 的 next 写成 s 自己,成环,错。B 顺序同 A 但中间穿插错,最后 s->next=p->next 又把 s 的 next 写成 s,错。C 先改 p->next=s,再改 p->next->prev,此时 p->next 已是 s,s 的 prev 被改成 s,错。D 严格按“先远后近”:s->next=p->next;p->next->prev=s;s->prev=p;p->next=s。四个指针全对,不会丢失引用,符合双向循环链表的对称性。考频与趋势:链表在题库共考过 81 题,覆盖 7 个考试级别(2009-2026);逐年分布:2009 年 1 题、2010 年 2 题、2011 年 1 题、2014 年 3 题、2015 年 3 题、2018 年 2 题、2019 年 1 题、2020 年 1 题、2022 年 2 题、2023 年 6 题、2024 年 26 题、2025 年 16 题、2026 年 10 题、null 年 7 题;分赛事:GESP 五级 42 题、GESP 六级 11 题、GESP 七级 7 题、NOIP 普及组 初赛 6 题、NOIP 提高组 初赛 6 题、CSP 入门级 5 题、GESP 八级 4 题。从数据看,2024 年突然爆发 26 题,2025 年回落至 16 题,2026 年又回升到 10 题,说明链表一直是高频考点,尤其 GESP 五级占比最大(42/81),约一半。未来预测:鉴于近五年 GESP 五级持续占主导且 CSP 入门级近年也偶有出现,预计 2027 年仍会考链表,大概率继续出现在 GESP 五级或 CSP 入门级,形式仍是插入/删除操作,但可能会结合循环特性(如头尾相接)挖坑,让学生判断指针赋值顺序或检测成环。暂无足够依据预测具体年份和题型,只能基于趋势说链表不会凉,反而可能更灵活地考。

同考点真题

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