目录
第1章数据结构概述
1.1逻辑结构
1.2物理结构
1.3算法与结构
1.4C++版本的说明
习题1
第2章算法复杂度
2.1算法
2.2算法的复杂度
2.3常见的复杂度
习题2
第3章递归算法
3.1递归算法简介
3.2线性递归与非线性递归
3.2.1线性递归
3.2.2非线性递归
3.3问题与子问题
3.4递归与迭代
3.5多重递归
3.6经典递归
3.6.1杨辉三角形
3.6.2老鼠走迷宫
3.6.3汉诺塔
3.7优化递归
习题3
第4章数组
4.1数组与参数存值
4.2数组与排序
4.2.1快速排序
4.2.2归并排序
4.2.3计数排序
4.2.4动态排序
4.3数组的二分查找
4.3.1二分法
4.3.2过滤数组
4.4数组的复制
4.4.1复制数组的函数
4.4.2处理重复数据
4.5数组的比较
4.6数组与洗牌
4.7数组与生命游戏
习题4
第5章链表与list类
5.1链表的特点
5.2创建链表
5.3遍历链表
5.4查询与相等
5.5添加节点
5.6删除节点
5.7更新节点
5.8子链表
5.9链表的排序
5.10合并、倒置和交换链表
5.11编写简单的链表
习题5
第6章顺序表与vector类
6.1顺序表的特点
6.2顺序表的创建与常用函数
6.3顺序表与最长递增子数组
6.4顺序表与筛选法
6.5顺序表与全排列
6.6顺序表与组合
6.7顺序表与记录
习题6
第7章栈与stack类
7.1栈的特点
7.2栈的创建与独特函数
7.3栈与回文串
7.4栈与递归
7.5栈与括号匹配
7.6栈与深度优先搜索
7.7栈与后缀表达式
习题7
第8章队列与deque类
8.1队列的特点
8.2队列的创建与独特函数
8.3队列与回文串
8.4队列与加密解密
8.5队列与约瑟夫问题
8.6队列与广度搜索
8.7优先队列
8.8队列与排队
习题8
第9章二叉树与set类
9.1二叉树的基本概念
9.2遍历二叉树
9.3二叉树的存储
9.4平衡二叉树
9.5二叉查询树和平衡二叉查询树
9.6创建std::set平衡二叉查询树
9.7std::set树的基本操作
9.8std::set树与数据统计
9.9std::set树与过滤数据
9.10std::set树与节目单
习题9
第10章散列表与unordered_map类
10.1散列结构的特点
10.2简单的散列函数
10.3创建散列表
10.4散列表的基本操作
10.5遍历散列表
10.6散列表与字符、单词频率
10.7散列表与数据缓存
10.8重载hash()函数
10.9std::map类
习题10
第11章集合与unordered_set类
11.1集合的特点
11.2unordered_set类
11.3集合的基本操作
11.4集合与数据过滤
11.5集合与获得随机数
11.6重载hash()函数
习题11
第12章常用算法与algorithm库
12.1Lambda表达式
12.2动态遍历算法
12.3复制与替换算法
12.4排序算法
12.5查找算法
12.6删除与清零算法
12.7反转与旋转算法
12.8全排列算法
习题12
第13章图论
13.1无向图
13.2有向图
13.3网络
13.4图的存储
13.5图的遍历
13.6测试连通图
13.7最短路径
13.8最小生成树
习题13
第14章经典算法思想
14.1贪心算法
14.2动态规划
14.3回溯算法
习题14
附录A运算符重载、模板类和std::string
A.1重载关系运算符
A.2类模板的基础知识
A.3std::string类
参考文献