图书介绍

数据结构 Java版PDF|Epub|txt|kindle电子书版本网盘下载

数据结构 Java版
  • (美)福特(Ford,W.H.),(美)托普(Topp,W.K.)著;梁志敏译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302135444
  • 出版时间:2006
  • 标注页数:970页
  • 文件大小:68MB
  • 文件页数:994页
  • 主题词:数据结构;JAVA语言-程序设计

PDF下载


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

下载说明

数据结构 Java版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.2 链表2

1.1.3 关联数组3

1.1.5 适配器结构4

1.1.4 图4

1.2 面向对象编程5

1.1.7 数据结构与算法5

1.1.6 数据结构与面向对象编程5

1.3 理解类的概念7

1.4.1 设计Time24类8

1.4 Time24类8

1.4.2 构造函数9

1.4.3 toString方法10

1.4.4 Accessor和mutator方法11

1.5 对象的声明和使用12

1.4.5 静态方法12

1.5.1 对象方法的使用13

1.5.2 引用与别名14

1.6 一个使用Time24对象的应用程序15

1.7 类的表示16

1.8 类的实现18

1.8.1 Time24类声明19

1.8.2 私有的工具方法20

1.8.3 accessor与mutator方法21

1.8.4 构造函数22

1.8.7 时间间隔23

1.8.6 增加时间23

1.8.5 格式化的对象描述23

1.9 类的构造24

1.10 String类26

1.10.2 串合并27

1.10.1 串索引27

1.10.3 串比较28

1.11 枚举类29

1.12 总结32

书面练习33

编程练习34

编程项目36

第2章 类之间的关系39

2.1.1 Integer对象的比较40

2.1 wrapper类40

2.1.2 静态wrapper类成员41

2.1.3 字符处理42

2.2 自动装箱与自动拆箱43

2.3 对象组合44

2.3.1 TimeCard类45

2.3.2 TimeCard类的实现46

2.4 Java中的继承47

2.3.3 TimeCard类的UML图47

2.4.1 一个雇员层次结构48

2.4.2 继承层次结构中成员的可见性49

2.4.3 Employee类的声明50

2.4.4 SalaryEmployee子类51

2.4.5 继承层次结构中的关键字super52

2.4.6 HourlyEmployee子类53

2.5 多态性55

2.6 抽象类59

2.7.1 throw语句60

2.7 运行时错误的处理60

2.7.2 处理异常的try/catch代码块61

2.7.3 finally子句62

2.7.5 Java异常的层次结构63

2.7.4 异常传播63

2.8 输入与输出65

2.7.6 标准的异常65

2.8.1 控制台I/O66

2.8.3 使用Reader流的文本输入67

2.8.2 文件I/O67

2.8.4 输入串的分析69

2.8.5 使用Writer流的文本输出71

2.8.6 输出流的控制72

2.9.2 输入流的读取73

2.9.1 声明Scanner对象73

2.9 Scanner类73

2.9.4 Scanner类API75

2.9.3 文件输入75

2.9.5 应用程序:Scanner类的使用76

2.10 总结79

书面练习80

编程练习83

编程项目87

3.1 Java接口89

第3章 类的设计89

3.2 作为模板的接口91

3.2.1 使用接口类型92

3.2.2 接口与继承94

3.3 使用iavadoc创建API96

3.4 设计模式99

3.5 GUI应用程序设计100

3.5.1 图形组件101

3.5.2 GUI应用程序设计模式102

3.5.3 事件侦听器与事件处理程序105

3.5.4 骰子投掷动作事件106

3.6 总结107

编程练习108

书面练习108

编程项目112

4.1 选择排序115

第4章 算法介绍115

4.2.1 顺序搜索119

4.2 简单的搜索算法119

4.2.2 二叉搜索121

4.3.2 算法性能:运行时间分析126

4.3.1 系统/内存性能标准126

4.3 算法的分析126

4.3.3 Big-O符号129

4.3.4 通用数量级131

4.4 搜索算法的比较133

书面练习136

4.5 总结136

编程练习138

编程项目141

第5章 泛型类与方法143

5.1 Obiect超类144

5.1.1 对象数组方法145

5.1.2 通用的顺序搜索146

5.2 Java泛型介绍147

