目录 1
第1章 软件工程 1
1.1 软件开发 1
1.2 软件质量 2
1.3 软件开发生命期模型 6
1.4 统一建模语言 9
1.5 错误的处理 12
1.6 算法的分析 13
1.7 软件工程和数据结构 17
第2章 集合 21
2.1 本章简介 21
2.2 袋集合 24
2.3 使用袋的例子:bingo 28
2.4 袋的数组实现 30
2.5 分析袋的数组实现 42
第3章 链式结构 47
3.1 链式引用 47
3.2 管理链表 49
3.3 无链接的元素 51
3.4 袋的链式实现 52
3.5 分析袋的链式实现 59
第4章 递归 63
4.1 递归思想 63
4.2 递归编程 65
4.3 使用递归 68
4.4 分析递归算法 75
5.1 查找 79
第5章 查找与排序 79
5.2 排序 83
第6章 堆栈 95
6.1 堆栈ADT 95
6.2 使用堆栈:计算后缀表达式 97
6.3 使用堆栈:模拟递归 103
6.4 堆栈的链式实现 104
6.5 堆栈的数组实现 107
6.6 实现堆栈:java.util.Stack类 109
6.7 分析堆栈的实现 110
第7章 队列 115
7.1 队列ADT 115
7.2 使用队列:代码键 117
7.3 使用队列:模拟售票器 120
7.4 使用队列:基数排序法 124
7.5 队列的链式实现 127
7.6 队列的数组实现 130
7.7 使用循环数组来实现队列 132
7.8 队列实现的分析 135
第8章 链表 141
8.1 链表ADT 141
8.2 使用有序链表:制订赛程 147
8.3 使用索引链表:Josephus问题 151
8.4 链表的数组实现 154
8.5 链表的链式实现 158
8.6 分析链表的实现 162
第9章 树 169
9.1 树 169
9.2 树的实现策略 171
9.3 树的遍历 173
9.4 实现二叉树 176
9.5 使用二叉树:表达式树 182
第10章 二叉查找树 193
10.1 二叉查找树 193
10.2 二叉查找树的链式实现 194
10.3 使用二叉查找树实现有序链表 204
10.4 平衡二叉查找树 205
10.5 实现二叉查找树:AVL树 208
10.6 实现二叉查找树:红黑树 210
10.7 实现二叉查找树:Java集合API 215
第11章 堆 221
11.1 堆 221
11.3 使用堆:优先队列 225
11.2 使用堆:堆排序 225
11.4 堆的链式实现 228
11.5 堆的数组实现 232
11.6 分析堆的实现 235
第12章 多叉查找树 239
12.1 合并树的概念 239
12.2 2-3树 239
12.3 2-4树 245
14.4 B-树 246
12.5 B-树的实现策略 248
第13章 散列 251
13.1 散列 251
13.2 散列函数 253
13.3 解决冲突 255
13.4 删除哈希表中的元素 259
13.5 Java集合API中的哈希表 261
第14章 图 271
14.1 无向图 271
14.2 有向图 272
14.3 网络………………………- 274
14.4 图的通用算法 275
14.5 图的实现策略 281
附录A Java面向对象概念 285
A.1 面向对象简介 285
A.2 使用对象 286
A.3 类库和包 288
A.4 对象的状态和行为 289
A.5 类 290
A.6 封装 293
A.7 构造函数 295
A.8 方法重载 295
A.9 再谈引用 296
A.10 static修饰符 301
A.13 继承 305
A.14 类层次体系 308
A.15 多态 311
A.16 异常 315
附录B Java类库 319
AbstractButton(javax.swing) 319
ActionEvent(java.awt.event) 320
AdjustmentEvent(java.awt.event) 321
Applet(java.applet) 322
ArrayList(java.util) 324
AWTEvent(java.awt) 325
BigDecimal(java.math) 326
BigInteger(java.math) 329
BitSet(java.util) 331
Boolean(java.lang) 332
BorderFactory(javax.swing) 333
BorderLayout(java.awt) 334
Box(javax.swing) 335
BoxLayout(javax.swing) 336
BuffreredReader(java.io) 337
BufferedWriter(java.io) 338
ButtonGroup(javax.swing) 339
Byte(java.lang) 339
Calendar(java.util) 340
CardLayout(java.awt) 344
Character(java.lang) 345
Class(java.lang) 347
Color(java.awt) 349
Component(java.awt) 351
ComponentAdapter(java.awt.event) 355
ComponentEvent(java.awt.event) 356
Container(java.awt) 357
ContainerAdapter(java.awt.evnet) 359
ContainerEvent(java.awt.enent) 359
Cursor(java.awt) 360
Date(java.util) 361
DateFormat(java.text) 362
DateFormatSymbols(java.text) 364
DecimalFormat(java.text) 365
DecimalFormatSymbols(java.text) 367
Dimension(java.awt) 368
Double(java.lang) 369
Error(jave.lang) 370
Event(java.awt) 370
Exception(java.lang) 374
Float(java.lang) 374
FlowLayout(java.awt) 376
FocusAdapter(java.awt.event) 377
FocusEvent(java.awt.event) 377
Font(java.awt) 378
FontMetrics(java.awt) 379
Format(java.text) 380
Graphics(java.awt) 381
GregorianCalendar(java.util) 384
GridBagConstraints(java.awt) 385
GridBagLayout(java.awt) 387
GridLayout(java.awt) 389
Hashtable(java.util) 390
Image(java.awt) 391
ImageIcon(javax.swing) 392
InputEvent(java.awt.event) 393
InputStream(java.io) 394
InputStreamReader(java.io) 394
Insets(java.awt)…………………………- 395
Integer(java.lang) 396
ItemEvent(java.awt.event) 397
JApplet(javax.swing) 398
JCheckBox(javax.swing) 399
JButton(javax.swing) 399
JCheckBoxMenuItem(javax.swing) 400
JColorChooser(javax.swing) 400
JComboBox(javax.swing) 401
JComponent(javax.swing) 402
JFileChooser(javax.swing) 403
JFrame(javax.swing)………………………………………………………- 404
JLabel(javax.swing) 405
JList(javax.swing) 406
JOptionPane(javax.swing) 408
JPanel(javax.swing) 410
PasswordFieId(javax.swing) 410
JRadioBunon(javax.swing) 411
JScrollPane(javax.swing) 411
JSlider(javax.swing) 412
JTabbedPane(javax.swing) 413
JTextArea(javax.swing) 414
JTextField(javax.swing) 415
JToggleButton(javax.swing) 416
JToolTip(javax.swing) 416
KeyAdapter(java.awt.event) 416
KeyEvent(java.awt.event)……………………- 417
Locale(java.util) 421
Long(java.lang) 423
Math(java.lang) 424
MessageFormat(java.text) 426
MouseAdapter(java.awt.event) 427
MouseEvent(java.awt.event) 428
Number(java.lang) 429
MouseMotionAdapter(java.awt.event) 429
NumberFormat(java.text) 430
Object(java.lang) 432
ParsePosition(java.text) 433
Point(java.awt) 433
Polygon(java.awt) 434
PrintStream(java.io)……………- 435
Random(java.util) 436
Rectangle(java.awt) 437
Short(java.lang) 439
SimpleDateFormat(java.text) 440
SimpleTimeZone(java.util) 441
Stack(java.util) 442
String(java.Lang) 442
StringBuffer(java.lang) 445
StringTokenizer(java.util) 447
System(java.lang) 448
SystemColor(java.awt) 449
Thread(java.lang) 452
Throwable(java.lang) 454
Timer(javax.swing) 455
TimeZone(java.util) 455
URL(java.net) 456
Vector(java.util) 457
Void(java.lang) 459
Window(java.awt) 460
WindowAdapter(java.awt.event) 461
WindowEvent(java.awt.event) 461