圖書簡介
這是這本暢銷書的最新版——第4版了,著名作者John Lewis與Joseph Chase在前幾版的成功基礎上,根據使用本書做教材的教師和學生的反饋,在新版中進行了大量改進,以更好地適應教學需要。
圖書目錄
1.1 軟體質量 1
1.1.1 正確性 2
1.1.2 可靠性 2
1.1.3 健壯性 3
1.1.4 可用性 3
1.1.5 可維護性 3
1.1.6 可重用性 4
1.1.7 可移植性 4
1.1.8 運行效率 4
1.1.9 質量問題 5
1.2 數據結構 5
1.2.1 一個物理示例 5
1.2.2 以貨櫃作為對象 7
關鍵概念 7
主要術語 8
自測題 8
練習題 8
自測題答案 9
第2章 算法分析 10
2.1 算法效率分析 10
2.2 增長函式與大O記法 11
2.3 增長函式的比較 13
2.4 時間複雜度分析 14
2.4.1 循環運行的複雜度分析 14
2.4.2 嵌套循環的複雜度分析 15
2.4.3 方法調用的複雜度分析 16
關鍵概念 17
主要術語 17
自測題 18
練習題 18
自測題答案 18
參考文獻 19
第3章 集合概述——棧 20
3.1 集合 20
3.1.2 Java集合API 22
3.2 棧集合 23
3.3 主要的面向對象概念 24
3.3.1 繼承與多態性 24
3.3.2 泛型 25
3.4 使用棧計算後綴表達式 26
3.4.1 Javadoc 32
3.5 異常 33
3.6 棧ADT 34
3.7 用數組實現棧 36
3.7.1 管理容量 37
3.8 ArrayStack類 38
3.8.1 構造函式 39
3.8.2 push操作 40
3.8.3 pop操作 41
3.8.4 peek操作 42
3.8.5 其他操作 42
3.8.6 EmptyCollectionException類 43
3.8.7 其他實現 43
關鍵概念 44
主要術語 44
自測題 45
練習題 45
程式設計項目 46
自測題答案 47
第4章 鏈式結構——棧 48
4.1 連結作為引用 48
4.2 管理鍊表 50
4.2.1 訪問元素 50
4.2.2 插入結點 51
4.2.3 刪除結點 51
4.3 無連結的元素 52
4.3.1 雙向鍊表 52
4.4 Java API中的棧 53
4.5 使用棧來穿越迷宮 53
4.6 用鍊表實現棧 61
4.6.1 LinkedStack類 62
4.6.2 push操作 65
4.6.3 pop操作 65
4.6.4 其他操作 66
關鍵概念 67
主要術語 67
自測題 67
練習題 68
程式設計項目 68
自測題答案 68
第5章 佇列 70
5.1 概述 70
5.2 Java API中的佇列 71
5.3 使用佇列:代碼密鑰 72
5.4 使用佇列:售票口模擬 75
5.5 佇列ADT 79
5.6 用鍊表實現佇列 81
5.6.1 enqueue操作 82
5.6.2 dequeue操作 83
5.6.3 其他操作 84
5.7 用數組實現佇列 84
5.7.1 enqueue操作 87
5.7.2 dequeue操作 89
5.7.3 其他操作 89
5.8 雙端佇列 89
關鍵概念 90
主要術語 90
自測題 90
練習題 90
程式設計項目 91
自測題答案 92
第6章 列表 93
6.1 列表集合 93
6.2 Java集合API中的列表 95
6.3 使用無序列表:學習計畫 95
6.4 索引列表使用示例:Josephus問題 105
6.5 列表ADT 107
6.5.1 往列表中添加元素 107
6.6 使用數組實現列表 112
6.6.1 remove操作 113
6.6.2 contains操作 115
6.6.3 有序列表的add操作 116
6.6.4 無序列表的特有操作 117
6.6.5 無序列表的addAfter操作 117
6.7 使用鍊表實現列表 118
6.7.1 remove操作 119
關鍵概念 120
主要術語 120
自測題 121
練習題 121
程式設計項目 122
自測題答案 123
第7章 疊代器 124
7.1 何謂疊代器 124
7.1.1 疊代器的其他問題 126
7.2 使用疊代:再論學習計畫程式 126
7.2.1 顯示某些課程 130
7.2.2 刪除課程 131
7.3 用數組實現疊代器 132
7.4 用鍊表實現疊代器 135
關鍵概念 136
主要術語 137
自測題 137
練習題 137
自測題答案 137
第8章 遞歸 138
8.1 遞歸地思考 138
8.1.1 無窮遞歸 139
8.1.2 數學中的遞歸 140
8.2 遞歸地編程 140
8.2.1 遞歸與疊代 142
8.2.2 直接遞歸與間接遞歸 143
8.3 使用遞歸 143
8.3.1 穿越迷宮 143
8.3.2 漢諾塔 150
8.4 遞歸算法分析 154
關鍵概念 155
主要術語 156
自測題 156
練習題 156
程式設計項目 157
自測題答案 158
第9章 排序與查找 159
9.1 查找 159
9.1.1 靜態方法 160
9.1.2 泛型方法 160
9.1.3 線性查找法 161
9.1.4 二分查找法 162
9.1.5 查找算法的比較 164
9.2 排序 165
關鍵概念 181
主要術語 182
自測題 183
練習題 183
程式設計項目 184
自測題答案 185
第10章 樹 186
10.1 概述 186
10.1.1 樹的分類 187
10.2 實現樹的策略 188
10.2.1 樹的數組實現之計算策略 188
10.2.2 樹的數組實現之模擬連結策略 189
10.2.3 樹的分析 190
10.3 樹的遍歷 190
10.3.1 前序遍歷 191
10.3.2 中序遍歷 191
10.3.3 後序遍歷 192
10.3.4 層序遍歷 193
10.4 二叉樹 193
10.5 使用二叉樹:表達式樹 197
10.6 背部疼痛診斷器 208
10.7 用鍊表實現二叉樹 212
10.7.1 find方法 216
10.7.2 iteratorInOrder方法 217
關鍵概念 218
主要術語 219
自測題 220
練習題 220
程式設計項目 220
自測題答案 221
11.1 概述 222
11.2 用鍊表實現二叉查找樹 224
11.2.1 addElement操作 225
11.2.2 removeElement操作 227
11.2.3 removeAllOccurrences操作 231
11.2.4 removeMin操作 232
11.3 用有序列表實現二叉查找樹 233
11.3.1 BinarySearchTreeList實現的分析 236
11.4 平衡二叉查找樹 237
11.4.1 右旋 238
11.4.2 左旋 238
11.4.3 右左旋 238
11.4.4 左右旋 239
11.5 實現二叉查找樹:AVL樹 239
11.5.1 AVL樹的右旋 240
11.5.2 AVL樹的左旋 240
11.5.3 AVL樹的右左旋 241
11.5.4 AVL樹的左右旋 241
11.6 實現二叉查找樹:紅黑樹 242
11.6.1 紅黑樹中的元素插入 242
11.6.2 紅黑樹中的元素刪除 244
關鍵概念 246
主要術語 246
自測題 247
練習題 247
程式設計項目 248
自測題答案 248
參考文獻 250
第12章 優先佇列與堆 251
12.1 堆 251
12.1.1 addElement操作 253
12.1.2 removeMin操作 254
12.1.3 findMin操作 255
12.2 使用堆:優先權佇列 255
12.3 用鍊表實現堆 259
12.3.1 addElement操作 260
12.3.2 removeMin操作 262
12.3.3 findMin操作 265
12.4 用數組實現堆 265
12.4.1 addElement操作 267
12.4.2 removeMin操作 268
12.4.3 findMin操作 270
12.5 使用堆:堆排序 270
關鍵概念 271
主要術語 272
自測題 272
練習題 273
程式設計項目 273
自測題答案 274
第13章 Set與Map集合 275
13.1 概述 275
13.2 Java API中的Set和Map 276
13.3 使用Set集合:域阻塞器 278
13.4 使用Map集合:產品銷售 281
13.5 使用Map集合:用戶管理 284
13.6 使用樹來實現Set和Map集合 288
13.7 使用散列來實現Set和Map集合 289
關鍵概念 291
主要術語 292
自測題 292
練習題 292
程式設計項目 293
自測題答案 293
第14章 多路查找樹 294
14.1 整合樹的概念 294
14.2 2-3樹 294
14.2.1 往2-3樹中插入元素 295
14.2.2 從2-3樹中刪除元素 297
14.3 2-4樹 299
14.4 B樹 300
14.4.1 B*樹 301
14.4.2 B+樹 301
14.4.3 B樹的分析 302
14.5 B樹的實現策略 302
關鍵概念 303
主要術語 303
自測題 304
練習題 304
程式設計項目 304
自測題答案 305
參考文獻 305
第15章 圖 306
15.1 無向圖 306
15.2 有向圖 308
15.3 網路 309
15.4 常用的圖算法 310
15.4.1 遍歷 310
15.4.2 測試連通性 313
15.4.3 最小生成樹 314
15.4.4 判定最短路徑 317
15.5 圖的實現策略 317
15.5.1 鄰接列表 317
15.5.2 鄰接矩陣 318
15.6 用鄰接矩陣實現無向圖 319
15.6.1 addEdge方法 323
15.6.2 addVertex方法 323
15.6.3 expandCapacity方法 324
15.6.4 其他方法 325
關鍵概念 325
主要術語 325
自測題 326
練習題 326
程式設計項目 327
自測題答案 327
參考文獻 328
附錄A UML 329
A.1 統一建模語言 329
A.3 UML關係 330
關鍵概念 332
自測題 333
練習題 333
自測題答案 333
附錄B 面向對象設計 334
B.1 概述 334
B.2 使用對象 335
B.2.1 抽象 335
B.2.2 創建對象 336
B.3 類庫與包 337
B.3.1 import聲明 338
B.4 狀態與行為 338
B.5 類 339
B.5.1 實例數據 342
B.6 封裝 342
B.6.1 可見性修飾符 343
B.6.2 局部數據 344
B.7 構造函式 344
B.8 方法重載 345
B.9 再談引用 346
B.9.1 空引用 346
B.9.2 this引用 347
B.9.3 別名 348
B.9.4 垃圾回收 350
B.9.5 將對象作為參數傳遞 350
B.10 static修飾符 351
B.10.1 靜態變數 351
B.10.2 靜態方法 352
B.11 包裝類 352
B.12 接口 353
B.12.1 Comparable接口 355
B.12.2 Iterator接口 355
B.13 繼承 355
B.13.1 派生類 356
B.13.2 protected修飾符 358
B.13.3 super引用 358
B.13.4 重載方法 359
B.14 類的層次結構 359
B.14.1 Object類 360
B.14.2 抽象類 361
B.14.3 接口的層次結構 362
B.15 多態性 363
B.15.1 引用和類的層次結構 363
B.15.2 基於繼承的多態性 364
B.15.3 基於接口的多態性 365
B.16 異常 367
B.16.1 異常訊息 367
B.16.2 try語句 368
B.16.3 異常傳播 369
B.16.4 異常類的層次結構 369
關鍵概念 370
自測題 372
練習題 373
程式設計項目 373
自測題答案 375
附錄C Java圖形編程 376
C.1 像素與坐標 376
C.2 顏色表示 376
C.3 繪製圖形 377
C.4 多邊形與多直線 384
C.4.1 Ploygon類 387
練習題 388
程式設計項目 388
附錄D 圖形用戶接口 391
D.1 GUI的構成 391
D.1.1 框架與面板 394
D.1.2 按鈕與動作事件 395
D.1.3 確定事件源 396
D.2 更多GUI組件 399
D.2.1 文本域 399
D.2.2 核選框 402
D.2.3 單選按鈕 405
D.2.4 滑塊 408
D.2.5 組合框 412
D.2.6 計時器 416
D.3 布局管理器 420
D.3.1 流水布局管理器 422
D.3.2 邊界布局管理器 424
D.3.3 格線布局管理器 426
D.3.4 方框布局管理器 428
D.3.5 包容分層結構 430
D.4 滑鼠與按鍵事件 430
D.4.1 滑鼠事件 430
D.4.2 按鍵事件 437
D.4.3 擴展適配器類 441
D.5 對話框 441
D.5.1 檔案選擇器 443
D.5.2 顏色選擇器 446
D.6 一些重要細節 446
D.6.1 框線 446
D.6.2 工具提示與助記符 450
D.7 GUI設計 455
關鍵概念 455
自測題 456
練習題 457
程式設計項目 457
自測題答案 459
附錄E 散列 461
E.1 概述 461
E.2 散列函式 463
E.2.1 餘數法 463
E.2.2 摺疊法 463
E.2.4 基數轉換法 464
E.2.5 數字分析法 464
E.2.6 長度相關法 465
E.2.7 Java語言中的散列函式 465
E.3 解決衝突 465
E.3.1 鏈地址法 466
E.4 從散列表刪除元素 469
E.4.1 從鏈地址實現中刪除 470
E.4.2 從開放地址實現中刪除 470
E.5 Java集合API中的散列表 471
E.5.1 Hashtable類 471
E.5.2 HashSet類 472
E.5.3 HashMap類 473
E.5.4 IdentityHashMap類 474
E.5.5 WeakHashMap類 475
E.5.6 LinkedHashSet與LinkedHashMap 476
關鍵概念 477
自測題 477
練習題 478
程式設計項目 478
自測題答案 479