本書定位準確,合理規(guī)劃教學內(nèi)容,其內(nèi)容選取符合教學大綱要求,并兼顧學科的廣度和深度,適用面廣! ∪珪鴩@核心概念,提煉基礎性內(nèi)容,側重工程實踐,注重算法設計與程序實現(xiàn)。本書對知識單元的結構安排合理,主線清晰,全面、系統(tǒng)地介紹了線性表、隊列、堆棧、樹、圖等基本數(shù)據(jù)結構,以及這些數(shù)據(jù)結構在計算機中的存儲及算法實現(xiàn),并介紹了各種查找及排序算法的實現(xiàn)和效率分析。書中各種算法采用C語言描述。除介紹相關知識點外,書中每一章還給出了教學的建議課時、總體要求、學習重點、習題與解析和上機實訓題目及解析,這非常有助于教師的教學安排以及學生對重點的掌握,從而提高學生的應用能力。同時,每一章還包括一個綜合性的項目案例,并給出了項目的設計思想和設計過程,從而提高讀者對實際問題的分析和解決能力! ”緯嚓P的配套資源包括各章的程序源代碼、PPT電子教案、習題答案與解析、上機實訓和項目案例源代碼,都可以在人民郵電出版社教學服務與資源網(wǎng)上(www.ptpedu.com.cn)下載。 本書可以作為高等學校計算機類專業(yè)的教材和參考書,也可作為其他理工類專業(yè)的數(shù)據(jù)結構課程的教學用書,還可以作為計算機相關人員的自學參考書。
1.注意基本概念的引入和闡述,通過實例引入基本概念,然后對主要數(shù)據(jù)結構及其相關算法分析進行深入比較。2.繼承《數(shù)據(jù)結構》(嚴蔚敏,清華大學出版社)的優(yōu)點,同時又進行大范圍地內(nèi)容更新。3.本書每一章都設計比較新穎的綜合上機實習題(即項目實習)。
目 錄
第1章 緒論 1
1.1 數(shù)據(jù)結構的作用和意義 1
1.1.1 數(shù)據(jù)結構的作用 2
1.1.2 數(shù)據(jù)結構的意義 2
1.2 基本概念和術語 5
1.2.1 基本概念和術語 5
1.2.2 數(shù)據(jù)結構的邏輯結構與物理結構 6
1.3 數(shù)據(jù)結構的表示 8
1.4 算法和算法分析 9
1.4.1 算法的基本概念 9
1.4.2 算法效率的度量 10
1.4.3 算法效率分析 11
1.5 習題與解析 14 目 錄
第1章 緒論 1
1.1 數(shù)據(jù)結構的作用和意義 1
1.1.1 數(shù)據(jù)結構的作用 2
1.1.2 數(shù)據(jù)結構的意義 2
1.2 基本概念和術語 5
1.2.1 基本概念和術語 5
1.2.2 數(shù)據(jù)結構的邏輯結構與物理結構 6
1.3 數(shù)據(jù)結構的表示 8
1.4 算法和算法分析 9
1.4.1 算法的基本概念 9
1.4.2 算法效率的度量 10
1.4.3 算法效率分析 11
1.5 習題與解析 14
第2章 線性表 16
2.1 線性表的邏輯結構 17
2.1.1 線性表的概念 17
2.1.2 線性表的基本操作 18
2.1.3 線性表的抽象數(shù)據(jù)類型描述 18
2.2 線性表的順序表示和實現(xiàn) 19
2.2.1 線性表的順序表示 19
2.2.2 順序表的實現(xiàn) 20
2.2.3 順序表的應用 24
2.3 線性表的鏈式表示和實現(xiàn) 26
2.3.1 線性表的鏈式表示 26
2.3.2 單鏈表的實現(xiàn) 27
2.3.3 循環(huán)鏈表 31
2.3.4 雙向鏈表 31
2.3.5 鏈表的應用 33
2.4 項目實例 34
2.4.1 項目說明 34
2.4.2 系統(tǒng)結構設計 36
2.4.3 系統(tǒng)功能設計 37
2.4.4 系統(tǒng)功能實現(xiàn) 38
2.5 小結 43
2.5.1 線性表小結 43
2.5.2 順序表和鏈表的比較 43
2.6 習題與解析 43
2.7 實訓 47
第3章 棧和隊列 50
3.1 !50
3.1.1 棧的定義及基本運算 50
3.1.2 順序!52
3.1.3 鏈!57
3.2 隊列 60
3.2.1 隊列的定義及基本運算 60
3.2.2 循環(huán)隊列 61
3.2.3 鏈隊列 65
3.3 棧和隊列的應用舉例 67
3.3.1 棧的應用之一:數(shù)制轉換 67
3.3.2 棧的應用之二:括號匹配 68
3.3.3 棧的應用之三:表達式求值 69
3.3.4 隊列的應用之一:模擬服務前臺的排隊現(xiàn)象問題 73
3.3.5 隊列的應用之二:模擬打印機緩沖區(qū) 74
3.4 項目實例 75
3.4.1 項目說明 75
3.4.2 問題分析 75
3.4.3 系統(tǒng)設計 76
3.4.4 系統(tǒng)實現(xiàn) 76
3.5 習題與解析 82
3.6 實訓 84
第4章 串、數(shù)組和廣義表 87
4.1 串的定義及其運算 88
4.1.1 串的基本概念 88
4.1.2 串的運算 88
4.2 串的存儲結構 90
4.2.1 順序存儲結構 90
4.2.2 鏈式存儲結構 90
4.3 串運算的實現(xiàn) 91
4.3.1 常用的C語言串函數(shù) 91
4.3.2 模式匹配 93
4.4 數(shù)組 94
4.4.1 數(shù)組的定義 94
4.4.2 數(shù)組的結構特性 95
4.5 數(shù)組的順序表示和實現(xiàn) 95
4.6 矩陣的壓縮存儲 96
4.6.1 特殊矩陣 97
4.6.2 稀疏矩陣 98
4.7 廣義表 99
4.7.1 廣義表的邏輯結構 99
4.7.2 廣義表的存儲結構及實現(xiàn) 100
4.8 項目實例 101
4.8.1 項目說明 101
4.8.2 系統(tǒng)結構設計 102
4.8.3 系統(tǒng)功能實現(xiàn) 102
4.9 習題 107
4.10 實訓 108
第5章 樹和二叉樹 112
5.1 樹的定義和基本術語 113
5.1.1 樹的定義 113
5.1.2 樹的表示方法 113
5.1.3 樹的術語 114
5.2 二叉樹 115
5.2.1 二叉樹基本概念 115
5.2.2 二叉樹的性質 117
5.2.3 二叉樹的存儲結構 118
5.3 二叉樹遍歷 121
5.3.1 二叉樹遍歷 121
5.3.2 二叉樹的建立和銷毀 126
5.3.3 線索二叉樹 128
5.3.4 線索二叉樹的基本操作實現(xiàn) 129
5.4 樹和森林 132
5.4.1 樹的存儲結構 132
5.4.2 樹和森林與二叉樹之間的轉換 134
5.4.3 樹和森林遍歷 136
5.5 Huffman樹及其應用 136
5.5.1 最優(yōu)二叉樹(哈夫曼樹) 136
5.5.2 哈夫曼樹的構造算法 138
5.5.3 哈夫曼樹在編碼問題中的應用 139
5.6 習題與解析 140
5.7 項目實例 145
5.7.1 項目說明 145
5.7.2 概要設計 146
5.7.3 系統(tǒng)功能實現(xiàn) 147
5.8 實訓 151
第6章 圖 154
6.1 概述 155
6.1.1 圖的定義 155
6.1.2 圖的常用術語及含義 155
6.2 圖的存儲結構 157
6.2.1 鄰接矩陣 157
6.2.2 鄰接表 161
6.3 圖的遍歷 165
6.3.1 深度優(yōu)先搜索 166
6.3.2 廣度優(yōu)先搜索 168
6.4 生成樹和最小生成樹 170
6.4.1 生成樹 170
6.4.2 最小生成樹 171
6.5 圖的應用 176
6.5.1 最短路徑 176
6.5.2 拓撲排序 180
6.5.3 關鍵路徑 182
6.6 項目實例 184
6.6.1 項目說明 184
6.6.2 概要設計 184
6.6.3 詳細設計 186
6.6.4 編碼及實現(xiàn) 187
6.6.5 測試分析 196
6.7 習題與解析 199
6.8 實訓 203
第7章 查找 204
7.1 基本概念 204
7.2 靜態(tài)查找表 206
7.2.1 順序查找 206
7.2.2 折半查找 207
7.3 動態(tài)查找表 211
7.3.1 二叉排序樹 211
7.3.2 平衡二叉樹 215
7.3.3 B-樹 217
7.4 哈希表 220
7.4.1 哈希表的概念 220
7.4.2 哈希函數(shù)的構建 221
7.4.3 處理沖突 223
7.4.4 哈希表的查找及其分析 225
7.5 項目實例 226
7.5.1 項目說明 226
7.5.2 系統(tǒng)功能設計 226
7.5.3 系統(tǒng)功能實現(xiàn) 227
7.6 習題與解析 232
7.7 實訓 234
第8章 排序 235
8.1 基本概念 235
8.2 插入排序 236
8.2.1 直接插入排序 237
8.2.2 希爾排序 239
8.3 交換排序 240
8.3.1 冒泡排序 240
8.3.2 快速排序 242
8.4 選擇排序 244
8.4.1 簡單選擇排序 244
8.4.2 堆排序 246
8.5 歸并排序(二路歸并排序) 249
8.6 各種排序方法的比較 250
8.7 項目實例 251