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

2018年温州医科大学检验医学院、生命科学学院408计算机学科专业基础综合之数据结构考研强化五套模拟题

  摘要

一、算法设计题

1. 以顺序存储结构表示串,设计算法。求串S 中出现的第一个最长重复子串及其位置并分析算法的时间复杂度。

【答案】算法如下:

//串用一维数组s 存储,本算法求最长重复子串,返回其长度

//index记最长的串在s 串中的开始位置,max

记其长度

//length记局部重复子串长度,i 为字符数组下标

//上一个重复子串结束

//当前重复子串长

度大,则更新

max

//初始化下一重复子串的起始位置和长度

(”最长重复子串的长度为

.//算法结束

,在串中的位置

,max ,index) ;

时间复杂度:算法的时间复杂度为O(n),每个字符与其后继比较一次。

2. 已知一棵高度为K 具有n 个结点的二叉树,按顺序方式存储。

(1)编写用前序遍历树中每个结点的非递归算法;

(2)编写将树中最大序号叶结点的祖先结点全部打印输出的算法。 【答案】(1)算法如下:

全局变量

递妇遍历以顺序方式存储的二叉树bt ,i 是根结点下标(初始调用时为

1)

是桟s 的栈顶指针,栈容量足够大

访问根结点,设虚结点

以0表示

右子女的下标位置入

沿左子女向下

取出栈顶元素

结束

(2)算法如下:

打印最大序号叶结点的全部袓先

找最大序号叶结点,该结点存储时在最后

的双亲结点

f

从结点c 的双亲结点直到根结点,

路径上所有结点均为祖先结点

逆序输出,最老的祖先最后输出

结束

3. 用邻接多重表存储结构,编写FERST-ADJ(G,V) 函数,函数返回值为第一个邻接点,若V 没有邻接点,返回零。

【答案】算法如下:

在邻接多重表g 中,求v 的第一邻接点, 若存在,返回第一邻接点,否则返回

确定顶点v 在邻接多重表向量中的下标, 不考虑不存在v 的情

返回第一邻接点,

中必有一个等于

i

取第一个边结点

4. 编写递归算法,从大到小输出给定二叉排序树中所有关踺字不小于X 的数据元素。要求你的算法的时间复杂度为

【答案】算法如下:

从大到小输出二叉排序树bst 中所有关键字不小于x 的数据元素

,其中,2为排序树中所含结点数,m 为输出的关键字个数。

5. 编写一算法,利用叶结点中的空指针域将所有叶结点链接为一个带有头结点的双链表,算法返回头结点的地址。

【答案】算法如下:

全局变量链表头指针

若bt 不空

中序遍历左子树

叶结点

第一个叶结点

生成头结点

头结点的左链空,右链指向第一个结点

第一个叶结点左链指向头结点,pre 指向当前叶结点

中序遍历右子树

最后一个叶结点的右链置空(链表结束标记

)

结束

当前叶结点链入双链表

树中的所有叶结点链成带头结点的双链表

二、应用题

6. 假设Internet 的两个自治系统构成网络如下图所示, 自治系统ASI 由路由器R1连接两个子网构成; 自治系统AS2由路由器R2、R3互联并连接3个子网构成。各子网地址、R2的接口名、R1与R3的部分接口IP 地址如下图所示。请回答下列问题。

图 网络拓扑结构

(1)假设路由表结构如下所示。请利用路由聚合技术, 给出R2的路由表, 要求包括到达上图中所有子网的路由, 且路由表中的路由项尽可能少。

(2)若R2收到一个目的IP 地址为

的IP 分组, R2会通过哪个接口转发该IP 分组?