目录
第1章数据结构的分类和基本运算
1.1数据的逻辑结构
1.2数据的存储结构
1.3数据结构的基本运算
第2章递归
2.1递归调用
2.2递归方式打印九九乘法表
2.3舍罕王赏麦
2.4递归遍历文件
2.5递归实现斐波那契数列
2.6循环实现斐波那契数列
2.7兔子繁殖问题
第3章栈和队列
3.1栈结构
3.2用栈做十进制与二进制的转换
3.3最小栈
3.4队列
3.5两个栈实现一个队列
3.6以递归方式反转一个栈
3.7递归加栈实现汉诺塔
第4章链表
4.1链表结构
4.2单向链表
4.2.1单向链表的追加和遍历
4.2.2单向链表的随机访问
4.2.3单向链表的随机插入
4.2.4单向链表的随机删除
4.2.5从尾到头打印单向链表
4.2.6反转一个单向链表
4.2.7反转单向链表中索引n~m处节点
4.2.8合并多个链表
4.2.9合并两个有序链表
4.2.10相交链表
4.2.11判断两个链表是否相交
4.2.12构造带环的单向链表
4.2.13判断链表是否有环并找出环的闭合点
4.3单向循环链表
4.3.1单向循环链表的追加和遍历
4.3.2约瑟夫环
4.4双向链表
4.4.1双向链表的追加和遍历
4.4.2双向链表的随机插入和删除
4.4.3双向链表实现插值法排序
4.5双向循环链表
4.5.1双向循环链表的追加和遍历
4.5.2双向循环链表的随机插入和随机删除
第5章数组
5.1数组结构
5.2消除数组中重复元素
5.3求数组中的最大值和次大值
5.4求一个数组的支点元素
5.5求数组的幸运值
5.6在数组中实现二分法查找
5.7求无序数组中最长连续子串的长度
5.8求数组中出现次数超过总数一半的数
5.9环路加油站问题
第6章树结构
6.1树、森林、二叉树
6.2二叉排序树
6.2.1二叉排序树的插入与中序遍历
6.2.2二叉排序树的深度优先遍历和广度优先遍历
6.2.3二叉排序树的前序遍历
6.2.4二叉排序树的后序遍历
6.2.5二叉排序树的广度优先遍历
6.2.6二叉排序树的节点删除
6.2.7二叉排序树的按层遍历
6.2.8求二叉树的最大深度、最小深度
6.2.9求二叉树中任意两个节点之间的最低公共祖先
6.3满二叉树
6.3.1满二叉树的构建
6.3.2判断一棵二叉树是不是满二叉树
6.4完全二叉树
6.4.1完全二叉树的插入
6.4.2查看完全二叉树
6.4.3判断一棵二叉树是不是完全二叉树
6.5平衡二叉树(AVL树)
6.5.1平衡二叉树的节点插入
6.5.2平衡二叉树的节点删除
6.6红黑树(RBTree)
6.6.1红黑树的插入
6.6.2红黑树的遍历操作
6.6.3红黑树的删除操作
6.6.4完整代码实现
6.6.5红黑树练习题
第7章堆结构
7.1堆
7.2二叉堆
7.2.1二叉堆的插入
7.2.2二叉堆的遍历
7.2.3二叉堆的删除
7.3大(小)顶堆
7.3.1大(小)顶堆的插入
7.3.2大(小)顶堆的堆排序
第8章散列表
8.1散列表(哈希表)
8.2散列函数
8.3求两数组交集
8.48个方向
第9章字典树
9.1字典树结构
9.2字典树的存入
9.3字典树的检索
9.4遍历字典树中的键
第10章图
10.1图结构
10.2图的表示
10.2.1邻接矩阵
10.2.2邻接表
10.2.3邻接矩阵和邻接表的使用场景
10.2.4边的权重
10.3图结构的代码实现
10.3.1邻接矩阵方式
10.3.2邻接表方式
10.4图的遍历
10.4.1图结构的深度优先遍历和广度优先遍历
10.4.2图遍历的代码实现
10.5生成树和最小生成树
10.5.1Prim算法求取最小生成树
10.5.2最小生成树的代码实现
第11章排序算法
11.1排序算法的几个基本概念
11.1.1排序的稳定性和不稳定性
11.1.2排序的时间复杂度
11.1.3排序的空间复杂度
11.2冒泡排序
11.3选择排序
11.4插入排序
11.5希尔排序
11.6归并排序
11.7快速排序
11.8计数排序
11.9桶排序
11.10基数排序
11.1110种常见排序算法的复杂度