图书介绍

数据结构与问题求解 Java语言版 第4版PDF|Epub|txt|kindle电子书版本网盘下载

数据结构与问题求解 Java语言版 第4版
  • (美)韦斯著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302252962
  • 出版时间:2011
  • 标注页数:734页
  • 文件大小:172MB
  • 文件页数:757页
  • 主题词:

PDF下载


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

下载说明

数据结构与问题求解 Java语言版 第4版PDF格式电子书版下载

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

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

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

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

图书目录

第1部分 Java教程3

第1章 Java基础知识3

1.1 通用环境3

1.2 第一个程序4

1.2.1 注释4

1.2.2 main5

1.2.3 终端输出5

1.3 基本类型5

1.3.1 概述5

1.3.2 常量6

1.3.3 基本类型的声明与初始化6

1.3.4 终端输入与输出7

1.4 基本运算符7

1.4.1 赋值运算符7

1.4.2 二元算术运算符8

1.4.3 一元运算符8

1.4.4 类型转换9

1.5 条件语句9

1.5.1 关系和相等运算符10

1.5.2 逻辑运算符10

1.5.3 if语句11

1.5.4 while语句12

1.5.5 for语句13

1.5.6 do语句13

1.5.7 break和continue14

1.5.8 switch语句15

1.5.9 条件运算符15

1.6 方法16

1.6.1 方法名重载17

1.6.2 存储类18

本章小结18

重要概念18

常见错误20

网上资源20

练习20

简答题20

理论题21

实践题21

程序设计题22

参考文献22

第2章 引用类型23

2.1 什么是引用23

2.2 对象和引用基础24

2.2.1 点(.)运算符25

2.2.2 对象的声明25

2.2.3 垃圾回收26

2.2.4 =的含义26

2.2.5 参数传递27

2.2.6 ==的含义28

2.2.7 对象的无运算符重载29

2.3 字符串29

2.3.1 字符串处理基础29

2.3.2 字符串连接30

2.3.3 字符串比较30

2.3.4 其他String方法30

2.3.5 将其他类型转换成字符串31

2.4 数组31

2.4.1 声明、赋值与方法32

2.4.2 动态数组扩展34

2.4.3 ArrayList36

2.4.4 多维数组37

2.4.5 命令行参数38

2.4.6 增强的for循环39

2.5 异常处理40

2.5.1 概述40

2.5.2 finally子句41

2.5.3 常见的异常41

2.5.4 throw和throws子句42

2.6 输入与输出43

2.6.1 基本流操作43

2.6.2 Scanner类型44

2.6.3 顺序文件46

本章小结49

重要概念49

常见错误50

网上资源51

练习51

简答题51

理论题51

实践题52

程序设计题54

参考文献56

第3章 对象与类57

3.1 什么是面向对象编程57

3.2 简单示例58

3.3 javadoc60

3.4 基本方法62

3.4.1 构造函数62

3.4.2 存取器和访问器62

3.4.3 输出与toString63

3.4.4 equals64

3.4.5 main64

3.5 示例:使用java.math.BigInteger64

3.6 其他构造66

3.6.1 this引用66

3.6.2 用于构造函数的this缩写67

3.6.3 instanceof运算符67

3.6.4 实例成员与静态成员68

3.6.5 静态字段与方法68

3.6.6 静态初始化块70

3.7 示例:实现BigRational类71

3.8 包74

3.8.1 import指令75

3.8.2 package语句76

3.8.3 CLASSPATH环境变量77

3.8.4 包可见性规则77

3.9 设计模式:组合(对)78

本章小结79

重要概念80

常见错误81

网上资源82

练习82

简答题82

理论题83

实践题83

程序设计题85

参考文献87

第4章 继承88

4.1 什么是继承88

4.1.1 创建新类89

4.1.2 类型兼容性92

4.1.3 动态分配和多态性93

4.1.4 继承层次结构94

4.1.5 可见性规则95

4.1.6 构造函数与super95

4.1.7 final方法和类96

4.1.8 重写方法97

4.1.9 类型兼容性修正99

4.1.10 数组类型的兼容性100

4.1.11 协变返回类型100

4.2 设计层次结构101

4.2.1 抽象方法与抽象类103

4.2.2 未来的设计105

4.3 多重继承106

4.4 接口108

4.4.1 指定接口108

4.4.2 实现接口108

4.4.3 多接口109

4.4.4 接口是抽象类109

4.5 Java的基本继承110

4.5.1 Object类110

4.5.2 异常的层次结构110

