數(shù)據(jù)結(jié)構(gòu)——基于C++語言實(shí)現(xiàn)(微課版)
定 價(jià):59.8 元
- 作者:熊才權(quán) 吳歆韻 葉志偉 羅茂
- 出版時(shí)間:2025/8/1
- ISBN:9787115676436
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.12
- 頁碼:252
- 紙張:
- 版次:01
- 開本:16開
本書系統(tǒng)講解了數(shù)據(jù)結(jié)構(gòu)課程的核心內(nèi)容,共6章。第1章介紹數(shù)據(jù)結(jié)構(gòu)與算法的基本概念,第2~4章詳細(xì)講解順序表、鏈表、棧、隊(duì)列、樹與二叉樹、圖等基本數(shù)據(jù)結(jié)構(gòu)及其運(yùn)算,第5、6章重點(diǎn)介紹查找與排序等算法及其應(yīng)用。本書內(nèi)容精練、結(jié)構(gòu)清晰,理論與實(shí)踐相結(jié)合,強(qiáng)調(diào)相關(guān)知識(shí)的工程應(yīng)用,并提供大量典型例題與應(yīng)用實(shí)例。前言中附有的C++基礎(chǔ)知識(shí)學(xué)習(xí)二維碼,可為學(xué)生學(xué)習(xí)算法描述和實(shí)現(xiàn)相關(guān)算法提供幫助。
本書可作為計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程、數(shù)字媒體技術(shù)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)、人工智能、電子信息工程、信息管理與信息系統(tǒng)等專業(yè)的教材,也可供計(jì)算機(jī)相關(guān)領(lǐng)域的技術(shù)人員參考使用。
1.基于C++語言描述,更好實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)
目前國內(nèi)大部分?jǐn)?shù)據(jù)結(jié)構(gòu)教材采用 C 語言進(jìn)行實(shí)現(xiàn)。然而,C 語言缺乏類和對(duì)象等面向?qū)ο筇匦裕瑹o法像C++語言那樣直接通過類和對(duì)象實(shí)現(xiàn)數(shù)據(jù)封裝。C++作為一種面向?qū)ο笳Z言,不僅能夠更好地封裝數(shù)據(jù)和操作,還能提高代碼的可維護(hù)性和可擴(kuò)展性。因此,本書采用 C++語言進(jìn)行實(shí)現(xiàn)。
2.優(yōu)化教材內(nèi)容布局,強(qiáng)化知識(shí)闡述邏輯
本書一是舍去了傳統(tǒng)教材中的部分內(nèi)容,如廣義表、靜態(tài)鏈表等,以及存儲(chǔ)管理與文件系統(tǒng)的相關(guān)內(nèi)容。二是重構(gòu)、優(yōu)化了樹和圖的相關(guān)內(nèi)容。三是對(duì)部分內(nèi)容的先后順序進(jìn)行了調(diào)整,優(yōu)化了內(nèi)容邏輯結(jié)構(gòu)。
3.注重編程實(shí)踐教學(xué),側(cè)重實(shí)際工程應(yīng)用
數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)需要結(jié)合編程實(shí)踐,主要理論知識(shí)需要通過編程實(shí)現(xiàn)來驗(yàn)證。本書為各主要算法提供 C++實(shí)現(xiàn),針對(duì)重點(diǎn)數(shù)據(jù)結(jié)構(gòu)和算法,還配有應(yīng)用實(shí)例,并給出了全部源代碼。本書充分利用了 C++標(biāo)準(zhǔn)庫中的 list、vector 等標(biāo)準(zhǔn)模板庫容器及算法庫,更為符合現(xiàn)代編程的實(shí)際需求。
4.配套資源豐富齊全,助力院校教師教學(xué)
本書編者為本書配套了 PPT 課件、教案、教學(xué)大綱、習(xí)題答案、源代碼、實(shí)驗(yàn)指導(dǎo)等;此外,本書還配有豐富的數(shù)字資源,如電子文檔、微課視頻等,且支持掃碼閱讀/觀看。
熊才權(quán):
博士,三級(jí)教授,博士生導(dǎo)師。主要從事模型識(shí)別與智能系統(tǒng)、計(jì)算機(jī)應(yīng)用、軟件工程等方面的研究。主講的“數(shù)據(jù)結(jié)構(gòu)”課程2021年被認(rèn)定為湖北省一流本科課程。主編過《軟件工程》(華中科技大學(xué)出版社,2005年)、《數(shù)據(jù)庫原理與應(yīng)用》(華中科技大學(xué)出版社,2019年)等教材,出版學(xué)術(shù)專著一部《綜合集成模型方法與工具》(科學(xué)出版社,2019年)。主持國家自然科學(xué)基金面上項(xiàng)目和國家重點(diǎn)研發(fā)計(jì)劃項(xiàng)目子課題各一項(xiàng),獲武漢市科技進(jìn)步三等獎(jiǎng)1項(xiàng),湖北省教學(xué)成果二等獎(jiǎng)2項(xiàng)、湖北工業(yè)大學(xué)教學(xué)成果一等獎(jiǎng)3項(xiàng)、二等獎(jiǎng)1項(xiàng)。
【章名目錄】
第 1章 緒論
第 2章 線性結(jié)構(gòu)
第3章 樹與二叉樹
第4章 圖
第5章 查找
第6章 排序
【詳細(xì)目錄】
第 1章 緒論
1.1 數(shù)據(jù)結(jié)構(gòu)概述 1
1.1.1 數(shù)據(jù)結(jié)構(gòu)的基本概念與術(shù)語 1
1.1.2 數(shù)據(jù)的邏輯結(jié)構(gòu) 2
1.1.3 數(shù)據(jù)的物理結(jié)構(gòu) 4
1.2 算法與性能分析 5
1.2.1 算法的基本概念 5
1.2.2 描述算法的方法 6
1.2.3 算法設(shè)計(jì)的要求 7
1.2.4 算法效率分析 8
1.3 數(shù)據(jù)結(jié)構(gòu)、算法及程序的關(guān)系 12
1.3.1 數(shù)據(jù)結(jié)構(gòu)的作用 13
1.3.2 算法的作用 13
1.3.3 程序的作用 13
1.3.4 三者之間的關(guān)系 13
1.4 本章小結(jié) 14
練習(xí)題 14
第 2章 線性結(jié)構(gòu)
2.1 問題導(dǎo)入:數(shù)組的局限性 16
2.2 順序表 17
2.2.1 非封裝的順序表 17
2.2.2 順序表類 23
2.2.3 順序表類模板 29
2.2.4 模仿的向量(vector)類模板 30
2.2.5 順序表的應(yīng)用:Todo計(jì)劃表 36
2.3 鏈表 37
2.3.1 鏈表的基本概念 37
2.3.2 單鏈表 37
2.3.3 雙向鏈表 43
2.3.4 循環(huán)鏈表 44
2.3.5 模仿的鏈表類模板list 45
2.3.6 鏈表的應(yīng)用:一元多項(xiàng)式相加 51
2.4 !52
2.4.1 棧的基本概念 52
2.4.2 順序!53
2.4.3 以標(biāo)準(zhǔn)模板庫的vector類為底層結(jié)構(gòu)的順序!54
2.4.4 鏈棧 56
2.4.5 以標(biāo)準(zhǔn)模板庫的list類為底層結(jié)構(gòu)的鏈!57
2.4.6 棧的應(yīng)用:括號(hào)匹配 59
2.5 隊(duì)列 60
2.5.1 隊(duì)列的基本概念 60
2.5.2 順序隊(duì)列 60
2.5.3 以標(biāo)準(zhǔn)模板庫的vector類為底層結(jié)構(gòu)的順序隊(duì)列 61
2.5.4 鏈隊(duì)列 63
2.5.5 以標(biāo)準(zhǔn)模板庫的list類為底層結(jié)構(gòu)的鏈隊(duì)列 65
2.5.6 優(yōu)先級(jí)隊(duì)列 65
2.5.7 隊(duì)列的應(yīng)用:打印機(jī)模擬 65
2.6 串 66
2.6.1 串的基本概念 66
2.6.2 模仿的String類及其實(shí)現(xiàn) 66
2.6.3 模式匹配 70
2.6.4 串的應(yīng)用:文本檢索 76
2.7 多維數(shù)組與特殊矩陣 77
2.7.1 多維數(shù)組的定義 77
2.7.2 多維數(shù)組的存儲(chǔ)方式 78
2.7.3 特殊矩陣 79
2.7.4 稀疏矩陣 81
2.8 本章小結(jié) 82
練習(xí)題 83
第3章 樹與二叉樹
3.1 樹的基本概念 85
3.1.1 樹的定義 85
3.1.2 樹的基本術(shù)語 86
3.2 二叉樹的基本概念 87
3.2.1 二叉樹的定義 87
3.2.2 二叉樹的性質(zhì) 88
3.3 二叉樹的存儲(chǔ)結(jié)構(gòu) 89
3.3.1 二叉樹的順序存儲(chǔ)結(jié)構(gòu) 89
3.3.2 二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 89
3.4 二叉樹遍歷 92
3.4.1 二叉樹遍歷概述 92
3.4.2 二叉樹的層次遍歷 92
3.4.3 二叉樹的先序、中序、后序遍歷遞歸算法 93
3.4.4 二叉樹的先序、中序、后序遍歷非遞歸算法 94
3.4.5 二叉樹遍歷遞歸程序轉(zhuǎn)換為非遞歸程序的一般方法 95
3.4.6 二叉樹遍歷的應(yīng)用 97
3.5 堆 109
3.5.1 堆的基本概念 109
3.5.2 建堆 109
3.5.3 堆排序 111
3.5.4 小根堆Heap類 111
3.6 哈夫曼樹與哈夫曼編碼 112
3.6.1 哈夫曼樹的基本概念 112
3.6.2 哈夫曼樹構(gòu)建 113
3.6.3 哈夫曼編碼與解碼 115
3.7 樹與森林 117
3.7.1 樹的存儲(chǔ)與Tree類 117
3.7.2 樹的遍歷 121
3.7.3 樹與二叉樹的轉(zhuǎn)換 123
3.7.4 樹的應(yīng)用:八數(shù)碼問題 125
3.8 本章小結(jié) 127
練習(xí)題 128
第4章 圖
4.1 圖的基本概念 130
4.2 圖的存儲(chǔ)結(jié)構(gòu) 132
4.2.1 鄰接矩陣 132
4.2.2 鄰接表 132
4.3 Graph類 133
4.4 圖的遍歷 138
4.4.1 廣度優(yōu)先搜索算法 138
4.4.2 深度優(yōu)先搜索算法 139
4.5 最小生成樹 141
4.5.1 圖的生成樹的基本概念 141
4.5.2 克魯斯卡爾算法 142
4.5.3 普里姆算法 146
4.6 最短路徑 148
4.6.1 單源最短路徑 148
4.6.2 迪杰斯特拉算法 149
4.6.3 所有頂點(diǎn)之間的最短路徑 152
4.7 拓?fù)渑判蚺c關(guān)鍵路徑 156
4.7.1 有向無環(huán)圖 156
4.7.2 拓?fù)渑判颉?57
4.7.3 關(guān)鍵路徑 158
4.8 圖的應(yīng)用:迷宮求解 160
4.9 本章小結(jié) 162
練習(xí)題 162
第5章 查找
5.1 查找的基本概念 166
5.2 靜態(tài)查找 168
5.2.1 順序查找 168
5.2.2 折半查找 169
5.2.3 分塊查找 170
5.3 二叉搜索樹 170
5.3.1 二叉搜索樹的基本概念 170
5.3.2 二叉搜索樹的操作 171
5.3.3 二叉樹的遍歷迭代器 177
5.3.4 線索二叉樹 182
5.3.5 增加線索的遍歷迭代器 188
5.4 平衡二叉搜索樹 191
5.4.1 平衡二叉搜索樹的基本概念 191
5.4.2 動(dòng)態(tài)平衡調(diào)整法 192
5.4.3 平衡二叉搜索樹插入節(jié)點(diǎn) 198
5.4.4 平衡二叉搜索樹刪除節(jié)點(diǎn) 199
5.4.5 平衡二叉搜索樹的應(yīng)用:詞頻統(tǒng)計(jì) 201
5.5 B-樹 202
5.5.1 B-樹的基本概念 202
5.5.2 B-樹的查找 202
5.5.3 B-樹的插入 203
5.5.4 B-樹的刪除 205
5.5.5 B+樹 211
5.6 散列 217
5.6.1 散列的基本概念 217
5.6.2 散列函數(shù)的構(gòu)造方法 218
5.6.3 處理散列沖突的方法 219
5.6.4 散列查找 223
5.7 本章小結(jié) 224
練習(xí)題 225
第6章 排序
6.1 排序的基本概念 227
6.2 插入排序 228
6.2.1 直接插入排序 228
6.2.2 折半插入排序 230
6.2.3 希爾排序 231
6.3 交換排序 233
6.3.1 冒泡排序 233
6.3.2 快速排序 235
6.4 選擇排序 236
6.4.1 直接選擇排序 236
6.4.2 堆排序 237
6.4.3 錦標(biāo)賽排序 238
6.5 歸并排序 242
6.5.1 二路歸并 242
6.5.2 迭代歸并排序 243
6.5.3 遞歸歸并排序 243
6.6 基數(shù)排序 244
6.7 外排序 246
6.7.1 內(nèi)排序與外排序 246
6.7.2 多路歸并排序 246
6.8 排序的應(yīng)用:國際大學(xué)生程序設(shè)計(jì)競(jìng)賽成績排序 248
6.9 本章小結(jié) 249
練習(xí)題 250
參考文獻(xiàn)