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

2018年北京市培养单位信息工程研究所408计算机学科专业基础综合之数据结构考研基础五套测试题

  摘要

一、算法设计题

1. 已知二叉树采用二叉链表存储,设计算法以输出二叉树T 中根结点到每个叶结点的路径。

【答案】算法如下::

打印从根结点bt 到结点p 之间路径上的所有结点

.

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

是数组,元素值为0或1, 访问左、右子树的标志,tag 和s 同

根结点就是所找结点

左子女入栈,并置标记

找到结点P , 栈中元素均为结点P 的祖先

从根结点到P 结点的路径为

沿左分支向下

本题不要求输出遍历序列,

这里只出栈

沿右分支向下

结束算法

为叶结点

从根结点到P 结点的路径为

输出从根到叶子q 的路径上的所有袓先

2. 借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key 的记录。设此组记录存放于数组

【答案】算法如下:

第 2 页,共 38 页

中。若查找成功,则输出该记录在r 数组中的位置及其值,否则显示“not

find ”信息。请编写出算法并简要说明算法思想。

本句的有无不影响査找结果

3. 已知两个线性表A , B 均以带头结点的单链表作存储结构,且表中元素按值递增有序排列。设计算法求出A 与B 的交集C ,要求C 另开辟存储空间。,并同样以元素值的递增有序的单链表形式存储。

【答案】算法如下:

//线性表A 和B 以带头结点的单链表作为存储结构。本算法求A 和B 的交集C , C 另辟空间

//pa、pb 是两链表的工作指针

//监视哨

//pa指针后移

//pb指针后移

//处理交集元素

//删除重复元素

//交集元素并入结果表

//置结果链表尾

4. 给定nxm 矩阵

并设

设计一算法判定x 的值是否在A 中,要求时间复杂度

为O(m+n) 。

【答案】算法如下:

//n*m矩阵A ,行下标从a 到b ,列下标从c 到d ,本算法査找x 是否在矩阵A 中

//flag是成功査到x 的标志

第 3 页,共 38 页

//假定x 为整型

(“矩阵A 中无

算法search 结束。

5. 己知两个定长数组,它们分别存放两个非降序有序序列,请编写程序把第二个数组序列中的数逐个插入到前一个数组序列中,完成后两个数组中的数分别有序(非降序) 并且第一数组中所有的数都不大于第二个数组中的任意一个数。注意,不能另开辟数组,也不能对任意一个数组进行排序操作。

例如:

第一个数组为:4,12,28 第二个数组为:1,7,9,29,45 输出结果为:

第一个数组

第二个数组

【答案】算法如下:

//A和B 是各有m 个和n 个整数的非降序数组,本算法将B 数组元素逐个插入到A 中 //使A 中各元素均不大于B 中各元素,且两数组仍保持非降序排列

.

" 交换A[m﹣1]和

B[0]

//寻找A[m﹣1]的插入位置

//寻找B[0]的插入位置

算法结束

元素\n",x) ;

二、应用题

6. 某网络中的路由器运行OSPF 路由协议, 下表是路由器R1维护的主要链路状态信息(LSI), 下图是根据下表及R1的接口名构造出来的网络拓扑。

表 R1所维护的LSI

第 4 页,共 38 页