2018年武汉纺织大学数学与计算机学院848数据结构考研仿真模拟五套题
● 摘要
一、填空题
1. 在一棵m 阶B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的关键字的个数是_____; 若在某结点中删除一个关键字而导致结点合并,则该结点中原有的关键字的个数是_____。
【答案】
【解析】m 阶B-树除根结点和叶子结点外,结点中关键字个数最多是m -1,最少
2. 应用prim 算法求解连通网络的最小生成树问题。 边。(始顶点号,终顶点号,权值
)
(1)针对如图所示的连通网络,试按如下格式给出在构造最小生成树过程中顺序选出的各条
(2)下面是Prim 算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。
的值在
图的顶点数,应由用户定义
用二维数组作为邻接矩阵表示
生成树的边结点
边的起点与终点
边上的权值
最小生成树定义
从顶点rt 出发构造图G 的最小生成树T , rt 成为树的根结点
初始化最小生成树
T
第 2 页,共 43 页
中
依次求MST 的候选边
遍历当前候选边集合
选具有最小权值的候选边
图不连通,出错处理
修改候选边集合
【答案】(1)
(2)
【解析】Prim 算法的执行类似于寻找图的最短路径的Dijkstra 算法。假设是N 上最小生成树边的集合。算法从属于
的边为止。
3. 分别采用堆排序,快速排序,起泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是_____算法。
【答案】起泡;快速
【解析】当初态为有序表时,冒泡排序只需要进行一趟比较即可,此时时间复杂度为O(n),
2
而快速排序算 法需要比较的次数达到最大,时间复杂度为O (n) 。
4. 数组的存储结构采用_____存储方式。
是连通图
,
,v ,
直到
,开始,重复执行下述操作:在所有u 属于
加入集合
,同时将并入
属于E 中找一条代价最小的边
【答案】顺序存储结构
【解析】数组本身的存储结构是线性的,也就是说它是连续存储的。
5. 设数组数组中任一元素A[i,j]均占内存48个二进制位,从首地址2000开始连续存放在主内存里,主内存字长为16位,那么
(1)存放该数组至少需要的单元数是_____;
(2)存放数组的第8列的所有元素至少需要的单元数_____; (3)数组按列存储时,元素A[5,8]的起始地址是_____。 【答案】270;27;2204
【解析】数组的元素个数为9*10=90,因为每个元素占内存48个二进制位,即6个字节。故总需要90*6=540个字节,因为主内存字长为16位,即2个字节,所以至少需要540/2=270
第 3 页,共 43 页
个单元数。第8列有9个元素,共占9*6=54个字节,因此至少需要54/2=27个单元数。由题知,每个元素占3个单元。按列存储时,A[5,8]的起始地址为2000+[(8﹣1)*9+(5﹣0)]*3=2204。
6. 设有一个10阶对称矩阵A 采用压缩存储方式(以行为主序存储:a 11=l) , 则a 85的地址为_____。
【答案】33
【解析】设存储的元素的行标为i ,列标为j 。若i >=j ,则
的地址为l +2+... +i ﹣l +j
=i(i﹣l)/2+j 。若i <j 。则的地址为j(j﹣l)/2+i 。将i =8,j =5代入得33。
7. 如某二叉树有20个叶结点,有30个结点仅有一个孩子,则该二叉树的总结点数为_____。
【答案】69
【解析】二叉树叶结点数为20, 则度为2的结点数为19, 所以总的结点数为20+19+30=69。
8. 在单链表中设置头结点的作用是_____。
【答案】方便运算
9. 求图的最小生成树有两种算法,_____算法适合于求稀疏图的最小生成树e
【答案】克鲁斯卡尔
【解析】克鲁斯卡尔算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法,这种算法中,采用堆来存放边的集合,适合于边稀疏而顶点较多的图。
10.在下面的程序段中,对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次。
二、解答题
11.已知一个整数序列
且又如要求:
(1)给出算法的基本设计思想。 (2)根据设计思想, 采用C 或
或Java 语言描述算法, 关键之处给出注释。
第 4 页,共 43 页
,
其中
, 则称x 为A 的主元素。例如
, 若存在
, 则称5为主元素;
则A 中没有主元素。假设A 中的n 个元素保存在一个一维数组中,
请设计一个尽可能高效的算法, 找出A 的主元素。若存在主元素, 则输出该元素; 否则输出-1。
相关内容
相关标签