1 条题解
发布要求:学生须先通过本题;教师和管理员可直接维护官方内容。内容应说明核心思路、关键步骤、正确性理由和复杂度。 只粘贴代码不会通过审核。
你尚未通过该题,通过后才能发布题解。
-
0
01|2025-03-L5-SC-01
学生训练答案:A
原卷事实
题目比较链表的访问、插删和存储特征。
必要假设
按普通链式存储讨论。
C++11 / 算法语义
链表不能按下标随机访问,定位元素需沿指针遍历。
命题预期
选择不属于链表特点的A。
推导结论
训练答案A。
02|2025-03-L5-TF-02
学生训练答案:F
原卷事实
题目断言链表结点地址必须连续。
必要假设
按普通链式存储。
C++11 / 算法语义
结点通过指针连接,物理地址无需连续。
命题预期
判断为假。
推导结论
训练答案F。
03|2025-06-L5-SC-01
学生训练答案:C
原卷事实
题目比较数组与链表的常见操作效率。
必要假设
已知插入或删除位置,不计定位该位置的成本。
C++11 / 算法语义
链表重接指针即可完成插入或删除,通常不必搬移后续元素。
命题预期
选择C。
推导结论
学生训练答案C。
04|2025-09-L5-SC-01
学生训练答案:B
原卷事实
题目比较链表与数组的适用场景。
必要假设
按普通链式存储讨论。
C++11 / 算法语义
链表已知位置的插删无需大量搬移元素。
命题预期
选择B。
推导结论
训练答案B。
05|2025-12-L5-TF-01
学生训练答案:F
原卷事实
题面同时陈述链表插删和随机查找性质。
必要假设
按普通链表。
C++11 / 算法语义
链表不能按下标随机访问,需沿指针遍历。
命题预期
整体命题为假。
推导结论
训练答案F。
06|2026-03-L5-TF-01
学生训练答案:T
原卷事实
题面明确已知下标或结点指针。
必要假设
内存分配视为O(1)。
C++11 / 算法语义
数组下标访问和已知链表位置后插入均为常数次操作。
命题预期
判断为真。
推导结论
训练答案T。
07|2025-03-L5-SC-02
学生训练答案:A
原卷事实
p的前驱和后继均非空,四个选项给出重连语句。
必要假设
指针均有效且delete p后不再访问p。
C++11 / 算法语义
删除p应使p->prev->next指向p->next,并使p->next->prev指向p->prev。
命题预期
B、C、D均可完成等价重连;A把两侧指针错误地指回原邻接结点。
推导结论
训练答案A。
08|2025-06-L5-SC-02
学生训练答案:C
原卷事实
head、tail和size在构造函数中同步初始化,横线位于返回bool的成员函数。
必要假设
链表状态未被其他错误代码破坏。
C++11 / 算法语义
head与tail为空指针或size为0都可判断空表;head是Node*,head.data使用点运算符不能通过编译。
命题预期
题目问不能填写的项,选择C。
推导结论
学生训练答案C。
09|2025-06-L5-SC-03
学生训练答案:D
原卷事实
非空分支要把newNode接到当前tail之后,再更新tail。
必要假设
沿用上题head、tail结构。
C++11 / 算法语义
应依次令旧tail->next指向newNode、newNode->prev指向旧tail,最后tail=newNode。
命题预期
D的执行顺序保留了旧tail并完成双向链接。
推导结论
学生训练答案D。
10|2025-09-L5-SC-02
学生训练答案:C
原卷事实
代码用dummy统一处理头结点,cur指向待检查结点的前驱。
必要假设
链表结构合法。
C++11 / 算法语义
应保存cur->next,使cur->next跨过它,然后delete原结点。
命题预期
选项C依次完成三步。
推导结论
训练答案C。
11|2025-09-L5-SC-03
学生训练答案:A
原卷事实
初始slow=head、fast=head->next。
必要假设
链表结构合法。
C++11 / 算法语义
每轮slow走1步且fast走2步,对应A。
命题预期
选择A。
推导结论
训练答案A。
12|2025-09-L5-TF-04
学生训练答案:T
原卷事实
题目列举链表插删、访问、内存与缓存特性。
必要假设
按普通链式存储。
C++11 / 算法语义
已知位置插删高效,随机访问需遍历,指针增加空间且局部性较差。
命题预期
判断为T。
推导结论
训练答案T。
13|2025-12-L5-SC-01
学生训练答案:C
原卷事实
代码从head开始遍历循环单链表。
必要假设
head指向一个有效的非空循环单链表。
C++11 / 算法语义
do-while先访问当前结点,再在p回到head时停止。
命题预期
选项C恰好访问每个结点一次。
推导结论
训练答案C。
14|2025-12-L5-SC-02
学生训练答案:B
原卷事实
tail指向当前尾块,新块的prev应指向旧tail。
必要假设
已调用init且tail有效。
C++11 / 算法语义
构造newBlock后应令tail=newBlock。
命题预期
选项B保持完整向前链。
推导结论
训练答案B。
15|2025-12-L5-SC-03
学生训练答案:C
原卷事实
双链表结点含prev,单链表实现需从head寻找前驱。
必要假设
待删结点有效;单链表中的待删结点可由head到达且不是需特殊处理的头结点。
C++11 / 算法语义
双链表重连为O(1),单链表寻找前驱为O(n)。
命题预期
选择C。
推导结论
训练答案C。
16|2026-03-L5-SC-01
学生训练答案:D
原卷事实
题目比较三类链表性质。
必要假设
采用带头结点循环单链表的标准定义。
C++11 / 算法语义
空表时头结点next回指自身;其余绝对说法均不成立。
命题预期
选择D。
推导结论
训练答案D。
17|2026-03-L5-SC-02
学生训练答案:C
原卷事实
需把s接到p原前驱与p之间。
必要假设
p、s有效且p->prev有效。
C++11 / 算法语义
依次设置s->next=p、s->prev=p->prev、p->prev->next=s、p->prev=s。
命题预期
C完整保持双向连接。
推导结论
训练答案C。
18|2026-03-L5-SC-03
学生训练答案:B
原卷事实
删除del后cur应继续指向其前驱位置。
必要假设
输入链表无环且所有结点有效。
C++11 / 算法语义
先令cur->next=del->next,再delete del,可连续删除。
命题预期
选择B。
推导结论
训练答案B。
19|2026-06-L5-SC-01
学生训练答案:B
原卷事实
题目要求在head后插入newNode。
必要假设
head非空且链表结构合法。
C++11 / 算法语义
先令newNode指向原后继,再令head指向newNode。
命题预期
选项B。
推导结论
训练答案B。
20|2026-06-L5-TF-01
学生训练答案:T
原卷事实
题目比较数组与链表的典型存储布局。
必要假设
按常见连续数组和动态链表实现。
C++11 / 算法语义
数组元素连续,链表结点由指针连接可不连续。
命题预期
判断为T。
推导结论
训练答案T。
21|2026-06-L5-SC-02
学生训练答案:C
原卷事实
循环链表不会以nullptr结束。
必要假设
head非空且环回head。
C++11 / 算法语义
do-while先访问头结点,回到head时停止。
命题预期
选项C。
推导结论
训练答案C。
22|2026-06-L5-SC-03
学生训练答案:A
原卷事实
p是非首尾结点。
必要假设
p及相邻结点有效。
C++11 / 算法语义
前驱next接后继、后继prev接前驱,再delete p。
命题预期
选项A。
推导结论
训练答案A。
23|2025-03-L5-TF-01
学生训练答案:T
原卷事实
官网原文先重接p->next,再写删除p->next;官方答案T。
必要假设
学生校注版引入q保存原后继。
C++11 / 算法语义
先复制q的数据、令p->next=q->next,再delete q,能在不知道头结点时O(1)逻辑删除非尾结点且不误删后续结点。
命题预期
命题预期是保存并删除原后继。
推导结论
学生训练答案T;不得把引入q后的校注版写成官网原文。
24|2025-03-L5-SC-03
学生训练答案:B
原卷事实
官网题干明确称为双向循环链表;官方答案B仅设置head->next=tail与tail->prev=head。
必要假设
学生校注版仅把两处“双向循环链表”改为“双向链表”,并沿用结点默认外侧指针为空的普通哨兵结构。
C++11 / 算法语义
真正的双向循环哨兵结构还需head->prev=tail与tail->next=head;非循环双向哨兵链表下B是唯一最佳项。
命题预期
命题预期按非循环双向哨兵链表选择B。
推导结论
学生训练答案B;必须显著展示双版本差异,不得把校注版冒充官网原文。
25|2025-06-L5-SC-04
学生训练答案:A
原卷事实
循环定位到待删除结点p,prev指向其前驱。
必要假设
需有n>=1且k>=2,使删除时prev已在计数循环中被赋值。
C++11 / 算法语义
应先令prev->next跳过p,再delete p,最后把p更新为prev->next;删除后不能再解引用旧p。
命题预期
A满足安全的重接、删除和移动顺序。
推导结论
学生训练答案A;解析显著说明k>=2的必要假设。
26|2025-12-L5-TF-03
学生训练答案:T
原卷事实
官网原文明确写先用p->next覆盖p的值与next,然后删除p->next;官方答案T。
必要假设
若按命题意图,需要先保存原p->next结点指针。
C++11 / 算法语义
按字面先重连p->next再delete p->next会删除新的后继,原后继泄漏;正确做法是保存q=p->next,复制q的数据并令p->next=q->next,再delete q。
命题预期
命题预期考查复制后继并删除后继的O(1)技巧。
推导结论
校注版训练答案T;与官方答案相同,但题面明确补足临时指针与正确删除顺序。
27|2026-06-L5-TF-02
学生训练答案:F
原卷事实
原卷给出四条指针赋值。
必要假设
插入前head->next为原首结点。
C++11 / 算法语义
若先执行head->next=p,后续读取head->next会读到p,可能形成错误自指,故顺序并非任意。
命题预期
判断为F。
推导结论
训练答案F。
信息
- ID
- 78
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 轻松上手
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者