圖書簡介
本書是為全國高等院校計算機及相關專業開設數據結構課程而精心編著的一本實用教材。本書按照面向對象的程式設計方法,採用目前廣泛使用的Java語言描述各種數據結構和運算方法,使得一種數據結構對應一種操作接口,進而通過不同的存儲類型來實現。全書共分為11章,依次為緒論、集合、線性表、稀疏矩陣和廣義表、棧和佇列、樹和二叉樹、常用二叉樹、圖、圖的套用、查找、排序。
全書內容豐富實用,結構層次分明,敘述簡明易懂,運算方法分析透徹,所有算法描述都能夠直接上機運行。這些顯著特點都是作者多年來教材編寫和教學經驗的結晶,已經得到廣大讀者的認可。
本書可作為普通高等院校計算機及相關專業“數據結構”課程的教材或教學參考書。
為了配合使用本書,作者同時編寫了相配套的《數據結構實用教程(Java語言描述)習題參考解答》一書,一併出版。
圖書目錄
第1章緒論 1
1.1基本概念 1
1.2算法描述 11
1.3算法評價 13
第2章集合 20
2.1集合的定義和運算 20
2.1.1集合的定義 20
2.1.2集合的抽象數據類型 20
2.1.3集合運算舉例 21
2.2集合的順序存儲結構和操作實現 23
2.3集合的連結存儲結構和操作實現 30
2.3.1連結存儲的概念 30
2.3.2連結集合類的定義和實現 33
2.4集合套用舉例 39
第3章線性表 47
3.1線性表的定義和運算 47
3.1.1線性表的定義 47
3.1.2線性表的抽象數據類型 48
3.1.3線性表運算舉例 49
3.2線性表的順序存儲結構和操作實現 52
3.3有序線性表的定義和實現 60
3.4連結存儲的一般概念和方法 65
3.5線性表的連結存儲結構和操作實現 70
3.6有序線性表的連結存儲結構和操作實現 76
3.7線性表套用舉例——多項式計算 78
3.7.1多項式表示與求值 78
3.7.2兩個多項式相加 82
第4章稀疏矩陣和廣義表 86
4.1稀疏矩陣 86
4.1.1稀疏矩陣的定義 86
4.1.2稀疏矩陣的轉置運算 88
4.1.3稀疏矩陣的加法運算 90
4.1.4使用稀疏矩陣的程式舉例 92
4.2廣義表 94
4.2.1廣義表的定義 94
4.2.2廣義表的存儲結構 96
4.2.3廣義表類的定義 97
4.2.4廣義表的運算 99
4.2.5簡單程式舉例 103
第5章棧和佇列 105
5.1棧的定義和運算 105
5.2棧的順序存儲結構和操作實現 106
5.3棧的連結存儲結構和操作實現 110
5.4棧的簡單套用舉例 112
5.5算術表達式的計算 116
5.6棧與遞歸 124
5.7佇列 133
5.7.1佇列的定義和運算 133
5.7.2佇列的順序存儲結構和操作實現 134
5.7.3佇列的連結存儲結構和操作實現 139
第6章樹和二叉樹 141
6.1樹的概念 141
6.1.1樹的定義 141
6.1.2樹的表示 142
6.1.3樹的基本術語 142
6.1.4樹的性質 144
6.2二叉樹 145
6.2.1二叉樹的定義 145
6.2.2二叉樹的性質 145
6.2.3二叉樹的抽象數據類型 147
6.2.4二叉樹的存儲結構 148
6.3二叉樹遍歷 153
6.4二叉樹的其他運算 156
6.5調試二叉樹算法舉例 160
6.6樹的存儲結構和運算 161
6.6.1樹的抽象數據類型 161
6.6.2樹的存儲結構 162
6.6.3樹的運算 166
6.6.4調試普通樹算法舉例 171
第7章常用二叉樹 173
7.1二叉搜尋樹 173
7.1.1二叉搜尋樹的定義 173
7.1.2二叉搜尋樹的抽象數據類型和連結存儲類 174
7.1.3二叉搜尋樹的運算方法 175
7.2堆 181
7.2.1堆的定義 181
7.2.2堆的接口類 182
7.2.3堆的存儲結構和順序存儲類 182
7.2.4堆的運算 184
7.3哈夫曼樹 189
7.3.1基本術語 189
7.3.2構造哈夫曼樹 190
7.3.3哈夫曼編碼 193
7.4平衡二叉樹 195
7.4.1平衡二叉樹的定義 195
7.4.2平衡二叉樹的調整 197
第8章圖 202
8.1圖的概念 202
8.1.1圖的定義 202
8.1.2圖的基本術語 203
8.2圖的存儲結構 205
8.2.1鄰接矩陣 205
8.2.2鄰接表 207
8.2.3邊集數組 208
8.3圖的抽象數據類型和接口類 209
8.4圖的鄰接矩陣和鄰接表存儲類 210
8.5圖的遍歷 214
8.5.1深度優先搜尋遍歷 214
8.5.2廣度優先搜尋遍歷 217
8.5.3非連通圖的遍歷 219
8.6對圖的其他運算的算法 219
第9章圖的套用 231
9.1圖的生成樹和最小生成樹 231
9.1.1生成樹的概念 231
9.1.2普里姆算法 233
9.1.3克魯斯卡爾算法 237
9.2最短路徑 240
9.2.1最短路徑的概念 240
9.2.2從一頂點到其餘各頂點的最短路徑 241
9.2.3每對頂點之間的最短路徑 246
9.3拓撲排序 250
9.3.1拓撲排序的概念 250
9.3.2拓撲排序算法 252
9.4關鍵路徑 256
第10章查找 264
10.1查找的基本概念 264
10.2順序表查找 265
10.2.1順序查找 265
10.2.2二分查找 267
10.3索引查找 269
10.3.1索引的概念 269
10.3.2索引存儲舉例 270
10.3.3索引查找算法 273
10.3.4分塊查找 274
10.4散列查找 276
10.4.1散列的概念 276
10.4.2散列函式 278
10.4.3處理衝突的方法 280
10.4.4散列表的運算 284
10.5B樹查找 293
10.5.1B_樹的定義 293
10.5.2B_樹查找 294
10.5.3B_樹的插入 296
10.5.4B_樹的刪除 299
10.5.5定義B_樹的類 302
10.5.6B+樹簡介 304
第11章排序 306
11.1排序的基本概念 306
11.2插入排序 308
11.3選擇排序 309
11.3.1直接選擇排序 309
11.3.2堆排序 310
11.4交換排序 313
11.4.1氣泡排序 314
11.4.2快速排序 315
11.5歸併排序 318
11.6外排序 322
11.6.1外排序的概念 322
11.6.2外排序算法 323
參考文獻 332