2021年武汉大学计算机学院932软件工程基础考研核心题库之数据结构教程应用题精编

特别说明

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

版权声明

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

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

重要提示

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

1.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成了一个单链表并存于计算机中,链表的每个结点指出同样价格的若干台。现在又新到m台价格为h元的电视机入库。试编写出仓库电视机链表增加电视机的算法。(简要说明算法思想。算法描述用类Pascal或者类C语言均可。)

【答案】链表的结点至少包含三个域:价格、数量和链接域,其格式可如下表示:

增加电视机时,如果其价格已在链表中出现,只要找到该结点并给其数量域增加m即可,否则应建立新结点并把它链接到适当的位置。

算法描述如下:

2.二部图是一个能将其结点集V分为两个不相交子集和的无向

图,使得:中的任何两个结点在图G中均不相邻,中的任何两个结点在图G中也均不相邻。

(1)请各举一个结点个数为5的二部图和非二部图的例子。

(2)请用C或Pascal编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂性。设G用二维数组A来表示,大小为,n为结点个数。请在程序中加必要的注释。若有必要可直接利用堆栈或队列操作。

【答案】(1)如下图所示

(2)下面是判断一个图是否为二部图的算法思想:

设置两个顶点的集合A和B

3.模式匹配算法是在主串中快速寻找模式的一种有效的方法。如果设主串的长度为m,模式的长度为n,则在主串中寻找模式的KMP算法的时间复杂度是多少?如果某一模式,请给出它的next函数值及next函数的修正值nextval之值。

【答案】KMP算法的时间复杂度为。

模式的next函数值及next函数的修正值nextval之值如下表所示:

4.已知三个带头结点的线性链表A、B和C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对A表进行如下操作:使操作后的链表A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为,其中m、n和p分别为三个表的长度。

【答案】要求留下三个链表中的公共数据,首先査找两表A和B中的公共数据,再去C中查找有无该数据。要消除重复元素,应记住前驱,要求时间复杂度为,在查找每个链表时,指针不能回溯。算法主要由控制。若三表有一个到尾,则结束循环。A表头结点作监视哨,否则第一个结点要特殊处理。算法最后要给新A表置结尾标记,同时若原A表没到尾,还应释放剩余结点所占的存储空间。

5.已知二叉树T的前序(先根)遍历序列和中序(中根)遍历序列分别为EDCHABFGI和DHCEFBGIA。

(1)试求出(画出)二叉树T;

(2)画出与二叉树T对应的中序线索二叉树。

【答案】(1)该二叉树如下图1所示。

图1

(2)该二叉树的中序线索二叉树如下图2所示。

图2

6.设L为单链表的头指针,链表中结点的数据值为十进制正整数。请采用栈技术,写出链表中各结点数据值转换成八进制并输出的算法。

【答案】进制转化成八进制时,每次将数a模8的余数i放入栈中,然后,只要,就如此进行下去,然后将栈按单数字打印输出,则得到对应的八进制数。设

分别对应栈的出栈、入栈和判断栈是否为空的操作,算法描述如下:

相关文档
最新文档