2017年上海市培养单位上海生命科学研究院864程序设计之数据结构考研题库
● 摘要
一、填空题
1. —棵深度为k 的平衡二叉树, 其每个非终端结点的平衡因子均为0,则该树共有_____个结点。
【答案】
【解析】每个非终端结点都是0表示该平衡二叉树没有高度落差。也就是说它是一棵满二叉 树。故结点个数为
2. 下面描述的是一种构造最小生成树算法的基本思想。设要处理的无向图包括n
个顶点
用相邻矩阵A 表示,边的权全是正数。请在下列划线处填上正确叙述。
(1)若
是边,则
的值等于_____,若
不是边,则
的值是一个比任
何边的权,矩阵的对角线元素全为0。
(2)构造最小生成树过程中,若顶点Vi 已包括进生成树,就把相邻矩阵的对角线元素A (i , i )置成若
【答案】(1)
已包括进生成树,就把矩阵元素A (i ,j )置成 边上的权值;都大的数;(2)1; 负值;(3)为负;边
(3)算法结束时,相邻矩阵中。
3. 在顺序存储的二叉树中,编号为i 和j 的两个结点处在同一层的条件是_____。
【答案】要加“虚结点”。
设编号为
和
的结点在顺序存储中的下标为
和
。
4. 模式串
5. 线性表
【答案】(n -1)/2
【解析】删除第一个元素需要移动n -i 次,以此类推,删除最后一个元素需要移动0次。平均次数为
的next 函数值序列为_____。
,
则结点
和
在同一层上的条件是
【解析】用顺序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,
【答案】01122312
用数组表示,假定删除表中任一元素的概率相同,则删除一个元素
平均需要移动元素的个数是_____。
6. 在循环队列中,队列长度为n ,存储位置从0到,
【答案】
编号,以rear 指示实际的队尾元素,现
要在此队列中插入一个新元素,新元素的位置是( )。
7. 无用单元是指_____,例_____
【答案】用户不再使用而系统没有回收的结构和变量;
8. 在双向循环链表中,向P 所指的结点之后插入指针f 所指的结点,其操作是_____、_____、_____、_____。
【答案】
9. 外排序的基本操作过程是_____和_____。
;归并 【答案】生成有序归并段(顺串)
10.在n 个顶点的非空无向图中,最多有_____个连通分量。
【答案】n
【解析】当n 个顶点之间没有边,都是孤立的顶点时,有n 个连通分量。
11.已知链队列的头尾指针分别是f 和r , 则将值x 入队的操作序列是_____。
【答案】
【解析】队列采用链式存储结构,先分配一个节点的内存,然后在队尾添加该节点。
12.在单链表L 中,指针P 所指结点有后继结点的条件是_____
【答案】
【解析】指针所指节点的指针域所指向的元素非空,说明该指针所指节点有后继结点。
二、选择题
13.二叉树在线索化后,仍不能有效求解的问题是( )。
A. 前序线索二叉树中求前序后继 B. 中序线索二叉树中求中序后继 C. 中序线索二叉树中求中序前驱 D. 后序线索二叉树中求后序后继 【答案】D
【解析】后序线索二叉树求后序后继要分3种情况,比较复杂,不是仅仅线索化后就能求解的,算法上还要要分情况讨论。
14.数据序列结果。
A. 选择排序 B. 起泡排序 C. 插入排序 D. 堆排序 【答案】C
只能是下列排序算法中的( )的两趟排序后的
【解析】选择排序、起泡排序和堆排序两趟排序后,在序列的某一端应该有序列的两个最大值或者最小值。
15.用数组r 存储静态链表,结点的next 域指向后继,工作指针j 指向链中结点,使j 沿链移动的操作为( )。
【答案】A
【解析】因为是用数组存储,这里所说的工作指针j 相当于数组的下标,结点是存储一个值域和next 域,next 域就是存放下一个结点的下表,所以只要将next 域中的值赋给j 就可以实现j 沿链移动。
16.采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是( )。
A. 递归次数与初始数据的排列次序无关
B. 每次划分后,先处理较长的分区可以减少递归次数 C. 每次划分后,先处理较短的分区可以减少递归次数 D. 递归次数与每次划分后得到的分区的处理顺序无关 【答案】D
【解析】快速排序是递归的,递归过程可用一棵二叉树给出,递归调用层次数与二叉树的深,采用快速排序方法,其对应递归调用度一致。例如:待排序列{48, 62,35, 77, 55, 14, 35, 98)过程的二叉树如下图所示。
在最坏情况下,若初始序列按关键码有序或基本有序时,快速排序反而蜕化为冒泡排序。即其对应递归调用过程的二叉树是一棵单支树。因此快速排序的递归次数与初始数据的排列次序有关。但快速排序的递归次数与每次划分后得到的分区处理顺序无关,即先处理较长的分区或先处理较短的分区都不影响递归次数。