林老师 · 客观题题库 · 链表 · 考纲词条练习

链表 · 考纲词条练习

链表 · 共 115 题 · 原创真题风格补充卷
真题
复刻
试卷编号NEO-J-2026-链表
题目总数115 题 · 230 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 115 题 · 230 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 230 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

115 QUESTIONS · 2 POINTS EACH
第 1 题 单选 未作答

单链表每个节点包含的两个部分是( )。

(2 分)
原创 2026 · 单选 第1题 | 知识点 KJ-26a
第 2 题 单选 未作答

关于单链表的头指针 head 与第一个节点的关系,正确的是( )。

(2 分)
原创 2026 · 单选 第2题 | 知识点 KJ-26a
第 3 题 单选 未作答

链表各节点在内存中的存放方式是( )。

(2 分)
原创 2026 · 单选 第3题 | 知识点 KJ-26a
第 4 题 单选 未作答

与固定长度的数组相比,链表在数据规模方面的特点是( )。

(2 分)
原创 2026 · 单选 第4题 | 知识点 KJ-26a
第 5 题 单选 未作答

单链表最后一个节点的指针域通常存放( )。

(2 分)
原创 2026 · 单选 第5题 | 知识点 KJ-26a
第 6 题 单选 未作答

判断一个单链表当前没有任何节点,依据是( )。

(2 分)
原创 2026 · 单选 第6题 | 知识点 KJ-26a
第 7 题 单选 未作答

按指针连接方式分类,链表的三种基本形态是( )。

(2 分)
原创 2026 · 单选 第7题 | 知识点 KJ-26a
第 8 题 单选 未作答

链表与数组最本质的区别是( )。

(2 分)
原创 2026 · 单选 第8题 | 知识点 KJ-26a
第 9 题 单选 未作答

单链表从头到尾访问每个节点,能采用的移动方式是( )。

(2 分)
原创 2026 · 单选 第9题 | 知识点 KJ-26a
第 10 题 单选 未作答

在单链表中查找值等于 x 的节点,最少必须做的事是( )。

(2 分)
原创 2026 · 单选 第10题 | 知识点 KJ-26a
第 11 题 单选 未作答

头插法插入新节点 t 的两步核心操作是( )。

(2 分)
原创 2026 · 单选 第11题 | 知识点 KJ-26a
第 12 题 单选 未作答

用尾插法把新节点接在链表末尾,需要的条件或做法是( )。

(2 分)
原创 2026 · 单选 第12题 | 知识点 KJ-26a
第 13 题 单选 未作答

在第 ii 个节点之后插入新节点 t,正确的指针操作顺序是( )。

(2 分)
原创 2026 · 单选 第13题 | 知识点 KJ-26a
第 14 题 单选 未作答

从单链表中删除 p 的后继节点 q,正确的操作是( )。

(2 分)
原创 2026 · 单选 第14题 | 知识点 KJ-26a
第 15 题 单选 未作答

访问单链表的第 kk 个节点,时间代价是( )。

(2 分)
原创 2026 · 单选 第15题 | 知识点 KJ-26a
第 16 题 单选 未作答

依次读入 1,2,3,41,2,3,4:用头插法建链后从前往后输出,与用尾插法建链后从前往后输出,分别得到( )。

(2 分)
原创 2026 · 单选 第16题 | 知识点 KJ-26a
第 17 题 单选 未作答

已经定位到插入或删除位置的前提下,单链表插入、删除节点本身的时间复杂度是( )。

(2 分)
原创 2026 · 单选 第17题 | 知识点 KJ-26a、KS-55a
第 18 题 单选 未作答

在数组中部插入或删除一个元素,平均需要搬移的元素个数约为( )。

(2 分)
原创 2026 · 单选 第18题 | 知识点 KJ-26a、KS-55a
第 19 题 单选 未作答

单链表中查找某个值,时间复杂度是( )。

(2 分)
原创 2026 · 单选 第19题 | 知识点 KJ-26a、KS-55a
第 20 题 单选 未作答

不带尾指针的单链表,「头部插入」与「尾部插入」的时间代价是( )。

(2 分)
原创 2026 · 单选 第20题 | 知识点 KJ-26a、KS-55a
第 21 题 单选 未作答

在序列中部频繁插入删除元素,链表与数组相比( )。

(2 分)
原创 2026 · 单选 第21题 | 知识点 KJ-26a、KS-55a
第 22 题 单选 未作答

