#CSPJDSR01. CSP-J 数据结构|R01 结构体、指针与单链表
CSP-J 数据结构|R01 结构体、指针与单链表
CSP-J 数据结构|R01 结构体、指针与单链表
训练重点: 结构体成员访问、指针解引用、头结点、链表插入删除、时间复杂度
每题只有一个正确选项。建议按 CSP 初赛方式独立完成,程序阅读题必须在草稿纸上逐步模拟。
第 1 题
已知 student a; student *p=&a;,下列能正确给成员 score 赋值为 90 的写法是( )。
{{ select(1) }}
a->score=90;p.score=90;p->score=90;*p.score=90;
第 2 题
执行下面代码后,x 的值是( )。
int x=7;
int *p=&x;
*p=12;
{{ select(2) }}
- 7
- 12
- x 的地址
- 无法确定
第 3 题
在“带头结点”的单链表中,若 head 指向头结点,则空链表通常用哪一个条件判断?
{{ select(3) }}
head==nullptrhead->next==nullptrhead->data==0head->next==head
第 4 题
普通单链表中,访问第 k 个结点通常需要的时间复杂度是( )。
{{ select(4) }}
O(1)O(log n)O(n)O(n^2)
第 5 题
已知 p 指向结点 A,A 后面原来是 B。现在要在 A 后插入新结点 s,正确顺序是( )。
{{ select(5) }}
p->next=s; s->next=p->next;s->next=p->next; p->next=s;s=p->next; p=s;p=s; s->next=p->next;
第 6 题
已知 pre 指向待删除结点 p 的前驱,删除 p 的关键语句应是( )。
{{ select(6) }}
p=p->next;pre=p;pre->next=p->next;p->next=pre;
第 7 题
执行 delete p; 后,下列说法正确的是( )。
{{ select(7) }}
- 可以继续访问
p->data - 可以继续访问
p->next p一定自动变成nullptr- 不应再通过
p访问被释放对象
第 8 题
执行下面代码后,a 和 b 的值分别是( )。
int a=3,b=8;
int *p=&a;
*p=5;
p=&b;
*p=10;
{{ select(8) }}
- 3 和 8
- 5 和 8
- 3 和 10
- 5 和 10
第 9 题
设链表为 10 -> 20 -> 30 -> 40 -> nullptr,p 指向值为 20 的结点。执行 p->next = p->next->next; 后,从 head 开始的链表是( )。
{{ select(9) }}
10 -> 20 -> 30 -> 4010 -> 20 -> 4010 -> 30 -> 4020 -> 30 -> 40
第 10 题
若已知某个链表结点 p 的地址,要在 p 后插入一个新结点,除动态申请结点外,核心指针修改次数是常数次,因此该操作的时间复杂度是( )。
{{ select(10) }}
O(1)O(log n)O(n)- 与链表长度平方成正比
作答要求
- 栈题:画清 栈底 / 栈顶。
- 队列题:标清 队首 / 队尾。
- 循环队列:每次移动都写出取模后的下标。
- 链表题:逐句修改
next箭头,不要只靠心算。 - STL 题:特别注意函数是否会改变容器内容。
粤公网安备44195502000252号