圖書簡介
本書以Java語言為基礎,討論了數據結構的線性結構和非線性結構及其實現,全書以Java語言作為數據結構的算法描述。
本書概念表述嚴謹,邏輯推理嚴密。既可以作為計算機或信息類及相關專業的教材,也可供學習數據結構及其算法的Java語言程式設計者參考。
目錄
第1章數據結構概論 1
1.1什麼是數據結構 1
1.2數據結構的發展史及其在計算機科學中的地位 5
1.3基本概念和術語 6
1.4抽象數據類型和數據結構 7
1.5學習數據結構的意義 9
1.6Java語言概述 11
1.6.1面向對象的程式設計 11
1.6.2變數和對象 11
1.6.3流程控制 13
1.6.4類和修飾符 14
1.7算法 14
1.7.1算法及其性質 14
1.7.2算法描述的分析 15
思考和練習 19
第2章線性表 22
2.1線性表類型的定義 22
2.2線性表的順序表示和實現 24
2.3線性表的鏈式存儲結構 28
2.3.1單向鍊表 28
2.3.2單鍊表的基本運算 31
2.3.3循環鍊表 36
2.3.4雙鍊表 37
2.4鍊表套用舉例 41
2.5順序表和鍊表的比較 48
思考和練習 48
第3章棧和佇列 52
3.1棧 52
3.1.1棧定義及基本概念 52
3.1.2順序棧 54
3.1.3鏈式棧 56
3.1.4順序棧和鏈式棧的比較 57
3.1.5棧的套用舉例 58
3.2佇列 66
3.2.1佇列定義及基本概念 66
3.2.2順序佇列 67
3.2.3鏈式佇列 70
3.2.4佇列的套用 71
思考和練習 76
第4章數組和廣義表 80
4.1多維數組 80
4.1.1數組定義 80
4.1.2數組的存儲 81
4.1.3顯示二維數組的內容 82
4.2矩陣的存儲 83
4.2.1矩陣的壓縮存儲 83
4.2.2稀疏矩陣轉換為三元組存儲 86
4.3廣義表 90
4.3.1廣義表的定義 90
4.3.2廣義表的存儲 91
思考和練習 92
第5章樹 95
5.1樹的概念 95
5.1.1樹的定義 95
5.1.2基本術語 97
5.2二叉樹的定義 98
5.3二叉樹的性質 99
5.3.1二叉樹性質 99
5.3.2二叉樹的抽象數據類型 102
5.4二叉樹的存儲結構 103
5.4.1二叉樹的順序存儲結構 103
5.4.2二叉樹的連結存儲結構 104
5.4.3二叉樹的實現舉例 105
5.5二叉樹的遍歷 110
5.5.1二叉樹的前序遍歷 111
5.5.2二叉樹的中序遍歷 112
5.5.3二叉樹的後序遍歷 112
5.5.4二叉樹的層次遍歷 113
5.6線索二叉樹 114
5.6.1二叉樹的線索化 114
5.6.2線索二叉樹上的運算 116
5.7樹和二叉樹的轉換及樹的存儲結構 118
5.7.1樹轉換為二叉樹 119
5.7.2二叉樹還原為樹 120
5.7.3森林轉換為二叉樹 121
5.7.4樹的遍歷 121
5.7.5森林的遍歷 122
5.7.6樹的存儲結構 123
5.8哈夫曼樹及其套用 124
5.8.1哈夫曼樹的基本概念 125
5.8.2哈夫曼樹在編碼問題中的套用 126
思考和練習 128
第6章圖 131
6.1圖的基本概念 131
6.1.1圖的定義 131
6.1.2常用術語 132
6.2圖的存儲結構 135
6.2.1鄰接矩陣表示法 135
6.2.2鄰接表表示法 136
6.2.3關聯矩陣 138
6.3圖的遍歷 138
6.3.1深度優先搜尋遍歷 138
6.3.2廣度優先搜尋遍歷 141
6.4最小生成樹 142
6.4.1生成樹 143
6.4.2最小生成樹的生成 144
6.5最短路徑和拓撲排序 147
6.5.1最短路徑 148
6.5.2拓撲排序 151
思考和練習 153
第7章排序 156
7.1概述 156
7.1.1排序的基本概念 156
7.1.2排序的穩定性 157
7.1.3排序的分類 157
7.1.4排序算法分析 158
7.2插入排序 158
7.2.1直接插入排序 158
7.2.2希爾排序 161
7.3交換排序 164
7.3.1冒泡排序 164
7.3.2快速排序 168
7.4選擇排序 172
7.4.1直接選擇排序 172
7.4.2堆排序 175
7.5歸併排序 178
7.6外部排序 181
7.6.1輔助存儲器的存取 181
7.6.2外部排序的方法 183
7.7各種內排序方法的比較和選擇 185
思考和練習 186
第8章查找 187
8.1基本概念 187
8.2線性表查找 188
8.2.1順序查找 188
8.2.2二分查找 190
8.2.3分塊查找 194
8.3二叉排序樹 194
8.4B樹 199
8.5散列技術 205
思考和練習 213
第9章動態存儲管理 214
9.1概述 214
9.2記憶體分配與回收策略 215
9.3可利用空間的分配方法 216
9.4存儲緊縮 221
思考和練習 222
第10章檔案管理 223
10.1檔案的基本概念 223
10.1.1檔案定義 223
10.1.2檔案邏輯結構及操作 224
10.2檔案的分類 225
10.2.1順序檔案 225
10.2.2索引檔案 226
10.2.3直接存取檔案(散列檔案) 229
10.2.4多關鍵字檔案 229
10.3檔案的存儲 231
10.3.1磁碟 231
10.3.2磁帶 232
思考和練習 233
參考文獻 234