2018年广西大学计算机与电子信息学院408计算机学科专业基础综合之数据结构考研基础五套测试题
● 摘要
一、算法设计题
1. (1)试分别找出满足下列条件的所有二叉树:(a)前序序列和中序序列相同:(b)前序序列和后序序列相同;(c)中序序列和后序序列相同。
(2)已知非空二叉树的结点结构为(lchild,data , rchild) ,设计算法:从右向左依次将所有叶子的数据值放到向量(假定向量的空间大于叶子的总个数) 中。
【答案】(1)满足条件的二叉树如下:
(a)若前序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。 (b)若前序序列与后序序列相同,则或为空树,或为只有根结点的二叉树。
(c)若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树。 (2)算法如下:
全局变量
从右向左依次将二叉树bt 的所有叶子的数据值放到a 向量中 .
中序遍历右子树
叶结点
中序遍历左子树
2. 已知两个链表A 和B 分别表示两个集合,其元素递增排列。编一函数,求A 与B 的交集,并存放于A 链表中。
【答案】算法如下:
//设工作指针pa 和pb ;
//结果表中当前合并结点的前驱的指针
//交集并入结果表中
//释放结点空
间
//释放结点空间
第 2 页,共 33 页
//释放结点空间
//置链表尾标记
//注:本算法中也可对B 表不作释放空间的处理
3. 在输入数据无序的情况下,建立一个数据值为整型的递增有序的顺序存储线性表L ,且要求当输入相同数据值时,线性表中不能存在数据值相同的数据元素,试写出其算法。
顺序存储结构的线性表描述为:
线性表可能达到的最大长度};
【答案】算法如下:
//在顺序表a 中査找值为x 的元素,査找成功返回0值,否则返回查找失败时的较大下标值
//当査找失败时,low =high +
1
//结束对分査找函数
//本过程生成顺序表
L
//顺序表L 初始化
//设x =9999时退出输入
//去查找x 元素
//不同元素才插入
//插入元素x ,线性表长度增
1
//结束过程creat
第 3 页,共 33 页
4. 已知一棵二叉树的前序遍历序列和中序遍历序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。
【答案】算法如下:
根据二叉树前序序列pre 和中序序列in 建立二叉树。元素下标
申请结点
是根
在中序序列中,根结点将树分成左右
子树
无左子树
递归建立左子树
无右子树
递归建立右子树
结束:
5. 编写一算法,利用叶结点中的空指针域将所有叶结点链接为一个带有头结点的双链表,算法返回头结点的地址。
【答案】算法如下:
全局变量链表头指针
将
若bt 不空
中序遍历左子树
叶结点
第一个叶结点
生成头结点
头结点的左链空,右链指向第一个结点
第一个叶结点左链指向头结点,pre 指向当前叶结点
中序遍历右子树
最后一个叶结点的右链置空(链表结束标记
)
结束
;
当前叶结点链入双链表
树中的所有叶结点链成带头结点的双链表
和
是两个序列首、尾
二、应用题
第 4 页,共 33 页
相关内容
相关标签