數(shù)據(jù)結構——基于C++語言實現(xiàn)(微課版)
定 價:59.8 元
- 作者:熊才權 吳歆韻 葉志偉 羅茂
- 出版時間:2025/8/1
- ISBN:9787115676436
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.12
- 頁碼:252
- 紙張:
- 版次:01
- 開本:16開
本書系統(tǒng)講解了數(shù)據(jù)結構課程的核心內容,共6章。第1章介紹數(shù)據(jù)結構與算法的基本概念,第2~4章詳細講解順序表、鏈表、棧、隊列、樹與二叉樹、圖等基本數(shù)據(jù)結構及其運算,第5、6章重點介紹查找與排序等算法及其應用。本書內容精練、結構清晰,理論與實踐相結合,強調相關知識的工程應用,并提供大量典型例題與應用實例。前言中附有的C++基礎知識學習二維碼,可為學生學習算法描述和實現(xiàn)相關算法提供幫助。
本書可作為計算機科學與技術、軟件工程、網絡工程、數(shù)字媒體技術、數(shù)據(jù)科學與大數(shù)據(jù)技術、人工智能、電子信息工程、信息管理與信息系統(tǒng)等專業(yè)的教材,也可供計算機相關領域的技術人員參考使用。
1.基于C++語言描述,更好實現(xiàn)數(shù)據(jù)結構
目前國內大部分數(shù)據(jù)結構教材采用 C 語言進行實現(xiàn)。然而,C 語言缺乏類和對象等面向對象特性,無法像C++語言那樣直接通過類和對象實現(xiàn)數(shù)據(jù)封裝。C++作為一種面向對象語言,不僅能夠更好地封裝數(shù)據(jù)和操作,還能提高代碼的可維護性和可擴展性。因此,本書采用 C++語言進行實現(xiàn)。
2.優(yōu)化教材內容布局,強化知識闡述邏輯
本書一是舍去了傳統(tǒng)教材中的部分內容,如廣義表、靜態(tài)鏈表等,以及存儲管理與文件系統(tǒng)的相關內容。二是重構、優(yōu)化了樹和圖的相關內容。三是對部分內容的先后順序進行了調整,優(yōu)化了內容邏輯結構。
3.注重編程實踐教學,側重實際工程應用
數(shù)據(jù)結構的學習需要結合編程實踐,主要理論知識需要通過編程實現(xiàn)來驗證。本書為各主要算法提供 C++實現(xiàn),針對重點數(shù)據(jù)結構和算法,還配有應用實例,并給出了全部源代碼。本書充分利用了 C++標準庫中的 list、vector 等標準模板庫容器及算法庫,更為符合現(xiàn)代編程的實際需求。
4.配套資源豐富齊全,助力院校教師教學
本書編者為本書配套了 PPT 課件、教案、教學大綱、習題答案、源代碼、實驗指導等;此外,本書還配有豐富的數(shù)字資源,如電子文檔、微課視頻等,且支持掃碼閱讀/觀看。
熊才權:
博士,三級教授,博士生導師。主要從事模型識別與智能系統(tǒng)、計算機應用、軟件工程等方面的研究。主講的“數(shù)據(jù)結構”課程2021年被認定為湖北省一流本科課程。主編過《軟件工程》(華中科技大學出版社,2005年)、《數(shù)據(jù)庫原理與應用》(華中科技大學出版社,2019年)等教材,出版學術專著一部《綜合集成模型方法與工具》(科學出版社,2019年)。主持國家自然科學基金面上項目和國家重點研發(fā)計劃項目子課題各一項,獲武漢市科技進步三等獎1項,湖北省教學成果二等獎2項、湖北工業(yè)大學教學成果一等獎3項、二等獎1項。
【章名目錄】
第 1章 緒論
第 2章 線性結構
第3章 樹與二叉樹
第4章 圖
第5章 查找
第6章 排序
【詳細目錄】
第 1章 緒論
1.1 數(shù)據(jù)結構概述 1
1.1.1 數(shù)據(jù)結構的基本概念與術語 1
1.1.2 數(shù)據(jù)的邏輯結構 2
1.1.3 數(shù)據(jù)的物理結構 4
1.2 算法與性能分析 5
1.2.1 算法的基本概念 5
1.2.2 描述算法的方法 6
1.2.3 算法設計的要求 7
1.2.4 算法效率分析 8
1.3 數(shù)據(jù)結構、算法及程序的關系 12
1.3.1 數(shù)據(jù)結構的作用 13
1.3.2 算法的作用 13
1.3.3 程序的作用 13
1.3.4 三者之間的關系 13
1.4 本章小結 14
練習題 14
第 2章 線性結構
2.1 問題導入:數(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 順序表的應用:Todo計劃表 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 鏈表的應用:一元多項式相加 51
2.4 棧 52
2.4.1 棧的基本概念 52
2.4.2 順序!53
2.4.3 以標準模板庫的vector類為底層結構的順序棧 54
2.4.4 鏈!56
2.4.5 以標準模板庫的list類為底層結構的鏈!57
2.4.6 棧的應用:括號匹配 59
2.5 隊列 60
2.5.1 隊列的基本概念 60
2.5.2 順序隊列 60
2.5.3 以標準模板庫的vector類為底層結構的順序隊列 61
2.5.4 鏈隊列 63
2.5.5 以標準模板庫的list類為底層結構的鏈隊列 65
2.5.6 優(yōu)先級隊列 65
2.5.7 隊列的應用:打印機模擬 65
2.6 串 66
2.6.1 串的基本概念 66
2.6.2 模仿的String類及其實現(xiàn) 66
2.6.3 模式匹配 70
2.6.4 串的應用:文本檢索 76
2.7 多維數(shù)組與特殊矩陣 77
2.7.1 多維數(shù)組的定義 77
2.7.2 多維數(shù)組的存儲方式 78
2.7.3 特殊矩陣 79
2.7.4 稀疏矩陣 81
2.8 本章小結 82
練習題 83
第3章 樹與二叉樹
3.1 樹的基本概念 85
3.1.1 樹的定義 85
3.1.2 樹的基本術語 86
3.2 二叉樹的基本概念 87
3.2.1 二叉樹的定義 87
3.2.2 二叉樹的性質 88
3.3 二叉樹的存儲結構 89
3.3.1 二叉樹的順序存儲結構 89
3.3.2 二叉樹的鏈式存儲結構 89
3.4 二叉樹遍歷 92
3.4.1 二叉樹遍歷概述 92
3.4.2 二叉樹的層次遍歷 92
3.4.3 二叉樹的先序、中序、后序遍歷遞歸算法 93
3.4.4 二叉樹的先序、中序、后序遍歷非遞歸算法 94
3.4.5 二叉樹遍歷遞歸程序轉換為非遞歸程序的一般方法 95
3.4.6 二叉樹遍歷的應用 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 哈夫曼樹構建 113
3.6.3 哈夫曼編碼與解碼 115
3.7 樹與森林 117
3.7.1 樹的存儲與Tree類 117
3.7.2 樹的遍歷 121
3.7.3 樹與二叉樹的轉換 123
3.7.4 樹的應用:八數(shù)碼問題 125
3.8 本章小結 127
練習題 128
第4章 圖
4.1 圖的基本概念 130
4.2 圖的存儲結構 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 所有頂點之間的最短路徑 152
4.7 拓撲排序與關鍵路徑 156
4.7.1 有向無環(huán)圖 156
4.7.2 拓撲排序 157
4.7.3 關鍵路徑 158
4.8 圖的應用:迷宮求解 160
4.9 本章小結 162
練習題 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 動態(tài)平衡調整法 192
5.4.3 平衡二叉搜索樹插入節(jié)點 198
5.4.4 平衡二叉搜索樹刪除節(jié)點 199
5.4.5 平衡二叉搜索樹的應用:詞頻統(tǒng)計 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ù)的構造方法 218
5.6.3 處理散列沖突的方法 219
5.6.4 散列查找 223
5.7 本章小結 224
練習題 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 錦標賽排序 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 內排序與外排序 246
6.7.2 多路歸并排序 246
6.8 排序的應用:國際大學生程序設計競賽成績排序 248
6.9 本章小結 249
練習題 250
參考文獻