基本介紹
- 書名:圖解數據結構--使用Python
- 作者:吳燦銘
- ISBN:9787302495321
- 定價:79元
- 出版時間:2018.04.01
- 印刷日期:2018.03.13
內容簡介,作者簡介,目 錄,
內容簡介
本書採用豐富的圖例來闡述基本概念,並以簡潔清晰的語言來詮釋重要的理論和算法,同時配合完整的範例程式代碼,使讀者可以通過“實例+實踐”來熟悉數據結構。本書內容共9章,先從基本的數據結構概念開始介紹,再以Python語言來實現數組、堆疊、鍊表、佇列、樹、圖、排序、查找等重要的數據結構。在附錄A提供了Python語言的快速入門,附錄B是使用Python語言實現數據結構程式時調試經驗的分享,附錄C則提供了所有課後習題的答案。
作者簡介
吳燦銘現任榮欽科技股份有限公司執行長,美國Rochester Institute of Technology計算機科學研究所畢業,長期從事信息教育及計算機圖書寫作的工作,計算機圖書著作包括計算器概論、數據結構、辦公室電子數據處理、網際網路等相關題材,並監製過多套遊戲以及教學軟體的研發。
目 錄
第1章 數據結構導論 1
1.1 數據結構的定義 2
1.1.1 數據與信息 2
1.1.2 數據的特性 3
1.1.3 數據結構的套用 3
1.2 算法 5
1.3 認識程式設計 7
1.3.1 程式開發流程 8
1.3.2 結構化程式設計 8
1.3.3 面向對象程式設計 9
1.4 算法性能分析 11
1.4.1 Big-Oh 12
1.4.2 Ω 15
1.4.3 θ 15
【課後習題】 15
第2章 數組結構 17
2.1 線性表簡介 18
2.2 認識數組 19
2.2.1 二維數組 21
2.2.2 三維數組 25
2.2.3 n維數組 27
2.3 矩陣 28
2.3.1 矩陣相加 28
2.3.2 矩陣相乘 29
2.3.3 轉置矩陣 31
2.3.4 稀疏矩陣 32
2.3.5 上三角形矩陣 35
2.3.6 下三角形矩陣 39
2.3.7 帶狀矩陣 43
2.4 數組與多項式 44
【課後習題】 46
第3章 鍊表 48
3.1 單向鍊表 49
3.1.1 建立單向鍊表 50
3.1.2 遍歷單向鍊表 51
3.1.3 在單向鍊表中插入新節點 53
3.1.4 在單向鍊表中刪除節點 58
3.1.5 單向鍊表的反轉 61
3.1.6 單向鍊表的連線功能 64
3.1.7 多項式鍊表表示法 69
3.2 環形鍊表 71
3.2.1 環形鍊表的建立與遍歷 72
3.2.2在環形鍊表中插入新節點 74
3.2.3在環形鍊表中刪除節點 78
3.2.4環形鍊表的連線功能 82
3.2.5環形鍊表與稀疏矩陣表示法 85
3.3雙向鍊表 86
3.3.1雙向鍊表的建立與遍歷 87
3.3.2在雙向鍊表中插入新節點 91
3.3.3在雙向鍊表中刪除節點 95
【課後習題】 99
第4章堆疊 101
4.1堆疊簡介 102
4.1.1用列表實現堆疊 103
4.1.2用鍊表實現堆疊 107
4.2堆疊的套用 110
4.2.1遞歸算法 111
4.2.2漢諾塔問題 115
4.2.3老鼠走迷宮 120
4.2.4八皇后問題 125
4.3算術表達式的表示法 128
4.3.1中序法轉為前序法與後序法 129
4.3.2前序法與後序法轉為中序法 135
4.3.3中序法表達式的求值運算 137
4.3.4前序法表達式的求值運算 138
4.3.5後序法表達式的求值運算 139
【課後習題】 140
第5章佇列 143
5.1認識佇列 144
5.1.1佇列的基本操作 144
5.1.2用數組實現佇列 145
5.1.3用鍊表實現佇列 148
5.2佇列的套用 151
5.2.1環形佇列 151
5.2.2雙向佇列 155
5.2.3優先佇列 159
【課後習題】 160
第6章樹形結構 161
6.1樹的基本概念 162
6.2二叉樹簡介 164
6.2.1二叉樹的定義 165
6.2.2特殊二叉樹簡介 166
6.3二叉樹的存儲方式 167
6.3.1一維數組表示法 167
6.3.2鍊表表示法 170
6.4二叉樹遍歷 172
6.4.1中序遍歷 173
6.4.2後序遍歷 173
6.4.3前序遍歷 173
6.4.4二叉樹節點的插入與刪除 178
6.4.5二叉運算樹 184
6.5線索二叉樹 189
6.6樹的二叉樹表示法 195
6.6.1樹轉化為二叉樹 195
6.6.2二叉樹轉換成樹 196
6.6.3森林轉換為二叉樹 197
6.6.4二叉樹轉換成森林 198
6.6.5樹與森林的遍歷 199
6.6.6確定唯一二叉樹 201
6.7最佳化二叉查找樹 202
6.7.1擴充二叉樹 202
6.7.2霍夫曼樹 204
6.7.3平衡樹 205
6.8B樹 210
【課後習題】 212
第7章圖形結構 216
7.1圖形簡介 217
7.1.1歐拉環與歐拉鏈 217
7.1.2圖形的定義 218
7.1.3無向圖 218
7.1.4有向圖 219
7.2圖的數據表示法 220
7.2.1鄰接矩陣法 220
7.2.2鄰接表法 224
7.2.3鄰接複合鍊表法 226
7.2.4索引表格法 228
7.3圖的遍歷 230
7.3.1深度優先遍曆法 230
7.3.2廣度優先遍曆法 233
7.4生成樹 237
7.4.1DFS生成樹和BFS生成樹 238
7.4.2最小生成樹 239
7.4.3Kruskal算法 239
7.5圖的最短路徑 244
7.5.1單點對全部頂點 244
7.5.2兩兩頂點間的最短路徑 248
7.6AOV網路與拓撲排序 251
7.7AOE網路 253
【課後習題】 255
第8章排序 259
8.1排序簡介 260
8.1.1排序的分類 261
8.1.2排序算法的分析 261
8.2內部排序法 262
8.2.1冒泡排序法 262
8.2.2選擇排序法 266
8.2.3插入排序法 268
8.2.4希爾排序法 270
8.2.5合併排序法 272
8.2.6快速排序法 275
8.2.7堆積排序法 278
8.2.8基數排序法 283
【課後習題】 286
第9章查找 289
9.1常見的查找方法 290
9.1.1順序查找法 290
9.1.2二分查找法 292
9.1.3插值查找法 294
9.1.4斐波拉契查找法 296
9.2哈希查找法 300
9.3常見的哈希函式 302
9.3.1除留餘數法 302
9.3.2平方取中法 303
9.3.3摺疊法 303
9.3.4數字分析法 304
9.4碰撞與溢出問題的處理 305
9.4.1線性探測法 305
9.4.2平方探測法 307
9.4.3再哈希法 307
9.4.4鍊表法 307
【課後習題】 313
附錄APython語言快速入門 315
A.1輕鬆學Python程式 316
A.2基本數據處理 317
A.2.1數值數據類型 317
A.2.2布爾數據類型 317
A.2.3字元串數據類型 318
A.3輸入input和輸出print 318
A.3.1輸出print 318
A.3.2輸出轉義字元 319
A.3.3輸入input 319
A.4運算符與表達式 321
A.4.1算術運算符 321
A.4.2複合賦值運算符 321
A.4.3關係運算符 321
A.4.4邏輯運算符 322
A.4.5位運算符 322
A.5流程控制 323
A.5.1if語句 323
A.5.2for循環 324
A.5.3while循環 325
A.6其他常用的類型 327
A.6.1string字元串 327
A.6.2list列表 329
A.6.3tuple元組和dict字典 331
A.7函式 332
A.7.1自定義無參數函式 332
A.7.2有參數行的函式 333
A.7.3函式返回值 333
A.7.4參數傳遞 333
附錄B數據結構使用Python程式調試實錄 336
附錄C課後習題與答案 352