关于链表与数组的内存布局,正确的是( )。

(2 分)
原创 2026 · 单选 第22题 | 知识点 KJ-26a、KS-55a
第 23 题 单选 未作答

双向链表每个节点包含的三个部分是( )。

(2 分)
原创 2026 · 单选 第23题 | 知识点 KJ-26a
第 24 题 单选 未作答

在双向链表中,节点 p 的前驱与后继分别通过( )访问。

(2 分)
原创 2026 · 单选 第24题 | 知识点 KJ-26a
第 25 题 单选 未作答

在双向链表节点 p 与其后继 q 之间插入新节点 t,至少要改动的指针数是( )。

(2 分)
原创 2026 · 单选 第25题 | 知识点 KJ-26a
第 26 题 单选 未作答

从双向链表中删除节点 p(非首非尾),正确的操作是( )。

(2 分)
原创 2026 · 单选 第26题 | 知识点 KJ-26a
第 27 题 单选 未作答

要从尾部向头部逐个访问节点,双向链表与单链表相比( )。

(2 分)
原创 2026 · 单选 第27题 | 知识点 KJ-26a
第 28 题 单选 未作答

双向链表用每个节点多一个指针的代价换来的主要好处是( )。

(2 分)
原创 2026 · 单选 第28题 | 知识点 KJ-26a
第 29 题 单选 未作答

链表代码里设置哑节点(不存真实数据的附加节点)的主要目的(在后文中「哑节点」统一指此概念)是( )。

(2 分)
原创 2026 · 单选 第29题 | 知识点 KJ-26a
第 30 题 单选 未作答

单循环链表区别于普通单链表的特征是( )。

(2 分)
原创 2026 · 单选 第30题 | 知识点 KJ-26a
第 31 题 单选 未作答

遍历单循环链表一圈,终止条件通常写成( )。

(2 分)
原创 2026 · 单选 第31题 | 知识点 KJ-26a
第 32 题 单选 未作答

约瑟夫问题:nn 个人围成一圈,从某人起报数,每报到 mm 的人出列并由下一人继续。最适合自然模拟这一过程的数据结构是( )。

(2 分)
原创 2026 · 单选 第32题 | 知识点 KJ-26a
第 33 题 单选 未作答

带尾指针 tail 的单循环链表,只凭 tail 就能在 O(1)O(1) 内完成的操作是( )。

(2 分)
原创 2026 · 单选 第33题 | 知识点 KJ-26a
第 34 题 单选 未作答

单循环链表的一个独特能力是( )。

(2 分)
原创 2026 · 单选 第34题 | 知识点 KJ-26a
第 35 题 单选 未作答

遍历单循环链表时,若把终止条件误写成与单链表相同的 p != NULL,后果是( )。

(2 分)
原创 2026 · 单选 第35题 | 知识点 KJ-26a
第 36 题 单选 未作答

用单链表实现栈,入栈与出栈都应对链表的哪一端操作( )。

(2 分)
原创 2026 · 单选 第36题 | 知识点 KJ-26a
第 37 题 单选 未作答

用单链表实现队列,正确的指针配置是( )。

(2 分)
原创 2026 · 单选 第37题 | 知识点 KJ-26a
第 38 题 单选 未作答

哈希表处理冲突的链地址法,把冲突元素组织成链表挂在对应桶上,这里链表承担的角色(此处仅作链表应用了解)是( )。

(2 分)
原创 2026 · 单选 第38题 | 知识点 KJ-26a
第 39 题 单选 未作答

数据总量事先无法估计、且会频繁增删,链表与定长数组相比更合适的原因是( )。

(2 分)
原创 2026 · 单选 第39题 | 知识点 KJ-26a
第 40 题 单选 未作答

维护一条有序单链表,插入新值时从头找第一个比它大的节点,插到其前面。这样维护的好处是( )。

(2 分)
原创 2026 · 单选 第40题 | 知识点 KJ-26a
第 41 题 单选 未作答

快慢指针判断链表是否有环的原理是( )。

(2 分)
原创 2026 · 单选 第41题 | 知识点 KJ-26a
第 42 题 单选 未作答

快慢指针找链表中间节点,指针的走法是( )。

(2 分)
原创 2026 · 单选 第42题 | 知识点 KJ-26a
第 43 题 单选 未作答

一次遍历求倒数第 kk 个节点的双指针技巧是( )。