5.2.1 基于Object的Store类148

5.2.2 泛型集合149

5.2.3 泛型Store类150

5.3 泛型接口151

5.4.1 基本的泛型方法155

5.4 泛型方法155

5.4.2 为泛型类型使用绑定156

5.5 泛型与继承157

5.5.1 被绑定的泛型类型158

5.5.2 泛型与通配符160

5.6 泛型搜索/排序算法161

5.7 总结164

书面练习165

编程练习166

编程项目168

6.1 递归的概念171

第6章 递归171

6.1.2 递归方法的实现173

6.1.1 描述一个递归算法173

6.1.3 递归的工作方式175

6.1.4 多种基数表示法176

6.2.1 构建一个刻度尺179

6.2 递归的应用179

6.2.2 Hanoi塔181

6.3 递归的评价185

6.3.1 Fibonacci方法186

6.4 总结189

6.3.2 使用递归的标准189

书面练习190

编程练习192

编程项目194

7.1 插入排序195

第7章 排序算法195

7.2.1 归并排序198

7.2 分治排序算法198

7.2.2 通用的排序方法201

7.2.3 msort()方法202

7.2.4 归并排序的效率205

7.3.1 使用基准值分割列表206

7.3 快速排序206

7.3.2 快速排序递归下降209

7.3.3 pivotIndex()方法211

7.3.4 quicksort()方法213

7.3.5 快速排序的运行时间215

7.3.6 排序算法的比较216

7.4 第k大元素的查找219

7.5 总结221

书面练习222

编程练习223

编程项目225

8.1 集合介绍227

第8章 集合类型227

8.2 集合的概述229

8.2.1 List集合230

8.2.2 Set集合232

8.2.3 Map集合233

8.2.4 适配器集合234

8.2.5 Graph集合235

8.2.6 Java Collections Framework236

8.3 Bag集合237

8.3.1 创建和使用一个Bag集合238

8.3.2 应用:Eratosthenes筛选法240

8.4 Bag类的实现243

8.4.1 私有的remove()方法244

8.4.2 插入和访问方法245

8.5 总结246

8.4.3 集合的toString()方法246

书面练习247

编程练习248

编程项目249

9.1 列表集合251

第9章 基于数组的列表集合251

9.2 ArrayList类255

9.2.1 调整ArrayList的大小257

9.3.1 ArrayList的连接259

9.3 ArrayList应用程序259

9.2.2 ArrayList API259

9.3.2 closest-pair问题262

9.4.1 ArrayList类的设计266

9.4 实现ArrayList类266

9.4.2 准备更大的容量267

9.4.3 添加和删除元素268

9.4.4 实现索引访问272

9.5 Cloneable对象273

9.5.1 克隆Time24对象274

9.5.2 克隆引用变量275

9.5.3 克隆ArrayList对象277

9.6 ArrayList集合的评价279

9.5.4 克隆数组279

书面练习280

9.7 总结280

编程练习282

编程项目285

第10章 链表287

10.1.1 创建链表289

10.1 单链表289

10.1.3 定位列表位置291

10.1.2 扫描链表291

10.1.5 通用的插入和删除操作292

10.1.4 更新列表头292

10.1.6 删除目标节点294

10.2 双链表298

10.3 LinkedList集合299

10.3.1 LinkedList类300

10.3.2 基于索引的LinkedList方法301

10.3.3 访问列表尾302

10.4.1 应用程序:选拔列表304

10.4 使用LinkedList集合的应用程序304

10.4.2 应用程序:回文列表307

10.5 总结309

书面练习310

编程练习313

编程项目318

11.1 双链表321

第11章 实现LinkedList类321

11.1.1 DNode对象322

11.1.2 使用DNode对象323

11.2 循环双链表325

11.2.1 声明双链表326

11.2.2 更新双链表327

11.2.3 应用程序:词汇杂乱330

11.3.1 LinkedList类的私有成员333

11.3 实现LinkedList类333

11.3.3 列表中基于索引的访问335

11.3.2 LinkedList类的构造函数335

11.3.4 搜索列表336

11.3.5 修改列表337

书面练习339

11.4 总结339

编程练习340

编程项目342

12.1 迭代器的概念345

