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

2017年北京科技大学547软件综合之数据结构复试实战预测五套卷

  摘要

一、应用题

1. 两个字符串s1和s2的长度分别为m 和n 。求这两个字符串最大共同子串算法的时间复杂度

,并简要说明理由。 为T (m ,n )。估算最优的T (m , n )

【答案】最优的T (m ,n )是D (n )。串S2是串S1的子串,且在S1中的位置是1。开始求

出最大公共子串的长度恰是串S2的长度。一般情况下,

2. 对下面的关键字集若查找表的装填因子为0.8,采用线性探测再哈希方法解决冲突,做:(1)设计哈希函数;(2)画出哈希表;(3)计算查找成功和查找失败的平均查找长度;(4)写出将哈希表中某个数据元素删除的算法。

【答案】(1)由于装填因子为0.8,关键字有8个,所以表长为

哈希函数,哈希函数为

(2)哈希表如表所示:

表 哈希表

(3)计算查找失败时的平均查找长度,必须计算不在表中的关键字,

当其哈希地址为时的查找次数。本例中

(4)算法如下:

第 2 页,共 37 页 用除留余数法设计 故查找失败和查找成功时的平均查找长度分别为:

3. 试叙述动态存储分配伙伴系统的基本思想,它和边界标识法不同点是什么?

【答案】(1)动态存储分配伙伴系统的基本思想

在伙伴系统中,无论占用块或空闲块,其大小均为(k 为大于等于0的正整数)。若内存容

量为

则空闲块大小只能是由同一大块分裂而得的两个小块互称“伙伴空

(若)

如内存大小为

间”

或的块分裂成两个大小为的块。只有两个“伙伴空间”才能合并成一个大(若

(2)和边界标识法的不同

边界标识法在每块的首尾均有“占用”/“空闲”标志,空闲块合并方便。伙伴系统算法简单、速度快,但只有互为伙伴的两个空闲块才可合并,因而易产生虽空闲但不能归并的碎片。

4. 证明:具有n 个顶点和多于n-1条边的无向连通图G —定不是树。

【答案】具有n 个顶点n-1条边的无向连通图是自由树,即没有确定根结点的树,每个结点均可当根。若边数多于n-1条,因一条边要连接两个结点,则必因加上这一条边而使两个结点多了一条通路,即形成回路。形 成回路的连通图不再是树。

5. 某文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次 创建新文件。请回答如下问题。

(1)在连续、链式、索引三种文件的数据块组织方式中,哪种更合适? 要求说明理由。为定位文件数据块。需要在FCB 中设计哪些相关描述字段?

(2)为快速找到文件,对于FCB ,是集中存储好,还是与对应的文件数据块连续存储好? 要求说明理由。

【答案】根据题目所给条件,文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但是可以多次创建新文件,我们得知该文件系统是不能修改原文件的,只能将修改后的文件按新文件来存储,这与一次刻录光盘的存储方式相似。对于这样的系统,因为不需要随时添加或删除文件的内容,所以一次写入的文 件的大小是固定不变的,也是可预知的,而连续存放文件的方式就有其优点。这种方式只需要知道文件的起始地 址和文件的大小,便可以通过计算的方法找到文件的任何位置。文件若需要修改,则原文件作废,修改以后的文 件以新文件的形式重新写入,不会产生存储碎片,高效,高利用率。所以,如下作答。

(1)连续的数据块组织方式更合适,因为文件的数据一次性写入磁盘,已写入的文件不可修改,但是可以 多次创建新文件,我们得知该文件系统是不能修改原文件的,只能将修改后的文件按新文件来存储。不需要随时添加或删除文件的内容,所以一次写入的文件的大小是固定不变的,也是可预知的。这样,只需要知道文件的起 始地址和文件的大小,便可以通过计算的方法访问文件的任意位置。

为定位文件数据块。需要在FCB 中设计相关描述字段有: <起始块号,块数>或者〈起始块号,结束块号>。

第 3 页,共 37 页 空间。起始地址为P ,

大小为的内存块,其伙伴的起始地址为:)。

(2)将所有的FCB 集中存放,文件数据集中存放。这样在随机查找文件名时,只需访问FCB 对应的块,可减少磁头移动和磁盘I/O访问次数。

6. 对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。

【答案】快速排序的思想如下:首先将待排序记录序列中的所有记录作为当前待排序区域,

,凡其关键字不大干枢轴的记录均移动至该记录之前,以第一个记录的关键字作为枢轴(或支点)

凡关键字不小于枢轴的记录均移动至该记录之后。致使一趟排序之后,记录的无序序

割成两部分:和和

将分然后再递归地将进行快速排序。快速排序在记录有序时蜕变为起泡排序,可用“三者取中”法改善其性能,避免最坏情况的出现。本题解答如下:

初始序列:[28],07,39,10,65,14,61,17,50,21

21移动:21,07,39,10,65,14,61,17,50,[]

39移动:21,07,[],10,65,14,61,17,50,39

17移动:21,07,17,10,65,14,61,[],50,39

65移动:21,07,17,10,[],14,61,65,50,39

14移动:21,07,17,10,14,[28],61,65,50,39

7. 简述广义表属于线性结构的理由。

【答案】广义表中的元素,可以是原子,也可以是子表,即广义表是原子或子表的有限序列,满足线性结构的特性:在非空线性结构中,只有一个称为“第一个”的元素,只有一个称为“最后一个”的元素,第一元素有后继而没有前驱,最后一个元素有前驱而没有后继,其余每个元素有唯一前驱和唯一后继。从这个意义上说,广义表属于线性结构。

8. 用单链表保存m 个整数,节点的结构为(data , link ), 且

点而删除其余绝对值相等的节点。

例如若给定的单链表head 如下

删除节点后的head 为

要求

(1)给出算法的基本思想

第 4 页,共 37 页 (n 为正整数)。现要求设计一个时间复杂度尽可能高效地算法,对于链表中绝对值相等的节点,仅保留第一次出现的节