數據結構——C語言(微課版)
-
【作 者】主編 梁海英
【I S B N 】978-7-5170-8536-2
【責任編輯】周益丹
【適用讀者群】本專通用
【出版時間】2020-05-27
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】252
【千字數】388
【印 張】15.75
【定 價】¥42
【叢 書】普通高等教育計算機類專業教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書在傳授學生數據結構設計和算法設計方法的同時,也注重培養學生分析問題、解決問題和總結問題的能力,更重要的是培養學生對專業的興趣,從而樹立創新意識。本書在結構編排上按照“先理論、后應用、理論與應用相結合”的原則,兼顧學科的廣度和深度,力求適用面廣。
本書按照數據的邏輯結構、物理結構及常用操作的體系結構進行講解,首先闡述線性表、棧、隊列、廣義表等典型線性結構在順序存儲和鏈式存儲下常用操作的實現方法;然后闡述樹、二叉樹、圖等典型非線性結構在順序存儲和鏈式存儲下常用操作的實現方法;最后闡述查找和排序的各種方法的實現。全書教學目標明確,注重理論與實踐相結合;教學內容精準,注重文字與圖表相結合;教學模式完善,注重課件與微課視頻相結合。本書每章均配有實戰練習及大量習題,且全部案例代碼已在Visual C++ 6.0環境中成功運行。
內容精準、結構合理、深入淺出
精選案例、步驟清晰、圖文并茂
資源豐富、微課視頻、程序源碼
“數據結構”是計算機類、電子信息類及相關專業的核心課程,是專業技術基礎課,在整個課程體系中處于承上啟下的核心位置:一方面擴展和深化學生在離散數學、程序設計語言等課程中學到的基本技術和方法;另一方面為學生進一步學習操作系統、編譯原理、數據庫等專業知識奠定堅實的理論與實踐基礎。
目前比較權威的“數據結構”教材大多是考研指定教材,難度比較大,不太適合應用型本科和專科學生使用。為此,我們編寫了本書,通過引入大量案例,將復雜的理論問題直觀化,采取案例驅動式教學,更有利于各個層次的學生接受。
本書在教授學生數據結構設計和算法設計的同時,還培養了學生的邏輯推理能力,增強學生分析問題、解決問題和總結問題的能力,更重要的是培養學生的專業興趣,樹立創新意識。本書在內容選取上符合人才培養目標的要求及教學規律和認知規律,在結構編排上按照“先理論、后應用、理論與應用相結合”的原則,并兼顧學科的廣度和深度,力求適用面廣。
全書共分8章,對常用的數據結構,如線性表、棧、隊列、稀疏矩陣、廣義表、樹、二叉樹、圖等進行深入講解,使學生能夠全面地理解基本概念、邏輯結構、存儲結構、操作運算、實現算法以及案例應用。本書還利用比較法講解各種查找和排序的方法,并對各種算法的性能進行分析,以便學生可以在不同的應用場合選取合適的方法。本書對每種數據結構和算法的剖析遵循由淺入深的原則,并配以實用的案例和圖示,還配有相應的C語言源代碼,適合具有C語言基礎的數據結構初學者。
本書由梁海英任主編(負責全書統稿),曾霖、樊艷英和殷玉玲任副主編。在本書編寫過程中,編者得到了賀州學院的大力支持,參加本書部分內容編寫、程序調試、課件制作、習題收集、答案制作、內容審校等工作的還有何巧萍、李曉欣、李玲、黃江鑫、劉威、梁海鵬、林芳雨、黃夢丹、劉凱、黎未然、王熙棠、李鳳、高燁林、羅天揚、肖思愛等,在此表示感謝。
由于編者水平有限,書中難免存在不當之處,敬請讀者批評和提出建議。
第1章 緒論 1
1.1 數據結構概述 1
1.2 常用術語和基本概念 3
1.3 數據類型 5
1.4 算法和算法復雜度 6
1.4.1 算法的重要性 6
1.4.2 算法的時間復雜度 8
1.4.3 算法的空間復雜度 9
1.5 本章實戰練習 10
1.6 本章小結 11
1.7 習題1 12
第2章 線性表 14
2.1 線性表概述 14
2.2 線性表的順序存儲及運算的實現 15
2.2.1 線性表的順序存儲 15
2.2.2 順序表的基本操作 16
2.3 線性表的鏈式存儲及運算的實現 20
2.3.1 單鏈表 21
2.3.2 循環鏈表 29
2.3.3 雙向鏈表 30
2.4 本章實戰練習 32
2.4.1 順序表的常用操作 32
2.4.2 單鏈表的常用操作 35
2.4.3 通訊錄管理 38
2.5 本章小結 44
2.6 習題2 45
第3章 棧和隊列 50
3.1 棧 50
3.1.1 棧的定義 50
3.1.2 棧的順序存儲與操作 50
3.1.3 棧的鏈式存儲與操作 54
3.2 隊列 55
3.2.1 隊列的定義 56
3.2.2 隊列的順序存儲與操作 56
3.2.3 隊列的鏈式存儲與操作 59
3.3 本章實戰練習 61
3.3.1 top為指針且指向棧頂元素的
下一個位置 61
3.3.2 top為整數且指向棧頂元素的
當前位置 64
3.3.3 棧的應用—數制轉換 66
3.3.4 順序隊列的基本操作 67
3.3.5 循環隊列設置不同隊空與隊滿條件的
解決方案 70
3.3.6 鏈隊列的基本操作 73
3.4 本章小結 76
3.5 習題3 76
第4章 特殊矩陣和廣義表 81
4.1 特殊矩陣的壓縮存儲 81
4.1.1 特殊矩陣及其壓縮存儲 81
4.1.2 稀疏矩陣及其壓縮存儲 84
4.2 廣義表 86
4.2.1 廣義表的定義 86
4.2.2 廣義表的表示及運算 87
4.3 本章實戰練習 88
4.4 本章小結 92
4.5 習題4 92
第5章 樹 94
5.1 樹的概念 94
5.1.1 樹的定義 94
5.1.2 樹的基本術語 95
5.2 二叉樹 96
5.2.1 二叉樹的定義 97
5.2.2 二叉樹的性質 99
5.3 二叉樹的存儲結構 100
5.3.1 二叉樹的順序存儲 100
5.3.2 二叉樹的鏈式存儲與操作 101
5.4 二叉樹的遍歷 103
5.4.1 遍歷算法 103
5.4.2 線索二叉樹 106
5.5 樹與森林 109
5.5.1 樹和森林的存儲 110
5.5.2 二叉樹、樹和森林的轉換 113
5.5.3 樹和森林的遍歷 114
5.6 哈夫曼樹 114
5.6.1 哈夫曼樹的定義 114
5.6.2 哈夫曼樹的構造算法 115
5.6.3 哈夫曼編碼 117
5.7 本章實戰練習 118
5.7.1 二叉樹的基本操作 118
5.7.2 線索二叉樹的操作 122
5.7.3 哈夫曼樹構造 126
5.8 本章小結 128
5.9 習題5 128
第6章 圖 137
6.1 圖的定義和基本術語 137
6.1.1 圖的定義 137
6.1.2 圖的基本術語 137
6.2 圖的存儲與操作 140
6.2.1 鄰接矩陣 141
6.2.2 鄰接表 143
6.3 圖的遍歷 146
6.3.1 深度優先遍歷算法 146
6.3.2 廣度優先遍歷算法 148
6.4 圖與最小生成樹 150
6.4.1 生成樹和森林的概念 150
6.4.2 最小生成樹 151
6.5 最短路徑 155
6.5.1 單源點到其余各頂點的最短路徑 156
6.5.2 任意源點之間的最短路徑 159
6.6 AOV網與拓撲排序 159
6.6.1 AOV網 159
6.6.2 拓撲排序 160
6.7 AOE網與關鍵路徑 161
6.7.1 AOE網 161
6.7.2 關鍵路徑 162
6.8 本章實戰練習 164
6.8.1 圖的鄰接矩陣操作 164
6.8.2 圖的鄰接表操作 169
6.8.3 利用鄰接矩陣實現圖的深度
優先遍歷 173
6.8.4 利用鄰接表實現圖的深度
優先遍歷 175
6.8.5 利用鄰接矩陣實現圖的廣度
優先遍歷 177
6.8.6 利用鄰接表實現圖的廣度
優先遍歷 180
6.8.7 普里姆最小生成樹算法 184
6.8.8 迪杰斯特拉最短路徑算法 186
6.9 本章小結 189
6.10 習題6 190
第7章 查找 197
7.1 查找的基本概念 197
7.2 靜態查找表 198
7.2.1 順序查找 198
7.2.2 折半查找 200
7.3 動態查找表 203
7.3.1 二叉排序樹 203
7.3.2 平衡二叉樹 206
7.4 哈希表 209
7.4.1 哈希表的定義 209
7.4.2 哈希函數的構造 210
7.4.3 處理沖突的方法 211
7.4.4 哈希表的查找和性能 213
7.5 本章實戰練習 214
7.5.1 順序查找算法 214
7.5.2 折半查找算法 215
7.5.3 二叉排序樹查找算法 216
7.6 本章小結 218
7.7 習題7 219
第8章 排序 222
8.1 排序的基本概念 222
8.2 插入排序算法 223
8.2.1 直接插入排序 223
8.2.2 折半插入排序 224
8.2.3 希爾排序 225
8.3 交換排序算法 226
8.3.1 冒泡排序 226
8.3.2 快速排序 227
8.4 選擇排序算法 230
8.4.1 直接選擇排序 230
8.4.2 堆排序 231
8.5 歸并排序算法 233
8.6 排序算法的比較 235
8.7 本章實戰練習 235
8.8 本章小結 241
8.9 習題8 242
參考文獻 245
- Python語言程序設計教程 [郭其標 房宜汕]
- C語言同步案例習題精解 [主編 肖朝暉]
- Python程序設計 [李國燕 王新強 劉佳 等編著]
- Python程序設計項目化教程(活頁式) [主編 盧鳳偉]
- Java編程基礎案例式教程 [主編 陳艷華 唐春蘭]
- Python語言同步案例習題精解 [主編 肖朝暉]
- Unity應用開發與實戰(微課版) [主 編 程永恒]
- PHP程序設計項目化教程 [主 編 杜海穎]
- 簡單易懂的Python入門教程 [[日]大澤文孝 著]
- Python數據分析之道——Thinking in Pandas [[美]漢娜·斯捷潘內克(Hannah S]
- 深入淺出OpenHarmony——架構、內核、驅動及應用開發全棧 [李傳釗 著]
- MySQL數據庫項目化教程(第二版) [主編 鄭小蓉]
- python青少年趣味編程 [千鋒教育 編著]
- 程序員5天修煉 [施游 鄒月平 曾哲軍 編著]
- Python程序設計應用教程 [王敏 李光正]
- Java面向對象程序設計(微課版) [主編 謝先偉 王海洋]
- Java面向對象程序設計 [主編 張立敏 鄒海濤]
- 工業機器人編程及應用 [主編 向艷芳 胡月霞]
- C語言程序設計(微課版) [主編 夏啟壽]
- C語言程序設計實踐教程 [夏啟壽]
- 單片機應用技術項目教程(C語言版)(第三版) [主編 郭志勇]
- Python語言程序設計 [張雙獅]
- 火球-UML大戰需求分析(第二版) [張傳波 著]
- HTML5+CSS3前端開發項目式教程(微課版) [主編 譚衛 徐文義]
- Python 程序設計(微課版) [楊智勇 廖丹]
- UI界面設計與制作教程 [主 編 黎 婭 任勁松]
- UML系統建模及系統分析與設計(第二版) [王欣 張毅 編著]
- Android高級程序設計 [主編 周雯 舒松]
- C程序設計簡明教程 [黃能耿 黃致遠 編著]
- Java程序設計簡明教程 [黃能耿 黃致遠 編著]