本书是一本数据结构的教材,Java语言与数据结构两条知识主线贯穿始终,这两条主线既相互独立又相互支撑。本书介绍了计算机编程中使用的数据结构和算法,包括29章,每章涉及一个ADT或其不同实现的规格说明和用法;书中贯穿9个Java插曲,涉及Java的高级特性。本书主要讲述了组织数据、设计类、包、栈、递归、排序、队列、双端队列、优先队列、线性表、有序表、查找、字典、散列、树、二叉查找树、堆、平衡查找树、图等内容,并对算法的效率进行了分析。本书非常适合作为大学本科生数据结构课程的教材,也可作为计算机研究与开发人员的参考书。

目录:

P.1 封装 3

P.2 说明方法 5

P.2.1 注释 5

P.2.2 前置条件和后置条件 5

P.2.3 断言 6

P.3 Java接口 7

P.3.1 写一个接口 8

P.3.2 实现一个接口 9

P.3.3 接口作为数据类型 11

P.3.4 派生一个接口 12

P.3.5 接口内命名常量 13

P.4 选择类 14

P.4.1 标识类 15

P.4.2 CRC卡 15

P.4.3 统一建模语言 16

P.5 重用类 17

第1章 包 22

1.1 什么是包 22

1.2 说明一个包 23

1.3 使用ADT包 30

1.4 像使用自动贩卖机一样使用ADT 33

1.5 ADT集合 34

1.6 Java类库:接口Set 35

Java插曲1 泛型 39

第2章 使用数组实现包 43

2.1 使用固定大小的数组实现ADT包 43

2.1.1 类比 43

2.1.2 一组核心方法 44

2.1.3 实现核心方法 45

2.1.4 让实现安全 51

2.1.5 测试核心方法 54

2.1.6 实现更多的方法 56

2.1.7 删除项的方法 58

2.2 使用可变大小的数组实现ADT包 65

2.2.1 可变大小数组 65

2.2.2 包的新实现 68

2.3 使用数组实现ADT包的优缺点 70

Java插曲2 异常 75

第3章 使用链式数据实现包 82

3.1 链式数据 82

3.2 ADT包的链式实现 84

3.2.1 私有类Node 84

3.2.2 类LinkedBag的框架 85

3.2.3 定义一些核心方法 86

3.2.4 测试核心方法 89

3.2.5 方法getFrequencyOf 90

3.2.6 方法contains 91

3.3 从链中删除一项 92

3.4 有设置和获取方法的类Node 96

3.5 使用链实现ADT包的优缺点 98

第4章 算法的效率 102

4.1 动机 102

4.2 测量算法的效率 103

4.2.1 计数基本操作 105

4.2.2 最优、最差和平均情形 106

4.3 大O表示 107

4.4 描述效率 110

4.5 实现ADT包的效率 113

4.5.1 基于数组的实现 113

4.5.2 链式实现 114

4.5.3 两种实现的比较 115

第5章 栈 121

5.1 ADT栈的规格说明 121

5.2 使用栈来处理代数表达式 125

5.2.1 问题求解:检查中缀代数表达式中平衡的分隔符 125

5.2.2 问题求解:将中缀代数表达式转换为后缀表达式 129

5.2.3 问题求解:计算后缀表达式的值 133

5.2.4 问题求解:计算中缀表达式的值 134

5.3 程序栈 136

5.4 Java类库:类Stack 137

第6章 栈的实现 142

6.1 链式实现 142

6.2 基于数组的实现 144

6.3 基于向量的实现 148

6.3.1 Java类库:类Vector 148

6.3.2 使用向量实现ADT栈 149

第7章 递归 154

7.1 什么是递归 154

7.2 跟踪递归方法 158

7.3 返回一个值的递归方法 160

7.4 递归处理数组 162

7.5 递归处理链 165

7.6 递归方法的时间效率 166

7.6.1 countDown的时间效率 166

7.6.2 计算xn的时间效率 167

7.7 困难问题的简单求解方案 168

7.8 简单问题的低劣求解方案 172

7.9 尾递归 174

7.10 间接递归 176

7.11 使用栈来替代递归 177

Java插曲3 再谈泛型 185

第8章 排序简介 194

8.1 对数组进行排序的Java方法的组织 194

8.2 选择排序 195

8.2.1 迭代选择排序 196

8.2.2 递归选择排序 198

8.2.3 选择排序的效率 198

8.3 插入排序 199

8.3.1 迭代插入排序 199

8.3.2 递归插入排序 201

8.3.3 插入排序的效率 202

8.3.4 链式结点链的插入排序 203

8.4 希尔排序 205

8.4.1 算法 206

8.4.2 希尔排序的效率 207

8.5 算法比较 208

第9章 更快的排序方法 213

9.1 归并排序 213

9.1.1 归并数组 213

9.1.2 递归归并排序 214

9.1.3 归并排序的效率 216

9.1.4 迭代归并排序 217

9.1.5 Java类库中的归并排序 218

9.2 快速排序 218

9.2.1 快速排序的效率 219

9.2.2 创建划分 219

9.2.3 实现快速排序 221

9.2.4 Java类库中的快速排序 223

9.3 基数排序 223

9.3.1 基数排序的伪代码 225

9.3.2 基数排序的效率 225

9.4 算法比较 226

Java插曲4 再谈异常 231

第10章 队列、双端队列和优先队列 238

10.1 ADT队列 238

10.1.1 问题求解:模拟排队 241

10.1.2 问题求解:计算出售股票的资本收益 246

10.1.3 Java类库:接口Queue 248

