这是一本阐述如何在现代编程语言Java中创建和分析传统数据结构舶书籍
全书首先介绍Java面向对象的编程方法和良好的编程风格,然后系统讲解
子向量、程序设计的基础知识、排序、接口、迭代器、列表、线性数据结构、有
序数据结构、二叉树、优先队列、查找树、映射和图。在每章中都提供于相应的
原理;练习、实例、实验和思考题。附录中提供了各章部分问题的答案、Java编:
程基础知识和术语表等内容。
本书特色
章——每章讲述一个主题,每种数据结构独立成章
基本概念——每章开头列出本章将要学习的主要内容
练习——结合所讲具体内容进行针对性的练习
原理——在设计数据结构方面应遵守的一些主要原则
自测题——通过自测题,回顾本章的知识点。
本章问题——通过设计和扩展练习检测本章所学内容
实验——针对各章主题,进行动手练习
第1章面向对象的方法
1.1数据抽象和封装
1.2对象模型
1.3面向对象术语
1.4一个特殊用途类:银行账户
1.5一般用途类:关联
1.6示例概述:字列表
1.7示例概述:矩形类
1.8接口
1.9用户
1.10本章小结
1,11实验:周日期的计算器
第2章注释、条件和断言
2.1前提条件和后置条件
2.2断言
2.3艺术品
2.4本章小结
2.5实验:使用Javadoc写注释
第3章向量
3.1接口
3,2示例:字列表回顾
3.3示例:字频率
3.4实现
3.5可扩展性
3.6示例:L系统
3.7示例:基于向量的集合
3.8示例:矩阵类
3.9本章小结
3.10实验:银元游戏
第4章设计基础
4.1渐进分析工具
4.1.1时间和空间复杂度
4.1.2示例
4.1.3时间和空间的折中
4.1.4后包线估计
4.2自引用
4.2.1递归
4.2.2数学归纳法
4.3设计特性
4.3.1对称性
4.3.2摩擦
4.4本章小结
4.5实验:验证Java的速度
第5章排序
5.1概述
5.2选择排序法
5.3插入排序法
5.4归并排序
5.5快速排序
5.6基数排序
5.7对象排序
5.8用比较器排列对象
5.9基于向量的排序
5.10本章小结
5.11实验:用比较器排序
第6章一种设计方法
6.1基于接口的方法
6。1.1接口的设计
6.1.2抽象实现
6.1.3实现
6.2示例:生成器的开发
6.3示例:玩纸牌
6.4本章小结
第7章迭代器
7.1Java的枚举接口
7.2迭代器接口
7.3示例:向量迭代器
7.4示例:回顾生成器
7.5示例:过滤迭代器
7.6本章小结
7.7实验:双塔问题
第8章列表
8.1示例:惟一程序
8.2示例:自由列表
8.3部分实现:抽象列表
8.4实现:单链表
8.5实现:双链表
8.6实现:循环链表
8.7实现:向量
8.8列表迭代器
8.9本章小结
8.10实验:具有哑元节点的列表
第9章线性数据结构
9.1堆栈
9.1.1示例:模拟递归
9.1.2基于向量的堆栈
9.1.3基于列表的堆栈
9.1.4比较
9.2队列
9.2.1示例:解决一个硬币问题
9.2.2基于列表的队列
9.2.3基于向量的队列
9.2.4基于数组的队列
9.3示例:解决迷宫问题
9.4本章小结
9.5示例:一种基于堆栈的语言
9.6实验:Web爬虫
第10章有序数据结构
10.1可比较对象回顾
IOA.1实例:可比较的Ratio类
10.1.2示例:可比较的Association类
10.2保持数据结构有序
10.2.1OrderedStructure接口
10.2.2有序向量和二分查找
10.2.3示例:排序回顾
10.2.4基于比较器的方法
10.2.5有序列表
10.2.6示例:修改停车场问题
10.3本章小结
10.4实验:计算“最好的”
第11章二叉树
11.1术语
11.2实例:家谱表
11.3实例:符号树
11.4实现
11.5实例:专家系统
11.6叉树遍历
11.6.1先序遍历
11.6.2中序遍历
11.6.3后序遍历
11.6.4层序遍历
11.6.5迭代器中的递归
11.7基于特性的方法
11.8示例:霍夫曼压缩
11.9.示例实现:ahnemafel
11.10本章小结
11.11实验:Gardener的Hex-a-Pawn游戏
第12章优先队列
12.1接口
12.2示例:Huffman代码改进
12.3基于向量的实现
12.4一种堆实现
12.4.1基于向量的堆
12.4.2示例:堆排序
12.4.3偏斜堆
12.5示例:电路模拟
12.6本章小结
12.7实验:模拟商业活动
第13章查找树
13.1二分查找树
13.2示例:树排序
13.3示例:关联数据结构
13.4实现
13.5伸展树
13.6伸展树实现
13.7红黑树
13.8本章小结
13.9实验:改进BinarySearchTree
第14章映射
14.1示例回顾:符号表
14.2接口
14.3简单实现:MapList
14.4常数时间的映射:散列表
14.4.1开放式寻址
14.4.2外部链接
14.4.3散列码的生成
14.4.4集合类的散列码
14.4.5性能分析
14.5有序映射和表
14.6示例:文档索引
14.7本章小结
14.8实验:Soundex名字查找系统
第15图
15.1术语
15.2Graph接口
15.3实现
15.3.1重新强调抽象类
15.3.2邻接矩阵
15.3.3邻接表
15.4示例:普通的图算法
15.4.1可达性
15.4.2拓扑排列
15.4.3传递闭包
15.4.4所有顶点对的最小距离
15.4.5贪心算法
15.5本章小结
15.6实验:在单位之间进行转换
附录A答案
A.1自测题答案
A.2奇数问题的答案
附录BJava入门
B.1第一个程序
B.2声明
B.2.1简单类型
B.2.2引用类型
B.3重要的类
B.3.1ReadStream类
B.3.2PrintStream类
B.3.3字符串
B.4控制结构
B.4.1条件语句
B.4.2循环
B.5方法
B.6继承和子类型化
B.6.1继承
B.6.2子类型化
B.6.3接口和抽象类
B.7使用assert命令
B.8关键字Protected的使用
附录C集合
C.1集合类的特性
C.2并行特性
C.3变换
附录D文档
D.1结构包层次结构
D.2原理
附录E环境
E.1软件下载
E.2建库
E.3创建工程站
附录F深入阅读
附录G术语表