当前位置:首页 > 工业技术
算法与数据结构  C++版
算法与数据结构  C++版

算法与数据结构 C++版PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:漆涛,漆溢,蒋砚军编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121094514
  • 页数:308 页
图书介绍:本书是高等教育“十一五”国家级规划教材,系统介绍各种数据结构、常用算法及算法分析技术。数据结构的内容包括线性结构、树形结构、哈希结构、索引结构;算法方面的内容包括选择算法、查找算法、排序算法。本书还较为详细地分析了各种算法的时间复杂度和空间复杂度,介绍了分摊复杂度分析技术。作为各种数据结构和算法的应用,本书给出了图的标准界面及其实现。利用这个标准界面, 实现了图论中的一些经典算法。
《算法与数据结构 C++版》目录

第1章 绪论 1

1.1利用计算机解决问题的几个步骤 1

1.2基本概念和术语 2

1.3算法及其复杂度分析 4

1.4算法的描述语言 5

第2章 算法分析技术 7

2.1无穷大的阶 7

2.2若干序列和函数的渐进性质 8

2.2.1调和级数 8

2.2.2 Fibonacci序列 8

2.2.3 log2函数 9

2.2.4基本定理 9

2.2.5 Catalan数 10

2.2.6一个特别序列 11

2.3算法的时间复杂度 11

2.4算法的空间复杂度 13

2.5冒泡排序算法复杂度分析 13

2.6分摊复杂度分析 14

2.6.1累计法 15

2.6.2势函数法 16

2.6.3捐款记账法 17

习题 17

第3章 线性表 21

3.1顺序线性表:向量 21

3.1.1 Vector类模板的成员变量 21

3.1.2向量的迭代子 22

3.1.3获取向量的成员 22

3.1.4向量元素的删除 22

3.1.5向量的存储管理 22

3.1.6添加函数 23

3.1.7完整的Vector类 23

3.2单链表 25

3.2.1单链表迭代子类 26

3.2.2添加和删除操作 26

3.3其他形式的单链表 27

3.4双链表 27

3.5静态链表 29

3.6动态内存管理 31

3.7矩阵 35

3.8对称矩阵 36

3.9稀疏矩阵 36

习题 39

第4章 栈与队列 40

4.1栈的定义与实现 40

4.2栈与函数调用 41

4.2.1 函数调用框架 42

4.2.2汉诺塔问题 43

4.2.3间接递归调用 44

4.3广义栈 44

4.4回溯法 45

4.4.1八皇后问题 46

4.4.2八皇后问题回溯法的改进 47

4.5队列 48

4.5.1用链表实现队列 49

4.5.2用循环数组实现队列 49

4.6双端队列 51

4.7基数排序 51

习题 53

第5章 字符串与模式匹配算法 54

5.1字符集与字符 54

5.2字符串 54

5.3简单模式匹配算法 55

5.4 KMP算法 55

5.4.1 KMP算法的改进 59

5.4.2 KMP类 61

5.5有限状态自动机模式匹配算法 62

5.5.1有限状态自动机 62

5.5.2模式匹配有限状态自动机 62

5.6 Boyer-Moore模式匹配算法 63

5.7 BM- KMP模式匹配算法 65

习题 65

第6章 树与二叉树 66

6.1树与森林 66

6.2二叉树 67

6.3二叉树的二叉链表表示 71

6.4二叉树的递归遍历 72

6.5二叉树的非递归遍历 73

6.5.1非递归先序遍历 73

6.5.2非递归中序遍历 74

6.5.3非递归后序遍历 74

6.5.4二叉树的构造 75

6.5.5二叉树的显示 76

6.6中序线索化二叉树 76

6.6.1中序线索化二叉树的实现 76

6.6.2遍历中序线索化二叉树 77

6.7二叉树的其他存储表示 77

6.7.1三叉链表表示法 77

6.7.2完全二叉树表示 78

6.7.3三元组表示法 78

6.7.4双亲表示法 78

6.7.5带右链的先根序表示法 78

6.7.6双标志先根序表示法 79

6.8森林与二叉树的对应 80

6.9树与森林的遍历 80

6.10树与森林的存储表示 81

6.10.1树与森林的孩子、兄弟表示法 83

6.10.2无序树的双亲表示法 83

6.11并查集 83

6.11.1复杂度分析 85

6.11.2加权合并 85

6.11.3按秩合并 85

6.11.4折叠查找及其分摊复杂度分析 86

6.11.5并查集的完整实现 88

6.11.6迷宫设计 88

6.12 Huffman树 89

6.12.1无前缀编码与扩充二叉树 89

6.12.2 Huffman算法 89

6.12.3 Huffman压缩 90

习题 91

第7章 选择 94

7.1用数组实现的堆 94

7.1.1极大堆与极小堆 94

7.1.2极大极小堆 96

7.1.3双端堆 100

7.1.4d叉堆 101

7.1.5置换选择 101

7.2用二叉树或树实现的堆 103

7.2.1左堆 103

7.2.2扁堆 106

7.2.3二项式堆 109

7.2.4 Fibonacci堆 110

7.2.5配对堆 116

习题 119

第8章 查找 122

8.1查找结构 122

8.2顺序查找 122

8.2.1顺序查找表类模板 123

8.2.2顺序表的性能分析 123

8.2.3自适应顺序查找 124

8.3哈希表 124

8.3.1哈希函数的设计 124

8.3.2哈希表长M的选取 126

8.3.3冲突处理 126

8.3.4哈希表的性能分析 129

8.4二分查找 131

8.5跳跃表 132

8.5.1随机跳跃表 133

8.5.2 1-2-3跳跃表 134

