2018年北京化工大学信息科学与技术学院408计算机学科专业基础综合之数据结构考研仿真模拟五套题
● 摘要
一、算法设计题
1. —个有向图G=(V,E) 的平方图
,使得表示。
【答案】算法如下:
2. 假设K1,... ,Kn 是n 个关键词,试解答:
(1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为K1,K2,…,Kn 时,用算法建立一棵以llink —rlink 链接表示的二叉查找树。
(2)设计一个算法,打印出该二叉查找树的嵌套括号表示结构。例如,K1=B,K2=A,K3=D,K4=C,K5=E,则用二叉查找树的插入算法建立如图所示的二叉查找树。
且
满足下述性质
:
当且仅当存在某个顶点
22
。写一个算法从给定的G 求出G , G 和G 可分别用两个邻接表
图
该二叉查找树的嵌套括号表示结构为:B(A,D(C,E)) 。 【答案】(1)算法如下:
在二叉排序树bst 上査找值为K 的结点,返回其双亲结点指针f
以存储在数组R 中的n 个关键字,建立一棵初始为空的二叉排序树
不再插入相同值结点
.
申请结点空间
根结点
左子女
右子女
结束算法 (2)算法如下:
以嵌套括号表示结构打印二叉排序树
打印根结点值
左子女和右子女中至少有一个不空
输出左栝号
输出左子树的嵌套括号表示
若右子树不空,输出逗号
输出右子树的嵌套括号表示
输出右括号
3. 设线性表存于A[l..size]的前mun 各分量中,且递增有序。请设计一个算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并在设计前说明设计思想,最后说明所设计算法的时间复杂度。
【答案】算法如下:
//A是Size 个元素空间但目前仅有num(num<size}个元素的线性表 //本算法将元素x 插入到线性表中,并保持线性表的有序性
//题目要求下标从1开始
//对分査找元素x 的插入位置
//元素后移
//将元素x 插人
算法结束
设计思想:算法中当查找失败(即线性表中无元素X) 时,变量low 在变量high 的右面(low=high +l) 。移动元素从位置low 开始,直到num 为止。
时间复杂度:查找的复杂度为O (logn),插入的时间复杂度为O (n),若用顺序查找,则查找的时间复杂度亦为O(n)。
4. 已知两个线性表A , B 均以带头结点的单链表作存储结构,且表中元素按值递增有序排列。设计算法求出A 与B 的交集C ,要求C 另开辟存储空间。,并同样以元素值的递增有序的单链表形式存储。
【答案】算法如下:
//线性表A 和B 以带头结点的单链表作为存储结构。本算法求A 和B 的交集C , C 另辟空间
//pa、pb 是两链表的工作指针
//监视哨
//pa指针后移
//pb指针后移
//处理交集元素
//删除重复元素
//交集元素并入结果表
//置结果链表尾
相关内容
相关标签