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

2018年西藏大学藏文信息技术研究中心840计算机专业基础综合之数据结构考研基础五套测试题

  摘要

一、算法设计题

1. 已知指针P 指向带表头的中根次序线索二叉树中的某结点,试写一算法FFA(P,q) , 该算法寻找结点P 的父亲结点q 。设线索二叉树的结点结构、表头结点结构和空树结构分别为(LTAG,LLINK ,INFO , RL1NK ,RTAG) ,且规定线索树的最左下结点的LLINK 域和最右下结点的RLINKt 域指向表头。

【答案】算法如下:

在中序线索树t 上,求结点p 的双亲结点q

暂存

找P 的中序最右下的结点

顺右线索找到q 的后继(P的袓先结点

)

若后继是头结点,则转到根结点

根结点无双亲

找最右结点的过程中回找到

P

结束FFA

2. 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

【答案】算法如下:

//la,lb 分别是带头结点的两个单链表的头指针,链表中的元素值按递增序排列 //本算法将两链表合并成一个按元素值递减次序排列的单链表

//pa, pb 分别是链表la 和lb 的工作指针

//la作为结果链表的头指针,先将结果链表初始化为空

//当两链表均不为空时

//将pa 的后继结点暂存于

r

//将pa 结点链于结果表中,同时逆置

第 2 页,共 33 页

准备到左子树中找

P

//恢复pa 为当前待比较结点

//将pb 的后继结点暂存于

r

//将pb 结点链于结果表中,同时逆置

//恢复pb 为当前待比较结点

//避免再对pa 写下面的While 语句

//算法Union 结束

3. 对给定关键字序号j(1

中找到关键字从小到大排在第j 位上的记

录,写一个算法利用快速排序的划分思想实现上述查找(要求用最少的时间和最少的空间) 。

例如:给定无序关键字{7,5,1,6,2,8,9,3},当j=4时,找到的关键字应是5。 【答案】算法如下;

在后半部分继续进行划分

在前半部分继续进行划分

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

【答案】算法如下:

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

第 3 页,共 33 页

5. 串以静态存储结构存储,结构如下所述,试实现串操作equal 算法。

串被确认的最大长度

【答案】算法如下:

//本算法判断字符串S 和字符串t 是否相等,如相等返回1,否则返回

//在类C 中,一维数组下标从零开始

//两串相等

//算法结束

二、应用题

6. 一个ISAM 文件除了主索引外,还包括哪两级索引?

【答案】ISAM 文件有三级索引:磁盘组、柱面和磁盘,柱面索引存放在某个柱面上,若柱面索引较大,占多个磁道时,可建立柱面索引的索引——主索引。故还包括的两级索引是盘组和磁道。

7. 队列可以用循环单链表来实现,故可以只设置一个头指针或者只设置一个尾指针。请你分析对于循环单链表实现的队列,用哪种方案更合适。

【答案】循环单链表若只设头指针,则出队操作时间复杂度是O (1),而如对操作时间复杂度是O(n); 若只设尾指针,则出队和入队操作时间复杂度都是O (1)。因此,用循环单链表来实现队列,设置一个尾指针更合适。

8. 索引顺序存取方法(ISAM)中,主文件已按关键字排序,为何还需要主关键字索引?

【答案】ISAM 是专为磁盘存取设计的文件组织方式。即使主文件关键字有序,但因磁盘是以盘组、柱面和磁道(盘面) 三级地址存取的设备,因此通常对磁盘上的数据文件建立盘组、柱面和磁道(盘面) 三级索引。在ISAM 文件上检索记录时,先从主索引(柱面索引的索引) 找到相应柱面索引。再从柱面索引找到记录所在柱面的磁道索引,最后从磁道索引找到记录所在磁道的第一个记录的位置,由此出发在该磁道上进行顺序查找直到查到为止;反之,若找遍该磁道而未找到所

第 4 页,共 33 页