第12章 迭代器345

12.2 集合迭代器346

12.2.1 迭代器扫描方法347

12.2.2 通用的迭代器方法350

12.2.3 使用增强的for语句进行迭代351

12.3 列表迭代器352

12.3.1 ListIterator方法set()353

12.3.2 列表的后向扫描354

12.3.3 ListIterator方法add()356

12.3.4 迭代器设计模式357

12.4.1 有序列表358

12.4 迭代器的应用358

12.4.2 删除有序列表中的重复值360

12.5 OrderedList集合361

12.5.1 OrderedList类方法362

12.5.2 应用程序:确定字频363

12.6 顺序集合的选择367

12.5.3 适配器设计模式367

12.7 总结368

书面练习369

编程练习371

编程项目373

13.1 迭代器实现设计375

第13章 迭代器的实现375

13.1.1 迭代器变量376

13.1.2 迭代器接口方法377

13.2 LinkedList迭代器378

13.3.1 列表迭代器构造函数381

13.3 列表迭代器的实现381

13.3.2 列表迭代器的公共方法382

13.4 快速失效迭代器385

13.5 总结386

书面练习387

编程练习388

编程项目390

第14章 堆栈391

14.1 堆栈集合392

14.2 堆栈的应用396

14.2.1 多种基数397

14.2.2 符号对的平衡400

14.3 递归与运行时堆栈403

14.4 后缀表达式405

14.4.1 后缀表达式的求解406

14.4.2 PostfixEval类408

14.4.3 evaluate()方法410

14.5.1 中缀表达式属性412

14.5 中缀表达式的求解412

14.5.2 中缀-后缀转换413

14.6 总结416

书面练习417

编程练习419

编程项目422

第15章 队列与优先队列425

15.1 Queue接口426

15.1.1 创建一个队列集合类427

15.1.2 应用:队列的调度428

15.2 基数排序430

15.3 有界队列436

15.3.1 BQueue类的设计实现438

15.3.2 BQueue类的声明440

15.4 优先队列441

15.4.1 优先队列接口442

15.4.2 应用程序:支持服务库444

15.5.1 对银行的仿真447

15.5 事件驱动的仿真447

15.5.2 仿真设计模式449

15.5.3 BankSimulation类451

书面练习457

15.6 总结457

编程练习460

编程项目463

16.1 树结构465

第16章 二叉树465

16.1.1 树的相关术语466

16.1.2 二叉树468

16.2 二叉树节点473

16.3.1 递归树遍历477

16.3 二叉树扫描算法477

16.3.2 中序扫描算法478

16.3.3 扫描方法的设计480

16.3.4 迭代的层序扫描482

16.3.5 Visitor设计模式484

16.3.6 Visitor设计模式的使用486

16.4.1 树高度的计算489

16.4 树扫描算法的使用489

16.4.2 复制二叉树491

16.4.3 清除树494

16.4.4 显示二叉树495

16.5 排序的下界(选读)497

16.6 总结499

书面练习500

编程练习503

编程项目505

17.1 表达式树507

第17章 二叉树的应用507

17.2 迭代的树遍历512

17.2.1 中序迭代遍历513

17.2.2 InorderIterator类的实现515

17.3 Euler回路遍历518

17.4.1 影像树的构建521

17.4 绘制二叉树521

17.4.2 影像树的显示523

17.5 总结525

编程练习526

书面练习526

编程项目529

18.1 二叉搜索树531

第18章 二叉搜索树531

18.1.1 构建二叉搜索树532

18.1.2 在二叉搜索树中定位对象533

18.1.3 删除二叉搜索树节点535

18.2 STree:一种二叉搜索树类536

18.3 STree类的实现540

18.3.1 STree类的私有成员与构造函数541

18.3.2 插入和定位节点542

18.3.3 删除节点544

18.3.4 其他操作550

18.4 STree迭代器551

18.3.5 二叉搜索树操作的复杂度551

书面练习556

18.5 总结556

编程练习558

编程项目559

第19章 集与映射561

19.1.1 TreeSet集合563

19.1 集563

19.1.2 简单的拼写检查器565

19.2 集运算符568

19.2.1 集运算符的实现569

19.2.2 应用程序:计算机账号的更新572

