译者序 1
出版说明 1
前言 1
第1章 软件开发周期 1
目录 1
1.1 规格说明、设计和实现 3
1.2 运行时间分析 15
1.3 测试和调试 22
自测练习参考答案 29
本章小结 29
第2章 Java类和信息隐藏 32
2.1 类及其成员 33
2.2 使用类 43
2.3 包 49
2.4 参数、equals方法和clone 53
本章小结 73
自测练习参考答案 73
程序设计项目 76
第3章 集合类 84
3.1 Java数组简介 85
3.2 整数包ADT 90
3.3 程序设计项目:序列ADT 115
3.4 程序设计项目:多项式 125
本章小结 127
自测练习参考答案 128
程序设计项目 131
第4章 链表 136
4.1 链表基础 137
4.2 操作节点的方法 139
4.3 操作整个链表 149
4.4 使用链表的包ADT 167
4.5 程序设计项目:带链表的序列ADT 180
4.6 复杂链表 185
本章小结 188
自测练习参考答案 189
程序设计项目 194
第5章 通用程序设计 197
5.1 Java的Object类型 198
5.2 对象包 202
5.3 对象结点 216
5.4 接口和API(选读) 219
5.5 Iterator接口(选读) 226
5.6 带有Iterator的通用包类(选读) 229
5.7 Java的Collection和Map接口的介绍(选读) 232
本章小结 239
自测练习参考答案 240
程序设计项目 243
第6章 堆栈 246
6.1 堆栈简介 246
6.2 堆栈的应用 250
6.3 堆栈ADT的实现 262
6.4 更复杂的堆栈应用 271
本章小结 278
自测练习参考答案 279
程序设计项目 280
7.1 队列简介 283
第7章 队列 283
7.2 队列的应用 287
7.3 队列ADT的实现 301
7.4 优先队列 314
本章小结 317
自测练习参考答案 318
程序设计项目 319
第8章 递归思想 322
8.1 递归方法 322
8.2 递归的研究:分形和迷宫 330
8.3 推导递归 346
本章小结 352
自测练习参考答案 352
程序设计项目 354
第9章 树 359
9.1 树的简介 360
9.2 树的表示方法 364
9.3 二叉树节点类 367
9.4 树的遍历 383
9.5 二叉搜索树 394
本章小结 407
自测练习参考答案 407
程序设计项目 410
第10章 树项目 414
10.1 堆 415
10.2 B-树 419
10.3 Java对树的支持 438
10.4 树、日志和时间复杂度分析 443
本章小结 447
自测练习参考答案 448
程序设计项目 450
第11章 查找 451
11.1 顺序查找和二分查找 452
11.2 开型寻址散列 460
11.3 使用Java的Hashtable类 473
11.4 链式散列 474
11.5 散列的时间分析 477
本章小节 479
自测练习参考答案 480
程序设计项目 482
第12章 排序 483
12.1 二次排序算法 484
12.2 递归排序算法 494
12.3 一个使用堆的O(nlogn)算法 508
本章小结 516
自测练习参考答案 516
程序设计项目 517
第13章 使用扩展类实现软件重用 519
13.1 扩展类 519
13.2 模拟生态系统 527
13.3 抽象类和game类 545
本章小结 556
进阶阅读 556
自测练习参考答案 556
程序设计项目 559
14.1 图的定义 561
第14章 图 561
14.2 图的实现 567
14.3 图的遍历 578
14.4 路径算法 586
本章小结 595
自测练习参考答案 596
程序设计项目 597
附录A Java的基本类型和算术溢出 598
char类型的专有特性 599
FormatWriter类 601
附录B Java的输入和输出 601
EasyReader类 601
附录C 抛出和捕获Java异常 618
如何抛出异常 618
RuntimeException和Error类 619
捕获异常 620
throws语句 621
进阶信息 621
java.util.Vector和java.util.Array List类 622
附录D ArrayList、Vector、Hashtable和HashMap类 622
java.util.Hashtable和java.util.HashMap类 624
附录E 用于链表中的节点的类 626
附录F 一个用于包对象的类 634
附录G 深入BIG-O表示法 640
BIG-O的常规定义 640
BIG-O表达式表示什么 641
附录H Javadoc 642
怎样编写Javadoc文档注释 643
怎样使用Javadoc把你的作品提供给其他程序员 643
描述整个类的Javadoc文档 644
用于单独的公共方法的Javadoc 644
控制html链接和字体 645
运行Javadoc 646
附录I 用于交互式测试的Applet 650
简单交互式applet的6个部分 652
怎样编译和运行applet 659
超出init方法 660