2021年内蒙古大学计算机学院892程序设计与数据结构考研核心题库之数据结构与算法算法设计题精编

特别说明

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

版权声明

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

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

重要提示

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

1.设已给出图的邻接矩阵,要求将图的邻接矩阵转换为邻接表,试实现其算法。

【答案】算法描述如下:

2.用类C/C++设计算法,判断一个带表头结点的双向循环链表.是否对称相等。(比如,表(25,34,34,25)和表(25,3,25)为对称的。)其中结点结构为:

【答案】本题也是判断链表的中心对称,由于是带头结点的双向链表,算法要容易些。设p 和q分别指向链表的首尾结点,两指针相向移动比较,遇不等就退出,到或时,结论中心对称。核心语句段如下:

3.请写出一种快速排序的非递归算法思想。要求:附加空间复杂度不得大于。

【答案】仔细分析快速排序的递归算法,可以发现这个算法结构与二叉树的前序遍历算法相似。如果我们把一趟划分看成是对二叉树的结点访问操作,把划分后的两个子序列分别看成左右子树,那么快速排序过程基本上与二叉树前序遍历过程一致。利用二叉树前序遍历的非递归算法思想,就可以将快速排序算法改写为非递归算法。具体思想是:在对当前待排序列进行一趟划分后,先将一个子序列的上、下界保存到一个找中,而将另一个子序列作为当前序列再进行下一趟划分……如此反复,直到当前序列有序时再从栈中取出另一个子序列,重复上述过程,直到栈为空。

利用这种思想,在初始序列为正序时,上述算法所使用的找空间为;若初始序列为逆序时,所使用的栈空间为。所以在最坏情况下,此算法的空间复杂度为。如果在上述算法中,对当前待排序列进行划分后,选择长度较短的子序列进行下一趟排序,而将长度较长的子序列的上、下界保存到找中,这样最坏空间复杂度可以降为。

进一步扩展,其算法描述如下:

4.请给出二叉树前序遍历的非递归算法。

【答案】二叉树前序遍历的递归算法如下:

将其转换成非递归算法如下:

5.设待排序的文件用单链表作存储结构,其形式如下:

写出以head为头指针的选择排序算法。

相关文档
最新文档