19.2.3 使用有序集的操作574

19.3.1 Map接口577

19.3 映射577

19.3.2 有序映射TreeMap579

19.3.3 应用程序:一个学生时间记录映射581

19.3.4 应用程序:计算机软件产品583

19.4.1 键集集合视图586

19.4 映射集合视图586

19.4.2 条目集集合视图588

19.4.3 应用程序:构建词汇索引591

书面练习596

19.5 总结596

编程练习598

编程项目602

20.1 TreeSet类的实现603

第20章 有序集与映射的实现603

20.2 TreeMap类的实现604

20.2.1 TreeMap类的设计607

20.2.2 使用键对条目进行访问608

20.2.3 更新条目609

20.3 集合视图的实现611

20.2.5 TreeSet和TreeMap类中插入和删除操作的复杂度611

20.2.4 删除条目611

20.3.1 查看视图612

20.3.2 实现视图614

20.3.3 keySet集合视图615

书面练习617

20.4 总结617

编程练习618

编程项目621

21.1 散列法625

第21章 实现映射的散列法625

21.2.1 Java方法hashCode()627

21.2 散列函数的设计627

21.2.2 自定义的散列函数629

21.3.1 线性探查法631

21.3 散列表的设计631

21.3.2 具有不同列表的拉链法633

21.3.3 再散列635

21.4 作为集合的散列表636

21.5 Hash类的实现637

21.5.1 Hash类的add()和rehash()方法639

21.5.2 Hash类的remove()方法641

21.5.3 Hash类迭代器的实现642

21.6 无序映射集合645

21.6.1 访问HashMap类中的条目646

21.6.2 更新HashMap类中的条目647

21.7 无序集集合649

21.8 散列表的性能650

21.9 总结652

书面练习653

编程练习655

编程项目657

22.1 基于数组的二叉树661

第22章 堆661

22.2 Comparator接口663

22.2.1 通用比较对象664

22.2.2 通用的数组排序665

22.3 堆667

22.3.1 堆的插入操作668

22.3.2 堆的删除操作670

22.3.3 堆的显示674

22.4.1 堆的产生676

22.4 使用堆进行排序676

22.4.2 堆排序679

22.4.3 静态堆方法概述680

22.5 优先队列的实现681

书面练习684

22.6 总结684

编程练习687

编程项目689

23.1 位数组691

第23章 位数组与文件压缩691

23.1.1 BitArray类694

23.1.2 BitArray类的实现696

23.2 二进制文件699

23.3 Huffman压缩703

23.3.1 Huffman树的构建707

23.3.2 Huffman压缩的实现708

23.3.3 Huffman解压的实现714

23.4 序列化716

23.4.1 对象的序列化717

23.4.4 应用程序:对象的序列化718

23.4.3 反序列化对象718

23.4.2 使类可序列化718

23.4.5 定制序列化721

23.5 总结723

书面练习724

编程练习728

编程项目729

24.1 图的相关术语731

第24章 图与路径731

24.1.1 有向图733

24.1.2 带权图734

24.2.1 Graph接口735

24.2 图的创建和使用735

24.2.2 DiGraph类737

24.3.1 广度优先搜索算法741

24.3 图遍历算法741

24.3.2 深度优先访问算法746

24.3.3 深度优先搜索算法751

24.3.4 无环图753

书面练习755

24.4 总结755

编程练习758

编程项目761

25.1 拓扑排序763

第25章 图算法763

25.1.1 拓扑排序的目的764

25.1.2 topologicalSort()方法的实现765

25.2 强连通组件766

25.2.1 强连通组件算法的工作原理768

25.2.2 strongComponents()方法的实现769

25.3 图最优化算法771

25.4 最短路径算法772

shortestPath()方法的实现774

25.5 Dijkstra最小路径算法777

25.5.1 Dijkstra算法的设计778

25.5.3 minimumPath()方法的实现781

25.5.2 Dijkstra算法的工作原理781

25.5.4 无环图中的最小路径784

25.6 最小生成树787

25.6.1 Prim算法788

25.6.2 minSpanTree()方法的实现790

书面练习794

25.7 总结794

编程练习796

编程项目798

26.1 图的表示799

第26章 图的实现799

