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

2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题

  摘要

目录

2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题(一) ... 2 2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题(二) ... 9 2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题(三) . 14 2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题(四) . 22 2018年北京市培养单位工程科学学院864程序设计之数据结构考研基础五套测试题(五) . 29

第 1 页,共 35 页

一、算法设计题

1. 设二叉排序树的各元素值均不相同,采用二叉链表作为存储结构,试分别设计递归和非递归算法按递减序打印所有左子树为空,右子树非空的结点的数据域的值。

【答案】(1)递归算法如下:

递减序输出二叉排序树t 中所有左子树为空右子树非空的结点数据域的值

(2)非递归算法如下:

递减序输出二叉排序树t 中所有左子树为空、右子树非空的结点的数据域的值

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

沿右分支向下

去左分支

算法结束

2. 设记录

的关键字为

,树结点

的败者树,要求除

指向败者记录,

和1

为全胜以外,只

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

【答案】算法如下:

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

指示新的胜者

第 2 页,共 35 页

的双亲结点

到:_

小数

设置T 中" 败者" 的初值

依次从

出发调整败者

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

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

3. 设单链表的表头指针为h ,结点结构由data 和next 两个域构成,其中data 域为字符型。写出算法dc(h,n) ,判断该链表的前n 个字符是否中心对称。例如xyx ,xyyx 都是中心对称。

【答案】算法如下:

//h是带头结点的n 个字符元素的单链表,本算法判断链表是否中心对称

//i记下结点个数,s 是字符栈

//P是链表的工作指针,指向待处理的当前元素

//链表前一半元素入栈

//恢复最后的i 值

//若n 是奇数,后移过中心结点

//测试

是否中心对称

//链表中心对称

//链表不中心对称

//算法结束

4. 假设以双亲表示法作树的存储结构,写出双亲表示的类型说明,并编写求给定的树的深度的算法(注:已知树中的结点数) 。

【答案】算法如下:

求以双亲表示法作为存储结构的树的深度

深度加1, 并取新的双亲

最大深度更新

第 3 页,共 35 页

返回树的深度

’结束Depth

5. 以三元组表存储的稀疏矩阵A ,B 非零元个数分别为m 和n 。试用类PASCAL 语言编写时间复杂度为0(m+n) 的算法将矩阵B 加到矩阵A 上去。A 的空间足够大,不另加辅助空间。要求描述所用结构。

【答案】算法如下:

=大于非零元素个数的某个常量

//本算法实现以三元组表存储的各有m 和n 个非零元素两个稀疏矩阵相加,结果放到A 中

//L,p 为A ,B 三元组表指针,k 为结果三元组表榫针(下标

)

//行号不等时,行号大者的三元组为结果三元组表中一项

//A中当前项为结

果项

//B中当前项为结果

当前项

//行号相等时,比较列号

//结束行号相等时的处理

//结束行号比较处理

//结果三元组表的指针前移(减

1)

//结束WHILE 循环。

//处理B 的剩余部

//处理A 的剩余部

第 4 页,共 35 页