《数据结构与STL》(Data Structures and the Standard Template Library)数据结构一直是计算机科学专业课程的核心内容,它是信息的组织方式。对于相同的算法,用不同的数据结构表示其中的抽象数据类型会造成不同的执行效率。
本书从面向对象程序设计的角度,具体使用c++语言,讲述了数据结构及其算法。通过对方法接口、示例和应用的学习,引导学生逐渐理解和掌握如何高效地使用数据结构。
本书与传统数据结构教材相比,除了保留系统、全面的风格之外,还具有重视与实际编程结合、侧重标准模板库的实现描述等特点;并配有丰富的习题及实验,是一本优秀的课堂和自学参考用书。
目录:
出版者的话
专家指导委员会
译者序
前言
第1章 c++中的类 1
实验1:company项目 13
实验2:关于继承的更多的细节 18
实验3:重载运算符“=”和运算符“]]” 21
总结 22
习题 22
编程项目1.1:一个sequence类 25
第2章 容器类的存储结构 27
实验4:指针变量赋值与动态变量
赋值的对比 31
实验5:定义其他的迭代器运算符 40
实验6:重载运算符operator = 42
实验7:更多关于通用型算法的知识 46
总结 46
习题 47
编程项目2.1:扩展linked类 47
第3章 软件工程简介 49
实验8:驱动器 56
实验9:计时和随机性 66
总结 67
习题 67
编程项目3.1:linked类的进一步扩充 69
第4章 递归 71
实验10:斐波纳契数 78
实验11:迭代折半查找 106
总结 116
习题 116
编程项目4.1:汉诺塔的迭代版本 121
编程项目4.2:八皇后问题 122
编程项目4.3:马的遍历问题 123
第5章 向量和双端队列 127
实验12:vector类的更多的实现细节 142
实验13:扩展very_long_int类 147
实验14:惠普的deque类实现的更多细节 154
总结 154
习题 155
编程项目5.1:扩展very_long_int类 157
编程项目5.2:deque类的另一种实现 157
第6章 表 159
方法的差别 165
实验15:更多list类的实现细节 174
实验16:计时顺序容器 174
实验17:迭代器,第二部分 174
总结 187
习题 187
编程项目6.1:扩展editor类 189
编程项目6.2:list类的另一种设计和实现 195
第7章 队列和堆栈 197
实验18:随机化到达时间 214
实验19:将中缀转化成后缀 228
总结 230
习题 231
编程项目7.1:扩展洗车仿真 232
编程项目7.2:求一个条件的值 233
编程项目7.3:一个迭代的迷宫搜索 237
编程项目7.4:queue类的另一个设计 237
第8章 二叉树和折半查找树 239
实验20:binsearchtree的平均高度 270
总结 270
习题 271
编程项目8.1:binsearchtree类的
另一种实现 274
第9章 avl树 277
实验21:更多的函数对象的细节 286
拼写检查器 299
总结 302
习题 302
编程项目9.1:avltree类的erase方法 305
编程项目9.2:改进的spellchecker项目 305
第10章 红黑树 307
实验22:使用全部三种情况的红黑树插入 320
实验23:erase的调用,其中应用了全部
四种情况 331
实验24:更多与set和multiset类相关的
知识 336
实验25:更多与map和multimap类
相关的知识 340
总结 340
习题 340
编程项目10.1:一个简单的辞典 343
编程项目10.2:创建一个词汇索引 343
第11章 优先队列和堆 347
实验26:优先队列中的公平性 359
设计及实现 359
总结 371
习题 372
编程项目11.1:解码一个消息 374
第12章 排序 377
实验27:排序算法的运行时间 396
总结 396
习题 397
编程项目12.1:排序一个文件 402
第13章 查找和散列类 405
实验28:hash_map计时 427
总结 441
习题 442
编程项目13.1:使用链式和双散列构造一个
符号表的运行时间比较 444
第14章 图、树和网络 445
实验29:货郎担问题 479
总结 483
习题 484
编程项目14.1:完成邻接矩阵的实现 486
编程项目14.2:回溯通过一个网络 486
附录1 数学背景 489
附录2 string类 501
附录3 多态性 511
参考文献 515
索引 517