本書是計算機專業(yè)碩士研究生入學考試“數據結構”課程的復習用書,內容包括緒論,線性表,棧、隊列和數組,串,樹與二叉樹,圖,查找,排序等。全書嚴格按照最新計算機考研大綱數據結構部分的要求,對大綱所涉及的知識點進行集中梳理,力求內容精練、重點突出、深入淺出。本書精選各名校的歷年考研真題,并給出詳細的解題思路,力求實現(xiàn)講練結合、靈活掌握、舉一反三的效果。本書既可作為考生參加計算機專業(yè)碩士研究生入學考試的復習用書,又可作為計算機專業(yè)學生學習數據結構課程的輔導用書。
王道論壇,一家專注于計算機考研的網站與培訓機構,業(yè)務包括計算機組成原理、數據結構、計算機網絡和操作系統(tǒng),以及C等語言的培訓工作,用戶規(guī)模較大。
目 錄
第1章 緒論 1
1.1 數據結構的基本概念 1
1.1.1 基本概念和術語 1
1.1.2 數據結構三要素 2
1.1.3 本節(jié)試題精選 3
1.1.4 答案與解析 4
1.2 算法和算法評價 4
1.2.1 算法的基本概念 4
1.2.2 算法效率的度量 5
1.2.3 本節(jié)試題精選 6
1.2.4 答案與解析 8
歸納總結 11
思維拓展 11
第2章 線性表 12
2.1 線性表的定義和基本操作 12
2.1.1 線性表的定義 12
2.1.2 線性表的基本操作 13
2.1.3 本節(jié)試題精選 13
2.1.4 答案與解析 14
2.2 線性表的順序表示 14
2.2.1 順序表的定義 14
2.2.2 順序表上基本操作的實現(xiàn) 15
2.2.3 本節(jié)試題精選 18
2.2.4 答案與解析 20
2.3 線性表的鏈式表示 30
2.3.1 單鏈表的定義 30
2.3.2 單鏈表上基本操作的實現(xiàn) 31
2.3.3 雙鏈表 35
2.3.4 循環(huán)鏈表 37
2.3.5 靜態(tài)鏈表 37
2.3.6 順序表和鏈表的比較 38
2.3.7 本節(jié)試題精選 39
2.3.8 答案與解析 45
歸納總結 62
思維拓展 63
第3章 棧、隊列和數組 64
3.1 棧 64
3.1.1 棧的基本概念 64
3.1.2 棧的順序存儲結構 65
3.1.3 棧的鏈式存儲結構 68
3.1.4 本節(jié)試題精選 68
3.1.5 答案與解析 71
3.2 隊列 78
3.2.1 隊列的基本概念 78
3.2.2 隊列的順序存儲結構 78
3.2.3 隊列的鏈式存儲結構 81
3.2.4 雙端隊列 82
3.2.5 本節(jié)試題精選 84
3.2.6 答案與解析 87
3.3 棧和隊列的應用 92
3.3.1 棧在括號匹配中的應用 92
3.3.2 棧在表達式求值中的應用 93
3.3.3 棧在遞歸中的應用 95
3.3.4 隊列在層次遍歷中的應用 96
3.3.5 隊列在計算機系統(tǒng)中的應用 97
3.3.6 本節(jié)試題精選 97
3.3.7 答案與解析 100
3.4 數組和特殊矩陣 104
3.4.1 數組的定義 104
3.4.2 數組的存儲結構 104
3.4.3 特殊矩陣的壓縮存儲 105
3.4.4 稀疏矩陣 107
3.4.5 本節(jié)試題精選 108
3.4.6 答案與解析 109
歸納總結 111
思維拓展 112
第4章 串 113
*4.1 串的定義和實現(xiàn) 113
4.1.1 串的定義 113
4.1.2 串的存儲結構 114
4.1.3 串的基本操作 115
4.2 串的模式匹配 115
4.2.1 簡單的模式匹配算法 115
4.2.2 串的模式匹配算法——KMP算法 116
4.2.3 KMP算法的進一步優(yōu)化 121
4.2.4 本節(jié)試題精選 122
4.2.5 答案與解析 123
歸納總結 127
思維拓展 127
第5章 樹與二叉樹 128
5.1 樹的基本概念 128
5.1.1 樹的定義 128
5.1.2 基本術語 129
5.1.3 樹的性質 130
5.1.4 本節(jié)試題精選 131
5.1.5 答案與解析 131
5.2 二叉樹的概念 134
5.2.1 二叉樹的定義及其主要特性 134
5.2.2 二叉樹的存儲結構 136
5.2.3 本節(jié)試題精選 137
5.2.4 答案與解析 140
5.3 二叉樹的遍歷和線索二叉樹 145
5.3.1 二叉樹的遍歷 145
5.3.2 線索二叉樹 151
5.3.3 本節(jié)試題精選 154
5.3.4 答案與解析 160
5.4 樹、森林 179
5.4.1 樹的存儲結構 179
5.4.2 樹、森林與二叉樹的轉換 181
5.4.3 樹和森林的遍歷 182
5.4.4 本節(jié)試題精選 183
5.4.5 答案與解析 185
5.5 樹與二叉樹的應用 191
5.5.1 哈夫曼樹和哈夫曼編碼 191
5.5.2 并查集 194
5.5.3 本節(jié)試題精選 196
5.5.4 答案與解析 198
歸納總結 204
思維拓展 204
第6章 圖 206
6.1 圖的基本概念 206
6.1.1 圖的定義 206
6.1.2 本節(jié)試題精選 210
6.1.3 答案與解析 211
6.2 圖的存儲及基本操作 214
6.2.1 鄰接矩陣法 214
6.2.2 鄰接表法 215
6.2.3 十字鏈表 217
6.2.4 鄰接多重表 217
6.2.5 圖的基本操作 218
6.2.6 本節(jié)試題精選 219
6.2.7 答案與解析 222
6.3 圖的遍歷 227
6.3.1 廣度優(yōu)先搜索 227
6.3.2 深度優(yōu)先搜索 230
6.3.3 圖的遍歷與圖的連通性 231
6.3.4 本節(jié)試題精選 231
6.3.5 答案與解析 234
6.4 圖的應用 239
6.4.1 最小生成樹 239
6.4.2 最短路徑 242
6.4.3 有向無環(huán)圖描述表達式 246
6.4.4 拓撲排序 246
6.4.5 關鍵路徑 248
6.4.6 本節(jié)試題精選 251
6.4.7 答案與解析 260
歸納總結 275
思維拓展 276
第7章 查找 277
7.1 查找的基本概念 277
7.2 順序查找和折半查找 278
7.2.1 順序查找 278
7.2.2 折半查找 280
7.2.3 分塊查找 281
7.2.4 本節(jié)試題精選 282
7.2.5 答案與解析 285
7.3 樹型查找 291
7.3.1 二叉排序樹(BST) 291
7.3.2 平衡二叉樹 295
7.3.3 紅黑樹 299
7.3.4 本節(jié)試題精選 305
7.3.5 答案與解析 309
7.4 B樹和B+樹 319
7.4.1 B樹及其基本操作 319
7.4.2 B+樹的基本概念 322
7.4.3 本節(jié)試題精選 323
7.4.4 答案與解析 325
7.5 散列(Hash)表 331
7.5.1 散列表的基本概念 331
7.5.2 散列函數的構造方法 331
7.5.3 處理沖突的方法 332
7.5.4 散列查找及性能分析 334
7.5.5 本節(jié)試題精選 335
7.5.6 答案與解析 338
歸納總結 343
思維拓展 344
第8章 排序 345
8.1 排序的基本概念 346
8.1.1 排序的定義 346
8.1.2 本節(jié)試題精選 346
8.1.3 答案與解析 347
8.2 插入排序 347
8.2.1 直接插入排序 347
8.2.2 折半插入排序 349
8.2.3 希爾排序 349
8.2.4 本節(jié)試題精選 351
8.2.5 答案與解析 352
8.3 交換排序 355
8.3.1 冒泡排序 355
8.3.2 快速排序 356
8.3.3 本節(jié)試題精選 359
8.3.4 答案與解析 361
8.4 選擇排序 366
8.4.1 簡單選擇排序 366
8.4.2 堆排序 366
8.4.3 本節(jié)試題精選 369
8.4.4 答案與解析 371
8.5 歸并排序、基數排序和計數排序 377
8.5.1 歸并排序 377
8.5.2 基數排序 379
*8.5.3 計數排序 380
8.5.4 本節(jié)試題精選 382
8.5.5 答案與解析 384
8.6 各種內部排序方法的比較及應用 387
8.6.1 內部排序方法的比較 387
8.6.2 內部排序方法的應用 388
8.6.3 本節(jié)試題精選 389
8.6.4 答案與解析 391
8.7 外部排序 394
8.7.1 外部排序的基本概念 394
8.7.2 外部排序的方法 394
8.7.3 多路平衡歸并與敗者樹 395
8.7.4 置換-選擇排序(生成初始歸并段) 396
8.7.5 最佳歸并樹 397
8.7.6 本節(jié)試題精選 399
8.7.7 答案與解析 400
歸納總結 404
思維拓展 405
參考文獻 406