2018年云南大学软件学院904计算机程序设计[专业硕士]之数据结构考研基础五套测试题
● 摘要
一、填空题
1. 设正文串长度为n ,模式串长度为m ,则串匹配的KMP 算法的时间复杂度为_____。
【答案】O(m+n)
2. 数组的存储结构采用_____存储方式。
【答案】顺序存储结构
【解析】数组本身的存储结构是线性的,也就是说它是连续存储的。
3. 从平均时间性能而言,_____排序最佳。
【答案】快速
【解析】快速算法的平均时间复杂度为nlogn 。
4. 已知如下程序段:
语句1执行的时间复杂度为_____:语句2执行的时间复杂度为_____:语句3执行的时间复杂度为_____:语句4执行的时间复杂度为_____。
【答案】(1)n+1 (2)n
(3)n(n+3)/2 (4)n(n+l)/2
【解析】语s 句1执行到不符合条件情况下,执行了n +1次。当语句1不符合条件了是不会执行语句2的,所以语句2被执行了n 次。语句3每次都要执行到不符合条件,故为2+3+4...... +(n+l) 加起来就是n(n+3)/2。语句3不符合条件了是不会执行语句4的。所以语句4被执行了1+2+3...... +n 即n(n+l)/2。
5. 阅读下列程序,指出其功能,并写出空格处应填上的语句。
【答案】
【解析】本题是在哈希表中插入值为item 的元素,如该元素已在哈希表中,报告出错。
6. 阅读下列程序说明和程序,填充程序中的_____。
【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示。 本程序采用非递归的方法,设立一个堆栈stack 存放还没有转换过的结点,它的栈顶指针为tp 。交换左、右子树的算法为:
(1)把根结点放入堆栈。
(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。 (3)重复(2)直到堆栈为空时为止。
【答案】
【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈是否为空,如果不为空,则取栈顶元素,交换取出结点的左右指针。并将左右指针分别进栈,重复这一操作。完成二叉树左右孩子的交换。
二、判断题
7. —个排序算法是否稳定,是指该算法在各种情况下的时间效率是否相差不大。( )
【答案】×
【解析】排序的稳定性指:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序, 这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri 在rj 之前,而在排序后的序列中,ri 仍在ij 之前,则 称这种排序算法是稳定的;否则称为不稳定的。
8. 设栈采用顺序存储结构。若已有i-1个元素入栈,则将第i 个元素入栈时,入栈算法的时间复杂性为O(i)。( )
【答案】 ×
【解析】由于该栈采用顺序存储结构,时间复杂度应该为O(1)。
9. 栈和队列都是限制存取点的线性结构。( )
【答案】 √
10.3阶的B-树是平衡的3路搜索树。反之,一棵平衡的3路搜索树是3阶B-树。( )
【答案】×
【解析】3路搜索树并不具有3阶B-树的性质。因此一棵平衡的3路搜索树不一定是3阶B-树。
11.一般来说,若深度为k 的n 个结点的二叉树只有最小路径长度,那么从根结点到第k ﹣1层具有的最多结点数为余下的
【答案】 √
【解析】求最小路径长度,即构成哈夫曼树,当哈夫曼树为k ﹣1层全满时,此时从根结点到第k ﹣1层具有最大的结点数为
12.一个树形的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现。( )
【答案】 √
【解析】树的前序遍历和后序遍历叶子节点的相对次序是不变的,都遵循左右的次序。
个结点在第k 层的任一位置上。( )
三、单项选择题
13.假定有4个整数用8位补码分别表示为
放在一个8位寄存器中, 则下列运算会发生溢出的是( )。
A. B. C. D. 【答案】B
【解析】用补码表示时8位寄存器所能表示的整数范围为数
,
, 在4个选项中, 只有
。现在4个整数都是负
, 结果溢出, 其余3个算式结果
。若将运算结果存
都未超过127, 不发生溢出
14.在OSI 参考模型中,自下而上第一个提供端到端服务的层次是( ).
A. 数据链路层