4.5.3 I/O装饰模式110

4.6 使用继承实现泛型组件114

4.6.1 使用Object的泛型114

4.6.2 基本类型的包装115

4.6.3 自动装包/拆包117

4.6.4 适配器:改变接口117

4.6.5 泛型所使用的接口类型118

4.7 使用Java 5泛型实现泛型组件120

4.7.1 简单的泛型类和接口121

4.7.2 通配符的绑定121

4.7.3 泛型的静态方法123

4.7.4 类型绑定123

4.7.5 类型擦除124

4.7.6 泛型的限制125

4.8 函子(函数对象)127

4.8.1 嵌套类130

4.8.2 局部类130

4.8.3 匿名类132

4.8.4 嵌套类和泛型132

4.9 动态分配细节133

本章小结135

重要概念136

常见错误138

网上资源138

习题139

简答题139

理论题140

实践题142

程序设计题144

参考文献146

第2部分 算法与构件块149

第5章 算法分析149

5.1 什么是算法分析149

5.2 算法运行时间的示例152

5.3 最大连续子序列和的问题153

5.3.1 简单O(N3)算法154

5.3.2 改进的O(N2)算法156

5.3.3 线性算法157

5.4 一般的大O规则159

5.5 对数162

5.6 静态查找问题164

5.6.1 顺序查找164

5.6.2 二分查找164

5.6.3 插值查找167

5.7 检查算法分析168

5.8 大O分析的局限性169

本章小结169

重要概念170

常见错误170

网上资源171

练习171

简答题171

理论题172

实践题176

程序设计题178

参考文献179

第6章 集合类API181

6.1 概述181

6.2 迭代器模式182

6.2.1 基本的迭代器设计183

6.2.2 基于继承的迭代器和工厂方法185

6.3 集合类API:容器和迭代器186

6.3.1 Collection接口187

6.3.2 Iterator接口189

6.4 泛型算法191

6.4.1 Comparator函数对象192

6.4.2 Collections类192

6.4.3 二分查找194

6.4.4 排序194

6.5 List接口196

6.5.1 ListIterator接口196

6.5.2 LinkedList类197

6.5.3 Lists的运行时间200

6.5.4 从List中间删除和插入202

6.6 栈与队列204

6.6.1 栈204

6.6.2 栈与计算语言205

6.6.3 队列206

6.6.4 在集合类API中的栈与队列207

6.7 集合207

6.7.1 TreeSet类208

6.7.2 HashSet类209

6.8 映射213

6.9 优先级队列217

6.10 集合类API中的视图219

6.10.1 List的subList方法219

6.10.2 SortedSet的headSet、subSet和tailSet方法220

本章小结220

重要概念221

常见错误222

网上资源222

练习223

简答题223

理论题223

实践题224

程序设计题229

参考文献231

第7章 递归232

7.1 什么是递归232

7.2 背景知识:数学归纳法证明233

7.3 基本递归235

7.3.1 以任意基数打印数236

7.3.2 运行的原因238

7.3.3 如何运行239

7.3.4 太多的递归是危险的240

7.3.5 树的预备知识241

7.3.6 其他的例子242

7.4 数值应用245

7.4.1 模运算246

7.4.2 模的幂运算246

7.4.3 最大公约数和乘法逆元素247

7.4.4 RSA密码系统250

7.5 分治算法252

7.5.1 最大连续子序列和的问题252

7.5.2 基本分治循环的分析254

7.5.3 分治运行时间的一般上界257

7.6 动态规划259

7.7 回溯262

本章小结265

重要概念265

常见错误266

网上资源266

练习267

简答题267

理论题267

实践题269

程序设计题270

参考文献273

第8章 排序算法274

8.1 排序为什么重要274

8.2 预备知识275

8.3 插入排序和其他简单排序的分析275

8.4 希尔排序278

8.4.1 希尔排序的性能279

8.5 归并排序281

8.5.1 以线性时间归并有序数组281

8.5.2 归并排序算法283

8.6 快速排序284

8.6.1 概述285

8.6.2 快速排序分析287

8.6.3 选择支点290

8.6.4 分割策略291

8.6.5 键等于支点292

8.6.6 三个元素的中值分割293

8.6.7 小数组294

8.6.8 Java的快速排序例程294

8.7 快速选择296

8.8 排序的下限297

本章小结298

重要概念299

常见错误299

网上资源299

练习300

简答题300

理论题300

实践题301

程序设计题302

参考文献304

第9章 随机化305

9.1 为什么需要随机数305

