图书目录

目录

第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类

参考文献