趣學(xué)數(shù)據(jù)結(jié)構(gòu)
定 價(jià):99 元
- 作者:陳小玉
- 出版時(shí)間:2019/9/1
- ISBN:9787115513830
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.12
- 頁碼:478
- 紙張:
- 版次:01
- 開本:16開
本書基于C++語言編寫,從趣味故事引入算法復(fù)雜性計(jì)算及數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)內(nèi)容,涵蓋線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖形結(jié)構(gòu),包括鏈表、棧和隊(duì)列、樹和圖的應(yīng)用等。本書內(nèi)容還涉及數(shù)據(jù)結(jié)構(gòu)的基本應(yīng)用(包括各種查找、排序等)和高級應(yīng)用(包括優(yōu)先隊(duì)列、并查集、B-樹、B+樹和紅黑樹等)。通過大量圖解將抽象數(shù)據(jù)模型簡單通俗化,語言表述淺顯易懂,并結(jié)合有趣的實(shí)例幫助讀者輕松掌握數(shù)據(jù)結(jié)構(gòu)。
(1)完美圖解+豐富實(shí)例,復(fù)雜問題簡單化
為基本操作配以圖解,用數(shù)據(jù)結(jié)構(gòu)解決生活中的實(shí)際問題,學(xué)習(xí)過程更加輕松有趣。
(2)原理分析+實(shí)戰(zhàn)演練,真正地學(xué)以致用
通俗化講解基礎(chǔ)知識(shí),在實(shí)戰(zhàn)中體會(huì)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和操作,鍛煉獨(dú)立思考的能力。
(3)配套代碼+在線答疑,為學(xué)習(xí)保駕護(hù)航
提供書中的范例程序源代碼、練習(xí)題以及答案解析,并在博客和QQ群中答疑解惑。
陳小玉,南陽理工學(xué)院副教授,高級程序員,研究方向?yàn)橹悄苡?jì)算、數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí),主要講授“算法設(shè)計(jì)與分析”和“人工智能”等課程,多次指導(dǎo)學(xué)生獲得ACM程序設(shè)計(jì)大賽亞洲區(qū)獎(jiǎng)項(xiàng)。
第 1章 數(shù)據(jù)結(jié)構(gòu)入門 1
1.1 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí) 2
1.2 算法復(fù)雜度 10
1.3 一棋盤麥子 17
1.4 神奇魔鬼序列 18
1.5 本章要點(diǎn) 23
第 2章 線性表 24
2.1 順序表 25
2.1.1 靜態(tài)分配 25
2.1.2 動(dòng)態(tài)分配 26
2.1.3 順序表的基本操作 28
2.2 單鏈表 35
2.2.1 單鏈表的存儲(chǔ)方式 35
2.2.2 單鏈表的基本操作 37
2.3 雙向鏈表 48
2.3.1 雙向鏈表的存儲(chǔ)方式 48
2.3.2 雙向鏈表的基本操作 48
2.4 循環(huán)鏈表 54
2.5 線性表的應(yīng)用 55
2.5.1 合并有序順序表 55
2.5.2 合并有序鏈表 60
2.5.3 就地逆置單鏈表 64
2.5.4 查找鏈表的中間節(jié)點(diǎn) 68
2.5.5 刪除鏈表中的重復(fù)元素 71
2.6 線性表學(xué)習(xí)秘籍 75
第3章 棧和隊(duì)列 78
3.1 順序!79
3.2 鏈!83
3.3 順序隊(duì)列 87
3.3.1 順序隊(duì)列的定義 88
3.3.2 循環(huán)隊(duì)列的定義 92
3.3.3 循環(huán)隊(duì)列的基本操作 96
3.4 鏈隊(duì)列 98
3.5 棧和隊(duì)列的應(yīng)用 102
3.5.1 數(shù)制的轉(zhuǎn)換 102
3.5.2 回文判定 104
3.5.3 雙端隊(duì)列 106
3.6 棧和隊(duì)列學(xué)習(xí)秘籍 116
第4章 字符串 121
4.1 字符串 122
4.2 模式匹配BF算法 124
4.3 模式匹配KMP算法 128
4.4 改進(jìn)的KMP算法 133
4.5 字符串的應(yīng)用——病毒檢測 135
4.6 字符串學(xué)習(xí)秘籍 137
第5章 數(shù)組與廣義表 139
5.1 數(shù)組的順序存儲(chǔ) 140
5.2 特殊矩陣的壓縮存儲(chǔ) 143
5.2.1 對稱矩陣 143
5.2.2 三角矩陣 145
5.2.3 對角矩陣 146
5.2.4 稀疏矩陣 150
5.3 廣義表 151
5.4 好玩貪吃蛇——數(shù)字矩陣 151
5.5 數(shù)組與廣義表學(xué)習(xí)秘籍 156
第6章 樹 158
6.1 樹 159
6.1.1 樹的定義 159
6.1.2 樹的存儲(chǔ)結(jié)構(gòu) 162
6.1.3 樹、森林與二叉樹的轉(zhuǎn)換 165
6.2 二叉樹 167
6.2.1 二叉樹的性質(zhì) 168
6.2.2 二叉樹的存儲(chǔ)結(jié)構(gòu) 173
6.2.3 二叉樹的創(chuàng)建 175
6.3 二叉樹的遍歷 183
6.3.1 先序遍歷 183
6.3.2 中序遍歷 186
6.3.3 后序遍歷 188
6.3.4 層次遍歷 192
6.4 線索二叉樹 196
6.4.1 線索二叉樹存儲(chǔ)結(jié)構(gòu) 196
6.4.2 構(gòu)造線索二叉樹 197
6.4.3 遍歷線索二叉樹 201
6.5 樹和森林的遍歷 204
6.5.1 樹的遍歷 204
6.5.2 森林的遍歷 209
6.6 樹的應(yīng)用 212
6.6.1 二叉樹的深度 212
6.6.2 二叉樹的葉子數(shù) 213
6.6.3 三元組創(chuàng)建二叉樹 214
6.6.4 遍歷序列還原樹 218
6.6.5 哈夫曼樹 223
6.7 樹學(xué)習(xí)秘籍 239
第7章 圖 241
7.1 圖的基本術(shù)語 242
7.2 圖的存儲(chǔ)結(jié)構(gòu) 249
7.2.1 鄰接矩陣 250
7.2.2 鄰接表 256
7.2.3 十字鏈表 266
7.2.4 鄰接多重表 268
7.3 圖的遍歷 270
7.3.1 廣度優(yōu)先搜索 270
7.3.2 深度優(yōu)先搜索 275
7.4 圖的應(yīng)用 279
7.4.1 單源最短路徑——Dijkstra 279
7.4.2 各頂點(diǎn)之間最短路徑——Floyd 287
7.4.3 最小生成樹——prim 293
7.4.4 最小生成樹——kruskal 305
7.4.5 拓?fù)渑判颉?08
7.4.6 關(guān)鍵路徑 316
7.5 圖學(xué)習(xí)秘籍 324
第8章 查找 327
8.1 線性表查找 328
8.1.1 順序查找 328
8.1.2 折半查找 330
8.2 樹表查找 335
8.2.1 二叉查找樹 335
8.2.2 平衡二叉查找樹 346
8.3 散列表的查找 361
8.3.1 散列函數(shù) 361
8.3.2 處理沖突的方法 364
8.3.3 散列查找及性能分析 376
8.4 查找學(xué)習(xí)秘籍 378
第9章 排序 379
9.1 插入排序 381
9.1.1 直接插入排序 381
9.1.2 希爾排序 387
9.2 交換排序 389
9.2.1 冒泡排序 389
9.2.2 快速排序 392
9.3 選擇排序 401
9.3.1 簡單選擇排序 401
9.3.2 堆排序 403
9.4 合并排序 412
9.5 分配排序 417
9.5.1 桶排序 417
9.5.2 基數(shù)排序 418
9.6 排序?qū)W習(xí)秘籍 421
第 10章 高級數(shù)據(jù)結(jié)構(gòu) 425
10.1 并查集 426
10.2 優(yōu)先隊(duì)列 430
10.2.1 出隊(duì) 431
10.2.2 入隊(duì) 433
10.2.3 構(gòu)建初始堆 435
10.3 B-樹 437
10.3.1 樹高與性能 439
10.3.2 查找 440
10.3.3 插入 441
10.3.4 刪除 444
10.4 B+樹 449
10.4.1 查找 450
10.4.2 插入 451
10.4.3 刪除 454
10.5 紅黑樹 457
10.5.1 紅黑樹的定義 457
10.5.2 樹高與性能 458
10.5.3 紅黑樹與4階B樹 459
10.5.4 查找 460
10.5.5 插入 460
10.5.6 刪除 466
10.6 高級數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)秘籍 476