C++数据结构与算法

0
(0)

C++数据结构与算法

作者:[美]乔兹德克(AdamDrozdek)

出版社:清华大学出版社

原作名:DataStructuresandAlgorithmsinC++

译者:徐丹/吴伟敏

出版年:2014-10-1

页数:610

定价:63.00元

装帧:平装

丛书:国外经典教材·计算机科学与技术

ISBN:9787302376682

内容简介
······

本书全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。

目录
······

第1章 C++面向对象程序设计 1

1.1 抽象数据类型 1

1.2 封装 1

1.3 继承 5

1.4 指针 7

1.4.1 指针与数组 10

1.4.2 指针与复制构造函数 12

1.4.3 指针与析构函数 14

1.4.4 指针和引用变量 14

1.4.5 函数指针 17

1.5 多态性 18

1.6 C++和面向对象程序设计 20

1.7 标准模板库 20

1.7.1 容器 21

1.7.2 迭代器 21

1.7.3 算法 21

1.7.4 函数对象 22

1.8 标准模板库中的向量 24

1.9 数据结构与面向对象编程 29

1.10 案例分析:随机访问文件 30

1.11 习题 38

1.12 编程练习 40

参考书目 42

第2章 复杂度分析 43

2.1 计算复杂度以及渐近复杂度 43

2.2 大O表示法 44

2.3 大O表示法的性质 46

2.4 Ω表示法与Θ表示法 47

2.5 可能存在的问题 48

2.6 复杂度示例 49

2.7 确定渐近复杂度示例 50

2.8 最好、平均和最坏情况 51

2.9 摊销复杂度(amortized complexity) 54

2.10 NP完整性 57

2.11 习题 59

参考书目 61

第3章 链表 63

3.1 单向链表 63

3.1.1 插入 68

3.1.2 删除 70

3.1.3 查找 74

3.2 双向链表 74

3.3 循环链表 78

3.4 跳跃链表(skip list) 79

3.5 自组织链表 83

3.6 稀疏表 87

3.7 标准模板库中的链表 89

3.8 小结 92

3.9 案例分析:图书馆 93

3.10 习题 101

3.11 编程练习 102

参考书目 105

第4章 栈与队列 107

4.1 栈 107

4.2 队列 113

4.3 优先队列 119

4.4 标准模板库中的栈 119

4.5 标准模板库中的队列 120

4.6 标准模板库中的优先队列 121

4.7 标准模版库中的双端队列 123

4.8 案例分析:迷宫问题 127

4.9 习题 131

4.10 编程练习 133

参考书目 134

第5章 递归 135

5.1 递归定义 135

5.2 函数调用与递归实现 137

5.3 分析递归调用 139

5.4 尾递归 142

5.5 非尾递归 142

5.6 间接递归 147

5.7 嵌套递归 148

5.8 不合理递归 149

5.9 回溯 152

5.10 小结 157

5.11 案例分析:递归下降解释器 158

5.12 习题 165

5.13 编程练习 167

参考书目 169

第6章 二叉树 171

6.1 树、二叉树和二叉查找树 171

6.2 二叉树的实现 174

6.3 二叉查找树的查找 176

6.4 树的遍历 179

6.4.1 广度优先遍历 179

6.4.2 深度优先遍历 180

6.4.3 不使用栈的深度优先遍历 186

6.5 插入 191

6.6 删除 193

6.6.1 合并删除 194

6.6.2 复制删除 196

6.7 树的平衡 198

6.7.1 DSW算法 200

6.7.2 AVL树 202

6.8 自适应树(self-adjusting tree) 207

6.8.1 自重新构造树(self-restructuring tree) 207

6.8.2 “张开”策略(splaying) 208

6.9 堆 212

6.9.1 将堆作为优先队列 213

6.9.2 用数组实现堆 215

6.10 treap树 218

6.11 k-d树 221

6.12 波兰表示法和表达式树 225

6.13 案例分析:计算单词出现的频率 229

6.14 习题 235

6.15 编程练习 239

参考书目 242

第7章 多叉树 245

7.1 B树家族 245

7.1.1 B树 247

7.1.2 B*树 254

7.1.3 B+树 255

7.1.4 前缀B+树 257

7.1.5 k-d B树 259

7.1.6 位树 264

7.1.7 R树 265

7.1.8 2-4树 267

7.1.9 标准模板库中的集合(set)以及多重集合(multiset) 278

7.1.10 标准模板库中的映射(map)和多映射(multimap) 282

7.2 trie 286

