第1章緒論1
1.1數據結構概述1
1.2常用術語和基本概念3
1.3數據類型6
1.3.1數據類型概述6
1.3.2抽象數據類型7
1.4算法和算法復雜度8
1.4.1算法的重要性9
1.4.2時間復雜度10
1.4.3空間復雜度12
1.5本章實戰練習13
1.6本章小結15
1.7習題116
第2章線性表19
2.1線性表概述19
2.1.1線性表的定義及特點19
2.1.2線性表的抽象數據類型的
定義20
2.2線性表的順序存儲及運算的
實現21
2.2.1線性表的順序存儲21
2.2.2順序表的基本操作22
2.3線性表的鏈式存儲及運算的
實現28
2.3.1單鏈表28
2.3.2循環鏈表37
2.3.3雙向鏈表38
2.4本章實戰練習41
2.4.1順序表的常用操作41
2.4.2單鏈表的常用操作45
2.4.3通訊錄管理47
2.5本章小結53
2.6習題254
第3章棧和隊列59
3.1棧59
3.1.1棧的定義59
3.1.2棧的順序存儲與操作61
3.1.3棧的鏈式存儲與操作65
3.2隊列66
3.2.1隊列的定義67
3.2.2隊列的順序存儲與操作68
3.2.3隊列的鏈式存儲與操作71
3.3本章實戰練習73
3.3.1top為指針且指向棧頂
元素的下一個位置73
3.3.2top為整數且指向棧頂
元素的下一個位置75
3.3.3棧的應用——數制轉換77
3.3.4順序隊列的基本操作79
3.3.5循環隊列設置不同隊空與
隊滿條件的解決方案82
3.3.6鏈隊列的基本操作85
3.4本章小結88
3.5習題389
第4章串、數組、矩陣和廣義表94
4.1串的定義95
4.1.1串的基本概念95
4.1.2串的抽象數據類型的定義96
4.2串的存儲與操作97
4.2.1串的順序存儲與操作97
4.2.2串的鏈式存儲與操作99
4.3數組100
4.3.1數組的定義100
4.3.2數組的順序存儲101
4.4矩陣的壓縮存儲102
4.4.1特殊矩陣的壓縮存儲102
4.4.2稀疏矩陣及其壓縮存儲105
4.5廣義表111
4.5.1廣義表的定義111
4.5.2廣義表的存儲結構及
實現112
4.6本章實戰練習114
4.6.1串的常見操作114
4.6.2串的基本操作及應用117
4.6.3數組應用——方陣126
4.6.4數組應用——稀疏矩陣126
4.7本章小結130
4.8習題4131
第5章樹134
5.1樹的概念134
5.1.1樹的定義134
5.1.2樹的基本術語135
5.2二叉樹137
5.2.1二叉樹的定義137
5.2.2二叉樹的性質139
5.3二叉樹的存儲結構141
5.3.1二叉樹的順序存儲141
5.3.2二叉樹的鏈式存儲與
操作142
5.4二叉樹的遍歷145
5.4.1遍歷算法145
5.4.2線索二叉樹148
5.4.3遍歷算法的應用舉例152
5.5樹與森林153
5.5.1樹和森林的存儲154
5.5.2二叉樹、樹和森林的
轉換157
5.5.3樹和森林的遍歷158
5.6哈夫曼樹159
5.6.1哈夫曼樹的定義159
5.6.2哈夫曼樹的構造算法159
5.6.3哈夫曼編碼161
5.7本章實戰練習162
5.7.1二叉樹的基本操作162
5.7.2線索二叉樹的操作167
5.7.3樹的應用——模擬資源
管理器171
5.7.4哈夫曼樹構造178
5.8本章小結180
5.9習題5180
第6章圖189
6.1圖的定義和基本術語189
6.1.1圖的定義189
6.1.2圖的基本術語190
6.2圖的存儲與操作194
6.2.1鄰接矩陣194
6.2.2鄰接表197
6.2.3十字鏈表200
6.3圖的遍歷201
6.3.1深度優先遍歷算法202
6.3.2廣度優先遍歷算法204
6.4圖與*小生成樹206
6.4.1生成樹和森林的算法206
6.4.2*小生成樹208
6.5*短路徑212
6.5.1單源點到其余各頂點的
*短路徑212
6.5.2任意源點之間的*短
路徑217
6.6AOV網與拓撲排序218
6.6.1AOV網219
……