一、知识点
第一章 绪论
1、时间复杂度和空间复杂度的计算。要求能够计算出程序的执行次数。
2、各种概念:数据结构、数据项、数据元素
第二章 线性表
1、单链表的各种操作,包括单链表的建立、插入、删除结点的操作语句序列
2、单链表(带头结点、不带头结点、循环单链表)的逆置运算。
3、双链表的插入和删除操作语句序列。
4、单链表的直接插入排序运算。
5、静态单链表的插入和删除操作。
6、二个有序单链表的合并、一个单链表拆分为多个单链表
第三章 栈和队列
1、栈的输入序列和输出序列、递归函数的输出结果
2、循环队列的入队、出队操作以及有效元素个数的计算
第四章 串
1、KMP算法中的next和nextval值的计算
第五章 数组和广义表
1、二维数组任意元素地址的计算
2、稀疏矩阵的转置算法
3、广义表的两个操作函数:取表头和表尾
第六章 树和二叉树
1、二叉树的性质(特别是完全二叉树的性质,例如求完全二叉树的深度等)
2、二叉树的遍历(特别是中序和先序遍历,要求能够使用堆栈完成非递归遍历编程和递归算法编程,在遍历基础上的各种操作,例如求二叉树的叶子数、二叉树结点数等操作,包括有编程算法和编程填空题)
3、线索二叉树(特别是中序线索化二叉树和中序线索化二叉树的中序遍历,包括编程算法和编程填空题,希望大家着重研究)
4、哈夫曼编码(主要是应用题,包括哈夫曼的编码与解码,也包括哈夫曼树的特点)
5、树与森林在转化成二叉树时,左右子树的结点数有何特点)
6、树的层次遍历(使用队列完成、借助树的层次遍历可以判断二叉树是否为完全二叉树)、判断二叉树是否为排序二叉树等,可能有编程题或编程填空题)
补充:二叉树的物理存储结构(链式和顺序存储)*
第七章 图
1、图的两种物理存储方式(邻接矩阵与邻接表存储表示)
2、图的生成树与最小生成树(生成树特点)、图的遍历
3、求最小生成树的两种算法(重点是PRIM算法,特别会写出用PRIM算法求最小生成树的过程)
4、使用迪杰斯特拉算法求单源最短路径,写出求解过程
5、拓扑排序
6、求关键路径,要求写出事件和活动的最早和最晚开始时间,深刻理解关键路径的含义。
第八章 查找
1、顺序查找算法
2、有序表的折半查找(包括算法编程、求平均查找长度等)
3、二叉排序树的构建和应用
4、平衡二叉排序树的构建和应用(四种旋转)
5、B树的插入和删除操作
6、应用线性、二次探测法和链表法完成哈希表的构建、计算哈希表的平均查找长度等
第九章 排序
1、插入排序(简单插入、希尔排序每趟排序的结果)
2、交换排序(包括冒泡排序、快速排序每趟排序结果,快速排序的算法实现,可能有程序填空题,特别是冒泡排序的快速处理技巧应用)
3、选择排序(简单选择排序、堆排序的排序过程及每趟排序结果的应用、堆排序算法填空)
4、归并排序(包括每趟排序的结果)
5、基数排序(包括每趟排序结果)
二、应用题
1.KMP算法中的next和nextval值的计算。
2.哈夫曼树的构建、编码和解码、求平均码长WPL。
3.使用prim算法求最小生成树。
4.使用迪杰斯特拉算法求单源最短路径。
5.有向带权图中求关键路径。
6.B树结点的插入和删除操作。
7.使用线性、二次探测法和链表法完成哈希表的构建、计算哈希表的平均查找长度。
三、程序阅读题
(1)单链表的各种操作(单链表的建立、删除和修改、逆置等)
(2)堆栈的应用(包括数制转换等)
(3)二叉树的各种递归编程应用(求树的深度 层次遍历、叶子的数量 前序遍历,没孩子的为叶子、结点的数量等)
(4)二叉排序树的创建(包括查找和插入元素)
(5)交换排序的编程实现
(6)二分查找、二叉排序树
(7)希尔排序、快速排序、堆排序、归并排序和基数排序算法
四、编程题
(1)循环单链表、单链表逆置
(2)两个有序单链表的合并、一个单链表按照规则进行拆分、删除有序单链表中重复元素、单链表的插入、选择排序,单链表中求最大值和最小值等。
(3)二叉树的非递归和递归中序遍历
(5)二叉树的中序线索化算法、对中序线索二叉树进行中序遍历
(6)判断二叉树是否为完全二叉树、二叉树是否为二叉排序树 中序遍历+判断前后值大小、求二叉树的深度 层序遍历+last标记每层最后节点、求二叉树某个结点的子孙
(7)将二叉树叶子结点连接为单链表或双链表。