图书介绍

JAVA程序设计与数据结构 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

JAVA程序设计与数据结构 第2版
  • (美)Kenneth A. Lambert,(美)Martin Osborne等著;佟占杰等译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302110069
  • 出版时间:2005
  • 标注页数:529页
  • 文件大小:137MB
  • 文件页数:544页
  • 主题词:JAVA语言-程序设计;数据结构

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

JAVA程序设计与数据结构 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 概述1

1.1 集合1

1.1.1 集合的分类1

目录1

1.1.2 关于集合的操作2

1.2 抽象数据类型3

1.3 算法分析4

1.3.1 简单性和清晰度4

1.3.2 空间效率4

1.3.3 时间效率4

1.4 算法类型5

1.4.2 分治算法6

1.4.3 回溯算法6

1.4.1 贪婪算法6

1.5 软件开发过程7

1.5.1 复杂性7

1.5.2 脆弱性7

1.5.3 可扩展性8

1.5.4 互连性8

1.6 面向对象程序设计简介8

1.6.1 过程式程序设计8

1.6.2 函数式程序设计8

1.6.3 面向对象程序设计(OOP)9

1.6.4 面向对象程序设计的直观概括9

1.7 软件开发生命周期10

1.8 本书的软件开发方法11

1.9 分析和设计阶段的测试12

1.8.4 实现12

1.8.2 分析12

1.8.3 设计12

1.8.1 需求12

1.10 测试代码13

1.10.1 单元、集成和验收测试13

1.10.2 测试内容13

1.10.3 如何设计测试数据14

1.11 正确性的证明15

1.12 软件开发过程的其他方面15

1.12.1 编码约定15

1.12.2 前置条件和后置条件16

1.13 层次系统的开发17

2.1 简介20

第2章 面向对象程序设计和基本的输入输出功能20

2.2 类和对象21

2.2.1 示例:字符串对象21

2.2.2 示例:终端输出22

2.2.3 对象、类和计算机内存22

2.2.4 对象的3个特征23

2.2.5 客户端和服务器23

2.3 Employee类23

2.3.1 用户需求23

2.3.2 类模板的结构26

2.3.3 Employee类的设计和实现27

2.3.4 构造函数和异常28

2.3.5 this的使用30

2.3.6 取值方法、赋值方法和toString方法30

2.3.7 测试等同性32

2.3.8 比较及接口Comparable33

2.3.9 复制对象及接口Cloneable34

2.3.10 对象序列化35

2.3.11 finalize和dispose方法36

2.3.12 使用对象时一些有用的提示37

2.4 继承和多态37

2.5 实现一个简单的图形层次结构38

2.5.1 实现Shape类38

2.5.2 实现Circle类39

2.5.3 构造函数和super保留字40

2.5.4 其他方法和super保留字41

2.5.5 实现Rectangle类41

2.5.6 保护型(protected)变量和方法42

2.6 图形类的使用43

2.5.7 实现、扩展、重写和终结43

2.6.1 查找合适的方法44

2.6.2 图形数组45

2.7 将图形作为参数和返回值47

2.7.1 示例:输入Retangle,输出Circle47

2.7.2 示例:输入任意图形,输出Circle48

2.7.3 示例:输入任意图形,输出任意图形48

2.8 面向对象系统的分解49

2.8.1 确定类50

2.8.2 分配职责51

2.8.3 确定数据属性51

2.8.4 确定方法52

2.8.5 类和对象模型之间的关系52

2.9 基于字符的流输入、输出53

2.9.1 介绍键盘读取器54

2.9.2 扩展键盘读取器56

2.9.3 文件读取器57

2.9.4 格式化输出59

2.9.5 使用支持类62

第3章 基于GUI的Java应用程序64

3.1 模型-视图-控制器模式64

3.2 温度转换程序的代码65

3.2.1 模型65

3.2.2 视图66

3.2.3 控制器67

3.2.4 视图和控制器的完整代码68

3.3 GridBagLayout类70

3.4 EasyGridLayout类72

3.5 IntegerField类和DoubleField类74

3.6 弹出式消息75

3.7 其他窗口组件77

3.7.1 菜单和文本区78

