当前位置:问答库>考研试题

2017年宁波大学计算机软件基础(C程序设计+数据结构)之数据结构复试实战预测五套卷

  摘要

一、应用题

1. 画出同时满足下列两个条件的两棵不同的二叉树。

(1)按前序遍历二叉树的顺序为ABCDE 。

(2)高度为5其对应的树(森林)的高度最大为4。

【答案】(1)满足条件的二叉树如图1所示:

图1

(2)满足条件的二叉树如图2所示:

图2

2. 带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径,假设从初始顶点到目标顶点之间存在路径,现有一种解决该问题的方法:

①该最短路径初始时仅包含初始顶点,令当前顶点为初始顶点; ②选择离最近且尚未在最短路径中的顶点V ,加入到最短路径中,修改当前顶点

请证明之;否则请举例说明。

【答案】题目中方法不一定能(或不能)求得最短路径。举例说明:

第 2 页,共 36 页 ③重复步骤②,直到是目标顶点时为止。请问上述方法能否求得最短路径? 若该方法可行,

图(a )

图(b )

图(a )中,假设初始顶点1到目标顶点4之间有一条边,权值x=2。显然图(a )中这顶点1和顶点4之间的最短路径长度为2。若按照题目中给定的方法找到的路径为初始顶点1经过中间结点2、3到目标顶点4, 即初始顶

显然, 一目标顶点4, 所经过的边的权值分别

因此按照题目中给定的方法所求得的路径并不是这两个顶点之间的最短路径。

图(b )中,假设初始顶点为1、目标顶点为4, 欲求从顶点1到顶点4之间的最短路径。显然,按照题目中给定的方法无法求出顶点1到顶点4的路径,而事实上顶点1到顶点4的最短路径为1到4。

3. 请写出应填入下列叙述中( )内的正确答案。

排序有各种方法,如插入排序、快速排序、堆排序等。

设一数组中原有数据如下:15,13,20,18,12,60。下面是一组用不同排序方法进行一遍排序后的结果。

( )排序的结果为:12,13,15,18,20,60

( )排序的结果为:13,15,18,12,20,60

( )排序的结果为:13,15,20,18,12,60

( )排序的结果为:12,13,20,18,15,60

【答案】①快速排序②起泡排序③直接插入排序④堆排序

4. 将关键字序列(7, 8, 30,11,18, 9,14)散列存储到散列表中,散列表的存储空间是一个下标从0开始的一维数组。散列函数是:

列法,要求装填(载)因子为0.7。

(1)请画出所构造的散列表。

(2)分别计算等概率情况下查找成功和查找不成功的平均查找长度。

【答案】(1)要求装填因子为0.7, 数组的长度应该为7/0.7=10, 数组下标为0〜9。各关键字的散列函数值如下表:

采用线性探测法再散列法处理冲突,所构造的散列表为:

第 3 页,共 36 页

处理冲突采用线性探测再散

(2)查找成功时,在等概率情况下,查找表中每个元素的概率是相等的,因此是根据表中元素个数来计算平均查找长度,各关键字的比较次数如下表所示:

故查找成功的平均查找长度为(1+1+1+1+3+3+2)/7=12/7。

在不成功的情况下,由于任意关键字key , H (key )的值只能是0〜6之间,H (key )为0需要比较3次,H (key )为1需要比较2次,H (key )为2需要比较1次,H (key )为3需要比较2次,H (key )为4需要比较1次,H (key )为5需要比较5次,H (key )为6需要比较4次,共7种情况,如下表所示:

所以,在等概率下,查找失败的平均查找长度为:(3+2+1+2+1+5+4)/7=18/7。

5. 系统中有多个生产者进程和消费者进程,,共享用一个可以存1000个产品的缓冲区(初始为空)当缓冲区为未满时,生产者进程可以放入一件其生产的产品,否则等待;当缓冲区为未空时,消费者进程可以取走一件产品,否则等待。要求一个消费者进程从缓冲区连续取出10件产品后,其他消费者进程才可以取产品,请用信号量

求写出完整的过程;并指出所用信号量的含义和初值

【答案】设置5个信号量

empty :表示缓冲区是否为空,初值为1000

full : 表示缓冲区是否为满,初值为0

mutex 1:生产者之间的互斥信号,初值为1

mutex2:消费者之间的互斥信号,初值为1

available :当前消费者能否访问缓冲区,初值为1

定义变量in , out 分别为生产者和消费者进程所要使用的指针,指向下一个可用的缓冲区单元,MaXNum= 1000 为缓冲区的大小,count 标志当前消费者已经取的产品的数量,初值为0

生产者进程:

生产一个产品;

产品送入buffer (in );

第 4 页,共 36 页

操作实现进程间的互斥和同步,要