本書是計算機專業(yè)研究生入學考試"數據結構”課程的復習用書,內容包括緒論、線性表、棧和隊列、串、樹與二叉樹、圖、查找、排序等。全書嚴格按照最新計算機考研大綱的數據結構部分的要求,對大綱所涉及的知識點進行集中梳理,力求內容精煉、重點突出、深入淺出。本書精選各名校的歷年考研真題,并給出詳細的解題思路,力求實現講練結合、靈活掌握、舉一反三的功效。通過"書本+在線”的學習方式和網上答疑方式,讀者在使用本書時遇到的任何疑難點,都可以在王道論壇發(fā)帖與道友互動。
王道論壇,一家專注于計算機考研的網站與培訓機構,業(yè)務包括計算機組成原理、數據結構、計算機網絡和操作系統,以及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 算法和算法評價 5
1.2.1 算法的基本概念 5
1.2.2 算法效率的度量 5
1.2.3 本節(jié)試題精選 6
1.2.4 答案與解析 8
歸納總結 10
思維拓展 10
第2章 線性表 11
2.1 線性表的定義和基本操作 11
2.1.1 線性表的定義 11
2.1.2 線性表的基本操作 12
2.1.3 本節(jié)試題精選 12
2.1.4 答案與解析 12
2.2 線性表的順序表示 13
2.2.1 順序表的定義 13
2.2.2 順序表上基本操作的實現 14
2.2.3 本節(jié)試題精選 16
2.2.4 答案與解析 18
2.3 線性表的鏈式表示 27
2.3.1 單鏈表的定義 27
2.3.2 單鏈表上基本操作的實現 28
2.3.3 雙鏈表 31
2.3.4 循環(huán)鏈表 33
2.3.5 靜態(tài)鏈表 33
2.3.6 順序表和鏈表的比較 34
2.3.7 本節(jié)試題精選 35
2.3.8 答案與解析 40
歸納總結 59
思維拓展 60
第3章 棧、隊列和數組 61
3.1 棧 61
3.1.1 棧的基本概念 61
3.1.2 棧的順序存儲結構 62
3.1.3 棧的鏈式存儲結構 64
3.1.4 本節(jié)試題精選 64
3.1.5 答案與解析 67
3.2 隊列 74
3.2.1 隊列的基本概念 74
3.2.2 隊列的順序存儲結構 75
3.2.3 隊列的鏈式存儲結構 77
3.2.4 雙端隊列 78
3.2.5 本節(jié)試題精選 80
3.2.6 答案與解析 82
3.3 棧和隊列的應用 88
3.3.1 棧在括號匹配中的應用 88
3.3.2 棧在表達式求值中的應用 88
3.3.3 棧在遞歸中的應用 89
3.3.4 隊列在層次遍歷中的應用 90
3.3.5 隊列在計算機系統中的應用 91
3.3.6 本節(jié)試題精選 91
3.3.7 答案與解析 93
3.4 數組和特殊矩陣 98
3.4.1 數組的定義 98
3.4.2 數組的存儲結構 99
3.4.3 特殊矩陣的壓縮存儲 99
3.4.4 稀疏矩陣 101
3.4.5 本節(jié)試題精選 102
3.4.6 答案與解析 103
歸納總結 104
思維拓展 105
第4章 串 106
*4.1 串的定義和實現 106
4.1.1 串的定義 106
4.1.2 串的存儲結構 107
4.1.3 串的基本操作 108
4.2 串的模式匹配 108
4.2.1 簡單的模式匹配算法 108
4.2.2 串的模式匹配算法——KMP算法 109
4.2.3 KMP算法的進一步優(yōu)化 113
4.2.4 本節(jié)試題精選 114
4.2.5 答案與解析 115
歸納總結 119
思維拓展 119
第5章 樹與二叉樹 120
5.1 樹的基本概念 120
5.1.1 樹的定義 120
5.1.2 基本術語 121
5.1.3 樹的性質 122
5.1.4 本節(jié)試題精選 122
5.1.5 答案與解析 123
5.2 二叉樹的概念 124
5.2.1 二叉樹的定義及其主要特性 124
5.2.2 二叉樹的存儲結構 126
5.2.3 本節(jié)試題精選 127
5.2.4 答案與解析 129
5.3 二叉樹的遍歷和線索二叉樹 133
5.3.1 二叉樹的遍歷 133
5.3.2 線索二叉樹 137
5.3.3 本節(jié)試題精選 140
5.3.4 答案與解析 145
5.4 樹、森林 164
5.4.1 樹的存儲結構 164
5.4.2 樹、森林與二叉樹的轉換 166
5.4.3 樹和森林的遍歷 167
5.4.4 本節(jié)試題精選 168
5.4.5 答案與解析 170
5.5 樹與二叉樹的應用 176
5.5.1 哈夫曼樹和哈夫曼編碼 176
5.5.2 并查集 178
5.5.3 本節(jié)試題精選 179
5.5.4 答案與解析 181
歸納總結 185
思維拓展 186
第6章 圖 187
6.1 圖的基本概念 187
6.1.1 圖的定義 187
6.1.2 本節(jié)試題精選 190
6.1.3 答案與解析 192
6.2 圖的存儲及基本操作 194
6.2.1 鄰接矩陣法 194
6.2.2 鄰接表法 196
6.2.3 十字鏈表 197
6.2.4 鄰接多重表 198
6.2.5 圖的基本操作 198
6.2.6 本節(jié)試題精選 199
6.2.7 答案與解析 201
6.3 圖的遍歷 205
6.3.1 廣度優(yōu)先搜索 205
6.3.2 深度優(yōu)先搜索 207
6.3.3 圖的遍歷與圖的連通性 208
6.3.4 本節(jié)試題精選 209
6.3.5 答案與解析 211
6.4 圖的應用 216
6.4.1 最小生成樹 216
6.4.2 最短路徑 219
6.4.3 有向無環(huán)圖描述表達式 222
6.4.4 拓撲排序 222
6.4.5 關鍵路徑 224
6.4.6 本節(jié)試題精選 226
6.4.7 答案與解析 234
歸納總結 246
思維拓展 247
第7章 查找 248
7.1 查找的基本概念 248
7.2 順序查找和折半查找 249
7.2.1 順序查找 249
7.2.2 折半查找 251
7.2.3 分塊查找 252
7.2.4 本節(jié)試題精選 253
7.2.5 答案與解析 256
7.3 樹型查找 261
7.3.1 二叉排序樹(BST) 261
7.3.2 平衡二叉樹 265
7.3.3 紅黑樹 269
7.3.4 本節(jié)試題精選 274
7.3.5 答案與解析 277
7.4 B樹和B+樹 286
7.4.1 B樹及其基本操作 286
7.4.2 B+樹的基本概念 289
7.4.3 本節(jié)試題精選 290
7.4.4 答案與解析 293
7.5 散列表 298
7.5.1 散列表的基本概念 298
7.5.2 散列函數的構造方法 298
7.5.3 處理沖突的方法 299
7.5.4 散列查找及性能分析 300
7.5.5 本節(jié)試題精選 301
7.5.6 答案與解析 304
歸納總結 309
思維拓展 309
第8章 排序 310
8.1 排序的基本概念 311
8.1.1 排序的定義 311
8.1.2 本節(jié)試題精選 311
8.1.3 答案與解析 312
8.2 插入排序 312
8.2.1 直接插入排序 312
8.2.2 折半插入排序 314
8.2.3 希爾排序 314
8.2.4 本節(jié)試題精選 316
8.2.5 答案與解析 317
8.3 交換排序 319
8.3.1 冒泡排序 319
8.3.2 快速排序 321
8.3.3 本節(jié)試題精選 323
8.3.4 答案與解析 325
8.4 選擇排序 330
8.4.1 簡單選擇排序 330
8.4.2 堆排序 331
8.4.3 本節(jié)試題精選 333
8.4.4 答案與解析 335
8.5 歸并排序和基數排序 340
8.5.1 歸并排序 340
8.5.2 基數排序 341
8.5.3 本節(jié)試題精選 343
8.5.4 答案與解析 344
8.6 各種內部排序算法的比較及應用 346
8.6.1 內部排序算法的比較 346
8.6.2 內部排序算法的應用 347
8.6.3 本節(jié)試題精選 348
8.6.4 答案與解析 350
8.7 外部排序 354
8.7.1 外部排序的基本概念 354
8.7.2 外部排序的方法 354
8.7.3 多路平衡歸并與敗者樹 355
8.7.4 置換-選擇排序(生成初始歸并段) 356
8.7.5 最佳歸并樹 357
8.7.6 本節(jié)試題精選 358
8.7.7 答案與解析 359
歸納總結 362
思維拓展 363
參考文獻 364