9.2 随机数发生器306

9.3 非均匀随机数312

9.4 生成随机排列313

9.5 随机算法314

9.6 随机素性测试316

本章小结319

重要概念319

常见错误320

网上资源320

练习321

简答题321

理论题321

实践题321

程序设计题321

参考文献322

第3部分 应用327

第10章 娱乐与游戏327

10.1 纵横找单词327

10.1.1 理论327

10.1.2 Java实现329

10.2 井字游戏334

10.2.1 α-β剪枝334

10.2.2 置换表336

10.2.3 计算机下棋339

本章小结340

重要概念340

常见错误341

网上资源341

练习341

简答题341

理论题342

实践题342

程序设计题342

参考文献343

第11章 栈与编译器344

11.1 平衡符号检查器344

11.1.1 基本算法344

11.1.2 实现345

11.2 简单的计算器353

11.2.1 后缀机354

11.2.2 中缀到后缀的转换354

10.2.3 实现357

10.2.4 表达式树363

本章小结364

重要概念364

常见错误365

网上资源365

练习365

简答题365

理论题366

实践题366

程序设计题366

参考文献367

第12章 实用程序368

12.1 文件压缩368

12.1.1 前缀码369

12.1.2 霍夫曼算法370

12.1.3 实现372

12.2 交叉引用生成器384

12.2.1 基本思想384

12.2.2 Java实现384

本章小结387

重要概念388

常见错误388

网上资源388

练习388

简答题388

理论题389

实践题389

程序设计题390

参考文献392

第13章 模拟393

13.1 约瑟夫问题393

13.1.1 简单的解决方案394

13.1.2 更高效的算法395

13.2 事件驱动模拟397

13.2.1 基本思想397

13.2.2 示例:电话银行模拟398

本章小结404

重要概念405

常见错误405

网上资源405

练习405

简答题405

理论题405

实践题406

程序设计题406

第14章 图与路径407

14.1 图的定义407

14.1.1 图的表示409

14.2 无权最短路径问题417

14.2.1 理论418

14.2.2 Java实现420

14.3 非负权值的最短路径问题421

14.3.1 理论:dijkstra算法421

14.3.2 Java实现424

14.4 负权值的最短路径问题425

14.4.1 理论426

14.4.2 Java实现426

14.5 在无环图中的路径问题427

14.5.1 拓扑排序428

14.5.2 无环图最短路径算法的理论429

14.5.3 Java实现430

14.5.4 应用:关键路径分析432

本章小结434

重要概念434

常见错误435

网上资源435

练习435

简答题435

理论题436

实践题437

程序设计题437

参考文献438

第4部分 实现443

第15章 内部类和ArrayList的实现443

15.1 迭代器和嵌套类443

15.2 迭代器和内部类445

15.3 AbstractCollection类447

15.4 StringBuilder450

15.5 使用迭代器的ArrayList的实现451

本章小结456

重要概念456

常见错误456

网上资源456

练习456

简答题456

理论题457

实践题457

程序设计题457

第16章 栈与队列459

16.1 动态数组实现459

16.1.1 栈459

16.1.2 队列462

16.2 链表实现467

16.2.1 栈467

16.2.2 队列469

16.3 两种方法的比较473

16.4 java.util.Stack类473

16.5 双端队列474

本章小结475

重要概念475

常见错误475

网上资源475

练习475

简答题475

实践题476

程序设计题476

第17章 链表477

17.1 基本思想477

17.1.1 头结点478

17.1.2 迭代器类479

17.2 Java实现480

17.3 双链表和循环链表485

17.4 有序链表487

17.5 集合类AIP LinkedList类的实现488

本章小结498

重要概念498

常见错误498

网上资源498

练习499

简答题499

理论题499

实践题499

程序设计题500

第18章 树502

18.1 一般树502

18.1.1 定义502

18.1.2 实现503

18.1.3 应用:文件系统504

18.2 二叉树507

18.3 递归与树512

18.4 树的遍历:迭代器类514

18.4.1 后序遍历516

18.4.2 中序遍历520

18.4.3 前序遍历521

18.4.4 层序遍历523

本章小结524

重要概念524

常见错误525

网上资源525

练习526

简答题526

理论题527

实践题527

程序设计题527

第19章 二叉查找树529

19.1 基本思想529

19.1.1 操作530

19.1.2 Java实现531

19.2 顺序统计量537

19.2.1 Java实现538

19.3 二叉查找树操作的分析541

19.4 AVL树543

19.4.1 性质544