(2 分)
原创 2026 · 单选 第43题 | 知识点 KJ-26a
第 44 题 单选 未作答

「当前指针 p 与后继指针 q 同速前进」的双指针遍历,相比单指针的好处(在删除场景中最明显)是( )。

(2 分)
原创 2026 · 单选 第44题 | 知识点 KJ-26a
第 45 题 单选 未作答

快指针一次走两步的循环条件要写成 while (fast && fast->next),两个条件的作用是( )。

(2 分)
原创 2026 · 单选 第45题 | 知识点 KJ-26a
第 46 题 单选 未作答

数组模拟链表(静态链表)用两个平行数组 data[]nxt[] 存链,其中 nxt[i] 存放( )。

(2 分)
原创 2026 · 单选 第46题 | 知识点 KJ-26a
第 47 题 单选 未作答

静态链表的「头指针」实际是( )。

(2 分)
原创 2026 · 单选 第47题 | 知识点 KJ-26a
第 48 题 单选 未作答

静态链表在第 ii 号节点后插入新节点(放在空闲下标 jj 处),需要做的赋值是( )。

(2 分)
原创 2026 · 单选 第48题 | 知识点 KJ-26a
第 49 题 单选 未作答

静态链表中删除第 ii 号节点的后继 jj,正确的操作是( )。

(2 分)
原创 2026 · 单选 第49题 | 知识点 KJ-26a
第 50 题 单选 未作答

静态链表与动态链表相比的固有限制是( )。

(2 分)
原创 2026 · 单选 第50题 | 知识点 KJ-26a
第 51 题 单选 未作答

01struct Node { int data; Node* next; };
02int main() {
03    Node* head = NULL;
04    for (int i = 1; i <= 4; i++) {
05        Node* t = new Node;
06        t->data = i;
07        t->next = head;
08        head = t;
09    }
10    for (Node* p = head; p != NULL; p = p->next)
11        cout << p->data << " ";
12    return 0;
13}

输出是( )。

(2 分)
原创 2026 · 单选 第51题 | 知识点 KJ-26a
第 52 题 单选 未作答

01struct Node { int data; Node* next; };
02int main() {
03    Node* head = NULL;
04    Node* tail = NULL;
05    for (int i = 1; i <= 3; i++) {
06        Node* t = new Node;
07        t->data = i;
08        t->next = NULL;
09        if (head == NULL) head = t;
10        else tail->next = t;
11        tail = t;
12    }
13    for (Node* p = head; p != NULL; p = p->next)
14        cout << p->data << " ";
15    return 0;
16}

输出是( )。

(2 分)
原创 2026 · 单选 第52题 | 知识点 KJ-26a
第 53 题 单选 未作答

01// 链表已建为 4 -> 6 -> 2 -> NULL(head 指向 4)
02int s = 0;
03for (Node* p = head; p != NULL; p = p->next)
04    s += p->data;
05cout << s;

输出是( )。

(2 分)
原创 2026 · 单选 第53题 | 知识点 KJ-26a
第 54 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 5 -> NULL
02int n = 0;
03for (Node* p = head; p != NULL; p = p->next)
04    n++;
05cout << n;

输出是( )。

(2 分)
原创 2026 · 单选 第54题 | 知识点 KJ-26a
第 55 题 单选 未作答

01// 链表为 3 -> 9 -> 5 -> 7 -> NULL
02int mx = head->data;
03for (Node* p = head->next; p != NULL; p = p->next)
04    if (p->data > mx) mx = p->data;
05cout << mx;

输出是( )。

(2 分)
原创 2026 · 单选 第55题 | 知识点 KJ-26a
第 56 题 单选 未作答

01// 链表为 2 -> 5 -> 3 -> 8 -> 6 -> NULL
02int x = 5, cnt = 0;
03for (Node* p = head; p != NULL; p = p->next)
04    if (p->data > x) cnt++;
05cout << cnt;

输出是( )。

(2 分)
原创 2026 · 单选 第56题 | 知识点 KJ-26a
第 57 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> NULL
02while (head != NULL) {
03    cout << head->data << " ";
04    Node* t = head;
05    head = head->next;
06    delete t;
07}

输出是( )。

(2 分)
原创 2026 · 单选 第57题 | 知识点 KJ-26a
第 58 题 单选 未作答

01Node* head = NULL;
02if (head == NULL) cout << "empty";
03else cout << head->data;

输出是( )。