3.7.2 复选框和单选按钮80

3.7.3 列表框83

3.8 模式对话框的使用88

3.9 多窗口应用程序93

3.10 侦听器共享96

3.11 方法一览表98

第4章 复杂度107

4.1 衡量算法的效率107

4.1.1 测量算法的执行时间107

4.1.2 对指令计数109

4.1.3 用代数方法推导增长率111

4.2 比较增长率112

4.2.1 使用代数方法比较增长率112

4.1.4 测量算法使用的内存112

4.2.2 大O表示法114

4.2.3 最佳、最差和平均性能115

4.3 查找算法116

4.3.1 数组的线性查找法116

4.3.2 数组的二分查找法117

4.4 排序算法119

4.4.1 选择排序119

4.4.2 冒泡排序120

4.4.3 插入排序121

4.5 案例分析:记录运行时间以及对指令计数122

4.5.1 要求122

4.5.4 Algorithms类的实现123

4.5.2 分析123

4.5.3 Algorithms类的设计123

4.5.5 AlgorithmProfiler类的设计和实现125

第5章 数组和链表130

5.1 数组的特性130

5.1.1 随机访问和连续地址内存130

5.1.2 静态内存和动态内存131

5.1.3 物理大小和逻辑大小132

5.2 数组操作133

5.2.1 增加数组的大小133

5.2.2 减小数组大小134

5.2.3 向数组中插入数据项134

5.2.4 从数组中移除数据项135

5.2.6 复杂度的权衡:查找和修改数组136

5.2.5 数组方法的测试程序136

5.3 链表137

5.3.1 单链表和双向链表137

5.3.2 不连续地址内存和节点138

5.3.3 定义单链节点类139

5.3.4 使用单链节点类140

5.4 单链表的操作142

5.4.1 遍历142

5.4.2 查找(对象或第i项)143

5.4.3 替换(对象或第i项)144

5.4.4 在首端插入144

5.4.5 在尾端插入145

5.4.6 在首端移除146

5.4.7 在尾端移除147

5.4.8 插入(对象或第i项)148

5.4.9 移除(对象或第i项)149

5.4.10 复杂度的权衡:时间、空间和单链表150

5.5 链表的各种变体150

5.5.1 带有虚头节点的循环链表150

5.5.2 双向链表151

第6章 集合概述155

6.1 简介155

6.1.1 本书中集合的概述156

6.1.2 Tiny集合158

6.2 多种实现158

6.3 集合和强制类型转换159

6.4 集合和串行化161

6.5.1 迭代器的使用162

6.5 迭代器162

6.5.2 实现Tiny和iterator方法163

6.6 集合和集合视图166

6.6.1 两个例子167

6.6.2 Collection接口中的方法168

6.6.3 collectionView方法的实现(可选内容)169

6.6.4 AbstractCollection实现(可选内容)170

6.7 集合的原型和专门版本172

6.7.1 Tiny专门版本的概述(可选内容)172

6.7.2 Tiny接口的扩展(可选内容)173

6.7.3 将Tiny方法分配给类(可选内容)174

6.7.4 编写代码的细节(可选内容)175

6.8 本章向导179

7.1 栈概述182

第7章 栈182

7.2 栈原型183

7.3 栈的使用184

7.4 栈原型的实现186

7.4.1 数组实现186

7.4.2 链表实现188

7.4.3 两个实现的时间和空间分析191

7.5 栈的3个应用192

7.5.1 算术表达式求值192

7.5.2 回溯算法195

7.5.3 内存管理196

7.6 专门版本的接口200

7.7 专门版本的实现201

7.8.1 要求204

7.8 案例分析:后缀表达式求值204

7.8.2 分析205

7.8.3 设计207

7.8.4 实现210

第8章 队列216

8.1 队列概述216

8.2 队列的原型217

8.3 队列原型的实现219

8.3.1 链表实现219

8.3.2 数组实现220

8.3.3 两种实现的时间和空间分析222

8.4 队列的两个应用223

8.4.1 模拟223

8.4.2 CPU循环调度224

8.5 专门版本的接口225

8.6 专门版本的实现226

8.7 案例分析1:模拟超市结账流程228

8.7.1 要求228

