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

2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题

  摘要

目录

2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题(一) ... 2 2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题(二) ... 9 2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题(三) . 15 2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题(四) . 23 2018年北京市培养单位生命科学学院864程序设计之数据结构考研仿真模拟五套题(五) . 30

一、算法设计题

1. 设排序二叉树中结点的结构为下述三个域构成:

Data :给出结点数据的值;left :给出本结点的左儿子结点的地址;right :给出本结点的右儿子结点的地址。设data 域为正整数,该二叉树根结点地址为T 。现给出一个正整数x 。请编写非递归程序,实现将data 域之值小于等于x 的结点全部删除掉。

【答案】算法如下:

非递归删除以r 为根的二叉排序树

栈,容量足够大,栈中元素是二叉排序树结点的指针

沿左分枝向下

出栈,沿栈顶结点的右子树向下刪除,释放被删除结点空间

在二叉排序树T 中删除所有小于等于x

的结点

根结点的值小于等于

x

删除二叉树p ,删除持续到" 根" 结点值大于x 或T 为空树为止

沿根结点左分支向下,査小干等于x 的结点

q 记P 的双亲

结点的值小于等于

x

再査原P 的右子树中小于等于x 的结点

2. 写出一趟快速排序算法。

【答案】算法如下:

一趟快速排序算法,枢轴记录到位,并返回其所在位置

3. 已知二叉树T ,试写出复制该二叉树的算法(t→T) 。

【答案】算法如下:

复制二叉树t 的非递归算法

是二叉树的结点指针的队列,容量足够大

结束本题

4. 设记录

的关键字为

,树结点

的败者树,要求除

指向败者记录,

和1

为全胜以外,只

记录下标。写一算法产生对应上述用O(1)辅助空间。

【答案】算法如下:

选得最小关键字记录后,沿从叶结点R[s]到根结点T[0]的路径调整败者树

指示新的胜者

的双亲结点

到:_

小数

为完全二叉树T 的叶结点,本算法建立败者树

是与题中要求的关键字类型相同的机器最

设置T 中" 败者" 的初值

依次从

出发调整败者

5. 设稀疏矩阵中有t 个非零元素,用三元组顺序表的方式存储。请设计一个算法,计算矩阵M 的转置矩阵N ,要求转置算法的时间复杂度为0(n+t) 。

【答案】算法如下:

//采用三元组表方式存储,按列序实现矩阵的转置

//行数、列数和非零元素个数

//设置N 中第一个非零元素从下标1开始存储

//按列,共

//在//转置

//三元组表上实现矩阵的快速转置的算法

//矩阵M 每一列非零元初始化为零

//求矩阵M 每一列的非

零元个数

//第1列第一个非零元在转置后的三元组中下标是

1

//求

第j 列第一个非零元在

中的序号

个元素中查找

//求转置矩阵N 的三元组表