(2 分)
原创 2026 · 单选 第58题 | 知识点 KJ-26a
第 59 题 单选 未作答

// 链表为 1 -> 3 -> 5 -> NULL,p 指向值为 3 的节点
Node* t = new Node;
t->data = 4;
t->next = p->next;
p->next = t;
// 从 head 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第59题 | 知识点 KJ-26a
第 60 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 2 -> NULL
02Node* p = head;
03while (p->next != NULL && p->next->data != 2)
04    p = p->next;
05if (p->next != NULL) {
06    Node* t = p->next;
07    p->next = t->next;
08    delete t;
09}
10// 从 head 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第60题 | 知识点 KJ-26a
第 61 题 单选 未作答

空链表上依次执行:头插 1010、头插 2020,然后从 head 输出,结果是( )。

(2 分)
原创 2026 · 单选 第61题 | 知识点 KJ-26a
第 62 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> NULL
02Node* rev = NULL;
03while (head != NULL) {
04    Node* t = head->next;
05    head->next = rev;
06    rev = head;
07    head = t;
08}
09// 从 rev 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第62题 | 知识点 KJ-26a
第 63 题 单选 未作答

// 链表为 5 -> 3 -> 8 -> 1 -> 6 -> NULL,删除第 2 个节点
Node* p = head;          // p 指向第 1 个节点(5)
Node* t = p->next;
p->next = t->next;
delete t;
// 从 head 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第63题 | 知识点 KJ-26a
第 64 题 单选 未作答

01// 链表为 5 -> 3 -> 8 -> 1 -> 6 -> NULL
02int k = 3;
03Node* p = head;
04for (int i = 1; i < k; i++)
05    p = p->next;
06cout << p->data;

输出是( )。

(2 分)
原创 2026 · 单选 第64题 | 知识点 KJ-26a
第 65 题 单选 未作答

01// 链表为 1 -> 3 -> 5 -> 7 -> NULL
02bool inc = true;
03for (Node* p = head; p->next != NULL; p = p->next)
04    if (p->data >= p->next->data) inc = false;
05cout << (inc ? 1 : 0);

输出是( )。

(2 分)
原创 2026 · 单选 第65题 | 知识点 KJ-26a
第 66 题 单选 未作答

01// 有序链表为 1 -> 3 -> 7 -> NULL,插入 5
02Node* p = head;
03while (p->next != NULL && p->next->data < 5)
04    p = p->next;
05Node* t = new Node;
06t->data = 5;
07t->next = p->next;
08p->next = t;
09// 从 head 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第66题 | 知识点 KJ-26a
第 67 题 单选 未作答

双向链表 1 <-> 2 <-> 3tail 指向值为 33 的节点,执行:

01for (DN* p = tail; p != NULL; p = p->prev)
02    cout << p->d << " ";

输出是( )。

(2 分)
原创 2026 · 单选 第67题 | 知识点 KJ-26a
第 68 题 单选 未作答

循环链表节点值从某处起依次为 1,2,3,4,51,2,3,4,5 首尾相接,指针 p 当前指向值为 11 的节点。连续执行 77p = p->next 后,p->data 是( )。

(2 分)
原创 2026 · 单选 第68题 | 知识点 KJ-26a
第 69 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 2(4 的 next 指回 2,成环)
02Node* slow = head;
03Node* fast = head;
04int meet = -1;
05while (fast != NULL && fast->next != NULL) {
06    slow = slow->next;
07    fast = fast->next->next;
08    if (slow == fast) { meet = slow->data; break; }
09}
10cout << meet;

输出是( )。

(2 分)
原创 2026 · 单选 第69题 | 知识点 KJ-26a
第 70 题 单选 未作答

01struct DN { int d; DN* prev; DN* next; };
02DN a = {1, NULL, NULL}, c = {3, NULL, NULL};
03a.next = &c; c.prev = &a;
04DN b = {2, NULL, NULL};
05b.prev = &a;
06b.next = &c;
07a.next = &b;
08c.prev = &b;
09for (DN* p = &a; p != NULL; p = p->next)
10    cout << p->d << " ";

输出是( )。

(2 分)
原创 2026 · 单选 第70题 | 知识点 KJ-26a
第 71 题 单选 未作答

01struct Node { int data; Node* next; };
02Node* head = NULL;
03Node* tail = NULL;
04for (int i = 1; i <= 3; i++) {
05    Node* t = new Node;
06    t->data = i;
07    if (head == NULL) { head = t; t->next = head; }
08    else { t->next = head; tail->next = t; }
09    tail = t;
10}
11Node* p = head;
12do {
13    cout << p->data << " ";
14    p = p->next;
15} while (p != head);

