目 錄
第1章 緒論\t1
1.1 數據結構的基本概念\t1
1.1.1 基本概念和術語\t1
1.1.2 數據結構三要素\t2
1.1.3 本節(jié)試題精選\t3
1.1.4 答案與解析\t4
1.2 算法和算法評價\t5
1.2.1 算法的基本概念\t5
1.2.2 算法效率的度量\t5
1.2.3 本節(jié)試題精選\t6
1.2.4 答案與解析\t8
歸納總結\t10
思維拓展\t11
第2章 線性表\t12
2.1 線性表的定義和基本操作\t12
2.1.1 線性表的定義\t12
2.1.2 線性表的基本操作\t13
2.1.3 本節(jié)試題精選\t13
2.1.4 答案與解析\t13
2.2 線性表的順序表示\t14
2.2.1 順序表的定義\t14
2.2.2 順序表上基本操作的實現\t15
2.2.3 本節(jié)試題精選\t17
2.2.4 答案與解析\t19
2.3 線性表的鏈式表示\t28
2.3.1 單鏈表的定義\t29
2.3.2 單鏈表上基本操作的實現\t29
2.3.3 雙鏈表\t33
2.3.4 循環(huán)鏈表\t34
2.3.5 靜態(tài)鏈表\t35
2.3.6 順序表和鏈表的比較\t36
2.3.7 本節(jié)試題精選\t37
2.3.8 答案與解析\t42
歸納總結\t63
思維拓展\t63
第3章 棧、隊列和數組\t64
3.1 棧\t64
3.1.1 棧的基本概念\t64
3.1.2 棧的順序存儲結構\t65
3.1.3 棧的鏈式存儲結構\t67
3.1.4 本節(jié)試題精選\t67
3.1.5 答案與解析\t70
3.2 隊列\(zhòng)t77
3.2.1 隊列的基本概念\t77
3.2.2 隊列的順序存儲結構\t78
3.2.3 隊列的鏈式存儲結構\t80
3.2.4 雙端隊列\(zhòng)t81
3.2.5 本節(jié)試題精選\t83
3.2.6 答案與解析\t86
3.3 棧和隊列的應用\t91
3.3.1 棧在括號匹配中的應用\t91
3.3.2 棧在表達式求值中的應用\t92
3.3.3 棧在遞歸中的應用\t93
3.3.4 隊列在層次遍歷中的應用\t94
3.3.5 隊列在計算機系統中的應用\t94
3.3.6 本節(jié)試題精選\t95
3.3.7 答案與解析\t96
3.4 數組和特殊矩陣\t102
3.4.1 數組的定義\t102
3.4.2 數組的存儲結構\t103
3.4.3 特殊矩陣的壓縮存儲\t103
3.4.4 稀疏矩陣\t105
3.4.5 本節(jié)試題精選\t106
3.4.6 答案與解析\t107
歸納總結\t108
思維拓展\t109
第4章 串\t110
*4.1 串的定義和實現\t110
4.1.1 串的定義\t110
4.1.2 串的存儲結構\t111
4.1.3 串的基本操作\t112
4.2 串的模式匹配\t112
4.2.1 簡單的模式匹配算法\t112
4.2.2 串的模式匹配算法――KMP算法\t113
4.2.3 KMP算法的進一步優(yōu)化\t118
4.2.4 本節(jié)試題精選\t118
4.2.5 答案與解析\t119
歸納總結\t123
思維拓展\t124
第5章 樹與二叉樹\t125
5.1 樹的基本概念\t125
5.1.1 樹的定義\t125
5.1.2 基本術語\t126
5.1.3 樹的性質\t127
5.1.4 本節(jié)試題精選\t127
5.1.5 答案與解析\t128
5.2 二叉樹的概念\t129
5.2.1 二叉樹的定義及其主要特性\t129
5.2.2 二叉樹的存儲結構\t131
5.2.3 本節(jié)試題精選\t132
5.2.4 答案與解析\t134
5.3 二叉樹的遍歷和線索二叉樹\t139
5.3.1 二叉樹的遍歷\t139
5.3.2 線索二叉樹\t143
5.3.3 本節(jié)試題精選\t146
5.3.4 答案與解析\t151
5.4 樹、森林\t169
5.4.1 樹的存儲結構\t169
5.4.2 樹、森林與二叉樹的轉換\t171
5.4.3 樹和森林的遍歷\t172
5.4.4 本節(jié)試題精選\t173
5.4.5 答案與解析\t175
5.5 樹與二叉樹的應用\t181
5.5.1 哈夫曼樹和哈夫曼編碼\t181
5.5.2 并查集\t183
5.5.3 本節(jié)試題精選\t184
5.5.4 答案與解析\t186
歸納總結\t190
思維拓展\t191
第6章 圖\t192
6.1 圖的基本概念\t192
6.1.1 圖的定義\t192
6.1.2 本節(jié)試題精選\t195
6.1.3 答案與解析\t197
6.2 圖的存儲及基本操作\t199
6.2.1 鄰接矩陣法\t199
6.2.2 鄰接表法\t201
6.2.3 十字鏈表\t202
6.2.4 鄰接多重表\t203
6.2.5 圖的基本操作\t203
6.2.6 本節(jié)試題精選\t204
6.2.7 答案與解析\t207
6.3 圖的遍歷\t211
6.3.1 廣度優(yōu)先搜索\t211
6.3.2 深度優(yōu)先搜索\t213
6.3.3 圖的遍歷與圖的連通性\t214
6.3.4 本節(jié)試題精選\t214
6.3.5 答案與解析\t217
6.4 圖的應用\t222
6.4.1 最小生成樹\t222
6.4.2 最短路徑\t225
6.4.3 有向無環(huán)圖描述表達式\t228
6.4.4 拓撲排序\t228
6.4.5 關鍵路徑\t230
6.4.6 本節(jié)試題精選\t232
6.4.7 答案與解析\t240
歸納總結\t254
思維拓展\t255
第7章 查找\t256
7.1 查找的基本概念\t256
7.2 順序查找和折半查找\t257
7.2.1 順序查找\t257
7.2.2 折半查找\t259
7.2.3 分塊查找\t260
7.2.4 本節(jié)試題精選\t261
7.2.5 答案與解析\t264
7.3 樹型查找\t270
7.3.1 二叉排序樹(BST)\t270
7.3.2 平衡二叉樹\t273
7.3.3 紅黑樹\t277
7.3.4 本節(jié)試題精選\t282
7.3.5 答案與解析\t286
7.4 B樹和B+樹\t295
7.4.1 B樹及其基本操作\t296
7.4.2 B+樹的基本概念\t299
7.4.3 本節(jié)試題精選\t300
7.4.4 答案與解析\t302
7.5 散列表\t307
7.5.1 散列表的基本概念\t307
7.5.2 散列函數的構造方法\t307
7.5.3 處理沖突的方法\t308
7.5.4 散列查找及性能分析\t309
7.5.5 本節(jié)試題精選\t310
7.5.6 答案與解析\t313
歸納總結\t318
思維拓展\t319
第8章 排序\t320
8.1 排序的基本概念\t321
8.1.1 排序的定義\t321
8.1.2 本節(jié)試題精選\t321
8.1.3 答案與解析\t322
8.2 插入排序\t322
8.2.1 直接插入排序\t322
8.2.2 折半插入排序\t324
8.2.3 希爾排序\t324
8.2.4 本節(jié)試題精選\t326
8.2.5 答案與解析\t327
8.3 交換排序\t330
8.3.1 冒泡排序\t330
8.3.2 快速排序\t331
8.3.3 本節(jié)試題精選\t333
8.3.4 答案與解析\t335
8.4 選擇排序\t341
8.4.1 簡單選擇排序\t341
8.4.2 堆排序\t342
8.4.3 本節(jié)試題精選\t344
8.4.4 答案與解析\t346
8.5 歸并排序和基數排序\t350
8.5.1 歸并排序\t350
8.5.2 基數排序\t352
8.5.3 本節(jié)試題精選\t353
8.5.4 答案與解析\t355
8.6 各種內部排序算法的比較及應用\t357
8.6.1 內部排序算法的比較\t357
8.6.2 內部排序算法的應用\t358
8.6.3 本節(jié)試題精選\t359
8.6.4 答案與解析\t361
8.7 外部排序\t365
8.7.1 外部排序的基本概念\t365
8.7.2 外部排序的方法\t365
8.7.3 多路平衡歸并與敗者樹\t366
8.7.4 置換-選擇排序(生成初始歸并段)\t367
8.7.5 最佳歸并樹\t368
8.7.6 本節(jié)試題精選\t369
8.7.7 答案與解析\t370
歸納總結\t373
思維拓展\t374
參考文獻\t375