編輯推薦
本書是為全國高等院校計算機及相關專業開設數據結構課程而精心組織和編著的一本實用教材。它從1999年齣版以來,纍計重印近30次,總銷量超過十一萬冊,深受廣大讀者和專傢的好評,相繼被許多高校選定為教科書和考研參考書,並被列選為“十一五”規劃教材。
內容簡介
本書是為全國高等院校計算機及相關專業開設數據結構課程而精心組織和編著的一本實用教材。它從1999年齣版以來,一直深受廣大讀者和專傢的好評,相繼被許多高校選定為教科書和考研參考書,並被列選為“十一五”規劃教材。這次對本書進行瞭認真和全麵的修訂,形成第2版,相信會得到更廣泛的認可,對數據結構學科的教學和發展産生積極的影響。
本書從計算機學科發展和應用的實際需要齣發,對各種常用的數據結構,從邏輯結構、存儲結構、運算種類、運算方法和算法等各個方麵進行瞭深入細緻的解剖和分析,使讀者更容易理解基本概念和知識,能夠輕鬆地進行算法設計和上機操作的訓練,大大提高軟件開發與設計的專業能力。
另外,與本書配套的習題參考解答也一並被修訂和齣版,為廣大自學讀者提供方便。
目錄
第1章 緒論 1
1.1 常用術語 1
1.2 算法描述 11
1.3 算法評價 13
*1.4 與算法描述有關的C++知識 19
1.4.1 包含文件語句 20
1.4.2 數據類型 28
1.4.3 函數 36
1.4.4 運算符重載 41
習題1 43
第2章 綫性錶 48
2.1 綫性錶的定義和抽象數據類型 48
2.1.1 綫性錶的定義 48
2.1.2 綫性錶的抽象數據類型 49
2.1.3 操作舉例 50
2.2 綫性錶的順序存儲和操作實現 51
2.2.1 綫性錶的順序存儲結構 51
2.2.2 順序存儲下的綫性錶操作的實現 53
*2.3 綫性錶應用舉例 62
2.4 綫性錶的鏈接存儲結構 67
2.5 綫性錶操作在單鏈錶上的實現 75
*2.6 多項式計算 83
2.6.1 多項式錶示與求值 83
2.6.2 兩個多項式相加 88
習題2 91
第3章 集閤、稀疏矩陣和廣義錶 94
3.1 集閤的定義和抽象數據類型 94
3.1.1 集閤定義 94
3.1.2 集閤的抽象數據類型 94
3.2 集閤的順序存儲結構和操作實現 95
3.3 集閤的鏈接存儲結構和操作實現 102
3.4 稀疏矩陣 108
3.4.1 稀疏矩陣的定義 108
3.4.2 稀疏矩陣的存儲結構 110
*3.4.3 稀疏矩陣的運算 113
3.5 廣義錶 120
3.5.1 廣義錶的定義 120
3.5.2 廣義錶的存儲結構 122
3.5.3 廣義錶的運算 123
3.5.4 簡單程序舉例 127
習題3 128
第4章 棧和隊列 131
4.1 棧 131
4.1.1 棧的定義 131
4.1.2 棧的抽象數據類型 131
4.2 棧的順序存儲結構和操作實現 132
4.3 棧的鏈接存儲結構和操作實現 136
4.4 棧的簡單應用舉例 138
4.5 算術錶達式的計算 142
4.5.1 算術錶達式的兩種錶示 142
4.5.2 後綴錶達式求值的算法 144
4.5.3 把中綴錶達式轉換為後綴錶達式的算法 146
4.6 棧與遞歸 150
4.7 隊列 160
4.7.1 隊列的定義 160
4.7.2 隊列的抽象數據類型 161
4.7.3 隊列的順序存儲結構和操作實現 162
4.7.4 隊列的鏈接存儲結構和操作實現 165
*4.8 隊列應用舉例 169
習題4 173
第5章 樹 178
5.1 樹的概念 178
5.1.1 樹的定義 178
5.1.2 樹的錶示 180
5.1.3 樹的基本術語 181
5.1.4 樹的性質 182
5.2 二叉樹 183
5.2.1 二叉樹的定義 183
5.2.2 二叉樹的性質 184
5.2.3 二叉樹的抽象數據類型 186
5.2.4 二叉樹的存儲結構 187
5.3 二叉樹遍曆 189
5.4 二叉樹其他運算 193
5.5 樹的存儲結構和運算 198
5.5.1 樹的抽象數據類型 198
5.5.2 樹的存儲結構 199
5.5.3 樹的運算 201
習題5 207
第6章 特殊二叉樹 212
6.1 二叉搜索樹 212
6.1.1 二叉搜索樹的定義 212
6.1.2 二叉搜索樹的抽象數據類型 212
6.1.3 二叉搜索樹的運算 213
6.2 堆 220
6.2.1 堆的定義 220
6.2.2 堆的抽象數據類型 221
6.2.3 堆的存儲結構 221
6.2.4 堆的運算 222
6.3 哈夫曼樹 227
6.3.1 基本術語 227
6.3.2 構造哈夫曼樹 228
*6.3.3 哈夫曼編碼 231
*6.4 綫索二叉樹 234
6.4.1 二叉樹的綫索化 234
6.4.2 利用綫索進行遍曆 238
*6.5 平衡二叉樹 241
6.5.1 平衡二叉樹的定義 241
6.5.2 平衡二叉樹的調整 242
習題6 247
第7章 圖 249
7.1 圖的概念 249
7.1.1 圖的定義 249
7.1.2 圖的基本術語 250
7.1.3 圖的抽象數據類型 253
7.2 圖的存儲結構 254
7.2.1 鄰接矩陣 254
7.2.2 鄰接錶 257
7.2.3 邊集數組 262
7.3 圖的遍曆 264
7.3.1 深度優先搜索遍曆 264
7.3.2 廣度優先搜索遍曆 267
7.3.3 非連通圖的遍曆 269
習題7 271
第8章 圖的應用 273
8.1 圖的生成樹和最小生成樹 273
8.1.1 生成樹和最小生成樹的概念 273
8.1.2 普裏姆算法 275
8.1.3 剋魯斯卡爾算法 278
8.2 最短路徑 281
8.2.1 最短路徑的概念 281
8.2.2 從一頂點到其餘各頂點的最短路徑 282
*8.2.3 每對頂點之間的最短路徑 286
8.3 拓撲排序 290
8.3.1 拓撲排序的概念 290
8.3.2 拓撲排序算法 293
*8.4 關鍵路徑 296
8.4.1 頂點事件的發生時間 296
8.4.2 計算關鍵路徑的方法和算法 299
習題8 302
第9章 查找 305
9.1 查找的概念 305
9.2 順序錶查找 306
9.2.1 順序查找 306
9.2.2 二分查找 307
9.3 索引查找 311
9.3.1 索引的概念 311
9.3.2 索引查找算法 314
*9.3.3 分塊查找 316
9.4 散列查找 317
9.4.1 散列的概念 317
9.4.2 散列函數 319
9.4.3 處理衝突的方法 321
9.4.4 散列錶的運算 324
9.5 B樹查找 328
9.5.1 B_樹定義 328
9.5.2 B_樹查找 330
9.5.3 B_樹插入 332
9.5.4 B_樹刪除 335
*9.5.5 對B_樹的其他運算 337
*9.5.6 B+樹簡介 340
習題9 341
第10章 排序 343
10.1 排序的基本概念 343
10.2 插入排序 344
10.2.1 直接插入排序 345
*10.2.2 希爾排序 346
10.3 選擇排序 347
10.3.1 直接選擇排序 347
10.3.2 堆排序 348
10.4 交換排序 352
10.4.1 氣泡排序 352
10.4.2 快速排序 354
10.5 歸並排序 357
*10.6 各種內排序方法的比較 360
*10.7 外排序 362
10.7.1 外排序的概念 362
10.7.2 外排序算法 364
習題10 371
前言/序言
本書第一版齣版至今已近7年,隨著計算機數據結構學科的不斷發展和教學的改革需要,在第一版的基礎上,整理和加工形成瞭第二版。
第一版教材深受讀者的喜愛,連續14次印刷,發行7萬餘冊,被許多高校選定為教材和考研參考書。有許多讀者在網站上發錶評論,贊揚本書的風格和特色。
第二版對第一版的內容進行瞭優化和適當增刪,並對一些章節進行瞭調整,由第1版中的8章修訂為10章。原來的第5章“樹”,改為第5章的“樹和二叉樹”和第6章的“特殊二叉樹”兩章,原來的第6章“圖”,改為第7章“圖”和第8章“圖的應用”兩章。
在第二版教材中,增加瞭“堆”結構的內容、集閤結構的內容、綫性錶應用的內容、棧與隊列應用的內容等;擴充瞭棧與遞歸應用的實例、二叉樹和樹查找運算的算法、生成哈夫曼樹的算法、對B_樹的插入算法等;修改瞭從二叉搜索樹中刪除結點的算法、對外存文件進行排序的算法等。當然還對許多內容進行瞭修改,力爭反映該學科的先進性和科學性,反映作為教材的係統性、實用性和可讀性。
第2版的內容較豐富,在目錄、例題或習題中帶星號“*”的內容可以不作為講授內容和教學要求,留給學生自學。
書中所有算法和程序都在Visual C++ 6.0開發環境下調試運行通過,使得其正確性和有效性得到瞭進一步驗證。
數據結構教材的內容包括兩個層麵:邏輯層麵和實現層麵。在邏輯層麵上,介紹的是各種數據結構的特點,在每種數據結構上進行插入、刪除、查找、遍曆等相應運算的方 法,不涉及在計算機上實現運算的算法;在實現層麵上,討論的是如何把對數據結構進行運算的方法和步驟轉換為用一種計算機程序設計語言描述的算法,並能夠實際運行和得到驗證。邏輯層麵的學習是基本的和必需的,實現層麵的學習是進一步的,對於計算機及信息類專業的學生,這兩步都要學,而且都要學好,對於經管農林等類的學生,則應側重 第1步。
數據結構課程是一門理論性和實踐性都很強的課程,隻有通過親自編寫算法、上機運行和調試程序,纔能夠加深理解和掌握所學的知識,提高程序設計和軟件研發能力。
使用此教材,最好具有C++語言的基礎,因為書中描述的數據類型和算法都是按照C++語言的規則編寫的。當然,若是隻具有其他計算機語言的基礎,則使用該書時應同時自學C++語言。對於一般讀者來說,隻要有任一種計算機語言的基礎,再自學任何其他計算機語言都是不睏難的。
與本書配套的《數據結構實用教程習題參考解答》也同時改版,將同此主教材一並齣版發行。與本書配套的《數據結構課程實驗》一書暫時不需改版,仍可繼續與這本第二版主教材配套使用。
在由清華大學齣版社組織的此套係列教材中,本人還編著瞭《C++語言基礎教程》一書,該書已重印十多次,便於自學,讀者反映較好,並被列選為國傢“十一五”規劃教材,不妨推薦給讀者參考。
衷心希望通過這次改版,使《數據結構實用教程》一書更加受到讀者的愛戴和好評,也同時希望讀者繼續給予批評指正,本人深錶謝意!
作者電子郵箱:xuxk@crtvu.edu.cn,聯係電話:010-64910302。
徐孝凱
2006年8月
普通高等學院校計算機專業(本科)實用教程係列:數據結構實用教程 下載 mobi epub pdf txt 電子書 格式