内容正文:
第2章 数组与链表-综合与评价(分层作业)
【夯实基础】
1 . 由n个节点链接成的单链表如图所示,其中head为头指针。
使用列表link模拟该链表结构,每个节点包含数据域和指针域,如图中最后一个节点可以表示为[98,-1]。现要删除指针p所指向的节点,可以实现该操作的语句有( )
① link[p][1] = - 1 ② link[head][1] = q
③ link[head][1] = link[p][1] ④ head = link[p][1]
A.①② B.①③ C.②③ D.②④
2 . 二维数组a的大小为n行m列,若a的存储方式为行优先存储,存储a中每个元素所需的存储空间为x,数组元素a[0][0]的存储位置为s,则数组元素a[i][j]的存储位置为( )
A. s+(i*n+j)*x B.s+(i*m+j)*x C.s+(i+j*n)*x D.s+(i+j*m)*x
3. 下列哪个特性不属于数组的特点?( )
A. 所有元素的数据类型相同
B. 可以通过下标直接访问任意元素
C. 存储空间固定不变
D. 插入和删除元素操作高效
4. 链表相比于数组,在哪种情况下表现得更为高效?( )
A. 需要频繁查找元素
B. 需要随机访问元素
C. 需要频繁在中间插入和删除元素
D. 需要存储大量静态数据
5. 链表中的节点通常包含哪两部分?( )
A. 数据域和控制域
B. 数据域和指针域
C. 指令域和地址域
D. 标志域和内容域
6. 单向链表和双向链表的区别在于?( )
A. 单向链表每个节点有一个指针,双向链表每个节点有两个指针
B. 单向链表的节点存储空间小于双向链表
C. 单向链表可以循环,双向链表不可以
D. 单向链表的访问速度优于双向链表
7. 在单向链表中,如何访问第n个节点?( )
A. 从头节点开始遍历n次
B. 通过下标直接定位
C. 从尾节点开始反向遍历n次
D. 无法直接访问,必须遍历整个链表
8. 创建一个空链表时,通常会设置什么来表示链表的起始?( )
A. 尾指针
B. 头指针指向一个空节点
C. 头指针指向NULL或-1
D. 无需设置特殊标记
【巩固提升】
9. 在Python中,如何使用列表模拟数组?( )
A. 通过列表的索引访问元素,如同数组下标
B. 列表中的元素类型必须一致
C. 列表的存储方式与数组完全相同
D. 列表长度一旦定义就不能改变
10. 下列关于链表节点插入操作的描述,哪个是正确的?( )
A. 插入操作总是从链表头部开始
B. 只需要修改新节点的指针域即可完成插入
C. 必须先找到插入位置的前驱节点,再修改前驱节点的指针域
D. 链表插入操作的时间复杂度总是O(1)
11. 二维数组qp[0][0]=0,qp[0][1]=1,qp[0][2]=0,qp[0][3]=0表示的是什么?( )
A. 一个包含四个元素的一维数组
B. 一个4x4的棋盘,第一行有两个黑子
C. 一个4x4的棋盘,第一行有1个黑子,其余为空
D. 一个表示黑白棋布局的链表
12. 如果一个链表的头指针为head,要访问链表中第i个节点,需要进行几次指针移动?( )
A. i次
B. i-1次
C. i+1次
D. 无法确定,取决于链表长度
13. 链表和数组在存储空间上的主要区别是什么?( )
A. 链表需要连续的内存空间,数组则不需要
B. 数组需要连续的内存空间,链表则不需要
C. 两者都需要连续的内存空间
D. 两者都不需要连续的内存空间
【拓展应用】
14. 数组是一种采用哪种存储结构的数据结构?( )
A. 顺序存储结构
B. 非顺序存储结构
C. 索引存储结构
D. 散列存储结构
15. 如果要在一个已有的链表中删除一个节点,需要修改哪些节点的指针?( )
A. 只需要修改该节点的前驱节点
B. 只需要修改该节点的后继节点
C. 需要修改该节点的前驱节点和后继节点
D. 不需要修改任何节点的指针,直接释放该节点的内存
参考答案:
【夯实基础】
1. C 解析:本题考查数据结构链表操作相关内容。要删除头节点后面的节点,只需将头节点的next指针指向下一个节点的下一个