输出是( )。

(2 分)
原创 2026 · 单选 第71题 | 知识点 KJ-26a
第 72 题 单选 未作答

约瑟夫问题:55 个人编号 1155 围成圈,从 11 号起报数,报到 33 的人出列,下一人继续从 11 报起。出列顺序是( )。

(2 分)
原创 2026 · 单选 第72题 | 知识点 KJ-26a
第 73 题 单选 未作答

静态链表数组如下,head = 0

01int data[] = {7, 9, 3, 1, 5};
02int nxt[]  = {2, 4, 1, -1, 3};

head 沿 nxt 依次输出 data,结果是( )。

(2 分)
原创 2026 · 单选 第73题 | 知识点 KJ-26a
第 74 题 单选 未作答

静态链表 data = {7, 9, 3, 1, 5}nxt = {2, 4, 1, -1, 3}head = 0。从 head 沿链把各节点的 data 累加,总和是( )。

(2 分)
原创 2026 · 单选 第74题 | 知识点 KJ-26a
第 75 题 单选 未作答

静态链表 data = {7, 9, 3, 1, 5}nxt = {2, 4, 1, -1, 3}head = 0。在值为 99 的节点(下标 11)之后插入空闲下标 55、值为 66 的新节点:先 nxt[5] = nxt[1],再 nxt[1] = 5。插入后从 head 输出的值序列是( )。

(2 分)
原创 2026 · 单选 第75题 | 知识点 KJ-26a
第 76 题 单选 未作答

静态链表 data = {7, 9, 3, 1, 5}nxt = {2, 4, 1, -1, 3}head = 0。删除值为 99 的节点(下标 11)的后继,即执行 nxt[1] = nxt[4]。删除后从 head 输出的值序列是( )。

(2 分)
原创 2026 · 单选 第76题 | 知识点 KJ-26a
第 77 题 单选 未作答

01int data[] = {7, 9, 3, 1, 5};
02int nxt[] = {2, 4, 1, -1, 3};
03int head = 0;
04int pos = -1;
05for (int p = head; p != -1; p = nxt[p])
06    if (data[p] == 5) pos = p;
07cout << pos;

输出是( )。

(2 分)
原创 2026 · 单选 第77题 | 知识点 KJ-26a
第 78 题 单选 未作答

用静态链表从头建链存放读入序列 10,20,3010, 20, 30(尾插,cnt00 起分配下标,nxt[t] = -1 接尾)。建完后 nxt[1]nxt[2] 的值分别是( )。

(2 分)
原创 2026 · 单选 第78题 | 知识点 KJ-26a
第 79 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 2(4 的 next 指回 2)
02Node* slow = head;
03Node* fast = head;
04int steps = 0;
05while (slow != fast || steps == 0) {
06    slow = slow->next;
07    fast = fast->next->next;
08    steps++;
09    if (slow == fast) break;
10}
11cout << slow->data;

输出是( )。

(2 分)
原创 2026 · 单选 第79题 | 知识点 KJ-26a
第 80 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL
02Node* slow = head;
03Node* fast = head;
04while (fast != NULL && fast->next != NULL) {
05    slow = slow->next;
06    fast = fast->next->next;
07}
08cout << slow->data;

输出是( )。

(2 分)
原创 2026 · 单选 第80题 | 知识点 KJ-26a
第 81 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 5 -> NULL,删除倒数第 2 个节点
02int k = 2;
03Node* f = head;
04Node* s = head;
05for (int i = 0; i < k; i++) f = f->next;
06while (f->next != NULL) {
07    f = f->next;
08    s = s->next;
09}
10Node* t = s->next;
11s->next = t->next;
12delete t;
13// 从 head 输出整条链

输出是( )。

(2 分)
原创 2026 · 单选 第81题 | 知识点 KJ-26a
第 82 题 单选 未作答

01// 链表为 1 -> 2 -> 3 -> 4 -> 5 -> NULL
02for (Node* p = head, *q = head->next; q != NULL; p = p->next, q = q->next)
03    cout << q->data << " ";

输出是( )。

(2 分)
原创 2026 · 单选 第82题 | 知识点 KJ-26a
第 83 题 单选 未作答

