圖解數據結構——使用C++(視頻教學版)
吳燦銘
相關主題
商品描述
目錄大綱
目 錄
第1章 數據結構導論 1
1.1 數據結構的定義 2
1.1.1 數據與信息 2
1.1.2 數據的特性 3
1.1.3 數據結構的應用 4
1.2 算法 6
1.3 常見算法簡介 10
1.3.1 分治法 10
1.3.2 遞歸法 11
1.3.3 迭代法 11
1.3.4 枚舉法 12
1.3.5 貪心法 14
1.4 認識程序設計 14
1.4.1 程序開發流程 15
1.4.2 結構化程序設計 15
1.4.3 面向對象程序設計 16
1.5 算法性能的分析 18
1.5.1 Big-Oh 18
1.5.2 Ω(omega) 21
1.5.3 θ(theta) 21
本章習題 22
第2章 數組結構 23
2.1 線性表簡介 23
2.2 認識數組 24
2.2.1 二維數組 27
2.2.2 三維數組 30
2.2.3 n維數組 33
2.3 矩陣與深度學習 33
2.3.1 矩陣相加 35
2.3.2 矩陣相乘 37
2.3.3 轉置矩陣 39
2.3.4 稀疏矩陣 40
2.3.5 上三角矩陣 43
2.3.6 下三角矩陣 46
2.3.7 帶狀矩陣 50
2.4 數組與多項式 51
本章習題 52
第3章 鏈表 54
3.1 動態分配內存 54
3.1.1 C++的動態分配變量 55
3.1.2 動態分配數組 56
3.2 單向鏈表 57
3.2.1 單向鏈表的創建與遍歷 57
3.2.2 單向鏈表中新節點的插入 60
3.2.3 單向鏈表中節點的刪除 64
3.2.4 單向鏈表的反轉 68
3.2.5 多項式鏈表表示法 74
3.3 環形鏈表 77
3.3.1 環形鏈表中新節點的插入 77
3.3.2 環形鏈表中節點的刪除 81
3.3.3 環形鏈表的串接 85
3.3.4 稀疏矩陣的環形鏈表表示法 88
3.4 雙向鏈表 90
3.4.1 雙向鏈表的建立與遍歷 91
3.4.2 雙向鏈表中新節點的插入 91
3.4.3 雙向鏈表中節點的刪除 96
本章習題 100
第4章 堆棧 102
4.1 堆棧簡介 102
4.1.1 堆棧及其基本操作 102
4.1.2 用數組實現堆棧 103
4.1.3 用鏈表實現堆棧 105
4.1.4 堆棧類樣板的實現 106
4.2 遞歸法詳解 108
4.2.1 直接遞歸和間接遞歸 108
4.2.2 斐波那契數列 110
4.2.3 漢諾塔問題 111
4.2.4 動態規劃法 117
4.2.5 回溯法—老鼠走迷宮 118
4.2.6 八皇後問題 121
4.3 算術表達式的表示法 123
4.3.1 中序法轉為前序法與後序法 123
4.3.2 前序法與後序法表達式轉為中序法表達式 129
4.3.3 中序法求值 131
4.3.4 前序法求值 133
4.3.5 後序法求值 134
本章習題 134
第5章 隊列 137
5.1 認識隊列 137
5.1.1 隊列的基本操作 138
5.1.2 用數組來實現隊列 138
5.2 環形隊列 143
5.3 雙向隊列 147
5.4 優先隊列 149
本章習題 150
第6章 樹結構 152
6.1 樹的基本概念 152
6.2 二叉樹 154
6.2.1 二叉樹的定義 155
6.2.2 特殊二叉樹簡介 156
6.3 二叉樹的存儲方式 157
6.3.1 用一維數組來實現二叉樹 157
6.3.2 用鏈表來實現二叉樹 160
6.4 二叉樹的遍歷 162
6.4.1 中序遍歷 162
6.4.2 後序遍歷 163
6.4.3 前序遍歷 164
6.4.4 二叉樹節點的插入與刪除 167
6.4.5 二叉運算樹 172
6.5 線索二叉樹 174
6.6 樹的二叉樹表示法 179
6.6.1 樹轉化為二叉樹 179
6.6.2 二叉樹轉化為樹 180
6.6.3 森林轉化為二叉樹 181
6.6.4 二叉樹轉化為森林 181
6.6.5 樹與森林的遍歷 182
6.6.6 確定唯一二叉樹 185
6.7 優化二叉查找樹 186
6.7.1 擴充二叉樹 186
6.7.2 哈夫曼樹 187
6.8 平衡樹 188
6.9 高級樹結構的研究 190
6.9.1 博弈樹 190
6.9.2 B樹 191
6.9.3 二叉空間分割樹 192
6.9.4 四叉樹與八叉樹 193
本章習題 193
第7章 圖結構 197
7.1 圖的簡介 197
7.1.1 圖的定義 198
7.1.2 無向圖 198
7.1.3 有向圖 199
7.2 圖的數據表示法 200
7.2.1 鄰接矩陣法 200
7.2.2 鄰接鏈表法 203
7.2.3 鄰接復合鏈表法 206
7.2.4 索引表格法 207
7.3 圖的遍歷 209
7.3.1 深度優先遍歷 209
7.3.2 廣度優先遍歷 212
7.4 生成樹 216
7.4.1 深度優先生成樹和廣度優先生成樹 216
7.4.2 最小生成樹 217
7.4.3 Kruskal算法 217
7.4.4 Prim算法 221
7.5 圖的最短路徑 222
7.5.1 單點對全部頂點——Dijkstra算法 223
7.5.2 A*算法 228
7.5.3 兩兩頂點間的最短路徑——Floyd算法 230
7.6 AOV網絡與拓撲排序 234
7.7 AOE網絡 236
本章習題 237
第8章 排序 240
8.1 排序簡介 240
8.1.1 排序的分類 241
8.1.2 排序算法分析 241
8.2 內部排序法 242
8.2.1 冒泡排序法 242
8.2.2 選擇排序法 246
8.2.3 插入排序法 248
8.2.4 希爾排序法 250
8.2.5 合並排序法 253
8.2.6 快速排序法 254
8.2.7 堆積排序法 258
8.2.8 基數排序法 263
8.3 外部排序法 266
8.3.1 直接合並排序法 267
8.3.2 k-路合並法 271
8.3.3 多相合並法 271
本章習題 272
第9章 查找 275
9.1 常見的查找算法 275
9.1.1 順序查找法 276
9.1.2 二分查找法 278
9.1.3 插值查找法 281
9.1.4 斐波那契查找法 283
9.2 哈希查找法 288
9.3 常見的哈希法 289
9.3.1 除留餘數法 289
9.3.2 平方取中法 290
9.3.3 折疊法 291
9.3.4 數字分析法 292
9.4 碰撞與溢出問題的處理 292
9.4.1 線性探測法 292
9.4.2 平方探測法 294
9.4.3 再哈希法 294
9.4.4 鏈表法 295
本章習題 299
附錄A 課後習題與參考答案 301
附錄B 數據結構專有名詞索引(電子版見下載) 343