數(shù)據(jù)結(jié)構(gòu)教程
定 價(jià):48 元
- 作者:胡元義
- 出版時(shí)間:2018/12/1
- ISBN:9787121351310
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.12
- 頁(yè)碼:304
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書系統(tǒng)地介紹了數(shù)據(jù)結(jié)構(gòu)的有關(guān)內(nèi)容,主要包括:線性表、棧、隊(duì)列、串、數(shù)組、廣義表、樹(shù)、圖等常用的數(shù)據(jù)邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),各種數(shù)據(jù)結(jié)構(gòu)的基本操作,以及查找、排序算法等。 本書采用的算法全部用C語(yǔ)言描述,各章均附有大量習(xí)題。與本書配套的《數(shù)據(jù)結(jié)構(gòu)教程習(xí)題解析與上機(jī)指導(dǎo)》(胡元義,黑新宏主編,ISBN 978-7-121-35132-7)詳細(xì)給出了本書習(xí)題的解題思路和參考答案,對(duì)書中的所有算法和涉及算法的示例都給出了完整的C語(yǔ)言實(shí)現(xiàn)程序,并且在VC++ 6.0環(huán)境下通過(guò)上機(jī)驗(yàn)證。 本書結(jié)構(gòu)清晰、算法突出。在內(nèi)容的組織上,本書強(qiáng)調(diào)知識(shí)的實(shí)用性,既注重理論的完整性,化繁為簡(jiǎn),又將理論融入具體實(shí)例中,化難為易,以達(dá)到準(zhǔn)確、清楚地闡述相關(guān)概念和原理的目的。本書注重對(duì)數(shù)據(jù)結(jié)構(gòu)各章節(jié)知識(shí)闡述的條理性,書中給出的例子也具有較強(qiáng)的實(shí)用性與連貫性,以便使讀者對(duì)數(shù)據(jù)結(jié)構(gòu)有全面、透徹的認(rèn)識(shí)。 本書可作為高等院校相關(guān)專業(yè)本科生及碩士研究生的專業(yè)教材或參考書,也可作為相關(guān)技術(shù)人員的自學(xué)用書。
胡元義,男,副教授。1978年—1982年,就讀于陜西工商學(xué)院計(jì)算機(jī)軟件專業(yè);1982年—至今,就職于西安理工大學(xué),歷任工程師、高級(jí)工程師。主要從事的研究方向有編譯原理、操作系統(tǒng)及數(shù)據(jù)結(jié)構(gòu)等。先后主持《信息學(xué)科計(jì)算機(jī)人才培養(yǎng)模式研究》(2010年校教學(xué)研究項(xiàng)目),以及《三本院校人才培養(yǎng)實(shí)踐教學(xué)模式研究》(2009年陜西省教育廳教學(xué)研究項(xiàng)目)。編寫教材共6部,編寫系列教輔書共11部。
目 錄
第1章 緒論 1
1.1 數(shù)據(jù)結(jié)構(gòu)的概念 1
1.1.1 數(shù)據(jù)與數(shù)據(jù)元素 2
1.1.2 數(shù)據(jù)結(jié)構(gòu) 3
1.2 邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu) 3
1.2.1 邏輯結(jié)構(gòu) 3
1.2.2 存儲(chǔ)結(jié)構(gòu) 4
1.3 算法與算法分析 5
1.3.1 算法的定義與描述 5
1.3.2 算法分析與復(fù)雜度計(jì)算 7
習(xí)題1 8
第2章 線性表 12
2.1 線性表及其邏輯結(jié)構(gòu) 12
2.1.1 線性表的定義 12
2.1.2 線性表的基本操作 13
2.2 線性表的順序存儲(chǔ)結(jié)構(gòu)及運(yùn)算實(shí)現(xiàn) 13
2.2.1 線性表的順序存儲(chǔ)——順序表 13
2.2.2 順序表上基本運(yùn)算的實(shí)現(xiàn) 15
2.3 線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及運(yùn)算實(shí)現(xiàn) 20
2.3.1 單鏈表 21
2.3.2 單鏈表上基本運(yùn)算的實(shí)現(xiàn) 23
2.3.3 循環(huán)鏈表 29
2.3.4 雙向鏈表 30
2.3.5 靜態(tài)鏈表 32
2.3.6 單鏈表應(yīng)用示例 35
習(xí)題2 37
第3章 棧和隊(duì)列 41
3.1 棧 41
3.1.1 棧的定義及基本運(yùn)算 41
3.1.2 棧的存儲(chǔ)結(jié)構(gòu)與運(yùn)算實(shí)現(xiàn) 42
*3.2 棧與遞歸 47
3.2.1 遞歸及其實(shí)現(xiàn) 47
3.2.2 遞歸調(diào)用過(guò)程分析 48
3.3 隊(duì)列 51
3.3.1 隊(duì)列的定義及基本運(yùn)算 51
3.3.2 隊(duì)列的存儲(chǔ)結(jié)構(gòu)與運(yùn)算實(shí)現(xiàn) 52
*3.4 遞歸轉(zhuǎn)化為非遞歸的研究 58
3.4.1 漢諾塔問(wèn)題的遞歸解法 58
3.4.2 漢諾塔問(wèn)題的非遞歸解法 61
3.4.3 八皇后問(wèn)題遞歸解法 63
3.4.4 八皇后問(wèn)題非遞歸解法 66
習(xí)題3 68
第4章 串 72
4.1 串的概念及基本運(yùn)算 72
4.1.1 串的基本概念 72
4.1.2 串的基本運(yùn)算 73
4.2 串的順序存儲(chǔ)結(jié)構(gòu)及基本運(yùn)算 74
4.2.1 串的順序存儲(chǔ)結(jié)構(gòu) 74
4.2.2 順序串的基本運(yùn)算 75
4.3 串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及基本運(yùn)算 77
4.3.1 串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 77
4.3.2 鏈串的基本運(yùn)算 78
4.4 串的模式匹配 80
4.4.1 簡(jiǎn)單模式匹配 80
4.4.2 無(wú)回溯的KMP匹配 82
*4.4.3 next函數(shù)的改進(jìn) 86
習(xí)題4 88
第5章 數(shù)組與廣義表 90
5.1 數(shù)組的概念與存儲(chǔ)結(jié)構(gòu) 90
5.1.1 數(shù)組的基本概念 90
5.1.2 數(shù)組的存儲(chǔ)結(jié)構(gòu) 91
5.2 特殊矩陣的壓縮存儲(chǔ) 93
5.2.1 對(duì)稱矩陣 94
5.2.2 三角矩陣 95
5.2.3 對(duì)角矩陣 96
5.3 稀疏矩陣 97
5.3.1 稀疏矩陣的三元組表示 97
5.3.2 稀疏矩陣十字鏈表的表示 101
5.4 廣義表 104
5.4.1 廣義表的基本概念 104
5.4.2 廣義表的存儲(chǔ)結(jié)構(gòu) 106
5.4.3 廣義表基本操作實(shí)現(xiàn)算法 109
習(xí)題5 112
第6章 樹(shù)與二叉樹(shù) 117
6.1 樹(shù)的基本概念 117
6.1.1 樹(shù)的概念與定義 117
6.1.2 樹(shù)的基本術(shù)語(yǔ) 118
6.2 二叉樹(shù) 119
6.2.1 二叉樹(shù)的定義 119
6.2.2 二叉樹(shù)的性質(zhì) 120
6.2.3 二叉樹(shù)的存儲(chǔ)結(jié)構(gòu) 122
6.3 二叉樹(shù)的遍歷 124
6.3.1 二叉樹(shù)的遍歷方法 124
6.3.2 遍歷二叉樹(shù)的遞歸算法及遍歷示例 125
6.3.3 遍歷二叉樹(shù)的非遞歸算法 128
6.3.4 二叉樹(shù)的層次遍歷算法 131
6.3.5 由遍歷序列恢復(fù)二叉樹(shù) 132
6.3.6 二叉樹(shù)遍歷的應(yīng)用 134
6.4 線索二叉樹(shù) 138
6.4.1 線索二叉樹(shù)的定義及結(jié)構(gòu) 138
6.4.2 線索化二叉樹(shù) 139
6.4.3 訪問(wèn)線索二叉樹(shù) 141
6.5 哈夫曼樹(shù) 143
6.5.1 哈夫曼樹(shù)基本概念及構(gòu)造方法 143
6.5.2 哈夫曼算法的實(shí)現(xiàn) 146
6.5.3 哈夫曼編碼 148
6.6 樹(shù)和森林 150
6.6.1 樹(shù)的定義與存儲(chǔ)結(jié)構(gòu) 150
6.6.2 樹(shù)、森林與二叉樹(shù)之間的轉(zhuǎn)換 152
6.6.3 樹(shù)和森林的遍歷 153
習(xí)題6 154
第7章 圖 160
7.1 圖的基本概念 160
7.1.1 圖的定義 160
7.1.2 圖的基本術(shù)語(yǔ) 161
7.2 圖的存儲(chǔ)結(jié)構(gòu) 163
7.2.1 鄰接矩陣 164
7.2.2 鄰接表 165
*7.2.3 有向圖的十字鏈表存儲(chǔ)方法 168
*7.2.4 無(wú)向圖的鄰接多重表存儲(chǔ)方法 169
7.3 圖的遍歷 170
7.3.1 深度優(yōu)先搜索 170
7.3.2 廣度優(yōu)先搜索 173
7.3.3 圖的連通性問(wèn)題 175
7.4 生成樹(shù)與最小生成樹(shù) 176
7.4.1 生成樹(shù)與生成森林 176
7.4.2 最小生成樹(shù)與構(gòu)造最小生成樹(shù)的Prim算法 179
7.4.3 構(gòu)造最小生成樹(shù)的Kruskal算法 182
7.5 最短路徑 185
7.5.1 從一個(gè)源點(diǎn)到其他各點(diǎn)的最短路徑 186
7.5.2 每對(duì)頂點(diǎn)之間的最短路徑 189
7.6 拓?fù)渑判蚺c關(guān)鍵路徑 192
7.6.1 AOV網(wǎng)與拓?fù)渑判?192
7.6.2 AOE網(wǎng)與關(guān)鍵路徑 196
習(xí)題7 201
第8章 查找 209
8.1 查找的基本概念 209
8.2 靜態(tài)查找表 210
8.2.1 順序查找 210
8.2.2 有序表的查找 211
8.3 樹(shù)表形式的動(dòng)態(tài)查找表 216
8.3.1 二叉排序樹(shù) 216
8.3.2 平衡二叉樹(shù) 223
8.3.3 B樹(shù)與B+樹(shù) 230
8.4 地址映射方式下的動(dòng)態(tài)查找表——哈希表 237
8.4.1 哈希表與哈希方法 237
8.4.2 哈希函數(shù)的構(gòu)造方法 238
8.4.3 處理沖突的方法 240
8.4.4 哈希表的查找 242
習(xí)題8 245
第9章 排序 252
9.1 基本概念 252
9.2 插入排序 253
9.2.1 直接插入排序 253
9.2.2 折半插入排序 255
9.2.3 希爾(Shell)排序 256
9.3 交換排序 258
9.3.1 冒泡排序 258
9.3.2 快速排序 260
9.4 選擇排序 263
9.4.1 直接選擇排序 263
9.4.2 堆排序 266
9.5 歸并排序 270
9.6 基數(shù)排序 275
9.6.1 多關(guān)鍵字排序 275
9.6.2 鏈?zhǔn)交鶖?shù)排序 276
*9.7 外排序簡(jiǎn)介 279
9.8 內(nèi)排序方法討論 282
9.8.1 提高排序效率的方法 282
9.8.2 各種內(nèi)排序方法的比較 282
習(xí)題9 285
附錄 思考題 290
參考文獻(xiàn) 292