8.7.2 分析228

8.7.3 总体设计230

8.7.4 MarketModel类的设计230

8.7.5 MarketModel类的实现231

8.7.6 Cashier类的设计232

8.7.7 Cashier类的实现233

8.7.8 Customer类的设计234

8.7.9 Customer类的实现234

8.8 优先队列236

8.9.2 分析237

8.9.1 要求237

8.9 案例分析2:急诊室调度237

8.9.3 推荐界面238

第9章 列表240

9.1 列表概述240

9.2 列表原型241

9.3 列表的使用244

9.4 列表原型的实现247

9.4.1 静态数组实现247

9.4.2 双向链表实现250

9.4.3 两种实现的时间和空间分析256

9.5 列表的3个应用258

9.5.1 堆存储管理258

9.5.2 对磁盘文件的组织259

9.5.3 其他ADT实现260

9.6 专门版本的接口261

9.7 专门版本的实现263

9.8 案例分析:维护任务列表(to-do列表)267

9.8.1 要求268

9.8.2 分析268

9.8.3 设计269

9.8.4 实现270

第10章 递归、查找、排序和回溯279

10.1 递归概述279

10.1.1 实现递归280

10.1.2 跟踪递归调用281

10.1.3 编写递归方法的准则282

10.1.4 递归方法的运行支持283

10.1.5 两种递归方法的分析284

10.1.6 两种递归方法的空间分析286

10.2 递归和查找287

10.2.1 数组的线性查找287

10.2.2 数组的二分查找288

10.3 递归和排序290

10.3.1 快速排序291

10.3.2 归并排序295

10.4 递归和回溯299

10.5 采用递归的理由301

10.5.1 消除递归302

10.5.2 尾递归303

10.6.1 要求304

10.6.2 分析304

10.6 案例分析1:迷宫解决方案304

10.6.3 类306

10.6.4 MazeView的实现306

10.6.5 MazeModel的实现308

10.7 递归下降及其编程语言310

10.7.1 语法介绍310

10.7.2 识别、解析和解释语言中的语句312

10.7.3 词汇分析和扫描器312

10.7.4 解析策略313

10.8 案例分析2:递归下降解析器313

10.8.1 要求313

10.8.2 分析314

10.8.3 推荐的用户界面314

10.8.4 Parser的实现315

11.1 树的概述319

第11章 树319

11.1.1 树的讨论321

11.1.2 普通树和二叉树的正式定义322

11.2 树的表示322

11.2.1 链表表示322

11.2.2 完全二叉树的数组表示324

11.3 二叉树的操作325

11.3.1 二叉树的原型326

11.3.2 BinaryTreePT的测试程序328

11.3.3 BinaryTreePT类的实现330

11.4 案例分析1:解析表达式树335

11.4.1 要求335

11.4.2 用户界面336

11.4.3 ExpressionTree类的分析和设计336

11.4.4 Parser类的分析、设计和实现337

11.5 普通树操作339

11.5.1 树的接口339

11.5.2 TreeIterator接口342

11.6 普通树类的实现(可选内容)345

11.6.1 实现中的类职责345

11.6.2 AbstractTree类的设计和实现346

11.6.3 LinkedTree类的设计和实现349

11.6.4 树迭代器的设计和实现351

11.7 案例分析2:技能数据库353

11.7.1 要求353

11.7.2 分析354

11.7.3 模型类的设计和实现355

11.7.4 视图类的设计和实现358

12.1.1 二叉树的形状361

第12章 特殊树361

12.1 堆361

12.1.2 可比对象362

12.1.3 Heap接口362

12.1.4 Heap实现363

12.1.5 堆排序的实现364

12.1.6 add方法和pop方法的实现365

12.1.7 分析堆排序367

12.1.8 迭代器的实现367

12.1.9 使用堆实现优先队列368

12.2 二叉搜索树372

12.2.1 排序集合抽象数据类型及其接口372

12.2.2 排序集合抽象数据类型的实现373

12.2.3 二分查找374

12.2.4 二叉搜索树的实现375

12.2.5 分析二叉搜索树378

12.3 “更好的”二叉搜索树(可选内容)379

12.3.1 2-3树379

