數(shù)據(jù)結(jié)構(gòu)——使用C語言(第6版)
定 價(jià):49.8 元
- 作者:朱戰(zhàn)立
- 出版時(shí)間:2020/12/1
- ISBN:9787121401183
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.12;TP312.8
- 頁碼:268
- 紙張:
- 版次:01
- 開本:16K
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)學(xué)科各專業(yè)的一門重要的專業(yè)基礎(chǔ)課。本書包含了最新的研究生入學(xué)統(tǒng)考大綱的全部內(nèi)容。本書系統(tǒng)地介紹了線性表、堆棧、隊(duì)列、串、數(shù)組、廣義表、樹、二叉樹、圖等典型數(shù)據(jù)結(jié)構(gòu),以及遞歸、查找和排序的方法。本書理論敘述簡潔準(zhǔn)確、實(shí)踐應(yīng)用舉例豐富完整,從而達(dá)到了理論和實(shí)踐密切結(jié)合的目的。本書采用C語言描述算法并提供了大量上機(jī)調(diào)試通過的程序?qū)嵗?本書內(nèi)容豐富,難度適中,圖文并茂,應(yīng)用實(shí)例多,教學(xué)參考資料豐富。使用本書的讀者可登錄華信教育資源網(wǎng)(www.hxedu.com.cn)注冊后免費(fèi)下載教學(xué)課件。
朱戰(zhàn)立,西安石油大學(xué)計(jì)算機(jī)學(xué)院,教授。講授過的主要課程:數(shù)據(jù)結(jié)構(gòu),面向?qū)ο蟪绦蛟O(shè)計(jì),C語言程序設(shè)計(jì),Java語言程序設(shè)計(jì),計(jì)算機(jī)導(dǎo)論,專業(yè)英語,數(shù)據(jù)庫原理,人工智能,人工神經(jīng)網(wǎng)絡(luò)等。 編寫教材:《數(shù)據(jù)結(jié)構(gòu)——使用C語言》(第1版和第2版),西安交通大學(xué)出版社; 《數(shù)據(jù)結(jié)構(gòu)——使用C++語言》,西安電子科技大學(xué)出版社;《 面向?qū)ο蟪绦蛟O(shè)計(jì)和C++語言》電子工業(yè)出版社;《 計(jì)算機(jī)導(dǎo)論》(第1~3版),電子工業(yè)出版社;《數(shù)據(jù)結(jié)構(gòu)》(國家"十五”規(guī)劃高職高專類教材),西安電子科技大學(xué)出版社;《數(shù)據(jù)結(jié)構(gòu)——使用C語言》 (第4版和第5版),電子工業(yè)出版社。
目 錄
第1章 緒論 1
1.1 數(shù)據(jù)結(jié)構(gòu)的基本概念 1
1.1.1 數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)元素的數(shù)據(jù)類型 1
1.1.2 數(shù)據(jù)的邏輯結(jié)構(gòu) 2
1.1.3 數(shù)據(jù)的存儲結(jié)構(gòu) 3
1.1.4 數(shù)據(jù)的操作 3
1.1.5 本書的結(jié)構(gòu)和主要內(nèi)容 4
1.2 抽象數(shù)據(jù)類型 4
1.3 算法和算法的時(shí)間復(fù)雜度 5
1.3.1 算法 5
1.3.2 算法的性質(zhì)和設(shè)計(jì)目標(biāo) 6
1.3.3 算法的時(shí)間效率分析 7
1.3.4 算法耗時(shí)的實(shí)際測試 10
1.3.5 數(shù)據(jù)元素個(gè)數(shù)和時(shí)間復(fù)雜度 12
習(xí)題1 13
第2章 線性表 15
2.1 線性表概述 15
2.1.1 線性表的定義 15
2.1.2 線性表的抽象數(shù)據(jù)類型 15
2.2 線性表的順序表示和實(shí)現(xiàn) 16
2.2.1 順序表的存儲結(jié)構(gòu) 16
2.2.2 順序表操作的實(shí)現(xiàn) 17
2.2.3 順序表操作的效率分析 19
2.2.4 順序表應(yīng)用舉例 20
2.3 線性表的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn) 22
2.3.1 單鏈表的存儲結(jié)構(gòu) 22
2.3.2 單鏈表的操作實(shí)現(xiàn) 25
2.3.3 單鏈表操作的效率分析 29
2.3.4 單鏈表應(yīng)用舉例 30
2.3.5 循環(huán)單鏈表 31
2.3.6 雙向循環(huán)鏈表 31
2.4 靜態(tài)鏈表 34
2.5 算法設(shè)計(jì)舉例 35
2.5.1 順序表算法設(shè)計(jì)舉例 35
2.5.2 單鏈表算法設(shè)計(jì)舉例 36
習(xí)題2 37
第3章 堆棧和隊(duì)列 41
3.1 堆棧 41
3.1.1 堆棧的基本概念 41
3.1.2 堆棧的抽象數(shù)據(jù)類型 42
3.1.3 堆棧的順序表示和實(shí)現(xiàn) 42
3.1.4 堆棧的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn) 44
3.2 堆棧應(yīng)用 47
3.2.1 括號匹配問題 47
3.2.2 算術(shù)表達(dá)式計(jì)算問題 49
3.3 隊(duì)列 53
3.3.1 隊(duì)列的基本概念 53
3.3.2 隊(duì)列的抽象數(shù)據(jù)類型 54
3.3.3 順序隊(duì)列及其存在的問題 54
3.3.4 順序循環(huán)隊(duì)列的表示和實(shí)現(xiàn) 55
3.3.5 鏈?zhǔn)疥?duì)列 58
3.3.6 隊(duì)列應(yīng)用舉例 60
3.4 優(yōu)先級隊(duì)列 64
3.4.1 順序優(yōu)先級隊(duì)列的設(shè)計(jì)和實(shí)現(xiàn) 64
3.4.2 優(yōu)先級隊(duì)列應(yīng)用舉例 66
習(xí)題3 67
第4章 串 71
4.1 串概述 71
4.1.1 串及其基本概念 71
4.1.2 串的抽象數(shù)據(jù)類型 72
4.1.3 C語言的串函數(shù) 72
4.2 串的存儲結(jié)構(gòu) 74
4.3 串基本操作的實(shí)現(xiàn)算法 76
4.4 串的模式匹配算法 80
4.4.1 Brute-Force算法 81
4.4.2 KMP算法 83
4.4.3 Brute-Force算法和KMP算法的比較 88
習(xí)題4 90
第5章 數(shù)組 92
5.1 數(shù)組概述 92
5.1.1 數(shù)組的定義 92
5.1.2 數(shù)組的實(shí)現(xiàn)機(jī)制 92
5.1.3 數(shù)組的抽象數(shù)據(jù)類型 93
5.2 動態(tài)數(shù)組 93
5.2.1 動態(tài)數(shù)組的設(shè)計(jì)方法 93
5.2.2 動態(tài)數(shù)組和靜態(tài)數(shù)組對比 96
5.3 特殊矩陣的壓縮存儲 97
5.4 稀疏矩陣的壓縮存儲 99
5.4.1 稀疏矩陣的三元組順序表 99
5.4.2 稀疏矩陣的三元組鏈表 100
習(xí)題5 101
第6章 遞歸算法 104
6.1 遞歸的概念 104
6.2 遞歸算法的執(zhí)行過程 105
6.3 遞歸算法的設(shè)計(jì)方法 107
6.4 遞歸過程和運(yùn)行時(shí)棧 109
6.5 遞歸算法的時(shí)間效率分析 110
6.6 算法設(shè)計(jì)舉例 113
6.6.1 一般遞歸算法設(shè)計(jì)舉例 113
6.6.2 回溯算法及設(shè)計(jì)舉例 115
習(xí)題6 118
第7章 廣義表 120
7.1 廣義表概述 120
7.1.1 廣義表的概念 120
7.1.2 廣義表的抽象數(shù)據(jù)類型 121
7.2 廣義表的存儲結(jié)構(gòu) 121
7.2.1 頭鏈和尾鏈存儲結(jié)構(gòu) 122
7.2.2 原子和子表存儲結(jié)構(gòu) 122
7.3 廣義表操作的實(shí)現(xiàn) 123
7.3.1 頭鏈和尾鏈存儲結(jié)構(gòu)下操作的實(shí)現(xiàn) 123
7.3.2 頭鏈和尾鏈存儲結(jié)構(gòu)應(yīng)用舉例 126
7.3.3 原子和子表存儲結(jié)構(gòu)下操作的實(shí)現(xiàn) 128
7.3.4 原子和子表存儲結(jié)構(gòu)應(yīng)用舉例 130
習(xí)題7 130
第8章 樹和二叉樹 132
8.1 樹 132
8.1.1 樹的定義 132
8.1.2 樹的表示方法 133
8.1.3 樹的抽象數(shù)據(jù)類型 134
8.1.4 樹的存儲結(jié)構(gòu) 134
8.2 二叉樹 137
8.2.1 二叉樹的定義 137
8.2.2 二叉樹的抽象數(shù)據(jù)類型 138
8.2.3 二叉樹的性質(zhì) 138
8.3 二叉樹的設(shè)計(jì)和實(shí)現(xiàn) 140
8.3.1 二叉樹的存儲結(jié)構(gòu) 140
8.3.2 二叉樹的操作實(shí)現(xiàn) 142
8.4 二叉樹遍歷 144
8.4.1 二叉樹遍歷的方法和結(jié)構(gòu) 144
8.4.2 二叉鏈存儲結(jié)構(gòu)下二叉樹遍歷的實(shí)現(xiàn) 145
8.4.3 二叉樹遍歷應(yīng)用舉例 146
8.4.4 非遞歸的二叉樹遍歷算法 148
8.5 線索二叉樹 150
8.5.1 線索二叉樹及其用途 150
8.5.2 中序線索二叉樹的設(shè)計(jì) 152
8.5.3 中序線索二叉樹循環(huán)操作的設(shè)計(jì) 153
8.5.4 中序線索二叉樹應(yīng)用舉例 154
8.6 哈夫曼樹 155
8.6.1 哈夫曼樹的基本概念 155
8.6.2 哈夫曼編碼問題 156
8.6.3 哈夫曼編碼問題設(shè)計(jì)和實(shí)現(xiàn) 157
8.7 等價(jià)問題 161
8.8 樹與二叉樹的轉(zhuǎn)換 164
8.9 樹的遍歷 166
習(xí)題8 166
第9章 圖 170
9.1 圖概述 170
9.1.1 圖的基本概念 170
9.1.2 圖的抽象數(shù)據(jù)類型 172
9.2 圖的存儲結(jié)構(gòu) 173
9.2.1 圖的鄰接矩陣存儲結(jié)構(gòu) 173
9.2.2 圖的鄰接表存儲結(jié)構(gòu) 174
9.3 圖的實(shí)現(xiàn) 175
9.3.1 鄰接矩陣存儲結(jié)構(gòu)下圖操作的實(shí)現(xiàn) 175
9.3.2 鄰接表存儲結(jié)構(gòu)下圖操作的實(shí)現(xiàn) 178
9.4 圖的遍歷 181
9.4.1 圖的深度和廣度優(yōu)先遍歷算法 181
9.4.2 圖的深度和廣度優(yōu)先遍歷算法實(shí)現(xiàn) 183
9.5 最小生成樹 185
9.5.1 最小生成樹的基本概念 185
9.5.2 普里姆算法 186
9.5.3 克魯斯卡爾算法 190
9.6 最短路徑 191
9.6.1 最短路徑的基本概念 191
9.6.2 每對頂點(diǎn)之間的最短路徑 195
9.7 拓?fù)渑判?197
9.8 關(guān)鍵路徑 200
習(xí)題9 203
第10章 排序 206
10.1 排序的基本概念 206
10.2 插入排序 207
10.2.1 直接插入排序 208
10.2.2 希爾排序 209
10.3 選擇排序 211
10.3.1 直接選擇排序 211
10.3.2 堆排序 212
10.4 交換排序 216
10.4.1 冒泡排序 216
10.4.2 快速排序 217
10.5 歸并排序 220
10.6 基數(shù)排序 222
10.7 排序算法性能比較 225
習(xí)題10 225
第11章 查找 229
11.1 查找的基本概念 229
11.2 靜態(tài)查找 230
11.2.1 順序表 230
11.2.2 有序順序表 231
11.2.3 索引順序表 232
11.3 動態(tài)查找 235
11.3.1 二叉排序樹和平衡二叉樹 235
11.3.2 B-樹和B+樹 241
11.4 哈希查找 246
11.4.1 哈希表的基本概念 246
11.4.2 哈希函數(shù)構(gòu)造方法 248
11.4.3 哈希沖突解決方法 249
11.4.4 哈希表設(shè)計(jì) 251
習(xí)題11 254
參考文獻(xiàn) 258