數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計
定 價:79.8 元
- 作者:王新宇
- 出版時間:2023/1/1
- ISBN:9787121449789
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP301.6
- 頁碼:
- 紙張:
- 版次:
- 開本:
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計相關(guān)課程是計算機專業(yè)教學(xué)中的核心課程,也是各類程序設(shè)計競賽及互聯(lián)網(wǎng)公司與軟件企業(yè)招聘考查的重要方面。本書按照"數(shù)據(jù)結(jié)構(gòu)—算法設(shè)計”的路線系統(tǒng)地介紹數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計的主要內(nèi)容。其中,數(shù)據(jù)結(jié)構(gòu)部分包括線性表、棧、隊列、字符串、數(shù)組、廣義表、樹和圖,以及兩種常用的數(shù)據(jù)操作——查找和排序;算法設(shè)計部分包括遞歸與分治法、動態(tài)規(guī)劃、貪心法、回溯法和分支限界法;最后以"快遞超市信息管理系統(tǒng)”作為案例介紹面向?qū)嶋H應(yīng)用開展分析、設(shè)計、編碼與測試的完整過程。 本書融入了思政元素,注重培養(yǎng)學(xué)習(xí)者解決問題的思維能力,擁有豐富且形式多樣的習(xí)題,能夠同時滿足數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計的教學(xué)和學(xué)習(xí)需求。 本書可以作為高等院校計算機科學(xué)與技術(shù)、軟件工程、信息安全、智能科學(xué)與技術(shù)、物聯(lián)網(wǎng)工程等計算機相關(guān)專業(yè)的本科生教材,也可以作為從事計算機應(yīng)用開發(fā)的工程技術(shù)人員的參考用書。
王新宇,江蘇大學(xué)計算機科學(xué)與通信工程學(xué)院,副教授。著作出版及論文發(fā)表情況:論著:(1)計算機視覺概論與操作實踐,2019年12月,江蘇鳳凰科學(xué)技術(shù)出版社;(2)模式識別基礎(chǔ)理論及其計算機視覺應(yīng)用,2020年7月,西安電子科技大學(xué)出版社;主要論文:(1)A Zero-Watermarking Scheme for Three-Dimensional Mesh Models Based on Multi-Features, Multimedia Tools and Applications,2019,78卷第19期,SCI;(2)構(gòu)造頂點分布特征的三維模型數(shù)字水印算法,計算機輔助設(shè)計與圖形學(xué)學(xué)報, 2014,26卷第2期,EI;(3)數(shù)據(jù)結(jié)構(gòu)課程思政教學(xué)設(shè)計與實踐,計算機教育,2021,第1期。主要教學(xué)經(jīng)歷:C程序設(shè)計,2001年-2008年;C++程序設(shè)計,2006年-2010年;計算方法;2003年-至今;計算機圖形學(xué),2002年-至今;數(shù)據(jù)結(jié)構(gòu),2011年-至今。承擔(dān)的主要教研項目:面向新工科的多維融合、多方協(xié)同的計算機專業(yè)人才培養(yǎng)研究與實踐,江蘇大學(xué)2017年高等教育教改研究課題(2017JGYB015)。承擔(dān)的主要科研項目及獲獎情況:主要科研項目:(1)基于模型自適應(yīng)修正和協(xié)同決策的說話人魯棒語音情感識別方法研究,國家自然科學(xué)基金(61003183);(2)面向版權(quán)保護的三維模型魯棒數(shù)字水印算法研究,高等學(xué)校博士學(xué)科點專項科研基金(20113227110021);(3)三維模型魯棒數(shù)字水印算法研究,江蘇省研究生科研創(chuàng)新計劃項目(CX10B_273Z);科研獲獎:音視頻內(nèi)容分析及其在行為監(jiān)控與展現(xiàn)中的應(yīng)用,江蘇省科學(xué)技術(shù)進步三等獎,2018年。
第1章 緒論1
1.1 數(shù)據(jù)結(jié)構(gòu)的研究內(nèi)容1
1.2 數(shù)據(jù)結(jié)構(gòu)的概念4
1.2.1 基本術(shù)語4
1.2.2 數(shù)據(jù)結(jié)構(gòu)的三個要素5
1.3 算法的定義和評價7
1.3.1 算法的定義7
1.3.2 算法的評價7
1.4 算法性能分析8
1.4.1 算法的時間復(fù)雜度分析8
1.4.2 算法的空間復(fù)雜度分析11
1.5 算法的設(shè)計與描述11
1.5.1 算法設(shè)計的一般步驟11
1.5.2 算法設(shè)計的基本策略12
1.5.3 算法的描述13
1.6 本章小結(jié)14
習(xí)題一15
第2章 線性表18
2.1 線性表的定義及基本操作18
2.2 線性表的順序表示和實現(xiàn)19
2.2.1 順序表的定義19
2.2.2 順序表的類模板定義20
2.2.3 順序表基本操作的實現(xiàn)20
2.3 線性表的鏈式表示和實現(xiàn)25
2.3.1 單鏈表25
2.3.2 單循環(huán)鏈表32
2.3.3 雙向循環(huán)鏈表33
2.3.4 靜態(tài)鏈表37
2.4 線性表的應(yīng)用41
2.5 本章小結(jié)45
習(xí)題二46
第3章 棧和隊列49
3.1 棧50
3.1.1 棧的定義50
3.1.2 順序棧51
3.1.3 鏈棧54
3.2 棧的應(yīng)用58
3.3 隊列65
3.3.1 隊列的定義66
3.3.2 循環(huán)隊列66
3.3.3 鏈隊列72
3.4 隊列的應(yīng)用76
3.5 本章小結(jié)82
習(xí)題三82
第4章 字符串、數(shù)組和廣義表86
4.1 字符串87
4.1.1 字符串的定義87
4.1.2 C++字符串操作88
4.1.3 模式匹配88
4.2 數(shù)組93
4.2.1 數(shù)組的定義93
4.2.2 數(shù)組的順序存儲結(jié)構(gòu)93
4.3 特殊矩陣的壓縮存儲95
4.3.1 對稱矩陣和三角矩陣95
4.3.2 帶狀矩陣96
4.3.3 稀疏矩陣97
4.4 廣義表101
4.5 本章小結(jié)101
習(xí)題四102
第5章 樹105
5.1 樹的定義與術(shù)語106
5.1.1 樹的定義106
5.1.2 樹的術(shù)語107
5.1.3 樹的表示方法107
5.1.4 樹的基本操作108
5.2 二叉樹108
5.2.1 二叉樹的定義108
5.2.2 二叉樹的性質(zhì)109
5.2.3 二叉樹的基本操作110
5.3 二叉樹的存儲結(jié)構(gòu)111
5.3.1 二叉樹的順序存儲結(jié)構(gòu)111
5.3.2 二叉樹的鏈式存儲結(jié)構(gòu)112
5.3.3 二叉樹的二叉鏈表類模板
定義112
5.4 二叉樹的遍歷115
5.4.1 先序遍歷116
5.4.2 中序遍歷116
5.4.3 后序遍歷117
5.4.4 層次遍歷117
5.4.5 基于遍歷的操作118
5.5 線索二叉樹121
5.5.1 線索二叉樹的定義121
5.5.2 中序線索二叉樹類模板定義122
5.6 二叉樹的應(yīng)用126
5.6.1 堆127
5.6.2 哈夫曼樹133
5.7 樹和森林136
5.7.1 樹的存儲結(jié)構(gòu)136
5.7.2 樹、森林和二叉樹的轉(zhuǎn)換138
5.7.3 樹的遍歷141
5.7.4 森林的遍歷141
5.8 本章小結(jié)142
習(xí)題五142
第6章 圖146
6.1 圖的定義與術(shù)語146
6.1.1 圖的定義146
6.1.2 圖的術(shù)語147
6.1.3 圖的基本操作149
6.2 圖的存儲結(jié)構(gòu)149
6.2.1 鄰接矩陣150
6.2.2 鄰接表156
6.2.3 鄰接多重表164
6.2.4 十字鏈表165
6.3 圖的遍歷166
6.3.1 深度優(yōu)先遍歷166
6.3.2 廣度優(yōu)先遍歷168
6.4 圖的應(yīng)用170
6.4.1 最小生成樹170
6.4.2 最短路徑173
6.4.3 活動網(wǎng)絡(luò)177
6.5 本章小結(jié)184
習(xí)題六185
第7章 查找189
7.1 查找的基本概念189
7.2 線性表的查找191
7.2.1 順序查找191
7.2.2 折半查找193
7.2.3 索引查找195
7.3 樹表查找198
7.3.1 二叉排序樹198
7.3.2 平衡二叉樹206
7.3.3 B-樹與B+樹213
7.4 散列查找218
7.4.1 散列表的概念218
7.4.2 散列函數(shù)的構(gòu)造方法219
7.4.3 解決沖突的方法222
7.4.4 散列查找及其性能分析224
7.5 本章小結(jié)227
習(xí)題七228
第8章 排序231
8.1 排序的基礎(chǔ)知識232
8.2 交換排序233
8.2.1 冒泡排序233
8.2.2 快速排序235
8.3 插入排序237
8.3.1 直接插入排序237
8.3.2 折半插入排序239
8.3.3 希爾排序240
8.4 選擇排序241
8.4.1 簡單選擇排序242
8.4.2 堆排序243
8.5 歸并排序245
8.5.1 兩路歸并算法245
8.5.2 兩路歸并排序247
8.6 基數(shù)排序248
8.6.1 多關(guān)鍵字排序248
8.6.2 鏈式基數(shù)排序249
8.7 排序方法的比較252
8.8 本章小結(jié)253
習(xí)題八253
第9章 遞歸與分治法256
9.1 遞歸程序設(shè)計256
9.1.1 遞歸的定義256
9.1.2 遞歸的適用條件257
9.1.3 遞歸的程序設(shè)計259
9.1.4 遞歸的優(yōu)缺點264
9.2 分治法265
9.2.1 分治法的基本思想265
9.2.2 分治法的適用條件266
9.2.3 分治法的設(shè)計步驟266
9.3 分治法的應(yīng)用實例267
9.3.1 選擇問題267
9.3.2 排序問題272
9.3.3 大整數(shù)的乘法273
9.3.4 Strassen矩陣乘法276
9.3.5 棋盤覆蓋問題278
9.3.6 循環(huán)賽日程安排281
9.4 本章小結(jié)284
習(xí)題九284
第10章 動態(tài)規(guī)劃286
10.1 動態(tài)規(guī)劃概述286
10.1.1 動態(tài)規(guī)劃的基本思想286
10.1.2 動態(tài)規(guī)劃的適用條件287
10.1.3 動態(tài)規(guī)劃的設(shè)計步驟289
10.2 動態(tài)規(guī)劃的應(yīng)用實例291
10.2.1 矩陣連乘問題291
10.2.2 投資問題295
10.2.3 0-1背包問題299
10.2.4 最長公共子序列問題303
10.3 本章小結(jié)308
習(xí)題十308
第11章 貪心法310
11.1 貪心法概述310
11.1.1 貪心法的基本思想310
11.1.2 貪心法的適用條件311
11.1.3 貪心法和動態(tài)規(guī)劃的區(qū)別312
11.1.4 貪心法的設(shè)計算法的步驟312
11.1.5 貪心算法的正確性證明313
11.2 貪心法的應(yīng)用實例313
11.2.1 活動安排問題313
11.2.2 最優(yōu)裝載問題316
11.2.3 背包問題318
11.3 本章小結(jié)321
習(xí)題十一321
第12章 回溯法323
12.1 回溯法概述323
12.1.1 問題的解空間323
12.1.2 回溯法的基本思想325
12.1.3 回溯法的設(shè)計步驟與算法
框架327
12.1.4 子集樹與排列樹328
12.1.5 回溯法的適用條件330
12.2 回溯法的應(yīng)用實例331
12.2.1 0-1背包問題331
12.2.2 裝載問題335
12.2.3 n皇后問題339
12.2.4 旅行商問題342
12.3 本章小結(jié)346
習(xí)題十二346
第13章 分支限界法348
13.1 分支限界法概述348
13.1.1 分支限界法的基本思想348
13.1.2 分支限界法的三個關(guān)鍵
問題349
13.1.3 分支限界法的設(shè)計步驟350
13.1.4 分支限界法的時間性能350
13.1.5 分支限界法的適用條件350
13.2 分支限界法的應(yīng)用實例351
13.2.1 0-1背包問題351
13.2.2 旅行商問題358
13.2.3 流水作業(yè)調(diào)度360
13.2.4 單源點最短路徑問題365
13.3 本章小結(jié)367
習(xí)題十三367
第14章 快遞超市信息管理系統(tǒng)369
14.1 問題描述369
14.2 需求分析370
14.3 概要設(shè)計370
14.3.1 模塊設(shè)計370
14.3.2 界面設(shè)計371
14.3.3 類和數(shù)據(jù)結(jié)構(gòu)設(shè)計371
14.4 詳細設(shè)計373
14.4.1 類的詳細設(shè)計373
14.4.2 系統(tǒng)功能的詳細設(shè)計376
14.5 編碼377
14.6 測試386
14.7 本章小結(jié)391
習(xí)題十四391
參考文獻392