19.4.2 单旋转546

19.4.3 双旋转548

19.4.4 AVL插入总结550

19.5 红黑树550

19.5.1 自底而上的插入551

19.5.2 自顶而下的红黑树553

19.5.3 Java实现554

19.5.4 自顶而下的删除560

19.6 AA树561

19.6.1 插入562

19.6.2 删除564

19.6.3 Java实现565

19.7 集合类API中TreeSet类和TreeMap类的实现569

19.8 B树582

本章小结587

重要概念588

常见错误588

网上资源589

练习589

简答题589

理论题589

实践题590

程序设计题590

参考文献593

第20章 散列表595

20.1 基本思想595

20.2 散列函数596

20.2.1 在java.1ang.String中的hashCode598

20.3 线性探测法599

20.3.1 线性探测法的简单分析600

20.3.2 真的发生了什么:初始聚类601

20.3.3 find操作的分析602

20.4 二次探测法603

20.4.1 Java实现606

20.4.2 二次探测法的分析613

20.5 分离链接散列614

20.6 散列表与二叉查找树的比较616

20.7 散列的应用616

本章小结616

重要概念617

常见错误617

网上资源618

练习618

简答题618

理论题618

实践题619

程序设计题619

参考文献620

第21章 优先级队列:二叉堆622

21.1 基本思想622

21.1.1 结构性质623

21.1.2 堆序性质624

21.1.3 允许的操作624

21.2 基本操作的实现627

21.2.1 插入627

21.2.2 deleteMin操作628

21.3 buildHeap操作:线性时间的堆构造630

21.4 高级操作:decreaseKey和merge633

21.5 内部排序:堆排序634

21.6 外部排序636

21.6.1 为什么需要新算法636

21.6.2 外部排序的模型636

21.6.3 简单算法636

21.6.4 多路归并638

21.6.5 多相归并639

21.6.6 置换选择640

本章小结641

重要概念642

常见错误642

网上资源642

练习643

简答题643

理论题643

实践题645

程序设计题645

参考文献646

第5部分 高级数据结构649

第22章 伸展树649

22.1 自调整和平摊分析649

22.1.1 平摊时间限定650

22.1.2 简单的自调整策略(不能运行)650

22.2 基本自底向上的伸展树652

22.3 基本伸展树的操作653

22.4 自底向上伸展树的分析654

22.4.1 伸展限定的证明656

22.5 自顶向下的伸展树658

22.6 自顶向下伸展树的实现661

22.7 伸展树与其他查找树的比较665

本章小结665

重要概念665

常见错误666

网上资源666

练习666

简答题666

理论题666

实践题667

程序设计题667

参考文献667

第23章 归并优先级队列668

23.1 斜堆668

23.1.1 归并是一种基本操作668

23.1.2 具有堆有序性树的简化归并669

23.1.3 斜堆:一个简单的修改669

23.1.4 斜堆的分析670

23.2 偶堆672

23.2.1 偶堆操作672

23.2.2 偶堆的实现674

23.2.3 应用:dijkstra的最短加树路径算法679

本章小结681

重要概念681

常见错误681

网上资源681

练习682

简答题682

理论题682

实践题682

程序设计题682

参考文献683

第24章 不相交集类684

24.1 等价关系684

24.2 动态等价与应用685

24.2.1 应用:生成迷宫686

24.2.2 应用:最小生成树687

24.2.3 应用:最近共同祖先问题689

24.3 快速查找算法692

24.4 快速并算法693

24.4.1 智能并算法694

24.4.2 路径压缩696

24.5 Java实现697

24.6 按秩并和路径压缩的最坏情况699

24.6.1 并/查找算法的分析699

本章小结704

重要概念704

常见错误705

网上资源705

练习705

简答题705

理论题706

实践题706

程序设计题706

参考文献707

附录A 运算符709

附录B 图形化用户界面710

B.1 抽象窗口工具包和Swing710

B.2 在Swing中的基本对象711

B.2.1 组件712

B.2.2 容器713

B.2.3 顶级容器713

B.2.4 JPanel714

B.2.5 重要的I/O组件715

B.3 基本原理719

B.3.1 布局管理器719

B.3.2 图722

B.3.3 事件724

B.3.4 事件处理:适配器和匿名内部类726

B.3.5 总结:将所有片段组合起来728

B.3.6 是否需要明白Swing的所有内容728

小结728

重要概念729

常见错误730

网上资源731

练习731

简答题731

实践题731

程序设计题731

参考文献732

附录C 位运算符733

热门推荐