2018年西安交通大学820计算机软件基础(含数据结构、程序设计)[专业硕士]之数据结构考研强化五套模拟题
● 摘要
一、算法设计题
1. 写出一个递归算法来实现字符串逆序存储。
【答案】算法如下:
//字符串逆序存储的递归算法
r
//需要使用静态变量
//
规定
是字符串输入结束标志
//字符串逆序存储
//字符串结尾标记
//结束算法InvertStore
2. 在输入数据无序的情况下,建立一个数据值为整型的递增有序的顺序存储线性表L ,且要求当输入相同数据值时,线性表中不能存在数据值相同的数据元素,试写出其算法。
顺序存储结构的线性表描述为:
线性表可能达到的最大长度};
【答案】算法如下:
//在顺序表a 中査找值为x 的元素,査找成功返回0值,否则返回查找失败时的较大下标值
//当査找失败时,low =high +
1
//结束对分査找函数
//本过程生成顺序表
L
//顺序表L 初始化
//设x =9999时退出输入
//去查找x 元素
//不同元素才插入
//插入元素x ,线性表长度增
1
//结束过程creat
3. 试将下列递归过程改写为非递归过程。
【答案】算法如下:
4. 当一棵有n(
) 个结点的二叉树按顺序存储方式存储在
中时,试写一个算法,求
出二叉树中结点值分别为X 和Y 的两个结点的最近公共祖先结点的值。
【答案】算法如下:
二叉树顺序存储在数组
中,本算法求结点i 和j 的最近公共祖先结点的值
下标为i 的结点的双亲结点的下标
下标为j 的结点的双亲结点的下标
所査结点的最近公共祖先的下标是
整型
5. 给定一个整数数组求出b 中最长平台的长度。
【答案】算法如下:
//求具有N 个元素的整型数组b 中最长平台的长度。
//局部最长平台
//新平台起点
(“最长平台长度
在b 数组中起始下标为
”,1,
k)
,值是
设元素类型为
b 中连续的相等元素构成的子序列称为平台。试设计算法,
二、应用题
6. 两个字符串s1和s2的长度分别为m 和n 。求这两个字符串最大共同子串算法的时间复杂度为T(m,n) 。估算最优的T(m,n) ,并简要说明理由。
【答案】最优的T(m,n) 是D(n)。串S2是串S1的子串,且在S1中的位置是1。开始求出最大公共子串的长度恰是串S2的长度。一般情况下,
7. 已知一个整数序列, 其中
且又如要求:
(1)给出算法的基本设计思想。 (2)根据设计思想, 采用C 或
或Java 语言描述算法, 关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
【答案】(1)算法的策略是从前向后扫描数组元素, 标记出一个可能成为主元素的元素Num 。然后重新计数, 确认Num 是否是主元素。
算法可分为以下两步:
, 若存在
, 则称5为主元素;
, 则称x 为A 的主元素。例如
则A 中没有主元素。假设A 中的n 个元素保存在一个一维数组中,
请设计一个尽可能高效的算法, 找出A 的主元素。若存在主元素, 则输出该元素; 否则输出-1。
相关内容
相关标签