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

2017年甘肃农业大学0951农业推广硕士数据结构(加试)复试仿真模拟三套题

  摘要

一、应用题

1. 三维数组

的存储首地址。

【答案】数组占的存储字节

2. 一个循环队列的数据结构描述如下:

给出循环队列的队空和队满的判断条件,并且分析一下该条件对队列实际存储空间大小的影响,如果为了不损失存储空间,你如何改进循环队列的队空和队满的判断条件?

【答案】(1)队空:

(2)队满:

这种判断方法,会“牺牲一个存储单元”。为了不损失存储空间,可以通过设置标志位的方式来进行队空和队满的判断。设标记tag ,tag 等于0情况下,若删除时导致front=rear为队空; tag=l情况下,若因插入导致front=rear则为队满。

3. 请回答下列关于堆(Heap )的一些问题:

(1)堆的存储表示是顺序的还是链接的?

(2)设有一个最小堆,即堆中任意结点的关键码均不大于它的左子女和右子女的关键码。其具有最大值的元素可能在什么地方?

(3)对n 个元素进行初始建堆的过程中,最多做多少次数据比较(不用大0表示法)? 【答案】(1)堆的存储是顺序的。

(2)最大值元素一定是叶结点,在最下两层上。

(3)在建含有n 个元素、深度为h 的堆时,其比较次数不超过4n ,推导如下: 由于第i 层上的结点数至多是

以它为根的二叉树的深度为

则调用

次筛选算

法时总共进行的关键字比较次数不超过下式之值:

第 2 页,共 22 页

的每个元素的长度为4个字节,试问该数组要占多少个字节

的存储空间? 如果数组元素以行优先的顺序存储,设第一个元素的首地址是100,试求元素

的存储地

4. 为什么在倒排文件组织中,实际记录中的关键字域可删除以节约空间? 而在多重表结构中这样做为什么要牺牲性能?

【答案】因倒排文件组织中,倒排表有关键字值及同一关键字值的记录的所有物理记录号,可方便地查询具有同一关键字值的所有记录;而多重表文件中次关键字索引结构不同,删除关键字域后查询性能受到影响。 5. 设有n 个元素采用起泡排序法进行排序,通常需要进行多少趟排序? 对于第J 趟起泡通常需要进行多少次关键字比较? 在程序设计中如何设置判断条件,有可能使起泡趟数可以减少并且能完成排序。

【答案】n 个元素采用起泡排序法进行排序,通常需要进行n-1趟排序。第j 趟起泡排序要进行

次比较。在一趟排序中,若没有记录交换,则表示排序完成。因而,可通过设标记来控制排

6. 二叉树的带权路径长度(WPL )是二叉树中所有叶结点的带权路径长度之和,给定一棵二叉树T ,采用二叉链表存储,节点结构为:

其中叶节点的weight 域保存该结点的非负权值。设root 为指向T 的根节点的指针,设计求T 的WPL 的算法。要求:

(1)给出算法的基本设计思想;

(2)使用C 或C++语言,给出二叉树结点的数据类型定义;

(3)根据设计思想,采用C 或C++语言描述算法,关键之处给出注释。

【答案】(1)算法的基本思路是利用利用递归的思想来求解二叉树的带权路径长度,如果当前节点不是叶子节点,那么当前节点为根的树的带权路径长度便等于它的子树的带权路径长度之和,对于此函数要传入一个当前节点的树高的形参,那么递归调用孩子节点时只需要将这个形参加一即可。

(2)

typedef struct BiNode

(3)具体算法实现如下:

第 3 页,共 22 页

序结束,下面语句段说明了标记flag 的使用。

如果当前节点为空节点

//如果当前节点的左右孩子节点都为空,即当前节点为叶子节点,直接返回当前节点的

WPL

//如果当前节点不是叶子节点,则对当前节点的左右子树进行递归,返回左右子树WPL 之和

7. 已知图的邻接矩阵为:

当用邻接表作为图的存储结构,且邻接点都按序号从大到小排列时,试写出: (1)以顶点V1为出发点的唯一的深度优先遍历序列; (2)以顶点V1为出发点的唯一的广度优先遍历序列; (3)该图唯一的拓扑有序序列。

1)V1,V4,V9, V10,V7, V6, V8,V3,V2, V5 【答案】((2) V1, V4, V3, V2, V9, V7, V6, Y5, V10, V8 (3) V1, V2, V5, V3, V4, V6, V8, V7, V9, VIO

8. 设G=(V , E)以邻接表存储,如图所示,试画出图1的深度优先生成树和广度优先生成树。

图1

【答案】设从顶点1开始遍历,则深度优先生成树如图2所示,广度优先生成树如图3所示:

第 4 页,共 22 页