《數據結構--使用C語言》是2020年電子工業出版社出版的圖書。
基本介紹
- 中文名:數據結構--使用C語言
- 作者:編者:朱戰立|責編:冉哲
- 出版時間:2020年
- 出版社:電子工業出版社
- ISBN:9787121401183
- 開本:16 開
內容簡介,作者簡介,目 錄,
內容簡介
數據結構是計算機學科各專業的一門重要的專業基礎課。本書包含了*的研究生入學統考大綱的全部內容。本書系統地介紹了線性表、堆疊、佇列、串、數組、廣義表、樹、二叉樹、圖等典型數據結構,以及遞歸、查找和排序的方法。本書理論敘述簡潔準確、實踐套用舉例豐富完整,從而達到了理論和實踐密切結合的目的。本書採用C語言描述算法並提供了大量上機調試通過的程式實例。 本書內容豐富,難度適中,圖文並茂,套用實例多,教學參考資料豐富。
作者簡介
朱戰立,西安石油大學計算機學院,教授。講授過的主要課程:數據結構,面向對象程式設計,C語言程式設計,Java語言程式設計,計算機導論,專業英語,資料庫原理,人工智慧,人工神經網路等。 編寫教材:《數據結構——使用C語言》(第1版和第2版),西安交通大學出版社; 《數據結構——使用C 語言》,西安電子科技大學出版社;《 面向對象程式設計和C 語言》電子工業出版社;《 計算機導論》(第1~3版),電子工業出版社;《數據結構》(國家“十五”規劃高職高專類教材),西安電子科技大學出版社;《數據結構——使用C語言》 (第4版和第5版),電子工業出版社。
目 錄
第1章 緒論 1
1.1 數據結構的基本概念 1
1.1.1 數據、數據元素、數據元素的數據類型 1
1.1.2 數據的邏輯結構 2
1.1.3 數據的存儲結構 3
1.1.4 數據的操作 3
1.1.5 本書的結構和主要內容 4
1.2 抽象數據類型 4
1.3 算法和算法的時間複雜度 5
1.3.1 算法 5
1.3.2 算法的性質和設計目標 6
1.3.3 算法的時間效率分析 7
1.3.4 算法耗時的實際測試 10
1.3.5 數據元素個數和時間複雜度 12
習題1 13
第2章 線性表 15
2.1 線性表概述 15
2.1.1 線性表的定義 15
2.1.2 線性表的抽象數據類型 15
2.2 線性表的順序表示和實現 16
2.2.1 順序表的存儲結構 16
2.2.2 順序表操作的實現 17
2.2.3 順序表操作的效率分析 19
2.2.4 順序表套用舉例 20
2.3 線性表的鏈式表示和實現 22
2.3.1 單鍊表的存儲結構 22
2.3.2 單鍊表的操作實現 25
2.3.3 單鍊表操作的效率分析 29
2.3.4 單鍊表套用舉例 30
2.3.5 循環單鍊表 31
2.3.6 雙向循環鍊表 31
2.4 靜態鍊表 34
2.5 算法設計舉例 35
2.5.1 順序表算法設計舉例 35
2.5.2 單鍊表算法設計舉例 36
習題2 37
第3章 堆疊和佇列 41
3.1 堆疊 41
3.1.1 堆疊的基本概念 41
3.1.2 堆疊的抽象數據類型 42
3.1.3 堆疊的順序表示和實現 42
3.1.4 堆疊的鏈式表示和實現 44
3.2 堆疊套用 47
3.2.1 括弧匹配問題 47
3.2.2 算術表達式計算問題 49
3.3 佇列 53
3.3.1 佇列的基本概念 53
3.3.2 佇列的抽象數據類型 54
3.3.3 順序佇列及其存在的問題 54
3.3.4 順序循環佇列的表示和實現 55
3.3.5 鏈式佇列 58
3.3.6 佇列套用舉例 60
3.4 優先權佇列 64
3.4.1 順序優先權佇列的設計和實現 64
3.4.2 優先權佇列套用舉例 66
習題3 67
第4章 串 71
4.1 串概述 71
4.1.1 串及其基本概念 71
4.1.2 串的抽象數據類型 72
4.1.3 C語言的串函式 72
4.2 串的存儲結構 74
4.3 串基本操作的實現算法 76
4.4 串的模式匹配算法 80
4.4.1 Brute-Force算法 81
4.4.2 KMP算法 83
4.4.3 Brute-Force算法和KMP算法的比較 88
習題4 90
第5章 數組 92
5.1 數組概述 92
5.1.1 數組的定義 92
5.1.2 數組的實現機制 92
5.1.3 數組的抽象數據類型 93
5.2 動態數組 93
5.2.1 動態數組的設計方法 93
5.2.2 動態數組和靜態數組對比 96
5.3 特殊矩陣的壓縮存儲 97
5.4 稀疏矩陣的壓縮存儲 99
5.4.1 稀疏矩陣的三元組順序表 99
5.4.2 稀疏矩陣的三元組鍊表 100
習題5 101
第6章 遞歸算法 104
6.1 遞歸的概念 104
6.2 遞歸算法的執行過程 105
6.3 遞歸算法的設計方法 107
6.4 遞歸過程和運行時棧 109
6.5 遞歸算法的時間效率分析 110
6.6 算法設計舉例 113
6.6.1 一般遞歸算法設計舉例 113
6.6.2 回溯算法及設計舉例 115
習題6 118
第7章 廣義表 120
7.1 廣義表概述 120
7.1.1 廣義表的概念 120
7.1.2 廣義表的抽象數據類型 121
7.2 廣義表的存儲結構 121
7.2.1 頭鏈和尾鏈存儲結構 122
7.2.2 原子和子表存儲結構 122
7.3 廣義表操作的實現 123
7.3.1 頭鏈和尾鏈存儲結構下操作的實現 123
7.3.2 頭鏈和尾鏈存儲結構套用舉例 126
7.3.3 原子和子表存儲結構下操作的實現 128
7.3.4 原子和子表存儲結構套用舉例 130
習題7 130
第8章 樹和二叉樹 132
8.1 樹 132
8.1.1 樹的定義 132
8.1.2 樹的表示方法 133
8.1.3 樹的抽象數據類型 134
8.1.4 樹的存儲結構 134
8.2 二叉樹 137
8.2.1 二叉樹的定義 137
8.2.2 二叉樹的抽象數據類型 138
8.2.3 二叉樹的性質 138
8.3 二叉樹的設計和實現 140
8.3.1 二叉樹的存儲結構 140
8.3.2 二叉樹的操作實現 142
8.4 二叉樹遍歷 144
8.4.1 二叉樹遍歷的方法和結構 144
8.4.2 二叉鏈存儲結構下二叉樹遍歷的實現 145
8.4.3 二叉樹遍歷套用舉例 146
8.4.4 非遞歸的二叉樹遍歷算法 148
8.5 線索二叉樹 150
8.5.1 線索二叉樹及其用途 150
8.5.2 中序線索二叉樹的設計 152
8.5.3 中序線索二叉樹循環操作的設計 153
8.5.4 中序線索二叉樹套用舉例 154
8.6 哈夫曼樹 155
8.6.1 哈夫曼樹的基本概念 155
8.6.2 哈夫曼編碼問題 156
8.6.3 哈夫曼編碼問題設計和實現 157
8.7 等價問題 161
8.8 樹與二叉樹的轉換 164
8.9 樹的遍歷 166
習題8 166
第9章 圖 170
9.1 圖概述 170
9.1.1 圖的基本概念 170
9.1.2 圖的抽象數據類型 172
9.2 圖的存儲結構 173
9.2.1 圖的鄰接矩陣存儲結構 173
9.2.2 圖的鄰接表存儲結構 174
9.3 圖的實現 175
9.3.1 鄰接矩陣存儲結構下圖操作的實現 175
9.3.2 鄰接表存儲結構下圖操作的實現 178
9.4 圖的遍歷 181
9.4.1 圖的深度和廣度優先遍歷算法 181
9.4.2 圖的深度和廣度優先遍歷算法實現 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 每對頂點之間的短路徑 195
9.7 拓撲排序 197
9.8 關鍵路徑 200
習題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 基數排序 222
10.7 排序算法性能比較 225
習題10 225
第11章 查找 229
11.1 查找的基本概念 229
11.2 靜態查找 230
11.2.1 順序表 230
11.2.2 有序順序表 231
11.2.3 索引順序表 232
11.3 動態查找 235
11.3.1 二叉排序樹和平衡二叉樹 235
11.3.2 B-樹和B 樹 241
11.4 哈希查找 246
11.4.1 哈希表的基本概念 246
11.4.2 哈希函式構造方法 248
11.4.3 哈希衝突解決方法 249
11.4.4 哈希表設計 251
習題11 254
參考文獻 258