基本信息
數據結構(C語言描述)
所屬類別
教材 >> 高職 >> 高職計算機
作者:李素若、陳萬華、游明坤、黃桂平 編著
出版日期:2009年4月 書號:978-7-122-04728-1
開本:16 裝幀:平 版次:1版1次 頁數:274頁
內容簡介
本書介紹了數據結構的基本概念和基本算法。全書共11章,主要內容包括:緒論、線性表、棧和佇列、串、數組和廣義表、樹、圖、查找、內排、檔案和上機實驗等。
本書是供普通高等院校計算機科學與技術專業本、專科學生使用的教材,也可供從事計算機工作者和其他希望學習數據結構的人員參考。
目錄
第1章 緒論 1
1.1 什麼是數據結構 1
1.2 基本概念和常用術語 2
1.3 數據抽象和抽象數據類型 6
1.3.1 數據抽象 6
1.3.2 抽象數據類型 7
1.3.3 抽象數據類型描述和實現 8
1.4 算法和算法分析 10
1.4.1 算法及其性能標準 10
1.4.2 算法時間複雜度和漸近時間複雜度 11
1.4.3 算法的空間複雜度 13
小結 13
習題 14
第2章 線性表 15
2.1 線性表概念 15
2.2 線性表的順序表示和實現 17
2.2.1 線性表的順序存儲結構 17
2.2.2 線性表在順序存儲結構下的運算 17
2.3 線性表的鏈式表示和實現 21
2.3.1 線性鍊表 21
2.3.2 循環鍊表 28
2.3.3 雙向循環鍊表 29
2.3.4 順序表和鍊表的比較 32
2.4 一元多項式的表示及相加 33
小結 36
習題 36
第3章 棧和佇列 39
3.1 棧 39
3.1.1 棧的定義及其運算 39
3.1.2 順序棧 40
3.1.3 多棧共享鄰接空間 42
3.1.4 鏈棧 44
3.1.5 棧的套用舉例 46
3.1.6 棧與遞歸的實現 51
3.2 佇列 54
3.2.1 佇列的定義 54
3.2.2 順序佇列 56
3.2.3 鏈佇列 59
3.2.4 佇列套用舉例 60
小結 63
習題 64
第4章 串 67
4.1 串的類型定義 67
4.2 串的定長順序存儲 70
4.3 串的堆存儲結構 73
4.3.1 串名存儲映像 73
4.3.2 堆存儲結構 75
4.3.3 基於堆結構的基本運算 75
4.4 串的塊鏈存儲結構 78
4.5 模式匹配 79
4.6 串的套用舉例——正文編輯 84
小結 85
習題 86
第5章 數組和廣義表 88
5.1 數組類型的定義 88
5.2 數組順序存儲和實現 90
5.3 矩陣壓縮存儲 92
5.3.1 對稱矩陣 92
5.3.2 三角矩陣 93
5.3.3 帶狀矩陣 94
5.4 稀疏矩陣 95
5.4.1 稀疏矩陣三元組表存儲 95
5.4.2 稀疏矩陣十字鍊表存儲 103
5.5 廣義表 107
5.5.1 廣義表的定義和基本運算 107
5.5.2 廣義表的存儲 108
5.5.3 廣義表基本操作的實現 110
小結 113
習題 113
第6章 樹 115
6.1 樹的基本概念 115
6.1.1 樹的定義 115
6.1.2 樹的邏輯表示方法 116
6.1.3 樹的基本術語 117
6.1.4 樹的抽象數據類型定義 118
6.1.5 樹的存儲結構 119
6.2 二叉樹的概念和性質 122
6.2.1 二叉樹的概念 122
6.2.2 二叉樹的性質 123
6.2.3 二叉樹與樹、森林之間的轉換 125
6.3 二叉樹的存儲結構 127
6.3.1 二叉樹的順序存儲結構 127
6.3.2 二叉樹的鏈式存儲結構 128
6.4 二叉樹的遍歷 129
6.4.1 二叉樹遍歷的概念 129
6.4.2 二叉樹遍歷遞歸算法 130
6.4.3 二叉樹遍歷非遞歸算法 131
6.5 二叉樹的基本運算及其實現 134
6.5.1 二叉樹的基本運算 134
6.5.2 二叉樹的基本運算算法實現 135
6.6 二叉樹的構造 137
6.7 線索二叉樹 138
6.7.1 線索二叉樹的概念 138
6.7.2 線索化二叉樹 139
6.7.3 遍歷線索化二叉樹 140
6.8 哈夫曼樹 141
6.8.1 哈夫曼樹的概述 141
6.8.2 哈夫曼樹的構造算法 142
6.8.3 哈夫曼編碼 143
小結 146
習題 146
第7章 圖 149
7.1 圖的基本概念 149
7.1.1 圖的定義 149
7.1.2 圖的基本術語 151
7.2 圖的存儲結構 152
7.2.1 鄰接矩陣存儲方法 152
7.2.2 鄰接表存儲方法 155
7.2.3 十字鄰接表存儲方法 157
7.2.4 鄰接多重表存儲方法 159
7.3 圖的遍歷 160
7.3.1 圖的遍歷的概念 160
7.3.2 深度優先搜尋遍歷 161
7.3.3 廣度優先搜尋遍歷 162
7.3.4 非連通圖的遍歷 164
7.4 生成樹和最小生成樹 165
7.4.1 生成樹的概念 165
7.4.2 最小生成樹的定義 165
7.4.3 無向圖的連通分量和生成樹 166
7.4.4 有向圖的強連通分量 166
7.4.5 普里姆算法 167
7.4.6 克魯斯卡爾算法 168
7.5 最短路徑 171
7.5.1 路徑的概念 171
7.5.2 從一個頂點到其餘各頂點的最短路徑 171
7.5.3 每對頂點之間的最短路徑 174
7.6 拓撲排序 176
7.7 AOE網與關鍵路徑 179
小結 184
習題 184
第8章 查找 186
8.1 查找的基本概念 186
8.2 線性表的查找 188
8.2.1 順序查找 188
8.2.2 二分查找 189
8.2.3 分塊查找 192
8.3 樹表的查找 194
8.3.1 二叉排序樹 194
8.3.2 平衡二叉樹 201
8.3.3 B–樹 210
8.3.4 B+樹 214
8.4 哈希表查找 215
8.4.1 哈希表的基本概念 215
8.4.2 哈希函式構造方法 216
8.4.3 哈希衝突解決方法 218
8.4.4 哈希表上的運算 221
小結 224
習題 224
第9章 內排序 226
9.1 排序的基本概念 226
9.2 插入排序 227
9.2.1 直接插入排序 228
9.2.2 希爾排序 229
9.3 交換排序 231
9.3.1 冒泡排序 231
9.3.2 快速排序 233
9.4 選擇排序 236
9.4.1 直接選擇排序 237
9.4.2 堆排序 238
9.5 歸併排序 242
9.6 基數排序 245
9.7 各種內排序方法的比較和選擇 248
小結 250
習題 250
第10章 檔案 252
10.1 檔案的基本概念 252
10.2 順序檔案 254
10.3 索引檔案 255
10.4 索引順序檔案 257
10.4.1 ISAM檔案 257
10.4.2 VSAM檔案 259
10.5 散列檔案 261
10.6 多關鍵字檔案 262
10.6.1 多重表檔案 262
10.6.2 倒排檔案 263
小結 264
習題 264
第11章 上機實驗題 266
11.1 實驗一 線性表的順序存儲結構 266
11.2 實驗二 單向鍊表 267
11.3 實驗三 雙向鍊表 267
11.4 實驗四 棧、佇列 268
11.5 實驗五 二叉樹 269
11.6 實驗六 圖 270
11.7 實驗七 查找 271
11.8 實驗八 排序 272
參考文獻 274