2018年贵州师范大学机械与电气工程学院408计算机学科专业基础综合之数据结构考研强化五套模拟题
● 摘要
一、算法设计题
1. 已知两个线性表A , B 均以带头结点的单链表作存储结构,且表中元素按值递增有序排列。设计算法求出A 与B 的交集C ,要求C 另开辟存储空间。,并同样以元素值的递增有序的单链表形式存储。
【答案】算法如下:
//线性表A 和B 以带头结点的单链表作为存储结构。本算法求A 和B 的交集C , C 另辟空间
//pa、pb 是两链表的工作指针
//监视哨
//pa指针后移
//pb指针后移
//处理交集元素
//删除重复元素
//交集元素并入结果表
//置结果链表尾
2. 已知无向图采用邻接表存储方式,试写出删除边(i, j) 的算法。
【答案】算法如下:
在用邻接表方式存储的无向图g 中,删除边(i,
j)
删顶点i 的边结点(i, j) , pre 是前驱指针
释放空间
沿链表继续査找
删顶点j 的边结点(j, i)
释放空间
沿链表继续査找
3. 给定(已生成) 一个带表头结点的单链表,设head 为头指针,结点的结构为(data,next) ,data 为整型元素,next 为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间(要求:不允许使用数组作辅助空间) 。
【答案】算法如下:
//head是带头结点的单链表的头指针
//本算法按递增顺序输出单链表各结点的值,并释放结点所占的存储空间
//循环到仅剩头结点
//pre为元素最小值结点的前驱结点的指针
//P为工作指针
//记住当前最小值结点的前驱
//输出元素最小值结点的数据
//删除元素值最小的结点,释放结点
空间
//释放头结点
4. 写出算法,求出中序线索二叉树中给定值为X 的结点之后继结点,返回该后继结点的指针。线索树中结点结构为;
。其中,data 存放结点的值;lc 、rc 为指向左、
右孩子或该结点前驱、后继的指针,ltag 、rtag 为标志域,若值为0, 则lc 、rc 为指向左、右孩子的指针;若值为1,则lc 、rc 为指向其前驱、后继结点的指针。
【答案】算法如下:
先在带头结点的中序线索二叉树T 中査找给定值为x 的结点,假定值为x 的结点存在
设P 指向二叉树的根结点
结束
后继结点
在中序线索二叉树T 中,, 求给定值为x 的结点的首先在T 树上査找给定值为x 的结点,由p 指向
' 若P 的右标志为1, 则P 的rc 指针指向其后继
结点P 的右子树中最左边的结点是结点P 的中序后继
结库
.
5. 设整数序列ai ,a2,a3,…,an ,给出求解最大值的递归程序。
【答案】算法如下:
//设整数序列存于数组a 中,共有n 个,本算法求解其最大值
二、应用题
6. 写出下列排序算法的基本思想,并写出对序列(23,12,35,47,16,25,36,19,21,16) 进行排序时每一趟的结果。
是一个数组
交换;
【答案】此排序为双向起泡排序:从前向后一趟排序下来得到一个最大值,若其中发生交换,则再从后向前一趟排序,得到一个最小值。
第一趟:12,23,35,16,25,36,19,21,16,47 第二趟:12,16,23,35,16,25,36,19,21,47 第三趟:12,16,23,16,25,35,19,21,36,47 第四趟:12,16,16,23,19,25,35,21,36,47
相关内容
相关标签