本書對常用的數(shù)據(jù)結構做了系統(tǒng)的介紹,概念論述清晰,注重實際應用。全書分為9章,前8章依次介紹了數(shù)據(jù)結構的基本概念、線性表、棧和隊列、串和數(shù)組、樹與二叉樹、圖、查找和排序;第9章為實驗,共設計了10個實驗項目,基本涵蓋了數(shù)據(jù)結構的主要內容。全書以C語言為算法描述語言,第2~8章均附有典型例題與小結,便于總結與提高。本書敘述簡潔、深入淺出,注重實踐和應用,可一書兩用(理論與實驗),主要面向應用型本科、高職高專計算機類專業(yè)的學生,也可作為大學非計算機專業(yè)學生的選修課教材和計算機應用技術人員的自學參考書。
鄧文華,副教授,碩士研究生導師,理工分院副院長,溫州市信息安全中心主任,電子商務專業(yè)負責人。長期從事計算機科學與技術、電子商務的教學與研究工作。主持及參與省部級項目4項,廳局級項目6項,出版教材16部(主編14部),其中3部教材獲國家普通高等教育“十一五”國家級規(guī)劃教材。在國內外權威期刊和核心期刊等發(fā)表論文20余篇。入選溫州市“551人才”工程,獲溫州大學教學成果“一等獎”。
第1章 緒論 1
1.1 從問題到程序 1
1.2 有關概念和術語 3
1.3 算法及算法分析 6
1.3.1 算法特性 6
1.3.2 算法描述 7
1.3.3 算法分析 8
1.4 關于數(shù)據(jù)結構的學習 9
1.5 關于本書內容編寫說明 11
本章小結 11
習題1 11
第2章 線性表 14
2.1 線性表的邏輯結構 14
2.1.1 線性表的定義 14
2.1.2 線性表的基本運算 14
2.2 線性表的順序存儲及其運算的實現(xiàn) 15
2.2.1 順序表 15
2.2.2 順序表基本運算的實現(xiàn) 17
2.2.3 順序表的其他運算舉例 20
2.3 線性表的鏈式存儲及其運算的實現(xiàn) 22
2.3.1 單鏈表 23
2.3.2 單鏈表基本運算的實現(xiàn) 24
2.3.3 循環(huán)鏈表 30
*2.3.4 雙向鏈表 30
2.3.5 單鏈表的其他運算舉例 32
2.4 典型例題 34
本章小結 36
習題2 37
第3章 棧和隊列 39
3.1 棧 39
3.1.1 棧的定義及其基本運算 39
3.1.2 棧的存儲結構和基本運算的實現(xiàn) 40
3.1.3 棧的應用舉例 42
3.1.4 棧與遞歸的實現(xiàn) 46
3.2 隊列 50
3.2.1 隊列的定義及其基本運算 50
3.2.2 隊列的存儲結構和基本運算的實現(xiàn) 51
3.2.3 隊列應用舉例 56
3.3 典型例題 57
本章小結 59
習題3 60
第4章 串和數(shù)組 64
4.1 串 64
4.1.1 串的基本概念 64
4.1.2 串的基本運算 65
4.1.3 串的存儲結構及其基本運算的實現(xiàn) 65
4.1.4 串的其他運算舉例 68
4.2 數(shù)組 68
4.2.1 數(shù)組的邏輯結構和基本運算 68
4.2.2 數(shù)組的存儲結構 70
4.2.3 稀疏矩陣 71
4.2.4 矩陣的其他運算舉例 74
4.3 典型例題 75
本章小結 76
習題4 77
第5章 樹與二叉樹 79
5.1 樹的概念與基本運算 79
5.1.1 樹的定義及相關術語 79
5.1.2 樹的基本運算 81
5.2 二叉樹 81
5.2.1 二叉樹的基本概念 81
5.2.2 二叉樹的主要性質 83
5.2.3 二叉樹的存儲結構與基本運算 85
5.2.4 二叉樹的遍歷 88
*5.2.5 線索二叉樹 92
5.2.6 二叉樹的其他運算舉例 95
5.3 樹與森林 98
5.3.1 樹的存儲 98
5.3.2 樹、森林與二叉樹的相互轉換 100
5.3.3 樹和森林的遍歷 102
5.4 最優(yōu)二叉樹——哈夫曼樹 103
5.4.1 哈夫曼樹的基本概念 103
5.4.2 哈夫曼樹的構造算法 105
5.4.3 哈夫曼編碼 106
5.4.4 哈夫曼編碼的算法實現(xiàn) 108
5.5 典型例題 109
本章小結 111
習題5 112
第6章 圖 116
6.1 圖的基本概念 116
6.1.1 圖的定義和術語 116
6.1.2 圖的基本運算 118
6.2 圖的存儲結構 119
6.2.1 鄰接矩陣 119
6.2.2 鄰接表 121
6.3 圖的遍歷 123
6.3.1 深度優(yōu)先搜索 123
6.3.2 廣度優(yōu)先搜索 124
6.4 圖的應用 126
6.4.1 最小生成樹 126
6.4.2 最短路徑 129
6.4.3 拓撲排序 135
6.5 典型例題 137
本章小結 142
習題6 142
第7章 查找 146
7.1 基本概念與術語 146
7.2 靜態(tài)查找表 147
7.2.1 靜態(tài)查找表結構 147
7.2.2 順序查找 148
7.2.3 有序表的折半查找 149
7.2.4 分塊查找 152
7.3 動態(tài)查找表 153
7.3.1 二叉排序樹 153
*7.3.2 平衡二叉樹及B_樹 156
7.4 哈希表 158
7.4.1 哈希表與哈希方法 158
7.4.2 常用的哈希函數(shù)構造方法 159
7.4.3 處理沖突的方法 161
7.4.4 哈希表的查找算法 163
7.4.5 哈希表的性能分析 163
7.5 典型例題 164
本章小結 170
習題7 170
第8章 排序 174
8.1 基本概念 174
8.2 三種簡單的排序方法 175
8.2.1 直接插入排序 175
8.2.2 冒泡排序 176
8.2.3 簡單選擇排序 179
8.3 希爾排序 180
8.4 快速排序 181
*8.5 堆排序 184
8.6 歸并排序 186
*8.7 基數(shù)排序 188
8.7.1 多關鍵碼排序 188
8.7.2 鏈式基數(shù)排序 189
8.8 各種排序方法的比較與討論 191
8.9 典型例題 192
本章小結 195
習題8 195
第9章 實驗 199
實驗1 順序表的基本運算 199
實驗2 鏈表的基本運算 204
實驗3 棧的基本運算 210
實驗4 隊列的基本運算 217
實驗5 串的基本運算 227
實驗6 二叉樹的基本運算 232
實驗7 二叉樹的遍歷和哈夫曼樹 238
實驗8 圖的基本運算 245
實驗9 查找 251
實驗10 排序 257
參考文獻 262