2018年辽宁工业大学电子与信息工程学院408计算机学科专业基础综合之数据结构考研核心题库
● 摘要
一、算法设计题
1. 已知一个单链表中每个结点存放一个整数,并且结点数不少于2, 请设计算法以判断该链表中第二项起的每个元素值是否等于其序号的平方减去其前驱的值,若满足则返回ture ,否则返回false 。
【答案】算法如下:
//la是结点的元素为整数的单链表。本算法判断从第二结点开始
//毎个元素值是否等干其序号的平方减去其前驱的值,如是返回true ;否则,返回
false
//P是工作指针,初始指向链表的第二项
//pre是p 所指结点的前驱指针
//i是la 链表中结点的序号,初始值为
2
//结点值间的关
系符合题目要求
//当前结点的值不等于其序号的平方减去前驱的值
//未查到表尾就结束了
//成功返回
//算法结束
//假设无头结点,初始P 指向第一元素结点
//初始p ﹣>next 指向第二项
//失败
//成功
2. 已知P 是指向单向循环链表最后一个结点的指针,试编写只包含一个循环的算法,将线性表(
) 改造为(
【答案】算法如下:
第 2 页,共 31 页
) 。
//本算法将线性表
//q指向a 1结点
改造为
//r记住a l 结点的指
针
//先将a 1结点放到正确位置
//从a 2结点开始
//暂存后继
//对称放置
//恢复待处理结点
3. 设A 和B 均为下三角矩阵,每一个都有n 行n 列。因此在下三角区域中各有n(n+l)/2个无素。另设有一个二维数组C ,它有n 行n +1列。试设计一个方案,将两个矩阵A 和B 中的下三角区域元素存放于同一个C 中。要求将A 的下三角区域中的元素存放于C 的下三角区域中,B 的下三角区域中的元素转置后存放于C 的上三角区域中。并给出计算A 的矩阵元素矩阵元素
在C 中的存放位置下标的公式。
//本算法将n 阶方阵的下三角矩阵A 和B 置于C 中,矩阵B 要逆置
//算法结束
4. 已知二叉树丁的结点形式为(llink,data ,count ,riink) ,在树中查找值为X 的结点,若找到, 则记数(count)加1; 否则,作为一个新结点插入树中,插入后仍为二叉排序树,写出其非递归算法。
【答案】算法如下:
在二叉排序树t 中査找值为x 的结点,若査到,则其结点的count 域值增1,否则,
第 3 页,共 31 页
和B 的
【答案】算法如下:
将其
插入到二叉排序树中
f 指向当前结点的査找值为x 的结点,
双亲
无值为x 的结点,插入之
査询成功,值域为x 的结点的count 增
1
5. 设计将数组A[n]中所有的偶数移到奇数之前的算法。要求不增加存储空间,且时间复杂性为〇(n)。
【答案】算法如下:
//n个整数存于数组A 中,本算法将数组中所有偶数排在奇数之前
//用类C 语言编写,数组下标从0开始
//交换A[i]与
A[j]
//算法Arrange 结束
二、应用题
6. 在多关键字排序时,LSD 和MSD 两种方法的特点是什么?
【答案】(1)最高位优先(MSD)法
先对最高位关键字K 进行排序,将序列分成若干子序列,每个子序列中的记录都具有相同的
K 0值,然后,分别就每个子序列对关键字K 1进行排序,按K 1值不同再分成若干更小的子序列,依次重复,直至最后对最低位关键字排序完成,将所有子序列依次连接在一起,成为一个有序子序列。
(2)最低位优先(LSD)法 先对最低位关键字
进行排序,然后对高一级关键字进行排序,依次重复,直至对最高
位关键字K 排序后便成为一个有序序列。进行排序时,不必分成子序列,对每个关键字都是整个序列参加排序,
但对
排序时,只能用稳定的排序方法。另一方面,按LSD 进行排序
第 4 页,共 31 页
相关内容
相关标签