2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库
● 摘要
目录
2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库(一) ... 2 2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库(二) ... 8 2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库(三) . 14 2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库(四) . 20 2018年第二军医大学训练部408计算机学科专业基础综合之数据结构考研核心题库(五) . 28
一、算法设计题
1. 设二叉树用二指针结构存储(可以是动态存储结构) ,元素值为整数,且元素值无重复,请编写子程序,求出以元素值等于某个给定的整数的结点为根的子树中的各个叶结点。
【答案】算法如下:
在二叉树t 中査找结点值等于x 的结
点
结束
统计以t 为根结点的子树的叶结点数
n0
. 叶结点
输出并计数
结束
:
2. 已知两个链表A 和B 分别表示两个集合,其元素递增排列。编一函数,求A 与B 的交集,并存放于A 链表中。
【答案】算法如下:
//设工作指针pa 和pb ;
//结果表中当前合并结点的前驱的指针
//交集并入结果表中
//释放结点空
间
//释放结点空间
//释放结点空间
//置链表尾标记
//注:本算法中也可对B 表不作释放空间的处理
3. 叙述基数排序算法,并对下列整数序列图示其基数排序的全过程。(179,208,93,306,55,859,984,9,271,33)
【答案】算法如下:
待排序记录的个数
关键字由d 个分量组成
静态链域
记录的其他数据域
存放n 个记录
.
用队列表示桶,共m 个
进行基数排序,返回收集用的链头指针
将
进行d 趟排序
初始化桶
按关键字的第j 个分量进行分配
k 为桶的序号
将将
链到桶头
链到桶尾
链成一个静态链表
将初始链表的终端结点指针置空,P 指向链表的第一个结点
队列的头、尾指针
对
修改桶的尾指针
扫描下一个记录
找第一个非空的桶
为收集链表的头指针,t 为尾指针
连接非空桶
本趟收集完毕,将链表的终端结点指针置空
4. 在一个循环链队中只有尾指针(记为rear ,结点结构为数据域data ,指针域next) ,请给出这种队列的入队和出队操作的实现过程。
【答案】算法如下:
//rear是带头循环链队列的尾指针,本算法将元素X 插入到队尾
//申请结点空间
//将s 结点链入队尾
//rear指向新队尾
//rear是带头结点的循环链队列的尾指针
//本算法执行出队操作,成功输出队头元素;否则给出出错信息
//s指向队头元素
//队头元素出队
//空队列
5. 若x 和y 是两个采用顺序结构存储的串,编写一个比较两个串是否相等的函数。
【答案】算法如下:
//本算法判断两个顺序存储的串x 和y 是否相等,相等返回1,否则返回
//对应字符相等,指针后移
二、应用题
6. 试举一例,说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其运算效率不同。
【答案】线性表中的插入、删除操作,在顺序存储方式下平均移动近一半的元素,时间复杂度为O(n);而在链式存储方式下,插入和删除时间复杂度都是O(1)。