數據結構與算法(Java版)(第5版)

數據結構與算法(Java版)(第5版)

《數據結構與算法(Java版)(第5版)》是由葉核亞所著。由電子工業出版社於2020年8月出版。本書是“十二五”普通高等教育本科國家級規劃教材,也是“十三五”江蘇省高等學校重點教材。本書全面系統地介紹數據結構的基礎理論和算法設計方法,包括線性表、樹、圖等數據結構以及查找和排序算法,採用Java語言以面向對象方法設計並實現了這些數據結構及算法。

基本介紹

  • 書名:數據結構與算法(Java版)(第5版)
  • 作者:葉核亞
  • 出版社:電子工業出版社
  • 出版時間:2020年8月
  • 頁數:358 頁
  • 開本:16 開
  • ISBN:9787121393051
  • 千字數:576
  • 版 次:01-01
簡介,目錄,

簡介

本書是“十二五”普通高等教育本科國家級規劃教材,也是“十三五”江蘇省高等學校重點教材。本書全面系統地介紹數據結構的基礎理論和算法設計方法,包括線性表、樹、圖等數據結構以及查找和排序算法,採用Java語言以面向對象方法設計並實現了這些數據結構及算法。本書精選基礎理論內容,重點突出數據結構設計和算法設計,內容涉及的廣度和深度符合計算機專業本科的培養目標。通過降低理論難度和抽象性、增強實際套用、強化實踐環節等措施,展現“理論基礎厚實,採用面向對象程式設計思想,加強工程套用能力培養”的鮮明特色,從而達到增強學生的理解能力和培養套用能力的教學目標。本書配套教學資源齊全。本書可作為普通高等學校計算機及相近專業本科的數據結構、算法課程教材,也可作為從事計算機軟體開發和工程套用人員的參考書。

目錄