26.2 DiGraph类的组件800

26.2.1 顶点信息的表示801

26.2.2 顶点映射与VertexInfo数组列表803

26.3 DiGraph类设计806

26.4 DiGraph类方法807

26.4.2 邻接顶点的标识808

26.4.1 ArrayList的访问808

26.4.4 添加边809

26.4.3 入度和出度的求解809

26.4.5 删除顶点810

26.4.6 图算法支持方法813

26.4.7 图集合视图814

26.5 总结815

书面练习816

编程练习817

编程项目819

第27章 平衡的搜索树821

27.1 AVL树822

27.2 AVLTree类的实现824

27.2.1 AVLTree类的add()方法825

27.2.2 私有的addNode()方法831

27.2.3 add()方法832

27.3 2-3-4树835

27.3.2 2-3-4树中的插入操作836

27.3.1 2-3-4树的搜索836

27.4 红-黑树839

27.4.1 2-3-4树节点的表示840

27.4.2 2-3-4树的红-黑树表示841

27.4.4 4-节点的分割844

27.4.3 在红-黑树中插入节点844

27.4.5 红-黑树底部的插入操作848

27.4.6 红-黑树的构建849

27.4.7 红-黑树的搜索运行时间850

27.4.8 在红-黑树中删除节点851

27.5 RBTree类852

书面练习855

27.6 总结855

编程练习858

编程项目859

28.1 基本的数论概念861

第28章 数论与加密861

28.1.1 Euclid GCD算法862

28.1.2 模运算863

28.1.3 Euler φ函数865

28.2 安全的消息传输866

28.2.2 使用用于RSA加密的密钥867

28.2.1 创建用于RSA加密的密钥867

28.3 大整数的使用868

28.2.3 如何保护RSA通信868

28.4 RSA的客户-服务器模式872

28.5.1 Euclid GCD算法的实现873

28.5 RSA算法(选读)873

28.5.2 RSA定理876

28.6 总结877

书面练习878

编程练习879

编程项目880

29.1 组合学881

第29章 杂类算法881

29.1.1 组合的构建882

29.1.2 查找所有子集883

29.1.3 列出置换885

29.1.4 旅行推销员问题888

29.2 动态编程889

29.1.5 置换与TSP889

29.2.1 由顶向下动态编程890

29.2.2 使用动态编程的组合893

29.2.3 由底向上动态编程894

29.2.4 背包问题896

29.2.5 Knapsack类899

29.3 回溯:八皇后问题903

29.3.1 问题分析905

29.3.2 程序设计907

29.3.3 显示棋盘911

29.4 总结913

书面练习914

编程练习915

编程项目920

A.1 Java程序的结构923

附录A Java入门923

A.1.1 注释924

A.1.4 控制台输出925

A.1.3 变量的声明和使用925

A.1.2 关键字与标识符925

A.2 Java编程环境926

A.3.1 数值类型927

A.3 原始数据类型927

A.3.2 Java的char类型929

A.4.1 算术运算符930

A.4 运算符930

A.3.3 命名常量的声明930

A.4.3 复合赋值运算符931

A.4.2 赋值运算符931

A.4.5 运算符的优先顺序932

A.4.4 增量运算符932

A.5 类型之间的转换933

A.6 选择语句935

A.6.1 if语句937

A.6.2 嵌套的if语句938

A.6.4 条件表达式运算符939

A.6.3 多路if/else语句939

A.6.5 switch语句940

A.6.6 boolean类型941

A.7.1 while语句942

A.7 循环语句942

A.7.2 do/while语句943

A.7.3 for语句944

A.7.4 break语句945

A.8 数组946

A.8.2 使用增强的for语句扫描数组947

A.8.1 数组的初始化947

A.8.3 二维数组948

A.9.1 预定义的方法949

A.9 Java的方法949

A.9.2 自定义的方法951

A.9.3 作为方法参数的数组953

附录B Java关键字957

附录C ASCII字符编码959

附录D Java操作符的优先顺序961

E.1 安装EZJava963

附录E EZJava集成开发环境963

E.2 启动EZJava964

E.2.1 创建新文档965

E.3 程序的编译和运行966

E.2.2 菜单选项966

E.4 项目的使用968

热门推荐