书籍详情

数据结构与STL

数据结构与STL

作者:(美)William J.Collins著;周翔译;周翔译

出版社:机械工业出版社

出版时间:2004-04-01

ISBN:9787111139621

定价:¥49.00

购买这本书可以去
内容简介
  数据结构一直是计算机科学专业课程的核心内容,它是信息的组织方式。对于相同的算法,用不同的数据结构表示其中的抽象数据类型会造成不同的执行效率。本书从面向对象程序设计的角度,具体使用C++语言,讲述了数据结构及其算法。通过对方法接口、示例和应用的学习,引导学生逐渐理解和掌握如何高效地使用数据结构。本书与传统数据结构教材相比,除了保留系统、全面的风格之外,还具有重视与实际编程结合、侧重标准模板库的实现描述等特点;并配有丰富的习题及实验,是一本优秀的课堂和自学参考用书。本书讲述了数据结构的基本原理及其实现,并使用了C++作为教学语言。通过方法接口、示例和应用的学习,引导学生逐渐理解和掌握如何高效地使用数据结构。大部分数据结构是在标准模板库(STL)中提供的。本书还详细研究了这些STL数据结构的规范实现,展示了这些实现的高效和简洁性。为了深入理解实现的要点,还对其中几个数据结构的不同实现进行了测试。贯穿全书的宗旨是鼓励结合实践的学习。每章末尾的编程项目让学生可以开发并实现自己的数据结构,或者是扩展,应用这一章中介绍的数据结构。可选的实验帮助学生通过编程巩固所学知识。本书特点:·本书配套网站上包含了实验、课件、习题解答等等。网站地址是www.mhhe.com/collins。·每个实验都要求学生进行仔细的观察、推测和检测才能得出结论,能够鼓励学生积极主动地学习。·书中还精心设计了许多教学提示和习题。
