數據結構 (C語言) 第2版 慕課版

名師團隊打造,配有精美的慕課、PPT等教學資源。
分享 推薦 0 收藏 5 閱讀 601
王海艷 (作者)

關于本書的內容有任何問題,請聯系 李召

1.建立立體化的教材資源。通過慕課的形式全面闡述數據結構課程中的重點、難點,涵蓋線性表、樹、圖等所有章節,形成一套完整的慕課教材資源。
2.加強實踐案例。教材通過對實際案例地分析,強調對理論知識的應用,以體現教材知識點的實踐價值和應用意義。
3.教材編寫團隊優秀專業。有長期從事教學與科研工作的教授專家,也有從事過工程開發的教學人員,團隊的理論功底扎實,實踐經驗豐富。

內容摘要

本書將現代信息技術融入教學,突破了傳統教學模式,通過慕課的形式全面闡述數據結構課程中的重點、 難點,涵蓋線性表、樹、集合、圖等內容,形成一套完整的包含知識點、習題、實驗、慕課視頻等的立體化 教學資源,幫助學生進行自主式和研究性學習,為教師的傳統課堂教學提供輔助。 本書系統地講解了數據結構的相關知識。全書共有 10 章,講述了線性表、堆棧、隊列、數組、樹、查 找、圖、排序等內容,還安排了綜合實驗。本書重視算法及其實踐性,書中算法都有完整的 C 語言程序,程 序代碼注釋詳細。為了讓讀者能夠及時地檢驗學習效果、把握學習進度,每章都附有豐富的習題。 本書可作為計算機、電子信息、管理信息系統、電子商務、教育技術等相關專業數據結構課程的本科教 材,也可以作為計算機軟件工程技術人員的參考資料。

目錄