10.2 ADT双端队列 249

10.2.1 问题求解:计算出售股票的资本收益 251

10.2.2 Java类库:接口Deque 252

10.2.3 Java类库:类ArrayDeque 253

10.3 ADT优先队列 254

10.3.1 问题求解:跟踪任务分配 255

10.3.2 Java类库:类PriorityQueue 257

第11章 队列、双端队列和优先队列的实现 262

11.1 队列的链式实现 262

11.2 基于数组实现队列 265

11.2.1 循环数组 266

11.2.2 带一个不用位置的循环数组 267

11.3 队列的循环链式实现 272

11.4 Java类库:类AbstractQueue 277

11.5 双端队列的双向链式实现 2

数据结构Java第四版pdf_数据结构与抽象:Java语言描述(原书第4版) 中文pdf完整版[131MB]...相关推荐

  1. 数据结构(c语言版) 计算机科学丛书,数据结构与算法分析--C语言描述(原书第2版)(计算机科学丛书)...

    摘要: 本书讨论数据结构和算法分析.数据结构主要研究组织大量数据的方法,而算法分析则是对算法运行时间的评估.随着计算机的速度越来越快,对于能够处理大量输入数据的程序的需求变得日益急切.可是,由于在输入 ...

  2. 《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

    本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区& ...

  3. 机器学习与R语言(原书第2版)》一1.4 实践中的机器学习

    本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第1章,第1.4节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区& ...

  4. python数据科学导论_数据科学导论:Python语言(原书第3版)

    数据科学导论:Python语言(原书第3版) 作者:(意)阿尔贝托·博斯凯蒂;(意)卢卡·马萨罗 著 出版日期:2020年02月 文件大小:48.52M 支持设备: ¥50.00 适用客户端: 言商书 ...

  5. 数据结构与算法分析Java语言描述 原书超清第3版 下载

    链接: https://pan.baidu.com/s/135hWyCK3SssLwMmeHn4PCg    提取码: 9kk7

  6. C语言基础专业书,零基础学C语言(第3版) (康莉/李宽 等著) 中文pdf完整版[29MB]

    零基础学C语言(第3版)站在零基础学习的角度讲授C语言,使初学者能尽快掌握C语言程序设计的精髓,避免走弯路.在讲解知识点时,笔者采用由浅人深.逐级递进的学习方式进行内容设置安排.<零基础学C语言 ...

  7. 像科学家一样思考python_像计算机科学家一样思考Python (第2版) 中文pdf完整版

    本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主体是如何思考.设计.开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介. 全书共21章,详细介绍Pyt ...

  8. 零基础学python图文版-零基础学Minecraft编程(图文版) 中文pdf完整版[41MB]

    零基础学Minecraft编程(图文版)是非常有趣的Minecraft编程入门学习书.在Minecraft游戏中,你可以学习许多Python编程技能,在 PC.Mac或树莓派上与游戏进行互动,更可将M ...

  9. python网络爬虫技术 江吉彬下载 pdf_精通Python网络爬虫:核心技术、框架与项目实战 附源码 中文pdf完整版[108MB]...

    精通Python网络爬虫这是一本实战性的网络爬虫秘笈,不仅讲解了如何编写爬虫,而且还讲解了流行的网络爬虫的使用. 全书分为4个部分:第壹部分对网络爬虫做了概要性的介绍,主要介绍了网络爬虫的常识和所涉及 ...

  10. 桥梁工程相关c语言程序,工程问题C语言求解(原书第4版)pdf

    工程问题C语言求解(原书第4版) 内容简介 本书介绍如何使用C编程语言求解工程问题.书中从通用的5步方法论入手,以犯罪现场调查.地形导航.飓风等级测量等众多热点技术领域的工程问题为应用对象,生动.有趣 ...

最新文章

  1. commons-lang StringUtils#split的坑
  2. Linux安装gitbook
  3. 中小企业信息化及市场
  4. js中的数组基本知识
  5. 小米获京东自营安卓平板销量冠军 小米平板5 Pro全版本降100元
  6. 基于JS实现新闻列表无缝向上滚动实例代码
  7. Linux查看某个进程的磁盘IO读写情况
  8. 传输层协议(12):拥塞控制(1)
  9. SQL Server 2005 无法连接服务器(error:10061)
  10. eas bos编码规则
  11. 微信定时自动发消息。每天和你的obj准时说晚安
  12. 【论文解读】深度学习目标检测 | R-CNN系列里程碑 | 一文弄懂Faster R-CNN
  13. 吹气球--记忆化搜索
  14. python 绘制一维散点图
  15. 前端+后端项目 - 论坛信息管理系统(Web+servlet+MySQL+JDBC)
  16. 虚幻官方文档使用UMG(虚幻运动图像)的用户界面笔记[VS2019]
  17. HDU - 6438 优先队列,+贪心。
  18. python图像去污_图像去雾毕业论文准备02-python中os标准库
  19. java项目日志打印总结
  20. Echo的树莓派学习笔记

热门文章

  1. mustache模板引擎
  2. rostcm6情感分析案例分析_情感分析师在线指导情感挽回
  3. secureCRT连接Linux虚拟机
  4. 使用Xftp连接Linux
  5. Java语言程序设计 基础篇 原书第10版梁勇著 课后编程练习题答案1
  6. qml之TextArea 添加滚动条
  7. IIS下载无后缀文件的设置
  8. 炮灰模型:对女生选择追求者的数学模型的建立-转
  9. NGUI中的UIGrid
  10. 基于Python的大数据分析实战篇(一)