數(shù)據(jù)結(jié)構(gòu)(C語言描述)(慕課版)
定 價:48 元
- 作者:范翠香
- 出版時間:2021/7/1
- ISBN:9787121415357
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.12;TP312.8
- 頁碼:244
- 紙張:
- 版次:01
- 開本:16K
本書是中國大學MOOC(慕課)愛課程平臺、智慧樹平臺上由西安理工大學建設的數(shù)據(jù)結(jié)構(gòu)課程的配套使用教材。為配合線上慕課的實施,本書以慕課教學推進次序為主線,將知識劃分為小知識點,并配有相應的教學視頻(掃描二維碼觀看)。本書共8章。第1章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念,以及算法與評價;第2章介紹線性表的概念,以及兩種存儲方式(順序存儲和鏈式存儲)下的運算實現(xiàn);第3章介紹棧、隊列的特點,以及不同存儲方式下運算的實現(xiàn);第4章介紹特殊矩陣、稀疏矩陣的壓縮存儲,廣義表的概念與存儲,以及串的基礎知識和模式匹配算法;第5章介紹樹與二叉樹的概念、存儲、運算與實現(xiàn),以及哈夫曼編碼;第6章介紹圖的概念、存儲、運算與實現(xiàn),以及幾個圖的經(jīng)典應用;第7章介紹常用的幾個靜態(tài)和動態(tài)查找算法;第8章介紹常用的幾類排序算法及其性能比較。本書可用于線上、線上線下混合及線下等多種教學模式,適合作為本科、高職高專計算機相關專業(yè)教材,也可供對數(shù)據(jù)結(jié)構(gòu)有興趣的初學者線上或線下學習使用。
范翠香,女,山西永濟人,西安理工大學計算機科學與工程學院教授。從事計算機軟件方向教學與科研工作30多年。承擔C/C++程序設計、數(shù)據(jù)結(jié)構(gòu)、數(shù)值分析、數(shù)據(jù)庫原理與應用等多門課程的理論教學,承但8門課程的實踐教學。年均工作量600余課時。主持或參與科研項目10余項,主持或參與院級或校級教學研究項目10余項。公開出版教材4部,發(fā)表論文10余篇。
目 錄
第1章 緒論 1
1.1 數(shù)據(jù)結(jié)構(gòu)的概念 1
1.1.1 數(shù)據(jù)結(jié)構(gòu)的研究方向 1
1.1.2 數(shù)據(jù)結(jié)構(gòu)的基本術(shù)語 3
1.1.3 數(shù)據(jù)類型與抽象數(shù)據(jù)類型 5
1.2 算法與算法分析 5
1.2.1 算法的概念與描述 5
1.2.2 算法分析 8
1.3 本章小結(jié) 12
習題1 12
第2章 線性表 15
2.1 線性表的概念 15
2.1.1 線性表的定義與特點 15
2.1.2 線性表的基本運算 16
2.1.3 線性表的抽象數(shù)據(jù)類型定義 16
2.2 線性表的順序存儲 17
2.2.1 線性表的順序存儲及其特點 17
2.2.2 順序表基本運算的實現(xiàn) 17
2.2.3 線性表的順序存儲優(yōu)缺點 20
2.3 線性表的鏈式存儲 21
2.3.1 線性表的鏈式存儲及其特點 21
2.3.2 單鏈表的建立 23
2.3.3 單鏈表插入和刪除運算的實現(xiàn) 26
2.3.4 單向循環(huán)鏈表 29
2.3.5 雙向鏈表及其運算 31
2.3.6 靜態(tài)鏈表 34
2.3.7 線性表鏈式存儲的優(yōu)缺點 35
2.4 線性表的應用 36
2.4.1 線性表存儲結(jié)構(gòu)的選擇 36
2.4.2 線性表的應用舉例 36
2.5 本章小結(jié) 39
習題2 39
第3章 棧和隊列 42
3.1 棧的定義與基本運算 42
3.2 棧的存儲與運算實現(xiàn) 43
3.2.1 順序棧及其運算實現(xiàn) 43
3.2.2 鏈棧及其運算實現(xiàn) 45
3.2.3 棧的應用—括號匹配 47
3.3 隊列的定義與基本運算 49
3.4 隊列的存儲與運算實現(xiàn) 49
3.4.1 順序隊列及其運算實現(xiàn) 49
3.4.2 假溢出與循環(huán)隊列 51
3.4.3 鏈隊列及其運算實現(xiàn) 52
3.5 棧和隊列的綜合應用 54
3.5.1 棧的綜合應用 54
3.5.2 隊列的綜合應用 58
3.6 本章小結(jié) 59
習題3 60
第4章 數(shù)組、廣義表與串 63
4.1 數(shù)組的概念與存儲 63
4.1.1 數(shù)組的概念 63
4.1.2 數(shù)組的存儲 64
4.1.3 特殊矩陣的壓縮存儲 65
4.1.4 稀疏矩陣的壓縮存儲 66
4.2 廣義表 69
4.2.1 廣義表的概念與術(shù)語 69
4.2.2 廣義表的運算 69
4.2.3 廣義表的存儲 70
4.3 串的定義與存儲 71
4.3.1 串的定義 71
4.3.2 串的存儲 71
4.3.3 串的常見運算 73
4.4 串的模式匹配 74
4.4.1 串的模式匹配BF算法 74
4.4.2 串的模式匹配KMP算法 75
4.5 數(shù)組的應用舉例 80
4.6 串的應用舉例 82
4.7 本章小結(jié) 83
習題4 84
第5章 樹與二叉樹 86
5.1 樹的基本概念與性質(zhì) 86
5.1.1 樹的定義與術(shù)語 86
5.1.2 樹的表示與基本運算 87
5.2 二叉樹的概念與存儲 88
5.2.1 二叉樹的定義及基本運算 88
5.2.2 二叉樹的性質(zhì) 90
5.2.3 二叉樹的存儲 91
5.2.4 二叉樹的建立 93
5.3 二叉樹性質(zhì)應用舉例 95
5.4 二叉樹的遍歷 96
5.4.1 二叉樹遍歷的概念與思想 96
5.4.2 二叉樹遍歷的遞歸算法 97
5.4.3 二叉樹的層次遍歷 98
5.4.4 二叉樹的非遞歸遍歷 99
5.5 線索二叉樹 102
5.5.1 二叉樹的線索化 103
5.5.2 遍歷線索二叉樹 105
5.6 樹與森林 108
5.6.1 樹的存儲 108
5.6.2 樹及森林與二叉樹的轉(zhuǎn)換 111
5.6.3 樹與森林的遍歷 113
5.7 哈夫曼樹與哈夫曼編碼 114
5.7.1 哈夫曼編碼概述 114
5.7.2 哈夫曼樹與哈夫曼編碼的實現(xiàn) 115
5.8 樹與二叉樹的應用舉例 120
5.9 本章小結(jié) 122
習題5 123
第6章 圖 126
6.1 圖的概念與性質(zhì) 126
6.1.1 圖的定義 126
6.1.2 圖的有關術(shù)語 127
6.1.3 圖的基本運算 130
6.2 圖的存儲 131
6.2.1 圖的鄰接矩陣存儲 131
6.2.2 圖的鄰接表存儲 134
6.2.3 圖的十字鏈表存儲與鄰接多重表存儲 136
6.3 圖的遍歷 137
6.3.1 圖的深度優(yōu)先遍歷 138
6.3.2 圖的廣度優(yōu)先遍歷 141
6.4 最小生成樹 146
6.4.1 Prim算法構(gòu)造最小生成樹 147
6.4.2 Kruskal算法構(gòu)造最小生成樹 149
6.5 最短路徑 152
6.5.1 單源最短路徑—Dijkstra算法 153
6.5.2 任意兩個頂點間最短路徑—Floyd算法 157
6.6 拓撲序列 160
6.6.1 拓撲序列的概念 161
6.6.2 拓撲序列的構(gòu)造 162
6.6.3 拓撲序列的應用舉例 164
6.7 關鍵路徑 164
6.7.1 關鍵路徑的概念 165
6.7.2 關鍵路徑的構(gòu)造 166
6.7.3 關鍵路徑的應用舉例 167
6.8 圖的綜合應用舉例 169
6.9 本章小結(jié) 171
習題6 172
第7章 查找 176
7.1 查找的基本概念 176
7.1.1 查找的定義與分類 176
7.1.2 查找算法的性能評價 177
7.2 基于線性表的查找 178
7.2.1 順序查找 178
7.2.2 折半查找 179
7.2.3 分塊查找 181
7.3 基于樹表的查找 182
7.3.1 二叉排序樹 183
7.3.2 平衡二叉排序樹 187
7.3.3 B-樹 191
7.3.4 B+樹 195
7.4 基于哈希表的查找 196
7.4.1 哈希查找的基本思想 196
7.4.2 哈希函數(shù)的構(gòu)造 197
7.4.3 常見沖突處理方法 198
7.4.4 哈希表的基本運算 200
7.5 查找算法的應用舉例 203
7.6 本章小結(jié) 204
習題7 205
第8章 排序 207
8.1 排序的基本概念 207
8.1.1 排序的定義及分類 207
8.1.2 排序算法的性能評價指標 208
8.2 插入排序 209
8.2.1 直接插入排序 209
8.2.2 折半插入排序 211
8.2.3 希爾排序 212
8.3 交換排序 214
8.3.1 冒泡排序 214
8.3.2 快速排序 216
8.4 選擇排序 219
8.4.1 簡單選擇排序 219
8.4.2 堆排序 220
8.5 歸并排序 224
8.6 多關鍵字排序 226
8.6.1 多關鍵字排序的基本概念 226
8.6.2 基數(shù)排序 227
8.7 排序算法的應用舉例 230
8.8 本章小結(jié) 231
習題8 233
參考資料 236