作者简介
暂缺《数据结构与STL》作者简介
目录
出版者的话
专家指导委员会
译者序
前言
第1章 C++中的类
1.1 类
1.1.1 方法接口
1.1.2 对象
1.1.3 数据抽象
1.1.4 构造器
1.1.5 一个Employee类
1.1.6 Employee类的定义
实验1:Company项目
1.1.7 继承
1.1.8 受保护的访问
1.1.9 HourlyEmployee类
实验2:关于继承的更多的细节
1.1.10 运算符的重载
1.1.11 友元
实验3:重载运算符“=”和运算符“>>”
1.1.12 信息隐藏
总结
习题
编程项目1.1:一个Sequence类
第2章 容器类的存储结构
2.1 指针
2.1.1 堆和堆栈的对比
2.1.2 引用参数
2.1.3 指针字段
2.1.4 数组和指针
实验4:指针变量赋值与动态变量赋值的对比
2.1.5 动态变量的存储空间释放
2.2 数组
2.3 容器类
2.3.1 容器类的存储结构
2.3.2 链式结构
2.3.3 迭代器
2.3.4 Iteratror类的设计和实现
实验5:定义其他的选代器运算符
2.3.5 pop_front方法
2.3.6 析构器
实验6:重载运算符operator=
2.3.7 通用型算法
实验7:更多关于通用型算法的知识
2.3.8 数据结构和标准模板库
总结
习题
编程项目2.1:扩展Linked类
第3章 软件工程简介
3.1 软件开发生命周期
3.2 问题分析
3.3 程序设计
3.3.1 方法接口和字段
3.3.2 依赖关系图
3.4 程序实现
3.4.1 方法验证
实验8:驱动器
3.4.2 正确性实现的可行性
3.4.3 方法效率评估
3.4.4 大O表示法
3.4.5 快速获取大O估算
3.4.6 平衡折中
3.4.7 运行时间分析
3.4.8 随机性
实验9:计时和随机性
3.4.9 类型转换
3.5 程序维护
总结
习题
编程项目3.1:Linked类的进一步扩充
第4章 递归
4.1 简介
4.2 阶乘
4.3 十进制到二进制的转换
实验10:斐波纳契数
4.4 汉诺塔
4.5 回溯
4.6 折半查找
实验11:迭代折半查找
4.7 生成置换
4.8 间接递归
4.9 递归的代价
总结
习题
编程项目4.1:汉诺塔的选代版本
编程项目4.2:八皇后问题
编程项目4.3:马的遍历问题
第5章 向量和双端队列
5.1 标准模板库
5.2 向量
5.2.1 vector类的方法接口
5.2.2 向量迭代器
5.2.3 向量和其他容器的对比
5.2.4 vector类可能的字段
5.2.5 vector类的一个实现
实验12:vector类的更多的实现细节
5.3 向量的一个应用:高精度算法
5.3.1 very_long_int类的设计
5.3.2 very_long_int类的一个实现
实验13:扩展very_long_int类
5.4 双端队列
实验14:惠普的deque类实现的更多细节
5.5 双端队列的一个应用:非常长的整数
总结
习题
编程项目5.1:扩展very_long_int类
编程项目5.2:deque类的另一种实现
第6章 表
6.1 表
6.1.1 list类的方法接口
6.1.2 迭代器接口
6.1.3 链表方法和向量或双端队列方法的差别
6.1.4 list类的字段和实现
6.1.5 list节点的存储
实验15:更多list类的实现细节
实验16:计时顺序容器
实验17:迭代器,第二部分
6.1.6 list类的其他实现
6.2 链表应用:一个行编辑器
6.2.1 Editor类的设计
6.2.2 Editor类的实现
总结
习题
编程项目6.1:扩展Editor类
编程项目6.2:list类的另一种设计和实现
第7章 队列和堆栈
7.1 队列
7.1.1 queue类的方法接口
7.1.2 使用queue类
7.1.3 容器配接器
7.1.4 一个接近的设计
7.2 计算机仿真
7.3 队列应用:洗车仿真
7.3.1 程序设计
7.3.2 CarWash类的实现
7.3.3 CarWash方法的分析
7.3.4 随机化到达时间
实验18:随机化到达时间
7.4 堆栈
7.4.1 Stack类的方法接口
7.4.2 使用stack类
7.4.3 stack类是一个容器配接器
7.5 堆栈应用1:递归是如何实现的
7.6 堆栈应用2:将中缀转换成后缀
7.6.1 后缀表示法
7.6.2 转换矩阵
7.6.3 记号
实验19:将中缀转化成后缀
7.6.4 前缀表示法
总结
习题
编程项目7.1:扩展洗车仿真
编程项目7.2:求一个条件的值
编程项目7.3:一个迭代的迷宫搜索
编程项目7.4:queue类的另一个设计
第8章 二叉树和折半查找树
8.1 定义和属性
8.1.1 二叉树定理
8.1.2 外部路径长度
8.1.3 二叉树的遍历
8.2 折半查找树
8.2.1 BinSearchTree类
8.2.2 BinSearchTree类的Iterator类
8.2.3 BinSearchTree类的字段和实现
8.2.4 递归方法
8.2.5 BinSearchTree迭代器
实验20:BinSearchTree的平均高度
总结
习题
编程项目8.1:BinSearchTree类的另一种实现
第9章 AVL树
9.1 平衡的折半查找树
9.2 旋转
9.3 AVL树
9.3.1 AVL树的高度
9.3.2 函数对象
实验21:更多的函数对象的细节
9.3.3 AVLTree类
9.3.4 fixAfterInsertion方法
9.3.5 insert方法的正确性
9.4 AVL树的应用:一个简单的拼写检查器
总结
习题
编程项目9.1:AVLTree类的erase方法
编程项目9.2:改进的SpellChecker项目
第10章 红黑树
10.1 红黑树
10.1.1 红黑树的高度
10.1.2 惠普的rb_tree类
10.1.3 rb_tree类中的insert方法
实验22:使用全部三种情况的红黑树插入
10.1.4 erase方法
实验23:erase的调用,其中应用了全部四种情况
10.2 标准模板库的关联容器
10.3 集合应用:再次讨论拼写检查器
10.3.1 multiset类
实验24:更多与set和multiset类相关的知识
10.3.2 map类
10.3.3 multimap类
实验25:更多与map和multimap类相关的知识
总结
习题
编程项目10.1:一个简单的辞典
编程项目10.2:创建一个词汇索引
第11章 优先队列和堆
11.1 介绍
11.1.1 priority_queue类
11.1.2 priority_queue类的字段和实现
11.1.3 堆
实验26:优先队列中的公平性
11.1.4 priority_queue类的另一种设计及实现
11.2 优先队列的应用:霍夫曼编码
11.2.1 huffman类的设计
11.2.2 huffman类的实现
总结
习题
编程项目11.1:解码一个消息
第12章 排序
12.1 介绍
12.2 排序能有多快
12.3 快速排序
12.3.1 树排序
12.3.2 堆排序
12.3.3 归并排序
12.3.4 快速排序
12.3.5 分治法算法
实验27:排序算法的运行时间
总结
习题
编程项目12.1:排序一个文件
第13章 查找和散列类
13.1 分析查找的框架
13.2 查找方式复习
13.2.1 顺序查找
13.2.2 折半查找
13.2.3 红黑树查找
13.3 hash_map类
13.3.1 hash_map类中的字段
13.3.2 散列
13.3.3 链式
13.3.4 iterator类的字段和实现
13.3.5 hash_map类的实现
13.3.6 链式散列分析
13.3.7 value_type类
13.3.8 应用
实验28:hash_map计时
13.4 hash_set类
13.5 开放地址散列
13.5.1 erase方法
13.5.2 主聚类
13.5.3 双散列
13.5.4 开放地址散列分析
总结
习题
编程项目13.1:使用链式和双散到构造一个符号表的运行时间比较
第14章 图、树和网络
14.1 无向图
14.2 有向图
14.3 树
14.4 网络
14.5 图算法
14.5.1 迭代器
14.5.2 连通性
14.5.3 产生最小生成树
14.5.4 寻找网络中的最短路径
14.6 开发一个网络类
14.7 network类
14.7.1 network类中的字段
14.7.2 network类的实现
14.7.3 与边相关的方法的实现
14.7.4 全局方法的实现
14.7.5 get_minimum_spanning_tree方法
14.7.6 get_shortest_path方法
14.7.7 网络方法的时间花费估算
实验29:货郎担问题
14.7.8 network类的另一种设计和实现
14.8 回溯通过网络
总结
习题
编程项目14.1:完成邻接矩阵的实现
编程项目14.2:回溯通过一个网络
附录1 数学背景
附录2 string类
附录3 多态性
参考文献
索引
猜您喜欢

读书导航