內容簡介
本書精講
數據結構與算法,對常見的算法及實現代碼進行詳細講解,並配合具體的圖表和教學視頻,使讀者輕鬆掌握數據結構知識並深入理解其中的算法思想。 本書共分8章,內容包括線性表、棧、佇列、串、數組和廣義表、樹、圖、查找、排序等。本書知識點涵蓋全面,案例典型。本書習題大部分來自各大名校考研和著名軟體公司的筆試面試題目,是作者多年來的教學實踐經驗的總結。本書案例代碼全部在
Visual C++開發環境運行通過,並配套教學視頻,方便讀者自學。 本書適合C語言數據結構與算法的初學者、數據結構與算法課程考試的學生、考研人員、算法競賽選手,也可以作為高等院校和培訓機構計算機相關專業師生的教學參考書。
圖書目錄
第1章 緒論 1
1.1 知識點 1
1.2 內容精要 1
1.2.1 數據結構的基本概念 1
1.2.2 數據的邏輯結構與存儲結構 2
1.2.3 算法的特性與算法的描述 3
1.3 典型試題精選與解析 8
1.3.1 典型試題 8
1.3.2 答案解析 11
第2章 線性表 14
2.1 知識點 14
2.2 線性表的內容精要(1)─線性表的順序表示 14
2.2.1 線性表的定義 14
2.2.2 線性表的順序表示與實現 15
2.2.3 典型例題解析 20
2.3 順序表的典型試題精選與解析 25
2.3.1 典型試題 25
2.3.2 答案解析 27
2.4 線性表的內容精要(2)─線性表的鏈式表示 33
2.4.1 單鍊表的存儲結構 33
2.4.2 單鍊表上的基本運算 35
2.5 循環單鍊表 40
2.5.1 循環鍊表的鏈式存儲 40
2.5.2 循環鍊表的合併操作 41
2.6 雙向鍊表 42
2.6.1 雙向鍊表的存儲結構 42
2.6.2 雙向鍊表的插入和刪除操作 43
2.6.3 鏈式存儲結構與順序存儲結構的優缺點 45
2.6.4 典型例題解析 45
2.7 線性表的典型試題精選與解析 51
2.7.1 典型試題 51
2.7.2 答案解析 57
2.8 歸納總結 69
第3章 棧與佇列 70
3.1 知識點 70
3.2 棧的內容精要 70
3.2.1 棧的定義和術語 70
3.2.2 棧的特性 71
3.2.3 棧的存儲結構 71
3.2.4 棧與遞歸 74
3.2.5 典型例題解析 77
3.3 棧的典型試題精選與解析 84
3.3.1 典型試題 84
3.3.2 答案解析 87
3.4 佇列的內容精要 103
3.4.1 佇列的定義和術語 103
3.4.2 佇列的順序存儲 104
3.4.3 佇列的鏈式存儲 107
3.4.4 鏈式佇列的基本運算 109
3.4.5 雙端佇列 110
3.4.6 典型例題解析 112
3.5 佇列的典型試題精選與解析 114
3.5.1 典型試題 114
3.5.2 答案解析 117
3.6 歸納總結 130
第4章 串、數組與廣義表 131
4.1 知識點 131
4.2 串的內容精要 131
4.2.1 串的定義 131
4.2.2 串的表示與實現 132
4.2.3 串的模式匹配 135
4.2.4 典型例題解析 141
4.3 串的典型試題精選與解析 145
4.3.1 典型試題 145
4.3.2 答案解析 148
4.4 數組的內容精要 151
4.4.1 數組的定義 151
4.4.2 數組的順序表示與實現 152
4.4.3 特殊矩陣的壓縮存儲 153
4.4.4 稀疏矩陣的壓縮存儲 155
4.4.5 典型例題解析 157
4.5 數組的典型試題精選與解析 161
4.5.1 典型試題 161
4.5.2 答案解析 165
4.6 廣義表的內容精要 171
4.6.1 廣義表的定義 171
4.6.2 廣義表的頭尾鍊表存儲結構及基本運算 172
4.6.3 廣義表的擴展線性鍊表存儲 176
4.6.4 典型例題解析 179
4.7 廣義表的典型試題精選與解析 186
4.7.1 典型試題 186
4.7.2 答案解析 187
4.8 歸納總結 189
第5章 樹 191
5.1 知識點 191
5.2 樹的內容精要(1)─樹和二叉樹的定義及性質 191
5.2.1 樹的定義和基本概念 191
5.2.2 樹的邏輯表示 193
5.2.3 二叉樹的定義 193
5.2.4 二叉樹的性質 195
5.2.5 二叉樹的存儲表示與實現 196
5.3 樹的典型試題精選與解析(1) 198
5.3.1 典型試題 198
5.3.2 答案解析 199
5.4 樹的內容精要(2)─二叉樹的遍歷和線索化 200
5.4.1 二叉樹的遍歷 200
清華大學出版社-圖書目錄
5.4.2 線索二叉樹 207
5.4.3 典型例題解析 211
5.5 樹的典型試題精選與解析(2) 213
5.5.1 典型試題 213
5.5.2 答案解析 219
5.6 樹的內容精要(3)─樹的存儲結構和樹、森林的轉換 233
5.6.1 樹的存儲結構 233
5.6.2 樹、森林與二叉樹的轉換 235
5.6.3 樹和森林的遍歷 238
5.6.4 哈夫曼樹 239
5.6.5 典型例題解析 241
5.7 樹的典型試題精選與解析(3) 249
5.7.1 典型試題 249
5.7.2 答案解析 251
5.8 歸納總結 257
第6章 圖 258
6.1 知識點 258
6.2 圖的內容精要(1)─圖的定義及相關概念 258
6.2.1 圖的定義和基本概念 258
6.2.2 圖的存儲結構 261
6.3 圖的典型試題精選與解析(1) 266
6.3.1 典型試題 266
6.3.2 答案解析 268
6.4 圖的內容精要(2)─圖的遍歷 270
6.4.1 圖的深度優先搜尋 270
6.4.2 圖的廣度優先搜尋 272
6.4.3 典型例題解析 273
6.5 圖的典型試題精選與解析(2) 279
6.5.1 典型試題 279
6.5.2 答案解析 281
6.6 圖的內容精要(3)─圖的套用 293
6.6.1 最小生成樹 293
6.6.2 AOV網與拓撲排序 298
6.6.3 AOE網與關鍵路徑 301
6.6.4 最短路徑 303
6.6.5 典型例題解析 309
6.7 圖的典型試題精選與解析(3) 313
6.7.1 典型試題 313
6.7.2 答案解析 316
6.8 歸納總結 322
第7章 查找 323
7.1 知識點 323
7.2 查找的內容精要(1)─查找的定義及相關概念 323
7.2.1 查找的基本概念 323
7.2.2 順序表的查找 324
7.2.3 有序順序表的查找 325
7.2.4 索引順序表的查找 327
7.3 查找的典型試題精選與解析(1) 329
7.3.1 典型試題 329
7.3.2 答案解析 331
7.4 查找的內容精要(2)─動態查找 334
7.4.1 二叉排序樹 334
7.4.2 平衡二叉樹 339
7.4.3 B-樹與B+樹 343
7.5 查找的典型試題精選與解析(2) 347
7.5.1 典型試題 347
7.5.2 答案解析 349
7.6 查找的內容精要(3)─哈希表 354
7.6.1 哈希表的定義 354
7.6.2 哈希函式的構造方法 355
7.6.3 處理衝突的方法 356
7.6.4 哈希表套用舉例 358
7.7 查找的典型試題精選與解析(3) 362
7.7.1 典型試題 362
7.7.2 試題分析 363
7.8 歸納總結 366
第8章 排序 367
8.1 知識點 367
8.2 排序的內容精要 367
8.2.1 插入排序 367
8.2.2 選擇排序 372
8.2.3 交換排序 379
8.2.4 歸併排序 383
8.2.5 基數排序 384
8.3 排序的典型試題精選與解析 387
8.3.1 典型試題 387
8.3.2 答案解析 389
8.4 歸納總結 398
參考文獻 400
作者簡介
陳銳,鄭州輕工業大學講師,有多年教學實踐經驗,著有相關圖書《數據結構與算法詳解》《Visual Basic多功能教材》《數據結構(C語言實現)》《零基礎學數據結構》《C/C++函式與算法速查大辭典》。精通數據結構與算法、機器學習等領域,從事數據結構與算法方面的教學和人工智慧科研等工作。