第二节-04 链表与指针阅读
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
第二节-04 链表与指针阅读
CSP-J 第一轮专项训练。 本题全部为单项选择题,提交后自动判分。
1.
单链表的一个结点通常至少包含( )。
{{ select(1) }}
- A. 数据域和指向下一个结点的指针
- B. 两个栈
- C. 一个二维数组
- D. 只有下标
2.
若 head 直接指向首结点,则空链表通常可表示为( )。
{{ select(2) }}
- A.
head == nullptr - B.
head == 1 - C.
head->data == 0 - D.
head->next == head
3.
普通非循环单链表最后一个结点的 next 通常为( )。
{{ select(3) }}
- A.
head - B. 自己
- C.
nullptr - D. 第一个结点的数据
4.
遍历单链表时,从当前结点 p 移动到下一个结点应写( )。
{{ select(4) }}
- A.
p++ - B.
p = p->next - C.
p = head - D.
p->data++
5.
链表为 2 -> 5 -> 9 -> null,p 初始指向 head,连续执行两次 p=p->next 后,p->data 为( )。
{{ select(5) }}
- A. 2
- B. 5
- C. 9
- D. 无法确定
6.
在 p 指向的结点后插入新结点 x,正确的关键顺序是( )。
{{ select(6) }}
- A.
p->next=x; x->next=p->next; - B.
x->next=p->next; p->next=x; - C.
x=p; p=x->next; - D.
delete p; p=x;
7.
原链表局部为 A -> X -> B,p 指向 A。若要把 X 从链条中绕过,可执行( )。
{{ select(7) }}
- A.
p->next = p - B.
p->next = p->next->next - C.
p = nullptr - D.
p->data = 0
8.
链表为 3 -> 6 -> 8 -> null,执行:
int sum = 0;
Node* p = head;
while (p != nullptr) {
sum += p->data;
p = p->next;
}
最终 sum 为( )。
{{ select(8) }}
- A. 11
- B. 14
- C. 17
- D. 18
9.
有 n 个结点的普通单链表,从 head 查找最后一个结点,时间复杂度通常为( )。
{{ select(9) }}
- A. O(1)
- B. O(log n)
- C. O(n)
- D. O(n²)
10.
与普通数组相比,单链表不擅长的操作是( )。
{{ select(10) }}
- A. 已知结点后插入
- B. 已知结点后删除
- C. 按下标随机访问第 k 个元素
- D. 从头顺序遍历
11.
使用头插法依次插入数据 1、2、3,最终从 head 开始的顺序是( )。
{{ select(11) }}
- A. 1 -> 2 -> 3
- B. 3 -> 2 -> 1
- C. 2 -> 1 -> 3
- D. 1 -> 3 -> 2
12.
下列场景更适合使用链表而不是普通数组的是( )。
{{ select(12) }}
- A. 大量按下标读取
- B. 已知结点位置并频繁在附近插入、删除
- C. 需要二分查找
- D. 需要连续内存并高频随机访问
粤公网安备44195502000252号