目錄
第1章緒論 1
1.1數據結構的概念 2
1.1.1引言 2
1.1.2數據結構的有關概念與術語 5
1.2抽象數據類型 7
1.3算法描述與分析 11
1.3.1什么是算法 11
1.3.2算法分析技術初步 13
1.4基本的算法策略 17
1.4.1窮舉法 17
1.4.2遞推法與迭代法 18
1.4.3分治法 20
1.4.4貪心算法 22
1.4.5動態規劃 22
1.5案例分析 25
1.6小結 26
討論小課堂1 27
習題1 28第2章線性表 30
2.1線性表的定義及其運算 30
2.1.1線性表的定義 30
2.1.2線性表的抽象數據類型 31
2.2線性表的順序存儲結構及實現 32
2.2.1順序存儲結構 32
2.2.2線性表在向量中基本運算的實現 34
2.3線性表的鏈表存儲結構 39
2.3.1單鏈表 39
2.3.2線性鏈表基本運算的實現 42
2.4循環鏈表和雙向鏈表 49
2.4.1循環鏈表 49
2.4.2雙向鏈表 50
2.4.3順序存儲結構與鏈表存儲結構的綜合分析與比較
51
2.5單鏈表的應用 52
2.5.1多項式相加的鏈表存儲結點 52
2.5.2多項式相加的算法實現 53
2.6小結 54
討論小課堂2 55
習題2 55第3章棧和隊列 57
3.1棧 57
3.1.1棧的定義 57
3.1.2棧的抽象數據類型 58
3.2棧的順序存儲結構及實現 59
3.2.1棧的順序存儲結構 59
3.2.2順序棧的定義 60
3.3棧的鏈表存儲結構及實現 62
3.4棧的應用 65
3.4.1表達式的計算 65
3.4.2子程序的嵌套調用 67
3.4.3遞歸調用 68
3.5隊列 69
3.5.1隊列的定義及運算 69
3.5.2隊列的抽象數據類型 70
3.6隊列的順序存儲結構及實現 70
3.7隊列的鏈表存儲結構及實現 74
3.8隊列的應用 77
3.9算法實例——Hanoi塔問題 78
3.10小結 79
討論小課堂3 80
習題3 81第4章串 83
4.1串的基本概念 83
4.1.1串的定義 83
4.1.2串的抽象數據類型 84
4.2串的存儲與基本操作的實現 85
4.2.1定長順序串 86
4.2.2堆串 86
4.2.3塊鏈串 87
4.2.4串操作的實現 88
4.3串的模式匹配 91
4.3.1樸素模式匹配算法 92
4.3.2模式匹配的KMP算法 92
4.4串的應用舉例: 文本編輯 97
4.5小結 99
討論小課堂4 99
習題4 100第5章數組和廣義表 101
5.1數組 102
5.1.1數組的基本概念 102
5.1.2二維數組 102
5.1.3數組的順序存儲方式 103
5.2矩陣的壓縮存儲 104
5.2.1特殊矩陣 104
5.2.2稀疏矩陣 107
5.3廣義表 112
5.3.1廣義表的定義 112
5.3.2廣義表的存儲結構 113
5.4案例分析 116
5.4.1概述和方法 116
5.4.2算法和程序 118
5.5小結 120
討論小課堂5 120
習題5 120第6章樹與二叉樹 122
6.1樹的概念及術語 123
6.1.1樹的定義 123
6.1.2樹的抽象數據類型 124
6.1.3樹的表示方式 125
6.2二叉樹 125
6.2.1二叉樹的定義 125
6.2.2二叉樹的抽象數據類型 126
6.2.3二叉樹的重要性質 127
6.2.4二叉樹的存儲結構 128
6.3二叉樹的遍歷 130
6.3.1先序遍歷 131
6.3.2中序遍歷 131
6.3.3后根遍歷 132
6.3.4按層遍歷 133
6.3.5非遞歸遍歷算法 133
6.3.6二叉樹的建立 136
6.3.7二叉樹遍歷的應用舉例 137
6.4二叉樹與樹、森林的轉換 139
6.4.1樹與二叉樹的轉換 139
6.4.2森林與二叉樹的轉換 140
6.5樹的存儲結構 141
6.5.1樹的雙親表示法 142
6.5.2孩子表示法 142
6.5.3孩子兄弟表示法 143
6.6樹的遍歷 144
6.6.1一般樹的遍歷 144
6.6.2森林的遍歷 145
6.7二叉樹的應用 146
6.7.1哈夫曼樹 146
6.7.2哈夫曼樹的構造 146
6.7.3哈夫曼樹的實現算法 148
6.7.4哈夫曼編碼 149
6.8小結 150
討論小課堂6 150
習題6 150第7章圖 153
7.1圖的基本概念 153
7.1.1圖的定義 153
7.1.2圖的術語 155
7.1.3圖的抽象數據類型 156
7.2圖的存儲結構 157
7.2.1圖的鄰接矩陣 157
7.2.2鄰接矩陣表示法的描述 159
7.2.3鄰接矩陣表示下的基本操作的實現 160
7.2.4圖的鄰接鏈表 161
7.2.5圖的鄰接表表示法的描述 162
7.2.6鄰接表表示下基本操作的實現 163
7.3圖的遍歷與圖的連通性 165
7.3.1圖的深度優先遍歷 166
7.3.2圖的廣度優先遍歷 168
7.3.3非連通圖和連通分量 170
7.4圖的*小生成樹 170
7.4.1*小生成樹的基本概念 170
7.4.2普里姆(Prim)算法 171
7.4.3克魯斯卡爾(Kruskal)算法 174
7.5*短路徑 175
7.5.1從某頂點到其余各頂點的*短路徑 175
7.5.2每對頂點之間的*短路徑 178
7.6拓撲排序與關鍵路徑 180
7.6.1拓撲排序 180
7.6.2關鍵路徑 183
7.7圖的應用 189
7.7.1圖在路由器尋徑中的應用 189
7.7.2圖在物流信息系統中應用 190
7.8小結 190
討論題7 191
習題7 191第8章查找 193
8.1查找的基本概念 194
8.2靜態查找表 195
8.2.1順序表的查找 195
8.2.2有序表的折半查找 196
8.2.3索引順序表查找 200
8.3動態查找表 201
8.3.1二叉排序樹 201
8.3.2平衡二叉樹 210
8.4案例分析 214
8.4.1直方圖問題 214
8.4.2箱子裝載問題 216
8.5小結 218
討論小課堂8 218
習題8 219第9章排序 220
9.1排序的基本概念 220
9.2插入排序 221
9.2.1直接插入排序 221
9.2.2折半插入排序 222
9.2.3希爾排序 222
9.3交換排序 224
9.3.1冒泡排序 224
9.3.2快速排序 225
9.4選擇排序 229
9.4.1簡單選擇排序 229
9.4.2堆排序 230
9.5歸并排序 233
9.6基數排序 235
9.7小結 239
討論小課堂9 240
習題9 240第10章索引結構與哈希 242
10.1靜態索引結構 242
10.1.1索引表 242
10.1.2索引表查找 242
10.2動態索引結構(B-樹和B 樹) 245
10.2.1B-樹的定義 245
10.2.2B-樹的運算 246
10.2.3B 樹 249
10.3鍵樹及Trie樹 250
10.3.1鍵樹的定義 250
10.3.2雙鏈樹 251
10.3.3Trie樹 252
10.4哈希表及其查找 253
10.4.1哈希表與哈希函數 253
10.4.2構造哈希函數的常用方法 254
10.4.3解決沖突的主要方法 256
10.4.4哈希查找的性能分析 260
10.5小結 261
討論小課堂10 262
習題10 262參考文獻 265