數(shù)據(jù)結(jié)構(gòu)是計算機學科各專業(yè)的一門重要的專業(yè)基礎(chǔ)課。本書包含了2009年研究生入學統(tǒng)考大綱的全部內(nèi)容。本書系統(tǒng)地介紹了線性表、堆棧、隊列、串、數(shù)組、廣義表、樹、二叉樹、圖等典型數(shù)據(jù)結(jié)構(gòu),以及遞歸、查找和排序的方法。本書理論敘述簡潔準確、實踐應用舉例豐富完整,從而達到理論和實踐密切結(jié)合的教學目的。本書采用C語言描述算法。
本書內(nèi)容豐富,難度適中,文字簡潔準確,圖文并茂,應用實例多,教學參考資料豐富。本書免費提供教學課件,可登錄華信教育資源網(wǎng)(www.hxedu.com.cn)注冊后下載。
第1章 緒論\\t1
1.1 數(shù)據(jù)結(jié)構(gòu)的基本概念\\t1
1.1.1 數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)元素的數(shù)據(jù)類型\\t1
1.1.2 數(shù)據(jù)的邏輯結(jié)構(gòu)\\t2
1.1.3 數(shù)據(jù)的存儲結(jié)構(gòu)\\t3
1.1.4 數(shù)據(jù)的操作\\t3
1.1.5 “數(shù)據(jù)結(jié)構(gòu)”課程討論的主要內(nèi)容\\t4
1.2 抽象數(shù)據(jù)類型\\t4
1.3 算法和算法的時間復雜度\\t5
1.3.1 算法\\t5
1.3.2 算法的性質(zhì)和設(shè)計目標\\t6
1.3.3 算法的時間效率分析\\t7
1.3.4 算法耗時的實際測試\\t10
1.3.5 數(shù)據(jù)元素個數(shù)和時間復雜度\\t12
習題1\\t13
第2章 線性表\\t16
2.1 線性表概述\\t16
2.1.1 線性表的定義\\t16
2.1.2 線性表的抽象數(shù)據(jù)類型\\t16
2.2 線性表的順序表示和實現(xiàn)\\t17
2.2.1 順序表的存儲結(jié)構(gòu)\\t17
2.2.2 順序表操作的實現(xiàn)\\t18
2.2.3 順序表操作的效率分析\\t21
2.2.4 順序表應用舉例\\t21
2.3 線性表的鏈式表示和實現(xiàn)\\t24
2.3.1 單鏈表的存儲結(jié)構(gòu)\\t24
2.3.2 單鏈表的操作實現(xiàn)\\t27
2.3.3 單鏈表操作的效率分析\\t31
2.3.4 單鏈表應用舉例\\t32
2.3.5 循環(huán)單鏈表\\t33
2.3.6 雙向鏈表\\t33
2.4 靜態(tài)鏈表\\t37
2.5 算法設(shè)計舉例\\t37
2.5.1 順序表算法設(shè)計舉例\\t37
2.5.2 單鏈表算法設(shè)計舉例\\t38
習題2\\t40
第3章 堆棧和隊列\(zhòng)\t44
3.1 堆棧\\t44
3.1.1 堆棧的基本概念\\t44
3.1.2 堆棧的抽象數(shù)據(jù)類型\\t45
3.1.3 堆棧的順序表示和實現(xiàn)\\t46
3.1.4 堆棧的鏈式表示和實現(xiàn)\\t48
3.2 堆棧應用\\t50
3.2.1 括號匹配問題\\t51
3.2.2 算術(shù)表達式計算問題\\t53
3.3 隊列\(zhòng)\t58
3.3.1 隊列的基本概念\\t58
3.3.2 隊列的抽象數(shù)據(jù)類型\\t58
3.3.3 順序隊列以及存在的問題\\t58
3.3.4 順序循環(huán)隊列的表示和實現(xiàn)\\t59
3.3.5 鏈式隊列\(zhòng)\t62
3.3.6 隊列的應用\\t65
3.4 優(yōu)先級隊列\(zhòng)\t69
3.4.1 順序優(yōu)先級隊列的設(shè)計和實現(xiàn)\\t69
3.4.2 優(yōu)先級隊列的應用\\t71
習題3\\t73
第4章 串\\t77
4.1 串概述\\t77
4.1.1 串及其基本概念\\t77
4.1.2 串的抽象數(shù)據(jù)類型\\t78
4.1.3 C語言的串函數(shù)\\t78
4.2 串的存儲結(jié)構(gòu)\\t80
4.3 串基本操作的實現(xiàn)算法\\t82
4.4 串的模式匹配算法\\t87
4.4.1 Brute-Force算法\\t87
4.4.2 KMP算法\\t89
4.4.3 Brute-Force算法和KMP算法的比較\\t94
習題4\\t97
第5章 數(shù)組\\t99
5.1 數(shù)組概述\\t99
5.1.1 數(shù)組的定義\\t99
5.1.2 數(shù)組的實現(xiàn)機制\\t99
5.1.3 數(shù)組的抽象數(shù)據(jù)類型\\t100
5.2 動態(tài)數(shù)組\\t100
5.2.1 動態(tài)數(shù)組的設(shè)計方法\\t100
5.2.2 動態(tài)數(shù)組和靜態(tài)數(shù)組對比\\t103
5.3 特殊矩陣的壓縮存儲\\t104
5.4 稀疏矩陣的壓縮存儲\\t106
5.4.1 稀疏矩陣的三元組順序表\\t106
5.4.2 稀疏矩陣的三元組鏈表\\t109
習題5\\t110
第6章 遞歸算法\\t113
6.1 遞歸的概念\\t113
6.2 遞歸算法的執(zhí)行過程\\t114
6.3 遞歸算法的設(shè)計方法\\t116
6.4 遞歸過程和運行時棧\\t119
6.5 遞歸算法的時間效率分析\\t120
6.6 遞歸算法到非遞歸算法的轉(zhuǎn)換\\t123
6.7 設(shè)計舉例\\t125
6.7.1 一般遞歸算法設(shè)計舉例\\t125
6.7.2 回溯算法及設(shè)計舉例\\t127
習題6\\t130
第7章 廣義表\\t133
7.1 廣義表概述\\t133
7.1.1 廣義表的概念\\t133
7.1.2 廣義表的抽象數(shù)據(jù)類型\\t134
7.2 廣義表的存儲結(jié)構(gòu)\\t135
7.2.1 頭鏈和尾鏈存儲結(jié)構(gòu)\\t135
7.2.2 原子和子表存儲結(jié)構(gòu)\\t135
7.3 廣義表的操作實現(xiàn)\\t136
7.3.1 頭鏈和尾鏈存儲結(jié)構(gòu)下的操作實現(xiàn)\\t136
7.3.2 頭鏈和尾鏈存儲結(jié)構(gòu)應用舉例\\t140
7.3.3 原子和子表存儲結(jié)構(gòu)下的操作實現(xiàn)\\t142
7.3.4 原子和子表存儲結(jié)構(gòu)應用舉例\\t144
習題7\\t145
第8章 樹和二叉樹\\t147
8.1 樹\\t147
8.1.1 樹的定義\\t147
8.1.2 樹的表示方法\\t148
8.1.3 樹的抽象數(shù)據(jù)類型\\t149
8.1.4 樹的存儲結(jié)構(gòu)\\t149
8.2 二叉樹\\t152
8.2.1 二叉樹的定義\\t152
8.2.2 二叉樹的抽象數(shù)據(jù)類型\\t153
8.2.3 二叉樹的性質(zhì)\\t153
8.3 二叉樹的設(shè)計和實現(xiàn)\\t155
8.3.1 二叉樹的存儲結(jié)構(gòu)\\t155
8.3.2 二叉樹的操作實現(xiàn)\\t157
8.4 二叉樹遍歷\\t159
8.4.1 二叉樹遍歷的方法和結(jié)構(gòu)\\t159
8.4.2 二叉鏈存儲結(jié)構(gòu)下二叉樹
遍歷的實現(xiàn)\\t160
8.4.3 二叉樹遍歷的應用\\t161
8.4.4 非遞歸的二叉樹遍歷算法\\t164
8.5 線索二叉樹\\t165
8.5.1 線索二叉樹及其用途\\t165
8.5.2 中序線索二叉樹的設(shè)計\\t167
8.5.3 中序線索二叉樹循環(huán)操作的
設(shè)計\\t168
8.5.4 設(shè)計舉例\\t169
8.6 哈夫曼樹\\t170
8.6.1 哈夫曼樹的基本概念\\t170
8.6.2 哈夫曼編碼問題\\t171
8.6.3 哈夫曼編碼問題設(shè)計和實現(xiàn)\\t173
8.7 等價問題\\t177
8.8 樹與二叉樹的轉(zhuǎn)換\\t181
8.9 樹的遍歷\\t182
習題8\\t182
第9章 圖\\t186
9.1 圖概述\\t186
9.1.1 圖的基本概念\\t186
9.1.2 圖的抽象數(shù)據(jù)類型\\t188
9.2 圖的存儲結(jié)構(gòu)\\t189
9.2.1 圖的鄰接矩陣存儲結(jié)構(gòu)\\t189
9.2.2 圖的鄰接表存儲結(jié)構(gòu)\\t190
9.3 圖的實現(xiàn)\\t191
9.3.1 鄰接矩陣存儲結(jié)構(gòu)下圖操作的實現(xiàn)\\t191
9.3.2 鄰接表存儲結(jié)構(gòu)下圖操作的實現(xiàn)\\t194
9.4 圖的遍歷\\t198
9.4.1 圖的深度和廣度優(yōu)先遍歷算法\\t198
9.4.2 圖的深度和廣度優(yōu)先遍歷算法實現(xiàn)\\t200
9.5 最小生成樹\\t202
9.5.1 最小生成樹的基本概念\\t202
9.5.2 普里姆算法\\t203
9.5.3 克魯斯卡爾算法\\t207
9.6 最短路徑\\t208
9.6.1 最短路徑的基本概念\\t208
9.6.2 每對頂點之間的最短路徑\\t212
9.7 拓撲排序\\t215
9.8 關(guān)鍵路徑\\t217
習題9\\t221
第10章 排序\\t224
10.1 排序的基本概念\\t224
10.2 插入排序\\t226
10.2.1 直接插入排序\\t226
10.2.2 希爾排序\\t228
10.3 選擇排序\\t229
10.3.1 直接選擇排序\\t229
10.3.2 堆排序\\t231
10.4 交換排序\\t235
10.4.1 冒泡排序\\t235
10.4.2 快速排序\\t236
10.5 歸并排序\\t239
10.6 基數(shù)排序\\t241
10.7 排序算法性能比較\\t244
習題10\\t245
第11章 查找\\t249
11.1 查找的基本概念\\t249
11.2 靜態(tài)查找\\t250
11.2.1 順序表\\t250
11.2.2 有序順序表\\t251
11.2.3 索引順序表\\t253
11.3 動態(tài)查找\\t255
11.3.1 二叉排序樹和平衡二叉樹\\t255
11.3.2 B_樹和B+樹\\t261
11.4 哈希查找\\t267
11.4.1 哈希表的基本概念\\t267
11.4.2 哈希函數(shù)構(gòu)造方法\\t269
11.4.3 哈希沖突解決方法\\t270
11.4.4 哈希表設(shè)計\\t272
習題11\\t275
附錄A 上機實習報告內(nèi)容規(guī)范和上機實習報告實例\\t279
附錄A.1 上機實習報告內(nèi)容規(guī)范\\t279
附錄A.2 上機實習報告實例\\t279
附錄B 部分習題解答\\t284
參考文獻\\t311