顺序为大概的顺序,实际题目顺序已经记不清了 也可能有漏掉的题 嗯嗯就这样
希望可以给22级之后的大伙提供一点复习参考
1.链表描述的队列
链表头尾与队首队尾的关系,以及填C++代码完成push()和pop()
2.快速排序与归并排序
第一小问要求写出给定无序序列以第一个元素为pivot的时候 第一趟排序完时的序列
第二小问要求给出自然归并排序的分组情况以及非递归情况下第一次归并后的序列
3.链式散列
给定待插入元素以及哈希函数(这次是模11)画出链式散列
并且求出在一次成功的查找里平均查找的桶数
4.火车车厢重排问题
第一问有三个缓冲轨道,问的是当1号车厢到达出站口时的所有轨道的情况
第二问是当缓冲轨道仅剩两个时,还能否完成重排,如果能则画出当1号车厢到达出站口时的所有轨道的情况,如果不能则画出算法失败时的所有轨道的情况
5.二叉树
给定一个结构已知,元素未知的二叉树以及该二叉树的后序遍历序列
要求反推出该二叉树并求出其层次遍历结果。
6.AVL树
给定一个序列,依次插入一个空的AVL树,画出每次插入的情况以及旋转的类型。
7.堆
第一问纯送,要求写出从叶节点一直到根节点都保持有序的数据结构,然而第二问里直接就写了堆)
第二问,给出一个数组描述的最小堆,要求写出删除三次堆顶元素后的数组。
8.霍夫曼树
有一种有序序列run,对于两个长度分别为r、s的run,可以在O(r+s)内合并成一个新的run,设计算法实现对n个不同长度的run合并为一个run,并且其时间开销最小,并给出设计算法的时间复杂度。
9.B-树
给了一个有一些元素的2-3树,依次插入3个元素,然后删除两个元素,画出每次插入或删除后的B-树。
10.图论
已知一个无向图有26条边,其中度为5的顶点有2个,度为4的顶点有3个,其余顶点度数均小于3,求顶点最少有多少个。
11.拓扑排序 给出优先图(题干里用的集合描述)
第一小问要求写出所有可能的拓扑序列。
第二小问要求设计算法求拓扑序列,阐述算法思路。
12.最小生成树
第一问,给定一个图,要求画出其邻接链表。
第二问,要求写出该图的BFS序列。
第三问,列表写出Kruskal算法执行的过程
第四问,列表写出Prim算法执行的过程
13.算法题1 - 二叉树
背景:给定一棵二叉树(元素可以重复),要求写一个算法实现删除该二叉树中每一个以x为根节点的子树,并给出所设计算法的时间复杂度。
第一小问要求写出算法设计思路。
第二小问要求写出C++描述的实现代码。
第三小问要求求出其时间复杂度。
实际上是层次遍历 + 删除子树
14.算法题2 - 多源最短路径(Floyd算法)
背景:有n个村庄,村庄之间可以有一条路连接(有权),现需要在一个村庄建一家医院,使距离医院最短的村庄到医院的距离最短,设计算法解决该问题。
第一小问要求写出算法设计思路
第二小问要求写出C++描述的实现代码。
第三小问要求求出其时间复杂度。