2018年重庆师范大学计算机与信息科学学院819程序设计与数据结构之数据结构考研仿真模拟五套题
● 摘要
一、算法设计题
1. 写出按后序序列遍历中序线索树的算法。
【答案】算法如下:
求结点t 最左子孙的左线索
沿左分支向下
求结点t 最右子孙的右线索
沿右分支向下
若t 是
后序遍历中序线索二叉树
bt
沿左分支向下
左孩子为线索,右孩子为链,相当从左返回
P 为叶子, 相当从右返回
访问结点
修改P 指向双亲
是左子女,用最右子孙的右线索找双亲
.
转向当前结点右分支
结束
第 2 页,共 38 页
的右孩子,返回1, 否则返回
2. 设二叉树用二指针结构存储(可以是动态存储结构) ,元素值为整数,且元素值无重复,请编写子程序,求出以元素值等于某个给定的整数的结点为根的子树中的各个叶结点。
【答案】算法如下:
在二叉树t 中査找结点值等于x 的结
点
结束
统计以t 为根结点的子树的叶结点数
n0
. 叶结点
输出并计数
结束
:
3. 结点类型和存储结构如下:
试设计一个排序算法,要求不移动结点的存储位置,只在结点的count 字段记录结点在排序中的序号,并将排序结果按升序输出。
【答案】算法如下:
对存储在数组R 中的记录进行排序
初始化
设R[0]作监视哨,Max 是该类型最大元
素
初始假定第一个元素有序
前驱
第一个元素
査找第i 个元素的序号
将笫i 个元素链入静态链表
第 3 页,共 38 页
4. 输入一个字符串,内有数字和非数字字符,如:akl23x4561796073029ef4563。将其中连续的数字作为一个整体,依次存放到一数组a 中,例如123放入a[0],456放入a[l],...... 。编程统计其共有多少个整数,并输出这些数。
【答案】算法如下:
( )
//从键盘输入字符串,连续的数字字符算作一个整数,统计其中整数的个数
//整数存储到数组a ,i 记整数个数
//从左到右读入字符串
//'#'是字符串结束标记
//是数字字符
//数初始化
//拼数
//若拼数中输入了’#’,则不再输入
//输入非数字且非#时,继续输入字符
("共有
个整数,它们是:
)
//每10个数输出在一行上
//算法结束
5. 叙述基数排序算法,并对下列整数序列图示其基数排序的全过程。(179,208,93,306,55,859,984,9,271,33)
【答案】算法如下:
待排序记录的个数
关键字由d 个分量组成
静态链域
记录的其他数据域
存放n 个记录
.
第 4 页,共 38 页
队列的头、尾指针