2018年中国地质大学(武汉)信息工程学院952软件综合之数据结构考研基础五套测试题
● 摘要
一、填空题
1. 设m 、n 均为自然数,m 可表示为一些不超过n 的自然数之和,f(m,n) 为这种表示方式的数目。例f(5,3) =5, 有5种表示方式:3+2, 3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
①以下是该函数的程序段,请将未完成的部分填入,使之完整。
_____
_____;
}
_____;
}
,
_____)
②执行程序,f(6,4) =_____。
【答案】①1; 1; f(m, n ﹣1) ; n ②9
2. 模式串
【答案】01122312
3. 在下面的程序段中,对X 的赋值语句的时间复杂度为_____ (表示为n 的函数) 。
【答案】1+(1+2) +(1+2+3) +…+(l+2+…+n) =n(n+1)(n+2)/6,即O(n)
【解析】当i =l 时,赋值语句就被执行了一次。当i =2时,赋值语句被执行了1+2次。当i =3时,赋值语句被执行了1+2+3次。...... 可以推出赋值语句总共被执行了1+(1+2) +(1+2+3) +…+(l+2+... +n) =n(n+1)(n+2)/6次。
4. 无用单元是指_____,例_____
【答案】用户不再使用而系统没有回收的结构和变量;
的next 函数值序列为_____。
5. 阅读下列程序说明和程序,填充程序中的_____。
【程序说明】本程序完成将二叉树中左、右孩子交换的操作。交换的结果如下所示。
本程序采用非递归的方法,设立一个堆栈stack 存放还没有转换过的结点,它的栈顶指针为tp 。交换左、右子树的算法为:
(1)把根结点放入堆栈。
(2)当堆栈不空时,取出栈顶元素,交换它的左、右子树,并把它的左、右子树分别入栈。
(3)重复(2)直到堆栈为空时为止。
【答案】
【解析】本题主要使用堆栈完成了二叉树左右子树交换的操作。首先根结点进栈,然后判断栈是否为空,如果不为空,则取栈顶元素,交换取出结点的左右指针。并将左右指针分别进栈,重复这一操作。完成二叉树左右孩子的交换。
6. 数据结构中评价算法的两个重要指标是_____。
【答案】算法的时间复杂度和空间复杂度
7.
【答案】5
8. 设正文串长度为n ,模式串长度为m ,则串匹配的KMP 算法的时间复杂度为_____。
【答案】O(m+n)
9. 索引顺序文件既可以顺序存取,也可以 _____存取。
【答案】随机
10.已知一循环队列的存储空间为
则此循环队列判满的条件是_____ 【答案】
,其中n >m ,队头和队尾指针分别为front 和rear ,=_____
11.用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。
【答案】O(1);O(n);O(1);O(1)
【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。
12.在循环队列中,队列长度为n ,存储位置从0到,n ﹣1编号,以rear 指示实际的队尾元素,现要在此队列中插入一个新元素,新元素的位置是_____。
【答案】
二、单项选择题
13.假设变址寄存器R 的内容为1000H , 指令中的形式地址为2000H ; 地址1000H 中的内容为2000H , 地址2000H 中的内容为3000H , 地址3000H 中的内容为4000H , 则变址寻方式下访问到的操作数是( )
A.1000H
B.2000H
C.3000H
D.4000H
【答案】D
【解析】
根据变址寻址的
操作数的实际地址,
由题可知, 变址寄存器的内容与形式地址的内容相加之后得到, 根据实际地址访问内存, 获取操作数4000H 。
14.采用开址定址法解决冲突的哈希查找中,发生集聚的原因主要是( )。
A. 数据元素过多
B. 负载因子过大
C. 哈希函数选择不当
D. 解决冲突的算法选择不好
【答案】D
【解析】开放定址法就是从发生冲突的那个单元开始,按照一定的次序,从散列表中查找出一个空闲的存储单元,把发生冲突的待插入元素存入到该单元中的一类处理冲突的方法。