快指针循环条件 while (fast != NULL && fast->next != NULL) 中,若删去第二个条件只留 fast != NULL,快指针走到两步时可能发生( )。

(2 分)
原创 2026 · 单选 第83题 | 知识点 KJ-26a
第 84 题 单选 未作答

补全头插法插入新节点的关键语句:

01struct Node { int data; Node* next; };
02Node* head = NULL;
03Node* t = new Node;
04t->data = 5;
05t->next = /* 1 */;
06head = t;

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第84题 | 知识点 KJ-26a
第 85 题 单选 未作答

带尾指针建链,补全尾插的关键语句:

01Node* tail = NULL;
02Node* t = new Node;
03t->data = 5;
04t->next = NULL;
05if (head == NULL) head = t;
06else /* 1 */ ;
07tail = t;

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第85题 | 知识点 KJ-26a
第 86 题 单选 未作答

补全链表遍历的循环推进语句:

01int cnt = 0;
02for (Node* p = head; p != NULL; /* 1 */)
03    cnt++;

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第86题 | 知识点 KJ-26a
第 87 题 单选 未作答

删除单链表中 p 的后继节点,补全跨接语句:

Node* t = p->next;
/* 1 */ ;
delete t;

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第87题 | 知识点 KJ-26a
第 88 题 单选 未作答

读入 nn 个数头插建链,补全循环条件:

01Node* head = NULL;
02int n, x;
03cin >> n;
04for (/* 1 */) {
05    cin >> x;
06    Node* t = new Node;
07    t->data = x;
08    t->next = head;
09    head = t;
10}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第88题 | 知识点 KJ-26a
第 89 题 单选 未作答

补全整链释放循环的关键语句:

01while (head != NULL) {
02    /* 1 */ ;
03    head = head->next;
04    delete t;
05}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第89题 | 知识点 KJ-26a
第 90 题 单选 未作答

链表队列(头指针管出队、尾指针管入队)依次执行:入队 11、入队 22、出队、入队 33。从队首到队尾输出,结果是( )。

(2 分)
原创 2026 · 单选 第90题 | 知识点 KJ-26a
第 91 题 单选 未作答

链表栈(头部即栈顶)依次执行:入栈 11、入栈 22、出栈。此时栈顶的值是( )。

(2 分)
原创 2026 · 单选 第91题 | 知识点 KJ-26a
第 92 题 单选 未作答

有序链表 1 -> 4 -> 7,先用有序插入法插入 33,再插入 55,从 head 输出的结果是( )。

(2 分)
原创 2026 · 单选 第92题 | 知识点 KJ-26a
第 93 题 单选 未作答

约瑟夫问题:55 个人编号 1155 围成圈,从 11 号起报数,报到 33 出列,直到只剩一人。最后留下的是( )。

(2 分)
原创 2026 · 单选 第93题 | 知识点 KJ-26a
第 94 题 单选 未作答

图的邻接表存储中,每个顶点挂一条「边链表」,这里对链表的使用方式属于( )。

(2 分)
原创 2026 · 单选 第94题 | 知识点 KJ-26a
第 95 题 单选 未作答

在节点 p 之后插入新节点 t 时,若先执行 p->next = t; 再执行 t->next = p->next;,结果是( )。

(2 分)
原创 2026 · 单选 第95题 | 知识点 KJ-26a
第 96 题 单选 未作答

头插法只写了 t->next = head; 却忘了 head = t;,后果是( )。

(2 分)
原创 2026 · 单选 第96题 | 知识点 KJ-26a
第 97 题 单选 未作答

输出链表每个节点时把循环条件写成 for (Node* p = head; p->next != NULL; p = p->next),直接后果是( )。

(2 分)
原创 2026 · 单选 第97题 | 知识点 KJ-26a
第 98 题 单选 未作答

delete p; 之后又执行 cout << p->data;,这属于( )。

(2 分)
原创 2026 · 单选 第98题 | 知识点 KJ-26a
第 99 题 单选 未作答

链表为空(head == NULL)时直接执行 head->data,结果是( )。

(2 分)
原创 2026 · 单选 第99题 | 知识点 KJ-26a
第 100 题 单选 未作答

双向链表插入节点时只改了 p->next = t; t->prev = p;,漏改了 t->next->prev,后果是( )。

(2 分)
原创 2026 · 单选 第100题 | 知识点 KJ-26a
第 101 题 单选 未作答

补全「删除双向链表中间节点 p」的代码(p 的前驱后继均非空):

