NOIP 提高组初赛 · NOIP 2009 提高组初赛试题 第 17 题

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

← 整套速查表 NOIP 提高组初赛 全部真题

题目

在带尾指针(链表指针 clist 指向尾结点)的非空循环单链表中每个结点都以 next 字段的指针指向下一个节点。假定其中已经有 $2$ 个以上的结点。下面哪些说法是正确的:

答案:AC

考点

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

解题思维

这题考的是带尾指针的循环单链表操作。拿到题先别急着敲代码,脑子里得有个图:尾指针 clist 永远指着最后一个,最后一个的 next 却悄悄绕回第一个。抓住这个'首尾相接'的特性,再看每个选项里指针到底指哪儿,就能一眼看出缺了哪步。

常见错误

最容易栽跟头的就是选项 B 和 D。尾部插入时,很多学生只改了 clist->next 就以为万事大吉,忘了把 clist 本身也得跟着挪到新结点上去;尾部删除更是重灾区,因为单向链表没法直接找前驱,若以为 clist 能直接删掉尾结点,就会漏掉'让倒数第二个结点的 next 指向头结点'这关键一步。还有,循环链表里 clist->next 就是头结点,别把它当成普通链表的头指针用,否则头部删除时 p 指错对象,整个逻辑就崩了。

详细解析(节选)

带尾指针的循环单链表:一眼看穿首尾相接的奥秘

核心概念

带尾指针的循环单链表:

理解这个结构是解题关键:尾指针只知"末尾",不知"前驱";头结点只知"后继",不知"前驱"。

同考点真题

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