2018年复旦大学计算机科学技术学院408计算机学科专业基础综合之数据结构考研基础五套测试题
● 摘要
一、算法设计题
1. 设记录
的关键字为
。
,树结点
的败者树,要求除
指向败者记录,
和1
为全胜以外,只
记录下标。写一算法产生对应上述用O(1)辅助空间。
【答案】算法如下:
选得最小关键字记录后,沿从叶结点R[s]到根结点T[0]的路径调整败者树
是
指示新的胜者
到:_
小数
设置T 中" 败者" 的初值
依次从
出发调整败者
为完全二叉树T 的叶结点,本算法建立败者树
是与题中要求的关键字类型相同的机器最
的双亲结点
2. 线性表中元素存放在向量A(1,... ,,1) 中,元素是整型数。试写出递归算法求出A 中的最大和最小元素。
【答案】算法如下:
//一维数组A 中存放有n 个整型数,本算法递归的求出其中的最小数和最大数
//算法结束
3. 已知二叉树T ,试写出复制该二叉树的算法(t→T) 。
【答案】算法如下:
复制二叉树t 的非递归算法
是二叉树的结点指针的队列,容量足够大
结束本题
4. 叙述基数排序算法,并对下列整数序列图示其基数排序的全过程。(179,208,93,306,55,859,984,9,271,33)
【答案】算法如下:
待排序记录的个数
关键字由d 个分量组成
静态链域
记录的其他数据域
存放n 个记录
.
用队列表示桶,共m 个
进行基数排序,返回收集用的链头指针
将
进行d 趟排序
初始化桶
按关键字的第j 个分量进行分配
k 为桶的序号
将将
队列的头、尾指针
对
链成一个静态链表
将初始链表的终端结点指针置空,P 指向链表的第一个结点
链到桶头
链到桶尾
修改桶的尾指针
扫描下一个记录
找第一个非空的桶
为收集链表的头指针,t 为尾指针
连接非空桶
本趟收集完毕,将链表的终端结点指针置空
5. 假设K1,... ,Kn 是n 个关键词,试解答:
(1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,Kn 时,用算法建立一棵以llink —rlink 链接表示的二叉查找树。
(2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。例如,K1=B,K2=A,K3=D,K4=C,K5=E,则用二叉查找树的插入算法建立如图所示的二叉查找树。
图
该二叉查找树的嵌套括号表示结构为:B(A,D(C,E)) 。 【答案】(1)算法如下:
在二叉排序树bst 上査找值为K 的结点,返回其双亲结点指针
f
以存储在数组R 中的n 个关键字,建立一棵初始为空的二叉排序树
相关内容
相关标签