第一讲:绪论
1. 数据结构基本概念
数据结构、数据元素、数据结构三元素、数据类型、抽象数据类型
2.算法的基本概念
算法、算法复杂度、渐进复杂度、常见的渐进复杂度、复杂度分析
3. 递归与迭代
分治与减治、递归复杂度方程、递归调用实例图
第二讲:向量
1. 向量基本概念
数据结构分类、序列(线性表)、向量(顺序表)
2. 无序向量的基本接口及复杂度分析
查找、插入、删除、去重、遍历、排序(归并排序、插入排序、选择排序)
3.有序向量的基本接口及复杂度分析
唯一化、二分查找、二分查找的平均查找长度
第三讲:列表
1. 列表基本概念、特性及其与向量的比较
2. 单向链表的基本操作
带表头结点与不带表头结点、列表插入、删除、表头插入删除、表尾插入删除、双向链表
3. 双向链表的接口实现
查找、删除、去重、遍历、排序(归并排序、插入排序、选择排序)
第四讲:栈与队列
1. 栈的基本概念与简单实现
2. 栈的应用:括号匹配、逆向输出
3. RPN问题
中缀表达式与逆序表达式转换,逆序表达式求值
4. 栈混洗与卡特兰数
5. 队列的基本概念与实现
循环队列,队列的单向链表实现
第五讲:串
串的KMP匹配算法
Next表构造
复杂度分析
第六讲:数组
1. 多维数组的存储表示
2. 特殊矩阵压缩存储(对称、三角)
3. 稀疏矩阵压缩存储
三元组、快速转置、十字链表
第七讲:二叉树
1. 树与二叉树的基本概念
树的概念、递归结构、二叉树、性质(公式)
2. 树与二叉树转换
孩子兄弟表示、树(森林)到二叉树的转换、二叉树到树(森林)的转换
3. 二叉树的基本实现
4. 二叉树遍历
广度优先、深度优先(前序、中序、后序)、深度优先的递归实现、先序及中序遍历的迭代实现
5. 二叉树的重构
6. 哈夫曼编码
哈夫曼树构造、带权路径长度计算、哈夫曼编码
第八讲:二叉搜索树
1. 二叉搜索树的基本概念
2. 二叉搜索树的搜索、插入、删除
直接后继与直接前驱
3. 平衡二叉搜索树
局部旋转平衡调整、3+4调整、插入的平衡调整、删除的直接替换与迭代旋转调整
第九讲:KD树 (不考)
二叉树递归实现的技巧(剪枝优化)
1. KD树的递归建立
2. KD树的范围查找
3. KD树的最近邻
第十讲:图(上)
1.图的基本概念
边与顶点、有向图、无向图、邻接矩阵、邻接表
2. 图的遍历
广度优先遍历、深度优先遍历(递归实现与迭代实现)、复杂度分析
3.最小生成树(Prim)
程序实现、手工实现、复杂度分析
4.最短路径树(Dij)
程序实现、手工实现、复杂度分析
第十一讲:优先级队列
1. 优先级队列的概念与目标
2.堆的完全二叉树与向量存储的转换
3. 堆的基本接口实现与复杂度分析
插入、删除、构建、排序
4. 优先级队列的应用与复杂度分析
哈夫曼编码问题的优化、Dijkstra问题的优化等、复杂度分析
第十二讲:图(下)
1. 图搜索统一框架
顶点更新与选取的迭代、栈实现与队列实现、栈实现与递归实现的转化、基于优先级队列的Dij和Prim的优化及复杂度分析
2. Ballman与Ford算法,复杂度分析
3. Floyd算法,复杂度分析
4. 拓扑排序与实现
第十三讲:散列
1. 散列查找的基本概念和应用范围
2. 散列函数
MAD法等
3. 散列冲突排解方法
独立链、开放定址:线性试探、(双)平方试探
4. 桶排序与基数排序
第十四讲:排序
1. 希尔排序
2. 快速排序
3. 中值查找
4. 排序算法的复杂度比较
5. 各种排序算法的基本实现
第十五讲:B树与红黑树
1. B树
B树的特点、B树的插入、B树的删除
2. 红黑树
红黑树的优点、红黑树与B树的转换、红黑树的插入手工实现