01struct Node { int val; Node* prev; Node* next; };
02void delMid(Node* p) {
03    /* 1 */
04    delete p;
05}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第101题 | 知识点 KJ-26a
第 102 题 单选 未作答

双向链表中在结点 p 之后插入结点 sp 有后继),下列四句的正确组合与书写顺序是( )。

(2 分)
原创 2026 · 单选 第102题 | 知识点 KJ-26a
第 103 题 单选 未作答

删除双向链表结点 p(前驱后继均非空),下列写法中错误的是( )。

(2 分)
原创 2026 · 单选 第103题 | 知识点 KJ-26a
第 104 题 单选 未作答

用哑结点统一删除链表中所有值为 x 的节点,补全删除语句:

01Node* eraseAll(Node* head, int x) {
02    Node dummy(0);
03    dummy.next = head;
04    Node* cur = &dummy;
05    while (cur->next) {
06        if (cur->next->data == x) {
07            Node* del = cur->next;
08            /* 1 */
09            delete del;
10        } else {
11            cur = cur->next;
12        }
13    }
14    return dummy.next;
15}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第104题 | 知识点 KJ-26a
第 105 题 单选 未作答

补全 Floyd 快慢指针判环的移动语句(slow 一步、fast 两步):

01bool hasCycle(Node* head) {
02    Node* slow = head;
03    Node* fast = head;
04    while (fast != NULL && fast->next != NULL) {
05        /* 1 */
06        if (slow == fast) return true;
07    }
08    return false;
09}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第105题 | 知识点 KJ-26a
第 106 题 单选 未作答

下面的单链表反转代码有一处错误,应修改的是( )。

01Node* reverse(Node* head) {
02    Node* prev = NULL;
03    Node* current = head;
04    while (current != NULL) {
05        Node* nxt = current->next;
06        current->next = nxt;
07        prev = current;
08        current = nxt;
09    }
10    return prev;
11}

(2 分)
原创 2026 · 单选 第106题 | 知识点 KJ-26a
第 107 题 单选 未作答

补全双向链表 append(尾插)的非空分支:

01void append(int data) {
02    Node* newNode = new Node(data);
03    if (head == NULL) {
04        head = tail = newNode;
05    } else {
06        /* 1 */
07    }
08    ++size;
09}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第107题 | 知识点 KJ-26a
第 108 题 单选 未作答

单向循环链表(head != NULL)在头节点之后插入新节点,补全:

01void insertAfterHead(Node* head, int x) {
02    Node* newNode = new Node;
03    newNode->val = x;
04    /* 1 */
05}

空位 /* 1 */ 处应填( )。

(2 分)
原创 2026 · 单选 第108题 | 知识点 KJ-26a
第 109 题 单选 未作答

双向链表中在结点 p 之前插入结点 s(均非空),正确的四句是( )。

(2 分)
原创 2026 · 单选 第109题 | 知识点 KJ-26a
第 110 题 单选 未作答

双向链表用 headtail 两个指针维护,判断链表为空,下列写法中不能正确工作的是( )。

(2 分)
原创 2026 · 单选 第110题 | 知识点 KJ-26a
第 111 题 单选 未作答

已知指向待删结点本身的指针,单链表与双向链表删除该结点的时间复杂度分别是( )。

(2 分)
原创 2026 · 单选 第111题 | 知识点 KJ-26a、KS-55a
第 112 题 单选 未作答

单向循环链表从 head 出发输出一圈,补全循环:

Node* p = head;
/* 1 {
    cout << p->data << " ";
    p = p->next;
} /* 2 */

空位 /* 1/* 2 处应分别填( )。

(2 分)
原创 2026 · 单选 第112题 | 知识点 KJ-26a
第 113 题 单选 未作答

要删除单链表中结点 p(非尾结点)但拿不到头指针,可行的做法是( )。

(2 分)
原创 2026 · 单选 第113题 | 知识点 KJ-26a
第 114 题 单选 未作答

「二分查找只适用于数组,不适合链表」的根本原因是( )。

(2 分)
原创 2026 · 单选 第114题 | 知识点 KJ-26a、KJ-31d
第 115 题 单选 未作答

操作系统把 CPU 时间片轮流分给一组进程,一个进程时间片用完就切到下一个,轮完一圈回到开头。最适合建模这一轮转场景的结构是( )。

(2 分)
原创 2026 · 单选 第115题 | 知识点 KJ-26a