第1章 緒論 1
1.1 數據結構起源 1
1.2 基本概念和術語 1
1.2.1 基本概念 1
1.2.2 數據結構 2
1.3 抽象數據類型 4
1.4 算法和算法分析 5
1.4.1 算法 5
1.4.2 算法的時間復雜度 5
1.4.3 最好、最壞和平均時間復雜度 6
1.4.4 算法的空間復雜度 7
1.5 本章小結 7
習題 7
第2章 線性表 9
2.1 線性表定義 9
2.2 線性表的順序存儲結構和實現 10
2.2.1 線性表的順序存儲結構 10
2.2.2 順序表基本運算的實現 11
2.3 線性表的鏈式存儲結構和實現 14
2.3.1 單鏈表的定義和表示 15
2.3.2 單鏈表基本運算的實現 15
2.3.3 帶表頭結點的單鏈表 20
2.3.4 單循環鏈表 22
2.3.5 雙向鏈表 22
2.4 順序表與鏈表的比較 23
2.5 線性表的應用 24
2.6 本章小結 27
習題 27
第3章 堆棧和隊列 29
3.1 堆棧 29
3.1.1 堆棧ADT 29
3.1.2 堆棧的順序表示 29
3.1.3 堆棧的鏈接表示 31
3.2 隊列 31
3.2.1 隊列ADT 31
3.2.2 隊列的順序表示 32
3.2.3 隊列的鏈接表示 35
3.3 表達式計算 35
3.3.1 中綴表達式 35
3.3.2 后綴表達式及其求值方法 35
3.3.3* 中綴表達式轉換為后綴
表達式 40
3.4 遞歸 44
3.4.1 遞歸的概念 44
3.4.2 遞歸的實現 45
3.5 本章小結 46
習題 47
第4章 數組和字符串 48
4.1 數組 48
4.1.1 一維數組 48
4.1.2 二維數組 49
4.1.3 多維數組 50
4.2 數組的抽象數據類型 50
4.3 特殊矩陣 53
4.3.1 對稱矩陣 53
4.3.2 三角矩陣 54
4.4 稀疏矩陣 55
4.4.1 稀疏矩陣的抽象數據類型 55
4.4.2 稀疏矩陣的轉置算法 57
4.5 字符串 60
4.5.1 字符串的抽象數據類型 60
4.5.2 簡單字符串匹配算法 61
4.5.3 改進的字符串匹配算法 64
4.6 本章小結 68
習題 68
第5章 樹和二叉樹 70
5.1 樹 70
5.1.1 樹的定義 70
5.1.2 基本術語 71
5.2 二叉樹 72
5.2.1 二叉樹的定義 72
5.2.2 二叉樹的性質 73
5.2.3 二叉樹ADT 74
5.2.4 二叉樹的存儲表示 75
5.2.5 二叉樹的存儲實現和基本運算 76
5.3 二叉樹的遍歷 78
5.3.1 二叉樹遍歷的遞歸算法 78
5.3.2 二叉樹遍歷的應用實例 81
5.3.3 二叉樹遍歷的非遞歸算法 83
5.3.4 線索二叉樹的基本概念和構造 85
5.4 樹和森林 86
5.4.1 森林與二叉樹的轉換 86
5.4.2 樹和森林的存儲表示 88
5.4.3 樹和森林的遍歷 91
5.5 堆和優先權隊列 92
5.5.1 堆 92
5.5.2 優先權隊列 95
5.6 哈夫曼樹和哈夫曼編碼 99
5.6.1 樹的路徑長度 100
5.6.2 哈夫曼樹和哈夫曼算法 102
5.6.3 構造哈夫曼樹 103
5.6.4 哈夫曼編碼 104
5.7 本章小結 105
習題 105
第6章 集合和搜索 108
6.1 集合的表示 108
6.1.1 集合的基本概念 108
6.1.2 動態集ADT 109
6.1.3 集合的表示 109
6.2 順序搜索 110
6.2.1 無序表的順序搜索 110
6.2.2 有序表的順序搜索 110
6.3 對半搜索 111
6.3.1 對半搜索方法 111
6.3.2 二叉判定樹 114
6.4 本章小結 115
習題 115
第7章 搜索樹 116
7.1 二叉搜索樹 116
7.1.1 二叉搜索樹的定義 116
7.1.2 二叉搜索樹的搜索 117
7.1.3 二叉搜索樹的插入 118
7.1.4 二叉搜索樹的刪除 119
7.1.5 二叉搜索樹的高度 121
7.2* 二叉平衡樹 122
7.2.1 二叉平衡樹的定義 122
7.2.2 二叉平衡樹的平衡調整
方法 122
7.2.3 二叉平衡樹的插入 126
7.2.4 二叉平衡樹的高度 127
7.3 m叉搜索樹 128
7.3.1 m叉搜索樹的定義 128
7.3.2 m叉搜索樹的高度 129
7.4 B?樹 130
7.4.1 B?樹的定義 130
7.4.2 B?樹的高度 131
7.4.3 B?樹的搜索 131
7.4.4 B?樹的插入 132
7.4.5 B?樹的刪除 133
7.5 本章小結 136
習題 136
第8章 散列表 138
8.1 散列技術簡介 138
8.2 散列函數 139
8.3 散列沖突處理 141
8.3.1 拉鏈法 141
8.3.2 開地址法 142
8.3.3 性能分析 149
8.4 本章小結 149
習題 150
第9章 圖 151
9.1 圖的基本概念 151
9.1.1 圖的定義 151
9.1.2 圖的基本術語 152
9.1.3 圖的類型定義 154
9.2 圖的存儲結構 154
9.2.1 鄰接矩陣表示法 154
9.2.2 鄰接矩陣的實現 155
9.2.3 鄰接表表示法 158
9.2.4 鄰接表的實現 158
9.3 圖的遍歷 161
9.3.1 深度優先遍歷 162
9.3.2 寬度優先遍歷 163
9.4 拓撲排序 165
9.4.1 AOV網 165
9.4.2 AOV網的拓撲排序 166
9.5 關鍵路徑 167
9.5.1 AOE網 167
9.5.2 AOE網的關鍵路徑 168
9.6 最小代價生成樹 171
9.6.1 最小代價生成樹的基本概念 171
9.6.2 普里姆算法 171
9.6.3 克魯斯卡爾算法 173
9.7 單源最短路徑 176
9.7.1 最短路徑問題 176
9.7.2 單源最短路徑問題 176
9.8 所有頂點之間的最短路徑 179
9.9 本章小結 181
習題 182
第10章 排序 185
10.1 排序的基本概念 185
10.2 簡單排序算法 186
10.2.1 簡單選擇排序 186
10.2.2 直接插入排序 189
10.2.3 冒泡排序 191
10.3 快速排序算法 194
10.4 兩路合并排序算法 198
10.5 堆排序算法 201
10.6 外排序 204
10.6.1 預處理 204
10.6.2 多路合并 208
10.6.3 最佳合并樹 211
10.6.4 完整的外排序過程 213
10.7 本章小結 213
習題 213
附錄1 綜合實驗 215
附錄2 配套慕課使用說明 220

讀者評論

趕緊搶沙發哦!

我要評論

作者介紹

作者是江蘇省精品課程、校骨干課程的課程負責人,她2013 年入選江蘇省“六大人才高峰”資助,2012 年江蘇省第四期"333 高層次人才培養工程"培養對象(第三層次),2006 年度江蘇?。⑶嗨{工程"培養對象,2015年獲得第二屆全國高校微課教學比賽三等獎,全省高校微課教學比賽(本科組)一等獎,2013年獲省高等學校優秀多媒體教學課件競賽一等獎。

相關圖書

上海退休后如何赚钱