2018年辽宁省培养单位沈阳自动化研究所408计算机学科专业基础综合之数据结构考研强化五套模拟题
● 摘要
一、算法设计题
1. 串以静态存储结构存储,结构如下所述,试实现串操作equal 算法。
串被确认的最大长度
【答案】算法如下:
//本算法判断字符串S 和字符串t 是否相等,如相等返回1,否则返回
//在类C 中,一维数组下标从零开始
//两串相等
//算法结束
2. 已知一具有n
个结点的二叉树的中序遍历序列与后序遍历序列分别存放于数组
和
中(设该二叉树各结点的数据值均不相同) 。请写一建立该二叉树的二叉链表结构的非递
归算法。该二叉链表的链结点结构为(lchild, data , rchild) ,其中data 为数据域,lchild 与rhild 分别为指向该结点左、右孩子的指针域(当孩子结点不存在时,相应指针域为空,用nil 表示) 。
【答案】算法如下:
由二叉树的中序序列IN[ ]和后序序列POST[ ]建立二叉树
和
为栈,容量足够大
初始化
取出栈顶数据
在中序序列中査等于
.
根结点的值
第 2 页,共 37 页
分別是中序序列和后序序列第一和最后元素的下标,初始调用时
,
的结点
将建立左子树的数据入栈
无右子树
右子树数据入
结束
:
3. 试为二叉树写出一个建立三叉链表的算法,并在此三叉链表中删去每一个元素值为x 的结点,以及以它为根的子树,且释放相应存储空间。二叉树的三叉链表的描述为:
{二叉树根结点的指针}
【答案】算法如下:
生成三叉链表的二叉树(题目给出PASCAL 定义,下面用类C 语言书写
)
是二叉树结点指针的一维数组,容量足够大
一维数组最后元素的下标
元素或虚结点
根结点
双亲结点和子女结点用指针链上
结束
4. 设给定关键字输入序列为(100,90,120,60,78,35,42,31,15) 用哈希法散列0-10的地址区间。要求设计一合理的哈希函数;冲突时用链表法解决,写出哈希算法,并构造出哈希表,在等概率查找情况下查找成功的平均查找长度是多少?
【答案】算法如下:
第 3 页,共 37 页
链指针
用链地址法解决冲突,构造哈希表,哈希函数用
初始化
输入n(本例中n=9)
个关键字按题意x 互不相同
4等插入结点链入同义词表
构造的哈希表如图所示:
图构造的哈希表
查找成功时的平均查找长度
5. 元素集合已存入整型数组树T 的非递归算法:CSBT(r,A)
【答案】算法如下:
以存储在数组K 中的n 个关键字,建立一棵初始为空的二叉排序
树
在调用时,
T=null
f 是P 的双亲
申请结点空间
第 4 页,共 37 页
。
中,试写出依次取A 中各值
构造一棵二叉排序