2017年山西农业大学数据结构(同等学力加试)考研复试核心题库
● 摘要
一、应用题
1. 对一个有t 个非零元素的
矩阵,用
的数组来表示,其中第0行的三个元素分
别为m ,n ,t ,从第一行开始到最后一行,每行表示一个非零元素;第一列为矩阵元素的行号,第二列为其列号,第三列为其值。对这样的表示法,如果需要经常进行该操作-确定任意一个元素
在B 中的位置并修改其值,应如何设计算法可以使时间得到改善?
【答案】题中矩阵非零元素用三元组表存储,查找某非零元素时,按常规要从第一个元素开始查找,属于顺序查找,
时间复杂度为
若使查找时间得到改善,可以建立索引,将各行行
号及各行第一个非零元素在数组B 中的位置(下标)放入一向量C 中。若查找非零元素,可先在数组C 中用折半查找到该非零元素的行号,并取出该行第一个非零元素在B 中的位置,再到B 中 顺序(或折半)查找该元素,这时时间复杂度为
2. 证明:在二叉树的三种遍历序列中,所有叶结点间的先后关系都是相同的。要求毎步论断都指出根据。
【答案】前序遍历是“根左右”. 中序遍历是“左根右”. 后序遍历是“左右根”。若将“根”去掉,三祌遍历就剩“左右”。三种遍历中的差别耽足访问根结点的时机不同。二叉树是递归定义的,对左右子树均是按左右顺序来遍历的,因此所有叶结点间的先后关系都是相同的。
3. 设内存中可利用空间已连成一个单链表,对用户的存储空间需求,一般有哪三种分配策略?
【答案】(1)首次适配法
从链表头指针开始查找,找到第一个大于等于所需空间的结点即分配。首次适配法适合事先不知道请求分配和释放信息的情况,分配时需查询,释放时插在表头。
(2)最佳适配法
链表结点大小增序排列,找到第一个大于等于所需空间的结点即分配。最佳适配法适用于请求分配内存大小范围较宽的系统,释放时容易产生存储量很小难以利用的内存碎片,同时保留那些很大的内存块以备将来可能发生的大内存量的需求,分配与回收均需查询。
(3)最差适配法
链表结点大小逆序排列,总从第一个结点开始分配,将分配后结点所剩空间插入到链表适当位置。最差适配法适合请求分配内存大小范围较窄的系统,分配时不查询,回收时查询,以便插入适当位置。
4. 写出下面算法中带标号语句的频度。
设k 的初值等于1。
【答案】(1)这是一个递归调用,因k 初值为1,由语句(6)知,每次调用k 增1,故第(1)语句执行n 次,所以频度是n 。
(2)这是FOR 循环语句,在满足(1)的条件下执行,该语句进入循环体(3)n 次,加上最后一次判断出界,故执彳丁了n +1次,所以频度是n +1。
(3)这是循环体语句,共执行了n 次,所以频度是n 。
,k=2时判断n 次,最后(4)这是循环语句,当k=l时判断n +1次(进入循环体(5)n 次)
一次k=n-l 时判断3次,故执行次数是(n +1)+n +... +3=(n +4)(n -1)/2次,所以频度是(n +4)(n -1)/2。
(5)语句(5)是(4)的循环体,每次比(4)少一次判断,故执行次数是n +(n -1)+... +2=(n +2)(n -1)/2次,所以频度是(n +2)(n -1)/2。
(6)这是循环体语句,共执行了n -1次,所以频度是n -1。
5.
已知一个整数序列
其中
则称x 为A 的主元素。
例如
若存在
且
则称5为主元素;
又如
则A 中没有主元素。假设A 中的n 个元素保存在一个一维数组中,请设计一个
尽可能高效的算法,找出A 的主元素。若存在主元素,则输出该元素;否则输出-1。要求:
(1)给出算法的基本设计思想。 (2)根据设计思想,采用C 或【答案】
(1)算法的策略是从前向后扫描数组元素,标记出一个可能成为主元素的元素Num 。然后重新计数,确认Num 是否是主元素。
算法可分为以下两步:
①选取候选的主元素:依次扫描所给数组中的每个整数,将第一个遇到的整数Num 保存到c 中,记录Num 的出现次数为1; 若遇到的下一个整数仍等于Num ,则计数加1否则计数减1; 当计
或Java 语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
数减到0时,将遇到的下一个整数保存到c 中,计数重新记为1,开始新一轮计数,即从当前位置开始重复上述过程,直到扫描完全部数组元素。
②判断c 中元素是否是真正的主元素,再次扫描该数组,统计c 中元素出现的次数,若大于则为主元素;否则,序列中不存在主元素。
(2)算法实现如下:
用来保存候选主元素,count 用来计数
设置A [0]为候选主元素
查找候选主元素
为A 中的候选主元素计数
处理不是候选主元素的情况
更换候选主元素
统计候选主元素的实际出现次数
确认候选主元素
不存在主元素
,空间复杂度为O (1)(3)时间复杂度为O (n )。
6. 设二叉树BT 的存储结构如表:
表 二叉树BT 的存储结构
其中BT 为树根结点的指针,其值为6, Lchild 、Rchild 分別为结点的左、右孩子指针域data 为结点的数据域。试完成下列各题:
(1)画出二叉树BT 逻辑结构;
(2)写出按前序、中序、后序遍历该二叉树所得到的结点序列: