內容簡介
本書是計算機專業研究生入學考試"數據結構”課程的複習用書,內容包括緒論、線性表、棧和佇列、串、樹與二叉樹、圖、查找、排序等。全書嚴格按照最新計算機考研大綱的數據結構部分的要求,對大綱所涉及的知識點進行集中梳理,力求內容精煉、重點突出、深入淺出。本書精選各名校的歷年考研真題,並給出詳細的解題思路,力求實現講練結合、靈活掌握、舉一反三的功效。通過"書本+線上”的學習方式和網上答疑方式,讀者在使用本書時遇到的任何疑難點,都可以在王道論壇發帖與道友互動。
圖書目錄
第1章 緒論 1
1.1 數據結構的基本概念 1
1.1.1 基本概念和術語 1
1.1.2 數據結構三要素 2
1.1.3 本節試題精選 3
1.1.4 答案與解析 4
1.2 算法和算法評價 5
1.2.1 算法的基本概念 5
1.2.2 算法效率的度量 5
1.2.3 本節試題精選 6
1.2.4 答案與解析 8
歸納總結 10
思維拓展 10
第2章 線性表 11
2.1 線性表的定義和基本操作 11
2.1.1 線性表的定義 11
2.1.2 線性表的基本操作 12
2.1.3 本節試題精選 12
2.1.4 答案與解析 12
2.2 線性表的順序表示 13
2.2.1 順序表的定義 13
2.2.2 順序表上基本操作的實現 14
2.2.3 本節試題精選 16
2.2.4 答案與解析 18
2.3 線性表的鏈式表示 27
2.3.1 單鍊表的定義 27
2.3.2 單鍊表上基本操作的實現 28
2.3.3 雙鍊表 31
2.3.4 循環鍊表 33
2.3.5 靜態鍊表 33
2.3.6 順序表和鍊表的比較 34
2.3.7 本節試題精選 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 本節試題精選 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 本節試題精選 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 本節試題精選 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 本節試題精選 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算法的進一步最佳化 113
4.2.4 本節試題精選 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 本節試題精選 122
5.1.5 答案與解析 123
5.2 二叉樹的概念 124
5.2.1 二叉樹的定義及其主要特性 124
5.2.2 二叉樹的存儲結構 126
5.2.3 本節試題精選 127
5.2.4 答案與解析 129
5.3 二叉樹的遍歷和線索二叉樹 133
5.3.1 二叉樹的遍歷 133
5.3.2 線索二叉樹 137
5.3.3 本節試題精選 140
5.3.4 答案與解析 145
5.4 樹、森林 164
5.4.1 樹的存儲結構 164
5.4.2 樹、森林與二叉樹的轉換 166
5.4.3 樹和森林的遍歷 167
5.4.4 本節試題精選 168
5.4.5 答案與解析 170
5.5 樹與二叉樹的套用 176
5.5.1 哈夫曼樹和哈夫曼編碼 176
5.5.2 並查集 178
5.5.3 本節試題精選 179
5.5.4 答案與解析 181
歸納總結 185
思維拓展 186
第6章 圖 187
6.1 圖的基本概念 187
6.1.1 圖的定義 187
6.1.2 本節試題精選 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 本節試題精選 199
6.2.7 答案與解析 201
6.3 圖的遍歷 205
6.3.1 廣度優先搜尋 205
6.3.2 深度優先搜尋 207
6.3.3 圖的遍歷與圖的連通性 208
6.3.4 本節試題精選 209
6.3.5 答案與解析 211
6.4 圖的套用 216
6.4.1 最小生成樹 216
6.4.2 最短路徑 219
6.4.3 有向無環圖描述表達式 222
6.4.4 拓撲排序 222
6.4.5 關鍵路徑 224
6.4.6 本節試題精選 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 本節試題精選 253
7.2.5 答案與解析 256
7.3 樹型查找 261
7.3.1 二叉排序樹(BST) 261
7.3.2 平衡二叉樹 265
7.3.3 紅黑樹 269
7.3.4 本節試題精選 274
7.3.5 答案與解析 277
7.4 B樹和B+樹 286
7.4.1 B樹及其基本操作 286
7.4.2 B+樹的基本概念 289
7.4.3 本節試題精選 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 本節試題精選 301
7.5.6 答案與解析 304
歸納總結 309
思維拓展 309
第8章 排序 310
8.1 排序的基本概念 311
8.1.1 排序的定義 311
8.1.2 本節試題精選 311
8.1.3 答案與解析 312
8.2 插入排序 312
8.2.1 直接插入排序 312
8.2.2 折半插入排序 314
8.2.3 希爾排序 314
8.2.4 本節試題精選 316
8.2.5 答案與解析 317
8.3 交換排序 319
8.3.1 冒泡排序 319
8.3.2 快速排序 321
8.3.3 本節試題精選 323
8.3.4 答案與解析 325
8.4 選擇排序 330
8.4.1 簡單選擇排序 330
8.4.2 堆排序 331
8.4.3 本節試題精選 333
8.4.4 答案與解析 335
8.5 歸併排序和基數排序 340
8.5.1 歸併排序 340
8.5.2 基數排序 341
8.5.3 本節試題精選 343
8.5.4 答案與解析 344
8.6 各種內部排序算法的比較及套用 346
8.6.1 內部排序算法的比較 346
8.6.2 內部排序算法的套用 347
8.6.3 本節試題精選 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 本節試題精選 358
8.7.7 答案與解析 359
歸納總結 362
思維拓展 363
參考文獻 364