出版信息
書 名 數據結構(C語言版)(第2版)
叢 書 名 21世紀高等學校計算機規劃教材——精品系列
標準書號 ISBN 978-7-115-20703-6/TP
作 者 李雲清 楊慶紅 揭安全 編著
責任編輯 鄒文波
開 本 16 開
印 張 17.25
字 數 450 千字
頁 數 266 頁
裝 幀 平裝
版 次 第2版第1次
二版時間 2009年8月
本 印 次 2009年8月
首 印 數 3000 冊
定 價 28.00 元
內容提要
本書內容豐富,邏輯性強,文字清晰流暢,既注重理論知識,又強調工程實用。書中既體現了抽象數據類型的觀點,又對每個算法的具體實現給出了完整的C語言原始碼描述。
本書可作為高等院校計算機專業及相關專業本科生“數據結構”課程的教材,也可以作為從事計算機工程與套用的廣大讀者的參考書。
目錄
第1章 概論 1
1.1 數據結構的基本概念與術語 1
1.1.1 數據結構的基本概念 1
1.1.2 數據的邏輯結構 2
1.1.3 數據的存儲結構 3
1.1.4 數據的運算集合 5
1.2 數據類型和抽象數據類型 5
1.2.1 數據類型 6
1.2.2 抽象數據類型 7
1.2.3 抽象數據類型的描述和實現 7
1.3 算法和算法分析 8
1.3.1 算法的基本概念和基本特徵 8
1.3.2 算法的時間複雜度和空間複雜度 8
習題 9
第2章 線性表及其順序存儲 11
2.1 線性表 11
2.2 順序表 11
2.2.1 順序表的基本概念及描述 11
2.2.2 順序表的實現 12
2.3 棧 17
2.3.1 棧的基本概念及描述 17
2.3.2 順序棧及其實現 18
2.3.3 棧的套用之一——括弧匹配 20
2.3.4 棧的套用之二——算術表達式求值 22
2.4 佇列 27
2.4.1 佇列的基本概念及描述 27
2.4.2 順序佇列及其實現 28
2.4.3 順序循環佇列及其實現 31
習題 33
第3章 線性表的鏈式存儲 35
3.1 鏈式存儲 35
3.2 單鍊表 36
3.2.1 單鍊表的基本概念及描述 36
3.2.2 單鍊表的實現 37
3.3 帶頭結點的單鍊表 41
3.3.1 帶頭結點的單鍊表的基本概念及描述 41
3.3.2 帶頭結點的單鍊表的實現 42
3.4 循環單鍊表 45
3.4.1 循環單鍊表的基本概念及描述 45
3.4.2 循環單鍊表的實現 46
3.5 雙鍊表 51
3.5.1 雙鍊表的基本概念及描述 51
3.5.2 雙鍊表的實現 52
3.6 鏈式棧 57
3.6.1 鏈式棧的基本概念及描述 57
3.6.2 鏈式棧的實現 58
3.7 鏈式佇列 60
3.7.1 鏈式佇列的基本概念及描述 60
3.7.2 鏈式佇列的實現 61
習題 64
第4章 字元串、數組和特殊矩陣 66
4.1 字元串 66
4.1.1 字元串的基本概念 66
4.1.2 字元串類的定義 66
4.1.3 字元串的存儲及其實現 67
4.2 字元串的模式匹配 75
4.2.1 樸素的模式匹配算法 75
4.2.2 快速模式匹配算法 76
4.3 數組 79
4.3.1 數組和數組元素 79
4.3.2 數組類的定義 80
4.3.3 數組的順序存儲及實現 80
4.4 特殊矩陣 84
4.4.1 對稱矩陣的壓縮存儲 84
4.4.2 三角矩陣的壓縮存儲 86
4.4.3 帶狀矩陣的壓縮存儲 87
4.5 稀疏矩陣 88
4.5.1 稀疏矩陣類的定義 89
4.5.2 稀疏矩陣的順序存儲及其實現 89
4.5.3 稀疏矩陣的鏈式存儲及實現 92
習題 96
第5章 遞歸 97
5.1 遞歸的基本概念與遞歸程式設計 97
5.2 遞歸程式執行過程的分析 99
5.3 遞歸程式到非遞歸程式的轉換 102
5.3.1 簡單遞歸程式到非遞歸程式的轉換 102
5.3.2 複雜遞歸程式到非遞歸程式的轉換 105
5.4 遞歸程式設計的套用實例 110
習題 112
第6章 樹型結構 113
6.1 樹的基本概念 113
6.2 樹類的定義 115
6.3 樹的存儲結構 115
6.3.1 雙親表示法 115
6.3.2 孩子表示法 116
6.3.3 孩子兄弟表示法 119
6.4 樹的遍歷 120
6.5 樹的線性表示 123
6.5.1 樹的括弧表示 123
6.5.2 樹的層號表示 126
習題 127
第7章 二叉樹 129
7.1 二叉樹的基本概念 129
7.2 二叉樹的基本運算 131
7.3 二叉樹的存儲結構 132
7.3.1 順序存儲結構 132
7.3.2 鏈式存儲結構 134
7.4 二叉樹的遍歷 135
7.4.1 二叉樹遍歷的定義 135
7.4.2 二叉樹遍歷的遞歸實現 135
7.4.3 二叉樹遍歷的非遞歸實現 137
7.5 二叉樹其他運算的實現 141
7.6 穿線二叉樹 143
7.6.1 穿線二叉樹的定義 143
7.6.2 中序穿線二叉樹的基本運算 144
7.6.3 中序穿線二叉樹的存儲結構及其實現 145
7.7 樹、森林和二叉樹的轉換 147
7.7.1 樹、森林到二叉樹的轉換 147
7.7.2 二叉樹到樹、森林的轉換 148
習題 149
第8章 圖 151
8.1 圖的基本概念 151
8.2 圖的基本運算 154
8.3 圖的基本存儲結構 154
8.3.1 鄰接矩陣及其實現 155
8.3.2 鄰接表及其實現 157
8.3.3 鄰接多重表 160
8.4 圖的遍歷 160
8.4.1 深度優先遍歷 161
8.4.2 廣度優先遍歷 162
8.5 生成樹與最小生成樹 164
8.5.1 最小生成樹的定義 166
8.5.2 最小生成樹的普里姆(Prim)算法 167
8.5.3 最小生成樹的克魯斯卡爾(Kruskal)算法 170
8.6 最短路徑 173
8.6.1 單源最短路徑 173
8.6.2 所有頂點對的最短路徑 177
8.7 拓撲排序 179
8.8 關鍵路徑 182
習題 187
第9章 檢索 191
9.1 檢索的基本概念 191
9.2 線性表的檢索 192
9.2.1 順序檢索 192
9.2.2 二分法檢索 193
9.2.3 分塊檢索 196
9.3 二叉排序樹 198
9.4 豐滿樹和平衡樹 205
9.4.1 豐滿樹 205
9.4.2 平衡二叉排序樹 206
9.5 最佳二叉排序樹和Huffman樹 212
9.5.1 擴充二叉樹 212
9.5.2 最佳二叉排序樹 214
9.5.3 Huffman樹 218
9.6 B-樹 222
9.6.1 B-樹的定義 222
9.6.2 B-樹的基本操作 223
9.7 散列表檢索 227
9.7.1 散列存儲 228
9.7.2 散列函式的構造 228
9.7.3 衝突處理 230
習題 233
第10章 內排序 236
10.1 排序的基本概念 236
10.2 插入排序 237
10.2.1 直接插入排序 237
10.2.2 二分法插入排序 240
10.2.3 表插入排序 241
10.2.4 Shell插入排序 243
10.3 選擇排序 245
10.3.1 直接選擇排序 245
10.3.2 樹型選擇排序 246
10.3.3 堆排序 249
10.4 交換排序 252
10.4.1 冒泡排序 252
10.4.2 快速排序 254
10.5 歸併排序 256
10.6 基數排序 260
10.6.1 多排序碼的排序 260
10.6.2 靜態鏈式基數排序 260
習題 264
參考文獻 266