7.3 小结 292

7.4 案例分析:拼写检查器 292

7.5 习题 300

7.6 编程练习 301

参考书目 304

第8章 图 307

8.1 图的表示法 308

8.2 图的遍历 309

8.3 最短路径 312

8.4 环的检测 319

8.5 生成树 322

8.6 连通性 324

8.6.1 无向图中的连通性 324

8.6.2 有向图中的连通性 326

8.7 拓扑排序 328

8.8 网络 329

8.8.1 最大流 329

8.8.2 成本最低的最大流 337

8.9 匹配 340

8.9.1 稳定匹配问题 344

8.9.2 分配问题 346

8.9.3 非二分图中的匹配集合 348

8.10 欧拉(Eulerian)图与汉密尔顿 (Hamiltonian)图 349

8.10.1 欧拉图 349

8.10.2 汉密尔顿图 352

8.11 图的上色问题 356

8.12 图论中的NP完整性问题 359

8.12.1 派系问题 359

8.12.2 三色问题 360

8.12.3 顶点覆盖问题 361

8.12.4 汉密尔顿环问题 361

8.13 案例分析:唯一代表 363

8.14 习题 372

8.15 编程练习 376

参考书目 377

第9章 排序 381

9.1 基本的排序算法 382

9.1.1 插入排序 382

9.1.2 选择排序 384

9.1.3 冒泡排序 386

9.1.4 梳排序 388

9.2 决策树 389

9.3 高效排序算法 392

9.3.1 希尔排序 392

9.3.2 堆排序 395

9.3.3 快速排序 397

9.3.4 归并排序 402

9.3.5 基数排序 405

9.3.6 计数排序 408

9.4 标准模板库中的排序 410

9.5 小结 414

9.6 案例分析:多项式相加 414

9.7 习题 420

9.8 编程练习 422

参考书目 423

第10章 散列 427

10.1 散列函数 427

10.1.1 除余法 428

10.1.2 折叠法 428

10.1.3 平方取中法 429

10.1.4 提取法 429

10.1.5 基数转换法 429

10.1.6 全域散列法 429

10.2 冲突解决方法 430

10.2.1 开放定址法 430

10.2.2 链接法 435

10.2.3 桶定址 436

10.3 删除 437

10.4 理想散列函数 438

10.4.1 Cichelli方法 438

10.4.2 FHCD算法 440

10.5 再散列 442

10.6 可扩展文件的散列函数 444

10.6.1 可扩展散列 445

10.6.2 线性散列 446

10.7 案例分析:使用桶的散列 449

10.8 习题 456

10.9 编程练习 457

参考书目 458

第11章 数据压缩 461

11.1 数据压缩的条件 461

11.2 Huffman编码 463

11.3 Run-Length编码方式 473

11.4 Ziv-Lempel编码方式 474

11.5 案例分析:Huffman方法和Run-Length编码方式 476

11.6 习题 485

11.7 编程练习 486

参考书目 487

第12章 内存管理 489

12.1 sequential-fit方法 490

12.2 nonsequential-fit方法 491

12.3 垃圾回收 497

12.3.1 标记和清除 498

12.3.2 复制方法 504

12.3.3 递增的垃圾回收 505

12.3.4 分代垃圾回收 510

12.4 小结 513

12.5 案例分析 514

12.6 习题 521

12.7 编程练习 522

参考书目 524

第13章 字符串匹配 527

13.1 字符串的精确匹配 527

13.1.1 简单的算法 527

13.1.2 Knuth-Morris-Pratt算法 530

13.1.3 Boyer-Moore算法 536

13.1.4 多次搜索 545

13.1.5 面向位的方法 546

13.1.6 单词集合的匹配 550

13.1.7 正则表达式的匹配 555

13.1.8 后缀trie和树 558

13.1.9 后缀数组 563

13.2 字符串的模糊匹配 564

13.2.1 字符串的近似性 565

13.2.2 有k个错误的字符串匹配 570

13.3 案例分析:最长的共有子字符串 573

13.4 习题 580

13.5 编程练习 581

参考书目 582

附录A 计算大O 585

附录B 标准模板库中的算法 591

附录C NP完整性 599

评论 ······

知识点讲解的比较细,而且对算法优缺点都有详述,并且有相关的数学推导。源码除图一章以外比较详细。

选择性的看了一部分,还行吧

很丰富,不适合完全的新手,但是适合作为一本工具书。很难一次性读完,放在手边还可以。

太多太全,新手极不友好

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册