8.6排序二叉树 135

8.6.1查找、添加和删除操作 136

8.6.2排序二叉树类模板 137

8.6.3查找的性能分析 138

8.7 AVL树 139

8.7.1 AVL树的添加 139

8.7.2 AVL树的删除 141

8.7.3 AVL树的实现及其复杂度 141

8.8 B树 142

8.8.1 B树的查找 142

8.8.2 B树的添加 142

8.8.3 B树的删除 143

8.8.4 B树 144

8.9 AA树 144

8.9.1 AA树的添加 145

8.9.2 AA树的实现 145

8.9.3 AA树类模板 147

8.10红黑树 148

8.10.1红黑树的添加 148

8.10.2红黑树的删除 149

8.10.3自上而下的添加和删除 151

8.11排序二叉堆 152

8.11.1排序二叉堆的添加 152

8.11.2排序二叉堆类模板 153

8.12最佳排序二叉树 153

8.13 Splay树 155

8.13.1Splay运算 156

8.13.2查找操作的分摊复杂度分析 156

8.14多关键字查找 158

8.14.1双链树 158

8.14.2 Trie树 159

8.15索引结构 160

习题 161

第9章 排序 163

9.1插入排序 164

9.1.1插入排序的实现 164

9.1.2插入排序算法的复杂度分析 165

9.1.3插入排序的改进 165

9.2选择排序 166

9.3 Shell排序 166

9.4堆排序 169

9.4.1极大堆及堆排序的实现 169

9.4.2堆排序的性能分析 170

9.5快速排序 171

9.5.1快速排序的性能分析 171

9.5.2快速排序的初步实现 173

9.5.3快速排序的改进 173

9.5.4中位数 175

9.6自省排序 177

9.7间接排序 177

9.8归并排序 179

9.8.1归并的工作量 180

9.8.2归并排序及其性能分析 180

9.8.3数组的归并排序及其性能分析 180

9.8.4单链表的归并 181

9.9基于比较的排序算法的时间复杂度下界 183

9.10基数排序 184

9.11外部排序 185

9.11.1初始序串的生成:双堆实现 185

9.11.2 K路归并的实现:败者树 186

9.11.3最佳归并树 187

习题 188

第10章 图 190

10.1图的定义及相关基本术语 190

10.2图的存储与表示 191

10.2.1单重图的邻接矩阵表示法 191

10.2.2有向图的邻接表表示法 191

10.2.3有向图的逆邻接表表示法 191

10.2.4无向图的多重邻接表表示法 192

10.3图的抽象界面 192

10.3.1弧边的界面 193

10.3.2图的构造函数 193

10.3.3弧边迭代子 193

10.4抽象界面的邻接矩阵实现 194

10.4.1 Weight-traits类模板 194

10.4.2矩阵模板 195

10.4.3弧边类型的定义 196

10.4.4弧边迭代子基类 197

10.4.5有向图弧边迭代子基类 197

10.4.6无向图弧边迭代子基类 197

10.4.7无向图弧边迭代子 199

10.4.8图的基类 200

10.4.9有向图类模板 200

10.4.10无向图类模板 201

10.4.11应用例子 201

10.5图的遍历及其应用 202

10.5.1深度优先遍历及其应用 202

10.5.2深度优先遍历的非递归程序 204

10.5.3深度优先遍历的复杂度 205

10.5.4 Kosaraju算法 205

10.5.5 Tarjan算法 206

10.5.6无向图的深度优先遍历 208

10.5.7重连通图 208

10.5.8宽度优先遍历及其应用 210

10.6有向无圈图 211

10.6.1集合上的偏序 211

10.6.2拓扑排序 211

10.6.3 AOE网和关键路径 212

10.7最小代价生成树 214

10.7.1 Kruskal算法 215

10.7.2 Prim算法 216

10.8最短路径问题 219

10.8.1 Dijkstra算法 219

10.8.2 Peter算法 221

10.8.3 Bellman-Ford算法 221

10.8.4 Floyd算法 224

10.9最大流问题 224

10.9.1广义路径法 225

10.9.2预置推送法 228

习题 232

第11章 STL简介 234

11.1迭代子 234

11.1.1半开半闭区间 235

11.1.2自白迭代子类 236

11.2泛函 240

11.2.1纯泛函 241

11.2.2拟序泛函 241

11.2.3自白泛函类 241

11.2.4自白泛函转换模板 243

11.3算法 245

11.3.1几个实用的函数模板 245

11.3.2日常事务类算法 246

11.3.3查找类算法 250

11.3.4排序类算法 251

11.3.5工作类算法 253

11.3.6已排序区间上的算法 256

11.3.7有关堆的算法 260

11.3.8处理未经初始化的内存 260

11.4容器 261

11.4.1 STL容器的共有界面 261

11.4.2顺序容器 262

11.4.3排序容器 265

11.4.4哈希容器 267

11.5适配器 268

11.5.1容器适配器 268

11.5.2迭代子适配器 270

11.5.3泛函适配器 274

11.5.4应用举例 276

11.5.5后记 277

第12章 C++语言概要 279

12.1注释 279

12.2变量 280

12.3引用 280

12.4常量 281

12.5强制类型转换 282

12.6名字空间 284

12.7动态内存分配 287

12.8输入/输出 287

12.9函数原型声明、函数名重载及默认参数 288

12.10类 289

12.11类模板 291

12.12函数模板 292

第13章 伪随机数产生与高精度计时器 294

13.1线性同余方法 294

13.2加法方法 296

13.3抽牌技术 298

13.4高精度计时器 298

参考文献 301

索引 303

相关图书
作者其它书籍
返回顶部