本書系統(tǒng)地介紹了各種常用的數(shù)據(jù)結(jié)構(gòu)的邏輯特征、存儲方式和基本運算。主要內(nèi)容包括:順序表、棧、隊列、鏈表、串、樹形結(jié)構(gòu)、圖、多維數(shù)組、廣義表、排序、查找和文件等。本書結(jié)構(gòu)清晰,內(nèi)容充實,實例豐富,符號、圖表規(guī)范。既適合于教師課堂講授,也便于自學者學習參考。 本書可作為高等院校計算機專業(yè)或信息技術(shù)等相關專業(yè)的本科教材,也可作為參加研究生入學考試、自學考試的考生以及從事計算機工程和應用的科技人員的參考用書。
1.本書主編 周顏軍 從東北師范大學計算機系86級本科(1987年)開始,一直講授 “數(shù)據(jù)結(jié)構(gòu)”課程,并講授研究生課程“數(shù)據(jù)挖掘”,F(xiàn)任吉林省計算機學會常務理事、副秘書長,被吉林省汽車電子協(xié)會聘為學術(shù)專家。在吉林省內(nèi)頗有人脈及影響力。2.數(shù)據(jù)結(jié)構(gòu)網(wǎng)絡課件獲高等學校教育技術(shù)成果(網(wǎng)絡教學資源類)三等獎 吉林省教育廳2010年11月3.數(shù)據(jù)結(jié)構(gòu)教材獲吉林省普通高等學校優(yōu)秀教材獎 吉林省教育廳2011年9月4.數(shù)據(jù)結(jié)構(gòu)課程連續(xù)兩年獲東北師范大學煒然獎教金 2011年9月、2012年9月
目 錄
第1章 概論 1
1.1 數(shù)據(jù)結(jié)構(gòu)的概念 1
1.2 數(shù)據(jù)結(jié)構(gòu)的組成與分類 2
1.2.1 數(shù)據(jù)的邏輯結(jié)構(gòu) 2
1.2.2 數(shù)據(jù)的存儲結(jié)構(gòu) 3
1.2.3 數(shù)據(jù)的運算(集合) 5
1.3 數(shù)據(jù)類型與抽象數(shù)據(jù)類型 5
1.3.1 數(shù)據(jù)類型 5
1.3.2 抽象數(shù)據(jù)類型 6
1.4 算法的概念與描述 7
1.4.1 算法的概念 7
1.4.2 算法的描述 8
1.5 算法分析 14 目 錄
第1章 概論 1
1.1 數(shù)據(jù)結(jié)構(gòu)的概念 1
1.2 數(shù)據(jù)結(jié)構(gòu)的組成與分類 2
1.2.1 數(shù)據(jù)的邏輯結(jié)構(gòu) 2
1.2.2 數(shù)據(jù)的存儲結(jié)構(gòu) 3
1.2.3 數(shù)據(jù)的運算(集合) 5
1.3 數(shù)據(jù)類型與抽象數(shù)據(jù)類型 5
1.3.1 數(shù)據(jù)類型 5
1.3.2 抽象數(shù)據(jù)類型 6
1.4 算法的概念與描述 7
1.4.1 算法的概念 7
1.4.2 算法的描述 8
1.5 算法分析 14
1.5.1 算法性能的評價標準 14
1.5.2 算法的復雜度 15
1.6 本章小結(jié) 18
習題 19
第2章 順序表 20
2.1 向量 21
2.1.1 向量的存儲與運算 21
2.1.2 目錄表 24
2.2 !25
2.2.1 棧的定義與基本操作 25
2.2.2 順序!27
2.3 棧與遞歸 30
2.3.1 遞歸的概念 30
2.3.2 遞歸過程的實現(xiàn) 32
*2.3.3 遞歸過程到非遞歸過程的轉(zhuǎn)換 33
2.4 隊列 38
2.4.1 隊列的定義與基本操作 38
2.4.2 順序隊列 40
2.5 應用舉例 43
2.5.1 向量應用——約瑟夫斯問題 43
2.5.2 棧的應用—— 括號匹配的檢驗與數(shù)制轉(zhuǎn)換 46
2.5.3 隊列應用—— 輸出楊輝三角形 52
2.6 本章小結(jié) 55
習題 56
第3章 鏈表 57
3.1 單鏈表 57
3.1.1 單鏈表的概念 57
3.1.2 單鏈表的存儲描述 58
3.1.3 在單鏈表上實現(xiàn)的基本運算 59
3.1.4 帶表頭結(jié)點的單鏈表 62
3.2 棧和隊列的鏈接存儲表示 63
3.2.1 鏈!63
3.2.2 鏈隊列 64
3.3 循環(huán)鏈表 66
3.4 雙鏈表 67
3.4.1 雙鏈表的概念 67
3.4.2 帶表頭結(jié)點的雙循環(huán)鏈表 68
3.4.3 雙循環(huán)鏈表的基本操作 68
3.5 應用舉例 70
3.5.1 消除鏈表中的重復數(shù)據(jù) 70
3.5.2 用循環(huán)鏈表求解約瑟夫斯問題 73
3.6 本章小結(jié) 75
習題 76
第4章 串 77
4.1 串的基本概念 77
4.2 串的存儲結(jié)構(gòu) 78
4.2.1 順序存儲 78
4.2.2 鏈接存儲 79
4.3 串的操作 80
4.4 模式匹配 82
4.4.1 Brute-Force算法 82
4.4.2 KMP算法 84
4.5 應用舉例 88
4.6 本章小結(jié) 89
習題 90
第5章 樹形結(jié)構(gòu) 91
5.1 樹形結(jié)構(gòu)的概念 91
5.1.1 樹的概念 91
5.1.2 二叉樹的概念 93
5.1.3 樹、森林與二叉樹之間的相互轉(zhuǎn)換 95
5.1.4 樹形結(jié)構(gòu)的遍歷 97
5.2 樹形結(jié)構(gòu)的存儲方式 99
5.2.1 鏈式存儲 100
5.2.2 順序存儲 101
5.3 二叉樹的遍歷算法 106
5.3.1 遍歷二叉樹的非遞歸算法 106
5.3.2 遍歷二叉樹的遞歸算法 110
5.3.3 二叉樹遍歷的應用舉例 111
5.4 線索二叉樹 111
5.4.1 線索二叉樹的概念 111
5.4.2 二叉樹的線索化 112
5.4.3 線索二叉樹的遍歷 114
5.4.4 線索二叉樹的插入 117
5.5 堆 118
5.5.1 堆的定義 118
5.5.2 堆的構(gòu)造 119
5.5.3 堆的插入與刪除 121
5.6 哈夫曼樹 123
5.6.1 擴充的二叉樹 123
5.6.2 哈夫曼樹 124
5.6.3 哈夫曼樹的應用舉例 128
5.7 應用舉例 130
5.7.1 判定樹的應用——偽幣鑒別問題 130
5.7.2 集合的表示與并查集 131
5.7.3 建立二叉樹及遍歷 133
5.8 本章小結(jié) 135
習題 136
第6章 圖 139
6.1 圖的概念 139
6.2 圖的存儲表示 141
6.2.1 鄰接矩陣表示法 141
6.2.2 鄰接表表示法 143
6.2.3 鄰接多重表表示法 145
6.3 圖的遍歷 146
6.3.1 深度優(yōu)先遍歷 147
6.3.2 廣度優(yōu)先遍歷 149
6.4 最小(代價)生成樹 151
6.4.1 普里姆算法 152
6.4.2 克魯斯卡爾算法 154
6.5 最短路徑問題 157
6.5.1 單源最短路徑 157
6.5.2 每對頂點間的最短路徑 160
6.6 拓撲排序 163
6.7 關鍵路徑 169
6.8 本章小結(jié) 173
習題 174
第7章 多維數(shù)組和廣義表 177
7.1 多維數(shù)組 177
7.2 矩陣的壓縮存儲 179
7.2.1 特殊矩陣 179
7.2.2 稀疏矩陣 181
7.3 廣義表 186
7.3.1 廣義表的概念 186
7.3.2 廣義表的存儲結(jié)構(gòu) 188
7.3.3 廣義表的運算 191
7.4 本章小結(jié) 193
習題 193
第8章 排序 195
8.1 基本概念 195
8.2 插入排序 196
8.2.1 直接插入排序 197
8.2.2 希爾排序 198
*8.2.3 其他插入排序 200
8.3 交換排序 204
8.3.1 冒泡排序 205
8.3.2 快速排序 206
8.4 選擇排序 209
8.4.1 直接選擇排序 209
8.4.2 樹形選擇排序 211
8.4.3 堆排序 213
8.5 歸并排序 215
8.6 基數(shù)排序 218
8.6.1 多排序碼排序 218
8.6.2 基數(shù)排序 219
*8.7 外排序 223
8.7.1 2路平衡歸并 223
8.7.2 k路平衡歸并與敗者樹 224
8.7.3 最佳歸并樹 226
8.8 本章小結(jié) 228
習題 229
第9章 查找 230
9.1 基本概念 230
9.2 線性表的查找 231
9.2.1 順序查找 231
9.2.2 折半查找 232
9.2.3 分塊查找 235
9.3 樹形表的查找 237
9.3.1 二叉排序樹 237
9.3.2 最佳二叉排序樹 242
9.3.3 AVL樹 245
9.3.4 B-樹與B+樹 252
9.4 散列表的查找 261
9.4.1 基本概念 261
9.4.2 散列函數(shù) 264
9.4.3 沖突的解決 266
9.4.4 散列查找的性能 271
9.5 本章小結(jié) 272
習題 273
第10章 文件 275
10.1 文件的基本概念 275
10.2 順序文件 277
10.3 索引文件 277
10.4 索引順序文件 279
10.4.1 ISAM文件 279
10.4.2 VSAM文件 281
10.5 散列文件 282
10.6 多關鍵字文件 283
10.6.1 多重表文件 283
10.6.2 倒排文件 284
10.7 本章小結(jié) 285
習題 286
附錄A Visual C++ 6.0集成開發(fā)環(huán)境介紹 287
附錄B 常用字符與ASCII碼對照表 290
參考文獻 291