數(shù)據(jù)結(jié)構(gòu)(C語言版)
-
【作 者】主編 李根強 劉浩 謝月娥
【I S B N 】978-7-5170-5241-8
【責(zé)任編輯】封裕
【適用讀者群】本專通用
【出版時間】2017-04-20
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數(shù)】260
【千字數(shù)】400
【印 張】16.25
【定 價】¥34
【叢 書】普通高等教育“十三五”規(guī)劃教材(軟件工程專業(yè))
【備注信息】
簡介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書
本書從軟件開發(fā)設(shè)計的角度出發(fā),按照結(jié)構(gòu)化程序設(shè)計的思想,詳細介紹了線性表、棧和隊列、串、多維數(shù)組和廣義表、樹和二叉樹、圖等不同的數(shù)據(jù)結(jié)構(gòu),以及這些數(shù)據(jù)結(jié)構(gòu)在計算機中的存儲表示和不同存儲表示的算法實現(xiàn)。每個算法都用C語言進行描述,并全部上機在VC++ 6.0環(huán)境下運行通過。第8、9、10三章介紹了計算機中常用的兩種運算—查找和排序,詳細介紹了不同的查找、排序運算的實現(xiàn),并對各種算法進行了效率分析。最后一章介紹了文件的基本概念和文件的組織形式。本書是在2009年出版的《數(shù)據(jù)結(jié)構(gòu)(C++版)》(第二版)的基礎(chǔ)上,將全部算法修改成C語言描述和實現(xiàn),涵蓋了碩士研究生數(shù)據(jù)結(jié)構(gòu)考試大綱所規(guī)定的考試內(nèi)容。
本書可以作為計算機類或信息類相關(guān)專業(yè)的本科或?qū)?平滩募按T士研究生考試的參考資料,也可以作為自學(xué)人員的參考資料,還可供從事計算機工程與應(yīng)用工作的科技人員參考。
本書配有電子教案、源程序,讀者可以從中國水利水電出版社網(wǎng)站和萬水書苑免費下載,
內(nèi)容詳盡,由淺入深
基于需求,面向應(yīng)用
案例精講,注重實戰(zhàn)
“數(shù)據(jù)結(jié)構(gòu)”是計算機專業(yè)及其相關(guān)專業(yè)的一門重要專業(yè)基礎(chǔ)課,也是一門必修的核心課程,并且已成為其他理工專業(yè)的熱門選修課。
在計算機科學(xué)的各領(lǐng)域中,都要使用到各種不同的數(shù)據(jù)結(jié)構(gòu),如編譯系統(tǒng)中要使用棧、散列表、語法樹等,操作系統(tǒng)中要使用隊列、存儲管理表、目錄樹等,數(shù)據(jù)庫系統(tǒng)中要使用線性表、鏈表、索引樹等;人工智能中要使用廣義表、檢索樹、有向圖等;同樣在面向?qū)ο蟮某绦蛟O(shè)計、計算機圖形學(xué)、軟件工程、多媒體技術(shù)、計算機輔助設(shè)計等領(lǐng)域,也都會用到各種不同的數(shù)據(jù)結(jié)構(gòu)。因此,學(xué)好數(shù)據(jù)結(jié)構(gòu),對從事計算機技術(shù)及相關(guān)領(lǐng)域的工作人員來說,是非常重要的,用戶可掌握各種常用的數(shù)據(jù)結(jié)構(gòu)及算法實現(xiàn),以及每一種算法的時間復(fù)雜度分析和空間復(fù)雜度分析,知道在什么情況下,使用什么樣的數(shù)據(jù)結(jié)構(gòu)最方便,為以后研究和開發(fā)大型程序打下基礎(chǔ)。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的主要任務(wù)是:討論現(xiàn)實世界中的各種數(shù)據(jù)(數(shù)字、字符、字符串、聲音、圖形、圖像等)的邏輯結(jié)構(gòu)、其在計算機中的各種存儲結(jié)構(gòu)(存儲表示)以及對各種非數(shù)值運算的算法實現(xiàn);分析各種不同算法的好壞及其在什么地方應(yīng)用比較合適。通過“數(shù)據(jù)結(jié)構(gòu)”課程的學(xué)習(xí),學(xué)生應(yīng)具備使用所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識來解決實際問題及評價算法優(yōu)劣的能力,為以后學(xué)習(xí)后續(xù)計算機專業(yè)課程及走上工作崗位從事計算機大型軟件開發(fā)工作鋪平道路。
本書內(nèi)容共11章,第1章介紹了數(shù)據(jù)結(jié)構(gòu)與算法等一些基本術(shù)語,并對算法描述及算法分析作了簡單說明,介紹了衡量算法優(yōu)劣的主要因素,即時間復(fù)雜度和空間復(fù)雜度的求法;第2章到第4章介紹了線性結(jié)構(gòu)(線性表、棧、隊列、串)的邏輯特征,及一些常用算法的實現(xiàn)及基本應(yīng)用;第5章到第7章介紹了非線性結(jié)構(gòu)(多維數(shù)組、廣義表、樹、二叉樹、圖)的邏輯特征,及其在計算機中的存儲表示和一些常用算法實現(xiàn)及基本應(yīng)用;第8章到第10章介紹了在計算機中使用得非常廣泛的兩種運算,即查找和排序(排序又可以分為內(nèi)排序和外排序),對一些常用的查找、排序方法進行了詳細說明,并給出了實現(xiàn)的算法及時間復(fù)雜度和空間復(fù)雜度分析;第11章介紹了外存的文件的幾種存儲形式及組織方式。各章內(nèi)容有相對獨立的部分,可便于不同院校不同專業(yè)按需要組織教學(xué)。全書側(cè)重于數(shù)據(jù)結(jié)構(gòu)的應(yīng)用,力求講授內(nèi)容與具體的計算機應(yīng)用實例相結(jié)合,以便于學(xué)生加深對各章內(nèi)容的理解和掌握。
本書采用結(jié)構(gòu)化的程序設(shè)計語言(C語言)作為算法的描述語言,所有算法都已經(jīng)上機調(diào)試通過。但是,由于篇幅所限,大部分算法都是以單獨的函數(shù)形式給出,若讀者要運行這些算法,還必須給出一些變量的說明及主函數(shù)來調(diào)用所給的函數(shù)。因此,本書中的算法描述比用類Pascal語言或類C語言描述的算法更直觀,更易于學(xué)生理解和接受。作者在十幾年的“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中,對數(shù)據(jù)結(jié)構(gòu)中的各種算法進行了認真的研究和分析,積累了豐富的經(jīng)驗,因此,書中所選的例題和習(xí)題都具有一定的針對性,都是針對特定的數(shù)據(jù)結(jié)構(gòu)來描述的,能為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)算法描述架橋鋪路。
本書中所有算法都在VC++ 6.0環(huán)境下運行通過,由于篇幅所限,書中僅給出了實現(xiàn)某功能算法的函數(shù)。為了方便教學(xué),本書免費為授課教師提供用PowerPoint制作的電子教案,教師在使用時可以根據(jù)需要進行必要的修改。
本書可以作為高等院校計算機類或信息類相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程教材,建議講授課時為50至60學(xué)時,上機實踐課時為20至30學(xué)時。各院校教師可根據(jù)自己學(xué)校的專業(yè)特點和學(xué)生的實際情況適當增刪。
本書由李根強、劉浩、謝月娥擔(dān)任主編,李根強負責(zé)全書的統(tǒng)稿、修改、定稿工作。
由于編者水平有限,書中難免存在不妥或錯誤之處,懇請專家和廣大讀者批評指正。
編 者
2017年1月
本章學(xué)習(xí)目標 1
1.1 什么是數(shù)據(jù)結(jié)構(gòu) 1
1.1.1 數(shù)據(jù)結(jié)構(gòu)示例 1
1.1.2 基本術(shù)語 2
1.1.3 數(shù)據(jù)結(jié)構(gòu) 3
1.2 算法描述 5
1.2.1 基本概念 5
1.2.2 算法描述 5
1.3 算法分析 6
1.3.1 時間復(fù)雜度 6
1.3.2 空間復(fù)雜度 7
本章小結(jié) 8
習(xí)題一 8
第2章 線性表 12
本章學(xué)習(xí)目標 12
2.1 線性表的定義及運算 12
2.1.1 線性表的定義 12
2.1.2 線性表的運算 13
2.1.3 線性表的抽象數(shù)據(jù)類型描述 13
2.2 線性表的順序存儲結(jié)構(gòu) 14
2.2.1 順序表結(jié)構(gòu) 14
2.2.2 順序表運算 15
2.2.3 順序表存儲空間的動態(tài)分配 18
2.3 線性表的鏈式存儲結(jié)構(gòu) 19
2.3.1 單鏈表結(jié)構(gòu) 19
2.3.2 單鏈表運算 20
2.3.3 循環(huán)鏈表結(jié)構(gòu) 25
2.3.4 雙向鏈表結(jié)構(gòu) 27
2.4 一元多項式的表示及相加 29
2.4.1 一元多項式的表示 29
2.4.2 一元多項式的相加 30
2.5 順序表與鏈表的比較 32
2.6 算法應(yīng)用舉例 32
本章小結(jié) 35
習(xí)題二 35
第3章 棧和隊列 37
本章學(xué)習(xí)目標 37
3.1 棧 37
3.1.1 棧的定義 37
3.1.2 棧的運算 37
3.1.3 棧的抽象數(shù)據(jù)類型描述 38
3.1.4 順序棧 39
3.1.5 鏈棧 42
3.1.6 棧的應(yīng)用 44
3.2 隊列 49
3.2.1 隊列的定義 49
3.2.2 隊列的基本運算 49
3.2.3 隊列的抽象數(shù)據(jù)類型描述 50
3.2.4 循環(huán)隊列 50
3.2.5 鏈隊列 53
3.2.6 隊列的應(yīng)用 55
本章小結(jié) 55
習(xí)題三 55
第4章 串 58
本章學(xué)習(xí)目標 58
4.1 串的定義及運算 58
4.1.1 基本概念 58
4.1.2 串的運算 59
4.1.3 串的抽象數(shù)據(jù)類型描述 59
4.2 串的存儲結(jié)構(gòu) 60
4.2.1 順序存儲 60
4.2.2 鏈式存儲 61
4.2.3 索引存儲 61
4.3 串運算的實現(xiàn) 62
4.3.1 串插入 62
4.3.2 串刪除 64
4.3.3 子串定位 65
4.4 串操作應(yīng)用舉例 67
4.4.1 文本編輯 67
4.4.2 建立詞索引表 68
本章小結(jié) 68
習(xí)題四 69
第5章 多維數(shù)組和廣義表 70
本章學(xué)習(xí)目標 70
5.1 多維數(shù)組 70
5.1.1 多維數(shù)組的概念 70
5.1.2 多維數(shù)組在計算機內(nèi)的存儲 71
5.2 多維數(shù)組的存儲結(jié)構(gòu) 71
5.2.1 行優(yōu)先順序 71
5.2.2 列優(yōu)先順序 72
5.3 特殊矩陣及其壓縮存儲 72
5.3.1 特殊矩陣 72
5.3.2 壓縮存儲 73
5.4 稀疏矩陣 76
5.4.1 稀疏矩陣的存儲 76
5.4.2 稀疏矩陣的運算 79
5.5 廣義表 87
5.5.1 基本概念 87
5.5.2 存儲結(jié)構(gòu) 88
5.5.3 基本運算 89
本章小結(jié) 91
習(xí)題五 92
第6章 樹和二叉樹 94
本章學(xué)習(xí)目標 94
6.1 樹的基本概念 94
6.1.1 樹的定義 94
6.1.2 基本術(shù)語 96
6.1.3 樹的表示 97
6.1.4 樹的性質(zhì) 97
6.2 二叉樹 98
6.2.1 二叉樹的定義 98
6.2.2 二叉樹的性質(zhì) 99
6.2.3 二叉樹的存儲結(jié)構(gòu) 101
6.2.4 二叉樹的抽象數(shù)據(jù)類型 104
6.3 遍歷二叉樹 104
6.3.1 前根遍歷 104
6.3.2 中根遍歷 105
6.3.3 后根遍歷 106
6.3.4 遍歷算法應(yīng)用舉例 109
6.4 線索二叉樹 112
6.4.1 線索的概念 112
6.4.2 線索的描述 113
6.4.3 線索的算法實現(xiàn) 114
6.4.4 線索二叉樹上的運算 115
6.5 樹和森林 118
6.5.1 樹的存儲結(jié)構(gòu) 118
6.5.2 樹、森林和二叉樹的轉(zhuǎn)換 120
6.5.3 樹和森林的遍歷 121
6.6 回溯法與樹的遍歷 122
6.7 哈夫曼樹 124
6.7.1 基本術(shù)語 124
6.7.2 哈夫曼樹簡介 124
6.7.3 哈夫曼樹的應(yīng)用 127
本章小結(jié) 128
習(xí)題六 129
第7章 圖 132
本章學(xué)習(xí)目標 132
7.1 圖的基本概念 132
7.1.1 圖的定義 132
7.1.2 圖的基本術(shù)語 132
7.2 圖的存儲結(jié)構(gòu) 135
7.2.1 鄰接矩陣 135
7.2.2 鄰接表 138
7.2.3 鄰接多重表 142
7.3 圖的遍歷 142
7.3.1 深度優(yōu)先搜索遍歷 142
7.3.2 廣度優(yōu)先搜索遍歷 147
7.4 生成樹和最小生成樹 150
7.4.1 基本概念 150
7.4.2 普里姆(Prim)算法 152
7.4.3 克魯斯卡爾(Kruskal)算法 155
7.5 最短路徑 157
7.5.1 單源點最短路徑 158
7.5.2 所有頂點對之間的最短路徑 160
7.6 有向無環(huán)圖及其應(yīng)用 163
7.6.1 拓撲排序 164
7.6.2 關(guān)鍵路徑 167
本章小結(jié) 172
習(xí)題七 172
第8章 查找 176
本章學(xué)習(xí)目標 176
8.1 查找的基本概念 176
8.2 線性表的查找 177
8.2.1 順序查找 177
8.2.2 二分查找 178
8.2.3 索引查找 181
8.2.4 分塊查找 184
8.3 樹表查找 186
8.3.1 二叉排序樹查找 186
8.3.2 平衡二叉樹查找 190
8.3.3 B樹及B+樹上的查找 194
8.3.4 鍵樹 195
8.4 散列查找 196
8.4.1 基本概念 196
8.4.2 散列函數(shù)的構(gòu)造 197
8.4.3 解決沖突的方法 199
8.4.4 散列查找算法實現(xiàn) 202
8.4.5 散列查找的性能分析 204
本章小結(jié) 206
習(xí)題八 207
第9章 內(nèi)排序 209
本章學(xué)習(xí)目標 209
9.1 基本概念 209
9.1.1 排序介紹 209
9.1.2 基本概念 210
9.2 插入排序 211
9.2.1 直接插入排序 211
9.2.2 二分插入排序 212
9.2.3 希爾排序 213
9.3 交換排序 214
9.3.1 冒泡排序 214
9.3.2 快速排序 215
9.4 選擇排序 218
9.4.1 直接選擇排序 218
9.4.2 樹形選擇排序 219
9.4.3 堆排序 221
9.5 歸并排序 225
9.5.1 二路歸并排序 225
9.5.2 多路歸并排序 227
9.6 分配排序 227
9.6.1 多關(guān)鍵字排序 227
9.6.2 基數(shù)排序 227
9.7 各種內(nèi)排序方法的比較和選擇 230
9.7.1 各種內(nèi)排序方法的比較 230
9.7.2 各種內(nèi)排序方法的選擇 231
本章小結(jié) 231
習(xí)題九 232
第10章 外排序 234
本章學(xué)習(xí)目標 234
10.1 外排序的基本概念 234
10.2 多路平衡歸并的實現(xiàn) 235
10.2.1 初始歸并段的生成 235
10.2.2 多路平衡歸并的實現(xiàn) 237
本章小結(jié) 242
習(xí)題十 243
第11章 文件 244
本章學(xué)習(xí)目標 244
11.1 文件的基本概念 244
11.2 順序文件 244
11.3 索引文件 245
11.4 ISAM文件和VSAM文件 246
11.4.1 ISAM文件 246
11.4.2 VSAM文件 247
11.5 散列文件 247
11.6 多關(guān)鍵字文件 248
11.6.1 多重表文件 249
11.6.2 倒排文件 249
本章小結(jié) 250
習(xí)題十一 251
參考文獻 252
- 輸水管線工程風(fēng)險管理 [張勇 黨亥生 著]
- 民用航空飛機標準線路施工 [主編 王志敏 陳明]
- 不息的水脈—大運河講談錄 [趙珩 著]
- 實用運籌學(xué) [主編 邢育紅 于晉臣]
- 三峽梯級電站水資源決策支持系統(tǒng)研究與開發(fā) [姚華明 潘紅忠 湯正]
- 海南黎族民俗文化鑒賞 [龐國華 著]
- 石墨烯在太赫茲及中紅外頻段電磁器件設(shè)計中的應(yīng)用 [李艷秀 莊華偉 著]
- 電子技術(shù)(第二版) [主編 覃愛娜 李飛]
- 辦公自動化高級應(yīng)用 [陳萍 朱曉玉]
- 信息處理技術(shù)員考試32小時通關(guān) [薛大龍]
- 電子產(chǎn)品設(shè)計案例教程(微課版)—基于嘉立創(chuàng)EDA(專業(yè)版) [王靜 莫志宏 陳學(xué)昌 丁紅]
- C程序設(shè)計實踐教程 [劉衛(wèi)國]
- C程序設(shè)計(慕課版) [劉衛(wèi)國]
- Web技術(shù)開發(fā)教程(基于.NET開源MVC框架) [王合闖 韓紅玲 王青正 陳海蕊]
- 商務(wù)英語翻譯教程(筆譯)(第四版) [主編 王軍平]
- 智慧零售技術(shù)與應(yīng)用 [洪旭 著]
- 建設(shè)工程法規(guī)實務(wù) [主編 余瀅]
- 商務(wù)秘書理論與實務(wù)(第三版) [主編 張同欽]
- 程序設(shè)計基礎(chǔ)實踐教程(C/C++語言版) [張桂芬 葛麗娜]
- C++案例項目精講 [主編 楊國興]
- 勞動爭議處理實務(wù) [主編 王秀卿 羅靜]
- 工程數(shù)學(xué) [主編 郭立娟 王海]
- 語音識別理論與實踐 [主編 莫宏偉]
- 信息系統(tǒng)項目管理師章節(jié)習(xí)題與考點特訓(xùn)(第二版) [主編 薛大龍]
- 武術(shù)基礎(chǔ)教程 [主編 李代勇 謝志民]
- 計算機網(wǎng)絡(luò)實訓(xùn)教程 [主編 張浩軍 趙玉娟]
- 畫法幾何與機械制圖習(xí)題集(多學(xué)時) [主編 趙軍]
- HCIA-Datacom認證題庫分類精講 [主 編 韓立剛]
- SwiftUI完全開發(fā) [李智威 著]
- 網(wǎng)絡(luò)規(guī)劃設(shè)計師備考一本通 [夏杰 編著]
- C#程序設(shè)計教程
- 軟件設(shè)計模式實用教程
- 數(shù)據(jù)庫原理及應(yīng)用(MySQL版)
- 基于Android平臺的移動開發(fā)技術(shù)
- Android 應(yīng)用開發(fā)項目實戰(zhàn)
- 軟件工程(第二版)
- 軟件工程(第二版)
- Java程序設(shè)計案例教程
- Visual C++6.0程序項目案例教程
- 數(shù)據(jù)庫原理
- 計算機網(wǎng)絡(luò)實驗指導(dǎo)
- ACM程序設(shè)計基礎(chǔ)
- Android應(yīng)用開發(fā)基礎(chǔ)教程
- Java程序設(shè)計實訓(xùn)教程
- Java面向?qū)ο蟪绦蛟O(shè)計
- Java面向?qū)ο蟪绦蛟O(shè)計