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

2017年中国地质大学(武汉)信息工程学院873程序设计基础[专业学位]之数据结构考研仿真模拟题

  摘要

一、填空题

1. 在一个具有n 个单元的顺序栈中,假定以地址高端(即下标为n 的单元)作为栈底,以top 作为栈顶指针,则当向栈中压入一个元素时,top 的变化是top=_____。

【答案】

【解析】由于栈底在地址高端,栈中压入一个元素时,栈顶向地址底端移动一个单位,

所以

2. —棵有个结点的满二叉树有_____个度为1的结点、有_____个分支(非终端)结点和_____个叶子,该满二叉树的深度为_____。

【答案】

【解析】满二叉树没有度为1的结点,度为0的结点等于度为2的结点个数+1。

3. 假定有k 个关键字互为同义词,若用线性探测再哈希法把这k 个关键字存入哈希表中,至少要进行_____次探测。

【答案】

【解析】当该关键字发生冲突时,用线性探测不会遇到别的关键字冲突,这个时候需要探测 的次数最小。总次数为

4. 关键码序列(Q ,H ,C ,Y ,Q ,A ,M ,S ,R ,D ,F ,X ),要按照关键码值递增的次序进行排序,若采用初始步长为4的希尔排序法,则一趟扫描的结果是_____; 若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是_____。

【答案】(Q ,A ,C ,S ,Q ,D ,F ,×,R ,H ,M ,Y ); (F ,H ,C ,D ,a ,A ,M ,Q ,R ,S ,Y ,X )

【解析】希尔排序的基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

快速排序(quicksort )的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

5. 在二叉树中,指针p 所指结点为叶结点的条件是_____。

【答案】

【解析】叶子节点的左右孩子都不存在。

6. 对单链表中元素按插入方法排序的C 语言描述算法如下,其中L 为链表头结点指针。请填充算法中标出的空白处,完成其功能。

置空链表,然后将原链表结点逐个插入到有序表中

当链表尚未到尾,p 为工作指针

查P 结点在链表中的插入位置,这时q 是工作指针

将P 结点链入链表中

是q 的前驱,u 是下个待插入结点的指针

【答案】(1)(2)(3)(4)(5)

7. 应用prim 算法求解连通网络的最小生成树问题。

(1)针对如图所示的连通网络,试按如下格式给出在构造最小生成树过程中顺序选出的各条边。

〔始顶点号,终顶点号,权值)

(2)下面是Prim 算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

的值在〈limits •h>中

//图的顶点数,应由用户定义

//用二维数组作为邻接矩阵表示

//生成树的边结点

//边的起点与终点

//边上的权值

//最小生成树定义

//从顶点rt 出发构造图G 的最小生成树T ,rt 成为树的根结点

//初始化最小生成树

T

//依次求MST 的候选边

//遍历当前候选边集合

//选具有最小权值的候选边

//图不连通,出错处理

//修改候选边集合

【答案】(1)(0,3,1); (3,5, 4); (5,2,2); (3,1, 5); (1,4,3) (2)①T[k]; tovex=i②min=Maxint③mispos=i④exit (O )⑤T[i]; fromvex=v

【解析】Prim 算法的执行类似于寻找图的最短路径的Dijkstra 算法。假设N={V,E}是连通图

,是N 上最小生成树边的集合。算法从属于

为止。

8. 在双向循环链表中,向P 所指的结点之后插入指针f 所指的结点,其操作是_____、_____、_____、_____。

【答案】

9. 无用单元是指_____,例_____

【答案】用户不再使用而系统没有回收的结构和变量;

10.组成串的数据元素只能是_____。

【答案】字符

11.按LSD 进行关键字排序,除最次位关键字之外,对每个关键字进行排序时,只能用_____的排序方法。

【答案】稳定

E T 开始,重复执行下述操作:在所有u 属于

加入集合

同时将

并入

v

直到

的边(u ,v )属于E

中找一条代价最小的边