12.3.2 AVL树380

第13章 无序集合:集、映射和包385

13.1 集、映射和包概述385

13.1.1 集385

13.1.2 映射386

13.1.3 包387

13.1.4 无序集合的迭代器387

13.1.5 一个简短的例子387

13.2 实现的考虑事项389

13.2.1 散列389

13.2.3 其他散列策略390

13.2.2 散列链表方法的分析390

13.3 映射原型类391

13.3.1 HashMapPT类的接口391

13.3.2 HashMapPT类的设计392

13.4 集原型类396

13.4.1 HashSetPT类的接口396

13.4.2 设计和实现397

13.5 包原型类399

13.5.1 HashBagPT类的接口399

13.5.2 设计和实现400

13.6 Java集合框架中的Map类和Set类401

13.6.1 映射401

13.6.2 Set接口404

13.7.1 Bag接口405

13.7 将Bag ADT添加到集合框架405

13.7.2 Bag实现406

13.8 案例分析1:文件索引系统409

13.8.1 要求409

13.8.2 分析409

13.8.3 设计和实现410

13.9 案例分析2:信贷批准系统417

13.9.1 要求417

13.9.2 分析417

13.9.3 类417

13.9.4 设计和实现418

第14章 图426

14.1 概述426

14.2 术语427

14.3.1 邻接矩阵429

14.3 图的表示429

14.3.2 邻接表430

14.3.3 两种表示的分析431

14.3.4 运行时间的进一步分析431

14.4 图的遍历432

14.4.1 连通图的一般遍历算法432

14.4.2 深度优先遍历和广度优先遍历432

14.4.3 图的分量434

14.5 图中的树435

14.5.1 生成树和生成森林435

14.5.2 最小生成树435

14.5.3 最小生成树算法435

14.6 拓扑排序437

14.7.1 Dijkstra算法438

14.7 最短路径问题438

14.7.2 初始化439

14.7.3 计算439

14.7.4 分析440

14.8 图原型440

14.8.1 使用图原型的例子440

14.8.2 LinkedGraphPT类441

14.8.3 LinkedVertexPT类448

14.8.4 LinkedEdgePT类451

14.9 一个专门的图实现(可选内容)453

14.9.1 Graph接口454

14.9.2 权值456

14.9.3 实现457

14.9.4 关于性能的提示460

14.10.1 要求461

14.10.2 分析461

14.10.3 GraphDemoView类461

14.10 案例分析:测试图的算法461

14.10.4 GraphDemoModel类466

第15章 多线程、网络和客户端/服务器编程470

15.1 线程和进程470

15.1.1 线程471

15.1.2 休眠线程472

15.1.3 生产者、消费者和同步474

15.2 网络、服务器和客户端479

15.2.1 IP地址479

15.2.3 套接字和一个日期/时间客户端程序481

15.2.2 端口、服务器和客户端481

15.2.4 服务器套接字和一个日期/时间服务器端程序483

15.2.5 客户端和服务器端之间的双向会话485

15.2.6 使服务器处理多个客户端485

15.2.7 使用服务器守护进程486

15.2.8 使用客户端处理器489

15.2.9 模型-视图-控制器模式491

15.3 案例分析:校园电话目录491

15.3.1 要求491

15.3.2 分析492

15.3.3 设计493

15.3.4 实现493

A.1 保留字499

A.2 数据类型499

附录A Java语言特性回顾499

A.3 变量、作用域和生命周期501

A.4 表达式502

A.5 控制语句503

A.5.1 复合语句503

A.5.2 if和if-else语句503

A.5.3 while和do-while语句504

A.5.4 for语句504

A.5.5 switch语句504

A.6 混合模式运算和强制类型转换505

A.7 字符串505

A.8 数组507

A.9 方法和参数508

A.10 引用类型509

A.13 接口510

A.11 包装器类510

A.12 类510

A.14 适配器511

A.15 异常511

A.16 程序包512

A.17 文本文件513

附录B 层次结构、接口及类516

B.1 层次结构516

B.2 接口516

B.3 类516

附录C 安装指令518

C.1 使用JDK518

C.2 使用JGrasp519

术语表520

热门推荐