首页 > 图书中心 > 数据结构与问题求解(C++版·微课版)

目录

目录

第1章概论1

1.1数据结构简介1

1.2数据结构的研究对象1

1.2.1数据逻辑结构1

1.2.2数据物理结构2

1.2.3数据存储结构2

1.3常用数据结构3

1.3.1数组3

1.3.2栈3

1.3.3队列3

1.3.4链表3

1.3.5树3

1.3.6图4

1.3.7堆4

1.3.8散列(哈希)表4

1.4数据结构常用运算4

1.4.1数据结构常用的运算4

1.4.2算法性能分析5

习题5

第2章C++编程入门6

2.1语法基础6

2.1.1数据类型6

2.1.2输入输出7

2.1.3命名空间7

2.1.4内存分配与回收8

2.1.5引用9

2.1.6内联函数10

2.1.7运算符重载10

2.1.8函数重载11

2.1.9异常11

2.2类与对象13

2.2.1概述13

2.2.2构造函数14

2.2.3对象的定义与使用15

2.2.4默认构造函数15

2.2.5成员初始化列表16

2.2.6this指针17

2.2.7析构函数18

2.3继承18

目录〖3〗2.3.1继承与派生的概念18

2.3.2继承语法形式18

2.3.3访问控制规则19

2.3.4派生类构造函数定义20

2.3.5派生类构造函数与析构函数调用次序20

2.3.6构造函数与析构函数构造规则23

2.4多态25

2.4.1多态的概念25

2.4.2虚函数25

2.4.3虚析构函数27

2.4.4纯虚函数与抽象类28

2.5模板与容器29

2.5.1模板概念29

2.5.2函数模板30

2.5.3类模板30

2.5.4容器31

2.5.5迭代器32

2.5.6关联式容器32

2.5.7算法33

2.6能力拓展34

2.6.1C#语言索引器模拟34

2.6.2数据访问服务器模拟35

习题39

第3章线性表40

3.1线性表概述40

3.2线性表的定义及基本操作40

3.3线性表存储结构41

3.3.1线性表的顺序存储结构41

3.3.2线性表的链表存储结构41

3.4线性表的实现41

3.4.1单链表41

3.4.2双向链表45

3.4.3循环链表46

3.5能力拓展47

3.5.1判断链表中是否存在环47

3.5.2约瑟夫环49

习题50

第4章堆栈和队列53

4.1堆栈53

4.1.1堆栈的定义53

4.1.2堆栈的基本操作及抽象数据类型描述53

4.2堆栈的存储结构及实现54

4.2.1堆栈的顺序存储结构及类的实现54

4.2.2堆栈的链表存储结构及类的实现56

4.3队列59

4.3.1队列的定义59

4.3.2队列的基本操作及抽象数据类型描述59

4.4队列的存储结构及实现60

4.4.1队列的顺序存储结构及类的实现60

4.4.2队列的链表存储结构及类的实现63

4.5堆栈和队列的应用场景65

4.5.1堆栈的应用场景65

4.5.2队列的应用场景66

4.6能力拓展66

4.6.1波兰表达式求值66

4.6.2银行排队模拟68

习题72

第5章串75

5.1串的定义75

5.1.1串的基本概念75

5.1.2抽象数据类型定义75

5.2串的实现76

5.2.1串的构造76

5.2.2串的赋值77

5.2.3子串截取78

5.2.4子串插入78

5.2.5串的复制80

5.2.6串的比较81

5.2.7串的拼接81

5.3串的模式匹配算法82

5.3.1暴力匹配82

5.3.2KMP匹配算法83

5.3.3改进的 KMP 算法87

5.4能力拓展88

习题90

第6章数组和广义表93

6.1数组的基本概念93

6.1.1数组的定义93

6.1.2数组的基本操作93

6.2数组的存储结构与抽象数据类型描述94

6.3特殊矩阵的压缩存储96

6.3.1对称矩阵96

6.3.2三角矩阵98

6.3.3对角矩阵99

6.4稀疏矩阵的压缩存储100

6.4.1稀疏矩阵的顺序存储结构——三元组顺序表101

6.4.2稀疏矩阵的链式存储结构——十字链表103

6.5广义表104

6.5.1广义表的定义和基本运算104

6.5.2广义表的存储105

6.6能力拓展106

习题107

第7章树与二叉树111

7.1树的概念111

7.2二叉树112

7.2.1二叉树的定义112

7.2.2二叉树的性质113

7.2.3二叉树的存储结构114

7.3二叉树的抽象数据类型描述116

7.4二叉树的操作117

7.4.1前序遍历117

7.4.2二叉树的构建118

7.4.3中序遍历119

7.4.4后序遍历119

7.4.5层序遍历120

7.4.6线索二叉树120

7.5二叉树与树、森林的转换123

7.5.1树与二叉树的转换123

7.5.2森林与二叉树的转换123

7.6树的存储结构125

7.6.1按树的度进行表示125

7.6.2孩子兄弟表示法126

7.7树的遍历127

7.7.1一般树的遍历127

7.7.2森林的遍历128

7.8哈夫曼树129

7.8.1概念129

7.8.2哈夫曼树的构造129

7.8.3哈夫曼树的实现130

7.8.4哈夫曼编码132

7.9能力拓展134

7.9.1根据树的前序和中序构造树134

7.9.2判断一棵树是否为平衡二叉树135

习题137

第8章图139

8.1图的基本概念139

8.2图的存储结构139

8.2.1图的邻接矩阵139

8.2.2图的邻接表140

8.2.3图的抽象数据类型描述141

8.2.4图类的实现141

8.3图的遍历与图的连通性142

8.3.1图的深度优先遍历142

8.3.2图的广度优先遍历144

8.3.3图的连通性和连通分量145

8.4图的最小生成树147

8.4.1最小生成树的基本概念147

8.4.2普里姆算法147

8.4.3克鲁斯卡尔算法150

8.5最短路径153

8.5.1单源最短路径算法153

8.5.2多源最短路径算法156

8.6拓扑排序与关键路径160

8.6.1拓扑排序160

8.6.2关键路径163

8.7能力拓展166

8.7.1迷宫最短路径求解166

8.7.2解不等式169

习题171

第9章查找175

9.1概述175

9.2静态查找表175

9.2.1顺序查找175

9.2.2折半查找176

9.2.3分块查找177

9.3动态查找表179

9.3.1二叉排序树179

9.3.2平衡二叉树183

9.4哈希查找185

9.4.1哈希函数186

9.4.2处理冲突的方法187

9.5能力拓展188

习题192

第10章排序194

10.1排序的基本概念194

10.2插入排序195

10.2.1直接插入排序195

10.2.2折半插入排序198

10.2.3希尔排序199

10.3交换排序202

10.3.1冒泡排序202

10.3.2快速排序205

10.4选择排序206

10.4.1简单选择排序206

10.4.2堆排序208

10.5归并排序211

10.6基数排序212

习题214

第11章索引结构217

11.1概述217

11.2静态索引结构218

11.2.1索引表218

11.2.2索引表查找219

11.3动态索引结构219

11.3.1B树的定义及运算219

11.3.2B+树的定义及运算223

11.4Trie树229

11.4.1Trie树的定义229

11.4.2Trie树的表示229

11.4.3Trie树的查找229

11.5哈希索引230

11.5.1静态哈希索引230

11.5.2动态哈希索引230

习题231

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