第1章 緒論 1
1.1 數據結構的基本概念 1
1.1.1 為什麼要學習數據結構 1
1.1.2 什麼是數據結構 2
1.1.3 數據類型與抽象數據類型 5
1.2 算法 9
1.2.1 什麼是算法 9
1.2.2 算法分析 11
1.2.3 算法設計與實現 13
習題1 16
實驗1 算法設計與分析 17
第2章 線性表 18
2.1 線性表的定義及抽象數據類型 18
2.2 線性表的順序存儲結構和實現 20
2.2.1 線性表的順序存儲結構 20
2.2.2 順序表類的設計及套用 21
2.3 線性表的存儲和實現 32
2.3.1 線性表的鏈式存儲結構 32
2.3.2 單鍊表 33
2.3.3 循環雙鍊表 43
2.4 排序線性表的存儲和實現 46
2.4.1 比較對象大小的方法 46
2.4.2 排序順序表 48
2.4.3 排序單鍊表 54
2.5 線性表的套用:多項式的存儲和運算 55
2.5.1 一元多項式的存儲和運算 55
2.5.2 二元多項式的存儲和運算 60
習題2 62
實驗2 線性表的基本操作 63
第3章 字元串 65
3.1 字元串抽象數據類型 65
3.2 字元串的順序存儲結構和實現 67
3.2.1 常量字元串 67
3.2.2 變數字元串 75
3.3 字元串的模式匹配 79
3.3.1 Brute-Force模式匹配算法 80
3.3.2 模式匹配套用 82
3.3.3 KMP模式匹配算法 84
習題3 90
實驗3 字元串的基本操作和模式匹配算法 91
第4章 棧、佇列和遞歸 94
4.1 棧 94
4.1.1 棧的定義及抽象數據類型 94
4.1.2 棧的存儲結構和實現 95
4.1.3 棧的套用 97
4.2 佇列 105
4.2.1 佇列的定義及抽象數據類型 105
4.2.2 佇列的存儲結構和實現 106
4.2.3 佇列的套用 111
4.2.4 優先佇列 112
4.3 遞歸 114
習題4 120
實驗4 棧、佇列和遞歸算法 120
第5章 數組和廣義表 124
5.1 數組 124
5.2 特殊矩陣的壓縮存儲 129
5.2.1 三角矩陣、對稱矩陣和對角矩陣的壓縮存儲 129
5.2.2 稀疏矩陣的壓縮存儲 131
5.3 廣義表 141
5.3.1 廣義表定義及抽象數據類型 141
5.3.2 廣義表的存儲結構和實現 143
習題5 148
實驗5 矩陣和廣義表的存儲和運算 149
第6章 二叉樹 151
6.1 二叉樹概述 151
6.1.1 二叉樹的定義、性質及抽象數據類型 151
6.1.2 二叉樹的存儲結構 154
6.1.3 二叉樹的二叉鍊表實現 155
6.2 樹 169
6.2.1 樹的定義及抽象數據類型 169
6.2.2 樹的存儲結構 171
6.2.3 樹/森林的父母孩子兄弟鍊表實現 172
6.3 二叉樹套用 176
6.3.1 Huffman樹 176
6.3.2 表達式二叉樹 185
習題6 189
實驗6 二叉樹和樹的基本操作 191
第7章 圖 194
7.1 圖的概念和抽象數據類型 194
7.2 圖的存儲結構和實現 201
7.2.1 抽象圖類,存儲頂點集合 201
7.2.2 圖的鄰接矩陣存儲結構和實現 202
7.2.3 圖的鄰接表存儲結構和實現 207
7.2.4 圖的鄰接多重表存儲結構 212
7.3 圖的遍歷 212
7.3.1 圖的深度優先遍歷 213
7.3.2 圖的廣度優先遍歷 216
7.4 最小生成樹 218
7.5 最短路徑 222
7.5.1 單源最短路徑 223
7.5.2** 每對頂點間的最短路徑 227
習題7 230
實驗7 圖的存儲結構和操作算法 231
第8章 查找 234
8.1 查找基礎 234
8.1.1 查找概述 234
8.1.2 二分法查找 237
8.2 索引 239
8.2.1 分塊與索引 239
8.2.2 靜態索引 241
8.2.3 動態索引 245
8.3 散列表 246
8.4 二叉排序樹和平衡二叉樹 251
8.4.1 二叉排序樹 251
8.4.2 二叉樹採用三叉鍊表存儲結構 258
8.4.3** 平衡二叉樹 259
8.5 映射 262
8.5.1 映射的定義及接口 262
8.5.2 散列映射 264
8.5.3 樹映射 266
習題8 269
實驗8 集合和映射的數據結構設計和查找算法設計 270
第9章 排序 274
9.1 插入排序 274
9.1.1 直接插入排序 274
9.1.2 希爾排序 276
9.2 交換排序 278
9.2.1 冒泡排序 278
9.2.2 快速排序 280
9.3 選擇排序 282
9.3.1 直接選擇排序 282
9.3.2 堆排序 283
9.4 歸併排序 286
9.5 線性表的排序算法 288
9.5.1 順序表的排序算法 289
9.5.2 單鍊表的排序算法 289
9.5.3 循環雙鍊表的排序算法 292
習題9 293
實驗9 排序算法設計 294
第10章 綜合套用設計 296
10.1 Java集合框架 296
10.1.1 Arrays數組類 296
10.1.2 集合 297
10.1.3 映射 304
10.2 實現疊代器 305
10.2.1 設計基於疊代器的通用操作 305
10.2.2 提供疊代器的類 307
10.3 算法設計策略 309
10.3.1 分治法 309
10.3.2 動態規劃法 311
10.3.3 貪心法 313
10.3.4 回溯法 323
10.4 課程設計的目的、要求和選題 337
附錄A ASCII字元與Unicode值 340
附錄B Java關鍵字 341
附錄C Java基本數據類型 342
附錄D Java運算符及其優先權 343
附錄E Java類庫(部分) 344
E.1 java.lang語言包 344
E.2 java.util實用包 347
附錄F MyEclipse常用選單命令 349
參考文獻 350

相關詞條

熱門詞條

聯絡我們