2018年延边大学工学院832数据结构与操作系统之数据结构考研基础五套测试题
● 摘要
一、算法设计题
1. 假设串的存储结构如下所示,编写算法实现串的置换操作。
【答案】算法如下:
//s和t 是用一维数组存储的串,本算法将s 串第i 个字符开始连续j 个字符用t 串置换,操作成功返回1,否则返回0表示失败
//检査参数及置换后的长度的合法性
//若S 串被替换的子串长度小于t 串长度,则S 串部分右移
//S串中被替换子串的长度小于t 串的长度
//将t 串复制到S 串的适当位置
//算法结束
//本算法是串的置换操作,将串S 中所有非空串t 相等且不重叠的子串用V 代替
//判断S 是否有和t 相等的子串
//串S 中包含和t 相等的子串
//creat操作是将串常量(此处为空串) 赋值给
temp
//求串t 和s 的长度
//用串v 替换t 形成部
分结果
//将串s 中串后的部分形成新的s 串
//求串s 的长度
//在新s 串中再找串t 的位置
//将串temp 和剩余的串s 连接后再赋值给s
}//if结束
//算法结束
2. 已知P 是指向单向循环链表最后一个结点的指针,试编写只包含一个循环的算法,将线性表(
) 改造为(
【答案】算法如下:
//本算法将线性表
//q指向a 1结点
//r记住a l 结点的指
针
//先将a 1结点放到正确位置
//从a 2结点开始
//暂存后继
//对称放置
//恢复待处理结点
3. 己知两个定长数组,它们分别存放两个非降序有序序列,请编写程序把第二个数组序列中的数逐个插入到前一个数组序列中,完成后两个数组中的数分别有序(非降序) 并且第一数组中所有的数都不大于第二个数组中的任意一个数。注意,不能另开辟数组,也不能对任意一个数组进行排序操作。
例如:
第一个数组为:4,12,28 第二个数组为:1,7,9,29,45 输出结果为:
第一个数组
第二个数组
【答案】算法如下:
//A和B 是各有m 个和n 个整数的非降序数组,本算法将B 数组元素逐个插入到A 中
) 。
改造为
//使A 中各元素均不大于B 中各元素,且两数组仍保持非降序排列
.
" 交换A[m﹣1]和
B[0]
//寻找A[m﹣1]的插入位置
//寻找B[0]的插入位置
算法结束
4. 写出一趟快速排序算法。
【答案】算法如下:
一趟快速排序算法,枢轴记录到位,并返回其所在位置
5. 元素集合已存入整型数组树T 的非递归算法:CSBT(r,A)
【答案】算法如下:
以存储在数组K 中的n 个关键字,建立一棵初始为空的二叉排序
树
在调用时,
T=null
f 是P 的双亲
申请结点空间
根结点
左子女
右子树根结点的值大于等于根
中,试写出依次取A 中各值构造一棵二叉排序
相关内容
相关标签