图书介绍
数据结构与STLPDF|Epub|txt|kindle电子书版本下载
- (美)William J.Collins著;周翔译 著
- 出版社: 北京:机械工业出版社
- ISBN:7111139623
- 出版时间:2004
- 标注页数:532页
- 文件大小:34MB
- 文件页数:548页
- 主题词:数据结构;C语言-程序设计
PDF下载
下载说明
数据结构与STLPDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 C+中的类1
1.1 类1
1.1.1 方法接口1
1.1.2 对象2
1.1.3 数据抽象4
1.1.4 构造器6
1.1.5 一个Employee类7
1.1.6 Employee类的定义11
实验1:Company项目13
1.1.7 继承13
1.1.8 受保护的访问14
1.1.9 HourlyEmployee类15
实验2:关于继承的更多的细节18
1.1.10 运算符的重载19
1.1.11 友元20
实验3:重载运算符“=”和运算符“>>”21
1.1.12 信息隐藏21
总结22
习题22
编程项目1.1:一个Sequence类25
第2章 容器类的存储结构27
2.1 指针27
2.1.1 堆和堆栈的对比29
2.1.2 引用参数29
2.1.3 指针字段30
2.1.4 数组和指针30
实验4:指针变量赋值与动态变量赋值的对比31
2.1.5 动态变量的存储空间释放31
2.2 数组32
2.3 容器类33
2.3.1 容器类的存储结构33
2.3.2 链式结构34
2.3.3 迭代器37
2.3.4 Iterator类的设计和实现39
实验5:定义其他的迭代器运算符40
2.3.5 pop_front方法40
2.3.6 析构器41
实验6:重载运算符operator=42
2.3.7 通用型算法42
实验7:更多关于通用型算法的知识46
2.3.8 数据结构和标准模板库46
总结46
习题47
编程项目2.1:扩展Linked类47
第3章 软件工程简介49
3.1 软件开发生命周期49
3.2 问题分析49
3.3 程序设计51
3.3.1 方法接口和字段51
3.3.2 依赖关系图53
3.4 程序实现54
3.4.1 方法验证55
实验8:驱动器56
3.4.2 正确性实现的可行性56
3.4.3 方法效率评估56
3.4.4 大O表示法57
3.4.5 快速获取大O估算59
3.4.6 平衡折中62
3.4.7 运行时间分析63
3.4.8 随机性65
实验9:计时和随机性66
3.4.9 类型转换66
3.5 程序维护67
总结67
习题67
编程项目3.1:Linked类的进一步扩充69
第4章 递归71
4.1 简介71
4.2 阶乘71
4.3 十进制到二进制的转换75
实验10:斐波纳契数78
4.4 汉诺塔78
4.5 回溯86
4.6 折半查找97
实验11:迭代折半查找106
4.7 生成置换106
4.8 间接递归114
4.9 递归的代价115
总结116
习题116
编程项目4.1:汉诺塔的迭代版本121
编程项目4.2:八皇后问题122
编程项目4.3:马的遍历问题123
第5章 向量和双端队列127
5.1 标准模板库127
5.2 向量128
5.2.1 vector类的方法接口129
5.2.2 向量迭代器134
5.2.3 向量和其他容器的对比136
5.2.4 vector类可能的字段137
5.2.5 vector类的一个实现137
实验12:vector类的更多的实现细节142
5.3 向量的一个应用:高精度算法142
5.3.1 very_long_int类的设计143
5.3.2 very_long_int类的一个实现144
实验13:扩展very_long_int类147
5.4 双端队列147
实验14:惠普的deque类实现的更多细节154
5.5 双端队列的一个应用:非常长的整数154
总结154
习题155
编程项目5.1:扩展very_long_int类157
编程项目5.2:deque类的另一种实现157
第6章 表159
6.1 表159
6.1.1 list类的方法接口160
6.1.2 迭代器接口163
6.1.3 链表方法和向量或双端队列方法的差别165
6.1.4 list类的字段和实现166
6.1.5 list节点的存储171
实验15:更多list类的实现细节174
实验16:计时顺序容器174
实验17:迭代器,第二部分174
6.1.6 list类的其他实现175
6.2 链表应用:一个行编辑器177
6.2.1 Editor类的设计180
6.2.2 Editor。类的实现182
总结187
习题187
编程项目6.1:扩展Editor类189
编程项目6.2:list类的另一种设计和实现195
第7章 队列和堆栈197
7.1 队列197
7.1.1 queue类的方法接口197
7.1.2 使用queue类200
7.1.3 容器配接器201
7.1.4 一个接近的设计202
7.2 计算机仿真204
7.3 队列应用:洗车仿真205
7.3.1 程序设计207
7.3.2 CarWash类的实现208
7.3.3 CarWash方法的分析212
7.3.4 随机化到达时间212
实验18:随机化到达时间214
7.4 堆栈214
7.4.1 Stack类的方法接口214
7.4.2 使用stack类215
7.4.3 stack类是一个容器配接器216
7.5 堆栈应用1:递归是如何实现的216
7.6 堆栈应用2:将中缀转换成后缀222
7.6.1 后缀表示法224
7.6.2 转换矩阵226
7.6.3 记号227
实验19:将中缀转化成后缀228
7.6.4 前缀表示法228
总结230
习题231
编程项目7.1:扩展洗车仿真232
编程项目7.2:求一个条件的值233
编程项目7.3:一个迭代的迷宫搜索237
编程项目7.4:queue类的另一个设计237
第8章 二叉树和折半查找树239
8.1 定义和属性239
8.1.1 二叉树定理245
8.1.2 外部路径长度247
8.1.3 二叉树的遍历248
8.2 折半查找树253
8.2.1 BinSearchTree类254
8.2.2 BinSearchTree类的Iterator类255
8.2.3 BinSearchTree类的字段和实现257
8.2.4 递归方法261
8.2.5 BinSearchIree迭代器269
实验20:BinSearchTree的平均高度270
总结270
习题271
编程项目8.1:BinSearchTree类的另一种实现274
第9章 AVL树277
9.1 平衡的折半查找树277
9.2 旋转277
9.3 AVL树281
9.3.1 AVL树的高度282
9.3.2 函数对象284
实验21:更多的函数对象的细节286
9.3.3 AVLTree类286
9.3.4 fixAfterInsertion方法289
9.3.5 insert方法的正确性297
9.4 AVL树的应用:一个简单的拼写检查器299
总结302
习题302
编程项目9.1:AVLTree类的erase方法305
编程项目9.2:改进的SpellChecker项目305
第10章 红黑树307
10.1 红黑树307
10.1.1 红黑树的高度310
10.1.2 惠普的rb_tree类313
10.1.3 rb_tree类中的insert方法315
实验22:使用全部三种情况的红黑树插入320
10.1.4 erase方法320
实验23:erase的调用,其中应用了全部四种情况331
10.2 标准模板库的关联容器331
10.3集合应用:再次讨论拼写检查器334
10.3.1 multiset类335
实验24:更多与set和multiset类相关的知识336
10.3.2 map类336
10.3.3 multimap类339
实验25:更多与map和multimap类相关的知识340
总结340
习题340
编程项目10.1:一个简单的辞典343
编程项目10.2:创建一个词汇索引343
第11章 优先队列和堆347
11.1 介绍347
11.1.1 priority_queue类348
11.1.2 priority_queue类的字段和实现350
11.1.3 堆351
实验26:优先队列中的公平性359
11.1.4 priority_queue类的另一种设计及实现359
11.2 优先队列的应用:霍夫曼编码360
11.2.1 huffman类的设计364
11.2.2 huffman类的实现366
总结371
习题372
编程项目11.1:解码一个消息374
第12章 排序377
12.1 介绍377
12.2 排序能有多快380
12.3 快速排序382
12.3.1 树排序382
12.3.2 堆排序383
12.3.3 归并排序385
12.3.4 快速排序390
12.3.5 分治法算法395
实验27:排序算法的运行时间396
总结396
习题397
编程项目12.1:排序一个文件402
第13章 查找和散列类405
13.1 分析查找的框架405
13.2 查找方式复习405
13.2.1 顺序查找405
13.2.2 折半查找406
13.2.3 红黑树查找408
13.3 hash_map类408
13.3.1 hash_map类中的字段409
13.3.2 散列409
13.3.3 链式412
13.3.4 iterator类的字段和实现419
13.3.5 hash_map类的实现420
13.3.6 链式散列分析423
13.3.7 value_type类425
13.3.8 应用425
实验28:hash_map计时427
13.4 hash_set类427
13.5 开放地址散列427
13.5.1 erase方法430
13.5.2 主聚类434
13.5.3 双散列435
13.5.4 开放地址散列分析439
总结441
习题442
编程项目13.1:使用链式和双散列构造一个符号表的运行时间比较444
第4章 图、树和网络445
14.1 无向图445
14.2 有向图447
14.3 树448
14.4 网络450
14.5 图算法451
14.5.1 迭代器451
14.5.2 连通性457
14.5.3 产生最小生成树458
14.5.4 寻找网络中的最短路径462
14.6 开发一个网络类465
14.7 network类465
14.7.1 network类中的字段467
14.7.2 network类的实现469
14.7.3 与边相关的方法的实现470
14.7.4 全局方法的实现472
14.7.5 get_minimum_spanning_tree方法475
14.7.6 get_shortest_path方法476
14.7.7 网络方法的时间花费估算478
实验29:货郎担问题479
14.7.8 network类的另一种设计和实现479
14.8 回溯通过网络481
总结483
习题484
编程项目14.1:完成邻接矩阵的实现486
编程项目14.2:回溯通过一个网络486
附录1 数学背景489
附录2 string类501
附录3 多态性511
参考文献515
索引517