數據結構 — 使用 C語言, 6/e
內容描述
數據結構是電腦學科各專業的一門重要的專業基礎課。本書包含了最新的研究生入學統考大綱的全部內容。本書系統地介紹了線性表、堆棧、隊列、串、數組、廣義表、樹、二叉樹、圖等典型數據結構,以及遞歸、查找和排序的方法。本書理論敘述簡潔準確、實踐應用舉例豐富完整,從而達到了理論和實踐密切結合的目的。本書採用C語言描述算法並提供了大量上機調試通過的程序實例。 本書內容豐富,難度適中,圖文並茂,應用實例多,教學參考資料豐富。使用本書的讀者可登錄華信教育資源網(www.hxedu.com.cn)註冊後免費下載教學課件。
目錄大綱
目錄
第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
作者介紹
朱戰立,西安石油大學計算機學院,教授。
講授過的主要課程:數據結構,面向對象程序設計,C語言程序設計,Java語言程序設計,計算機導論,專業英語,數據庫原理,人工智能,人工神經網絡等。
編寫教材:《數據結構――使用C語言》(第1版和第2版),西安交通大學出版社; 《數據結構――使用C++語言》,西安電子科技大學出版社;《 面向對象程序設計和C++語言》電子工業出版社;《 計算機導論》(第1~3版),電子工業出版社;《數據結構》(國家"十五”規劃高職高專類教材),西安電子科技大學出版社;《數據結構――使用C語言》 (第4版和第5版),電子工業出版社。