《數(shù)據(jù)結構(第3版)(微課版)》是高職高專立體化教材,可供計算機類相關專業(yè)教學使用。 《數(shù)據(jù)結構(第3版)(微課版)》內(nèi)容共分9章,系統(tǒng)地介紹了各種類型的數(shù)據(jù)結構,從應用角度詳細介紹了不同結構的實現(xiàn)和排序及查找技術,并針對線性表、棧、隊列、串、數(shù)組、二叉樹、樹、圖等從物理角度講解了每種結構的不同存儲特點,以及相應操作的實現(xiàn),并對結構特點進行應用上的分析。 《數(shù)據(jù)結構(第3版)(微課版)》理論與實際相結合,配有相關的例題、習題、實驗,使抽象的內(nèi)容更易理解。 《數(shù)據(jù)結構(第3版)(微課版)》各章均配有單元測試及參考答案,用于檢測知識點的學習情況。各章實驗涵蓋了不同數(shù)據(jù)結構的練習,且所有的實驗內(nèi)容均通過調(diào)試。每章還有各種類型的練習題。
《數(shù)據(jù)結構(第3版)(微課版)》為遼寧省高職高專精品課程!稊(shù)據(jù)結構(第3版)(微課版)》系統(tǒng)地介紹了各種類型的數(shù)據(jù)結構,主要從算法的角度詳細介紹了不同結構上算法的實現(xiàn)和排序及查找技術,并針對線性表、棧、隊列、串、數(shù)組、二叉樹、樹、圖等從物理角度講解了每種邏輯結構的不同存儲結構,以及相應操作的實現(xiàn),還對結構特點進行了分析。本書理論與實際結合,配有相關的例題、習題、實驗,使抽象的內(nèi)容更易理解。書中各章的實驗均有實現(xiàn)代碼,且已調(diào)試通過。每章都有類型練習題,各習題都有電子答案!
在許多程序設計領域,數(shù)據(jù)結構的選擇是一個基本的考慮因素。許多大型系統(tǒng)的構造經(jīng)驗表明,系統(tǒng)實現(xiàn)的困難程度和系統(tǒng)構造的質(zhì)量都依賴于是否選擇了的數(shù)據(jù)結構。
數(shù)據(jù)結構是一門研究如何存儲和組織數(shù)據(jù)以及如何操作數(shù)據(jù)的課程。數(shù)據(jù)結構是高校計算機及相關專業(yè)重要的專業(yè)基礎課程,是架構軟件類課程的核心,該課程的學習對于從事程序設計工作有著重要的作用。
數(shù)據(jù)結構是研究數(shù)據(jù)的組織、數(shù)據(jù)的存儲和數(shù)據(jù)的運算的,內(nèi)容包括數(shù)據(jù)的邏輯結構、存儲結構及相應的各種操作算法。從邏輯角度看,基本的數(shù)據(jù)結構分為四類,分別為集合、線性結構、樹和圖;從計算機存儲的角度看,基本的數(shù)據(jù)存儲可分為順序結構和非順序結構(或稱鏈式結構)。對每一種邏輯結構,可以根據(jù)實際需要采用順序、鏈式存儲結構將數(shù)據(jù)存放到存儲單元中,也可以采用上述兩種存儲結構相結合的方式。當數(shù)據(jù)的邏輯結構和存儲結構確定后,就可以根據(jù)數(shù)據(jù)的某些操作要求編寫算法,然后寫出程序,實現(xiàn)對數(shù)據(jù)的操作。
本書內(nèi)容共9章,包括緒論、線性表、棧和隊列、串、數(shù)組、樹與二叉樹、圖、查找表、排序,算法描述語言為類C語言。編寫時對每一種數(shù)據(jù)結構的展開順序如下:邏輯結構、存儲結構、算法的實現(xiàn)、應用。這個順序可以讓學習者明確邏輯結構,通過不同存儲結構上實現(xiàn)的算法效率的比較,認識算法的物理結構,后學會數(shù)據(jù)結構在實際問題上的應用。
學習數(shù)據(jù)結構,要學會問題求解方法、程序設計方法及一些典型的數(shù)據(jù)結構算法;學會分析數(shù)據(jù)對象的特征,掌握數(shù)據(jù)組織的方法和在計算機中的表示方法,為數(shù)據(jù)選擇適當?shù)倪壿嫿Y構、存儲結構以及相應的處理算法;初步掌握算法的時間、空間復雜度的分析技巧,培養(yǎng)良好的程序設計風格以及獲得進行復雜程序設計的技能。本書列舉了一些實例進行算法分析,以將抽象的內(nèi)容展現(xiàn)出來。
本書第三版的整體目錄結構基本不變,內(nèi)容的修改力求更加通俗易懂,編寫和組織上更加合理。書中增加了單元測試部分,測試題目用于檢驗單元知識點的學習情況,學習者可以通過測試找到學習中的薄弱點。教學資源中配有單元測試的參考答案,部分習題的解答,考試樣卷等,這些都會給學習者提供更大的方便。本書內(nèi)容配有講解視頻,可以通過電子鏈接在開課學期觀看。
本書參考學時為60學時,其中含48學時的理論,12學時的實驗。
本書作者多年從事計算機程序設計、數(shù)據(jù)結構以及計算機軟件課程教學工作和計算機軟件開發(fā)工作,有實踐和教學經(jīng)驗。主編是沈陽理工大學李筠、姜學軍,副主編是苑擎飏、李芳、虞闖,參編有周越、王紅、楊松、王艷梅、房明、王展紅、馬永軒、徐志勇、張文波、姚旭東、宋凱等。
由于作者水平有限,書中難免存在錯誤之處,歡迎讀者提出寶貴意見。
編 者
李筠,教授,軟件工程碩士,畢業(yè)于中國科技大學;沈陽理工大學高等職業(yè)技術學院軟件工程學術帶頭人。從事計算機教學與科研近十五年時間。主持遼寧省數(shù)據(jù)結構精品課程建設,同時本書是遼寧省專升本指定教材。
第1章 緒論 1
1.1 數(shù)據(jù)結構簡介 1
1.2 基本術語 4
1.3 數(shù)據(jù)的存儲結構 8
1.4 算法及算法分析 10
1.4.1 算法 10
1.4.2 算法分析 15
1.5 數(shù)據(jù)結構課程的地位 16
單元測試 17
習題 18
第2章 線性表 20
2.1 線性表的邏輯結構 20
2.2 線性表的順序存儲結構 24
2.3 線性表的鏈式存儲結構 30
2.3.1 線性單鏈表 30
2.3.2 靜態(tài)單鏈表 38
2.3.3 循環(huán)鏈表 41
2.3.4 雙向鏈表 42
2.4 線性表的應用 47
單元測試 56
習題 57
實驗 58
第3章 棧和隊列 66
3.1 棧 66
3.1.1 棧的意義及抽象數(shù)據(jù)類型 66
3.1.2 棧操作的實現(xiàn) 67
3.2 隊列 72
3.2.1 隊列及其抽象數(shù)據(jù)類型 72
3.2.2 隊列的鏈式存儲結構 73
3.2.3 隊列的順序存儲結構循環(huán)
隊列 74
3.3 棧和隊列的應用 77
單元測試 99
習題 100
實驗 101
第4章 串 107
4.1 串的基本概念和存儲結構 107
4.1.1 串的基本概念 107
4.1.2 串的存儲結構 109
4.2 串基本操作的實現(xiàn) 111
4.3 模式匹配 115
4.3.1 子串定位函數(shù) 115
4.3.2 模式匹配的一種改進算法 116
4.4 串操作應用 121
單元測試 125
習題 126
實驗 127
第5章 數(shù)組 130
5.1 數(shù)組的定義和運算 130
5.2 數(shù)組的順序存儲結構 132
5.3 矩陣的壓縮存儲 134
5.3.1 特殊矩陣 134
5.3.2 稀疏矩陣 136
5.3.3 稀疏矩陣操作實例 139
單元測試 144
習題 144
實驗 145
第6章 樹與二叉樹 149
6.1 樹的邏輯結構和基本操作 149
6.2 二叉樹 152
6.2.1 二叉樹的定義及邏輯結構 152
6.2.2 二叉樹的性質(zhì) 153
6.2.3 二叉樹的存儲結構 155
6.3 遍歷二叉樹和線索二叉樹 157
6.3.1 遍歷二叉樹 157
6.3.2 線索二叉樹 166
6.4 樹和森林 168
6.4.1 樹的存儲結構 168
6.4.2 森林與二叉樹的轉(zhuǎn)換 170
6.4.3 樹的遍歷 172
6.5 哈夫曼樹及其應用 172
6.5.1 二叉樹(哈夫曼樹) 172
6.5.2 哈夫曼編碼 175
單元測試 179
習題 179
實驗 181
第7章 圖 189
7.1 圖的定義與基本術語 189
7.1.1 圖的定義 189
7.1.2 圖的基本術語 190
7.2 圖的存儲 193
7.2.1 鄰接矩陣 193
7.2.2 鄰接表 196
7.2.3 十字鏈表 199
7.2.4 鄰接多重表 200
7.3 圖的遍歷 203
7.3.1 深度優(yōu)先搜索 203
7.3.2 廣度優(yōu)先搜索 206
7.4 圖的連通性 208
7.4.1 無向圖的連通分量
與生成樹 208
7.4.2 小生成樹 210
7.5 有向無環(huán)圖及應用 221
7.5.1 拓撲排序(topological sort) 221
7.5.2 關鍵路徑 224
7.6 短路徑 230
單元測試 236
習題 237
實驗 238
第8章 查找 243
8.1 查找的基本概念 243
8.2 基于線性表查找 244
8.2.1 順序查找 244
8.2.2 折半查找 246
8.2.3 分塊查找 249
8.3 基于樹的查找 253
8.3.1 二叉排序樹 253
8.3.2 平衡二叉排序樹 261
8.3.3 B樹 268
8.3.4 靜態(tài)樹表的查找 277
8.4 哈希表 281
8.4.1 哈希表的概念 281
8.4.2 哈希函數(shù)的構造方法 282
8.4.3 處理沖突的方法 286
8.4.4 哈希表的實現(xiàn) 288
8.4.5 哈希表的查找分析 291
單元測試 292
習題 293
實驗 294
第9章 排序 301
9.1 概述 301
9.2 插入排序 303
9.2.1 直接插入排序 303
9.2.2 折半插入排序 307
9.2.3 二路插入排序 307
9.2.4 表插入排序 309
9.2.5 希爾排序 311
9.3 交換排序 314
9.3.1 冒泡排序 315
9.3.2 快速排序 316
9.4 選擇排序 319
9.4.1 簡單選擇排序 319
9.4.2 堆排序 320
9.5 歸并排序 325
9.6 基數(shù)排序 329
9.6.1 多關鍵字排序 329
9.6.2 基數(shù)排序 330
9.7 外部排序 333
9.7.1 二路歸并排序 333
9.7.2 多路歸并排序 334
9.7.3 初始順串的生成 338
單元測試 339
習題 340
實驗 342
參考文獻 348