考试时间:2020年1月9日 8:30~10:30,山东大学软件学院大二上数据结构考试
试卷结构和题目:
一. 简答题(20分)
- 给一个序列插入堆栈中,又给出两个序列,问能否通过堆栈操作,得到这后给出的两个序列
- 给一个二叉树前序序列和中序序列,写出后序序列
- 写出将四维数组以列主映射方式映射到一维数组的映射公式
- 含有n个非叶节点的m阶B-树,计算出该树非叶节点所含有的最少的关键字总数
- 给一个AOV图,写出拓扑排序算法的思想,并写出图中所有的拓扑序列
二. 应用题(50分)
- 散列表Hash(k) = k%11,散列表(线性探查)长度为13,给一组序列:(1)构建出该散列表;(2)散列表中某2个元素的比较次数;(3)画出删除指定元素后的散列表
- 题中给出反对角矩阵的具体定义,要求画出一个4x4的反对角矩阵的样例,并写出将其映射到一维数组的映射公式
- 给一个序列,构建出AVL搜索树,并求出平均查找长度(每个节点出现的概率相等)
- 给一个序列,通过堆排序删除2个最小元素,画出删除2个最小元素后的堆
- 给一个无向加权图,使用Prim算法,从题中指定的顶点开始构建最小成本生成树
三. 算法题(30分)
- 将一个数组中的奇数元素都移到偶数元素之前,要求有最优时间复杂度,写出算法思想,并用C++实现,再求出时间复杂度
- 二叉树的节点:lchild左指针域,data数据,rchild右指针域,构建一个单链表,将二叉树的叶子节点从左至右连接起来,head为此单链表头节点,用叶节点的右指针域存放链表节点,写出算法思想,并用代码实现,并分析算法复杂度
最后预祝各位同学,期末取得好成绩。