《C++数据结构与算法(第4版)》是2014年清华大学出版社出版的图书,作者是Adam Drozdek。
基本介绍
- 书名:C++数据结构与算法(第4版)
- 作者:Adam Drozdek
- 译者:徐丹 吴伟敏
- ISBN:9787302376682
- 定价:79.80元
- 出版时间:2014.10.01
书籍信息
作者:Adam Drozdek 着 徐丹 吴伟敏 译
定价:79.80元
印次:1-1
ISBN:9787302376682
出版日期:2014.10.01
印刷日期:2014.10.16
内容简介
本书主要讲述数据结构的三个重要特性。首先,着重强调了数据结构与其算法之间的联繫,包括算法的複杂度分析。其次,数据结构是以面向对象的方式呈现的,以与当前的设计以及实现範式一致。为了加强封装以及分解,特彆强调了信息隐藏原则。最后,本书的重要组成部分之一是数据结构的实现,在此选择C++作为程式语言。C++语言是由C语言演化而来的面向对象语言,是一种广泛套用于产业界以及学术界的优秀程式语言。用该语言来介绍数据结构非常有效,并且很自然。由于C++在编程中的广泛套用以及语言本身的面向对象特性,使用该语言讲述数据结构以及算法课程是非常合适的,即使是入门级课程也是如此。
这本《C++数据结构与算法(第4版)》全面系统地介绍了数据结构,并以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.6C++和面向对象程式设计 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摊销複杂度(amortizedcomplexity) 54
2.10NP完整性 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跳跃鍊表(skiplist) 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.1DSW算法 200
6.7.2AVL树 202
6.8自适应树(self-adjustingtree) 207
6.8.1自重新构造树(self-restructuringtree) 207
6.8.2“张开”策略(splaying) 208
6.9堆 212
6.9.1将堆作为优先伫列 213
6.9.2用数组实现堆 215
6.10treap树 218
6.11k-d树 221
6.12波兰表示法和表达式树 225
6.13案例分析:计算单词出现的频率 229
6.14习题 235
6.15编程练习 239
参考书目 242
第7章多叉树 245
7.1B树家族 245
7.1.1B树 247
7.1.2B*树 254
7.1.3B+树 255
7.1.4前缀B+树 257
7.1.5k-dB树 259
7.1.6位树 264
7.1.7R树 265
7.1.82-4树 267
7.1.9标準模板库中的集合(set)以及多重集合(multiset) 278
7.1.10标準模板库中的映射(map)和多映射(multimap) 282
7.2trie 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.1Cichelli方法 438
10.4.2FHCD算法 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.2Huffman编码 463
11.3Run-Length编码方式 473
11.4Ziv-Lempel编码方式 474
11.5案例分析:Huffman方法和Run-Length编码方式 476
11.6习题 485
11.7编程练习 486
参考书目 487
第12章记忆体管理 489
12.1sequential-fit方法 490
12.2nonsequential-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.2Knuth-Morris-Pratt算法 530
13.1.3Boyer-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
附录CNP完整性 599