2021年西北民族大学数学与计算机科学学院803计算机学科专业基础考研核心题库之数据结构应用题精编

特别说明

本书根据历年考研大纲要求并结合历年考研真题对该题型进行了整理编写,涵盖了这一考研科目该题型常考试题及重点试题并给出了参考答案,针对性强,考研复习首选资料。

版权声明

青岛掌心博阅电子书依法对本书享有专有著作权,同时我们尊重知识产权,对本电子书部分内容参考和引用的市面上已出版或发行图书及来自互联网等资料的文字、图片、表格数据等资料,均要求注明作者和来源。但由于各种原因,如资料引用时未能联系上作者或者无法确认内容来源等,因而有部分未注明作者或来源,在此对原作者或权利人表示感谢。若使用过程中对本书有任何异议请直接联系我们,我们会在第一时间与您沟通处理。

因编撰此电子书属于首次,加之作者水平和时间所限,书中错漏之处在所难免,恳切希望广大考生读者批评指正。

重要提示

本书由本机构编写组多位高分在读研究生按照考试大纲、真题、指定参考书等公开信息潜心整理编写,仅供考研复习参考,与目标学校及研究生院官方无关,如有侵权请联系我们立即处理。一、2021年西北民族大学数学与计算机科学学院803计算机学科专业基础考研核心题库之数据结构应用题精编

1.设阶稀疏矩阵A有t个非零元素,其三元组表表示为,试问:非零元素的个数t达到什么程度时用LTMA表示A才有意义?

【答案】稀疏矩阵A有t个非零元素,加上行数mu、列数nu和非零元素个数tu(也算一个三元组),共占用三元组表LTMA的个存储单元,用二维数组存储时占用个单元,只有当时,用LTMA表示A才有意义。解不等式得。

2.在如图所示的4阶B树中,插入关键字87,试画出调整后树的形状。

【答案】(1)4阶B树:每个结点最多4棵子树、最少2棵子树。

(2)每个结点最多3个关键字、最少1个关键字。

(3)插入87后,结点的关键字个数达到4个,进行如下操作

①分裂为两个结点。

②将85插入其父结点中,此时父结点变成了,关键字个数达到4个,进行如此操作:分裂为两个结点,60生成一个根结点。

最终的B树如图所示。

3.利用两个栈模拟一个队列时,如何用栈的运算实现队列的插入、删除以及判队空运算。请简述这些运算的算法思想。

【答案】栈的特点是后进先出,队列的特点是先进先出。初始时设栈和栈均为空。

(1)用栈和模拟一个队列的输入:设和容量相等。分以下三种情况讨论:若未满,则元素入栈;若满,空,则将退栈到空,退栈元素依次压栈入s2之后元素入栈;若满,

不空(已有出队列元素),则不能入队。

(2)用栈和模拟队列出队(删除):若栈s2不空,退桟,即是队列的出队;若s2为空且s1不空,则将s1栈中全部元素退栈,并依次压入s2中,s2栈顶元素退栈,这就是相当于队列的出队。若栈s1为空并且s2也为空,队列空,不能出队。

(3)判队空:若栈s1为空并且s2也为空,才是队列空。

讨论:s1和s2容量之和是队列的最大容量。其操作是s1栈满后,全部退栈并压栈入s2(设s1和s2容量相等)。再入栈s1直至s1满。这相当于队列元素“入队”完毕。出队时,s2退栈完毕后,s1栈中元素依次退栈到s2,s2退桟完毕,相当于队列中全部元素出队。在栈s2不空情况下,若要求入队操作,只要s1不满,就可压入s1中。若s1满和s2不空状态下要求队列的入队时,按出错处理。

4.判别下面的每个结点序列是否表示一个堆,如果是堆,请把它调整为堆。

(1)100,90,80,60,85,75,20,25,10,70,65,50

(2)100,70,50,20,90,75,60,25,10,85,65,80

【答案】(1)画出此序列对应的完全二叉树,如下图1所示。

由图可以知道每个顶点都大于它的儿子结点。所以,这是一个大顶堆。

图1

(2)画出此序列对应的完全二叉树,如图2所示。

图2

由图2知道,此序列既不是大顶堆也不是小顶堆。

调整后的堆的二叉树表示如图3所示。

图3

对应的序列是:(100,90,80,25,85,75,60,20,10,70,65,50)

5.设输入序列为a,b,c,d,试写出借助一个栈可得到的两个输出序列和两个不能得到的输出序列。

【答案】n个元素的排列有种,但借助栈结构,n个入栈元素只可得到

种出栈序列,这个数小于。本题4个元素,可有14种出栈序列,abcd和dcba就是其中两种;有种排列得不到,其中dabc和adbc是不可能得到的两种。

6.关于堆排序:

(1)给出堆的定义及其数据结构的定义。

(2)给出堆排序算法的基本思想,并给予图例说明(要求不少于六个待排序元素)。

(3)用伪语言描述该算法。

(4)给出算法在最差情况下的时间复杂度分析。

【答案】(1)n个元素序列当且仅当对于所有的元素,满足且(或者是大于)。所以堆的数据结构定义只需要声明一个数组来记录即可

(2)堆排序每次从堆顶输出一个元素,然后将序列末尾放至堆顶,然后由上而下作一次调整,形成新的堆。算法如图所示。

(3)

相关文档
最新文档