零基礎學數據結構

零基礎學數據結構

《零基礎學數據結構》是機械工業出版社策劃的零基礎學系列的非常經典的圖書。

零基礎學系列的許多圖書都成為暢銷圖書,其中,《零基礎學數據結構》榮登月暢銷第11名,周暢銷第2。

基本介紹

  • 中文名:零基礎學數據結構
  • 特點:內容全面,講解詳細等
  • 所屬學科:計算機專業
  • 榮譽:月暢銷第11名,周暢銷第2
特點,內容簡介,目錄,

特點

1.內容全面,講解詳細
2.層次清晰,結構合理
3.結合圖表,敘述簡單
4.例子典型,深入剖析
5.配有系統,鞏固知識
6.配有多媒體視頻講解,加速學習

內容簡介

《數據結構》是計算機專業的專業基礎課和核心課程。本書內容全面,所有算法都是用C語言描述,能夠直接運行,在每一章的所有知識點都給出了算法的具體使用。
本書內容包括數據結構概述、C語言程式設計基礎、線表、棧、佇列、串、數組、廣義表、樹和二叉樹、圖、查找、內排序和外排序。為了便於讀者學習,在講解每一個知識點時,都結合圖和具體實例進行分析,在每個知識點的最後都給出算法的具體套用,每一個例子都比較典型且知識點覆蓋完整。
本書可作為大中專院校的計算機相關專業數據結構的教材,也可作為計算機軟體開發、考研和軟體等級考試相關人員的參考書。

目錄

第一篇 基 礎 篇
第1章 數據結構概述 1
1.1 數據結構的基本概念 1
1.2 抽象數據類型及其描述 2
1.2.1 抽象數據類型的定義 3
1.2.2 抽象數據類型的描述 3
1.3 數據結構的邏輯結構與物理結構 4
1.3.1 邏輯結構 4
1.3.2 物理結構 5
1.4 算法的特性與算法的描述 5
1.4.1 算法的定義 5
1.4.2 算法的特性 6
1.4.3 算法的描述 6
1.5 算法分析 7
1.5.1 算法設計的要求 7
1.5.2 算法效率評價 8
1.5.3 算法時間複雜度 9
1.5.4 算法空間複雜度 11
1.6 小結 11
第2章 C語言基礎 12
2.1 開發環境介紹 12
2.1.1 Turbo C 2.0開發環境介紹 12
2.1.2 Visual C++ 6.0開發環境介紹 14
2.2 遞歸與非遞歸 17
2.2.1 函式的遞歸調用 17
2.2.2 遞歸套用舉例 18
2.2.3 一般遞歸轉化為非遞歸 20
2.3 指針 20
2.3.1 指針變數 20
2.3.2 指針變數的引用 22
2.3.3 指針與數組 22
2.3.4 函式指針與指針函式 27
2.4 參數傳遞 32
2.4.1 傳值調用 33
2.4.2 傳地址調用 34
2.5 結構體與聯合體 36
2.5.1 結構體的定義 37
2.5.2 指向結構體的指針 38
2.5.3 聯合體及套用 39
2.6 動態記憶體分配與釋放 40
2.6.1 記憶體動態分配與釋放 40
2.6.2 鍊表 40
2.7 小結 46
2.8 習題 46
第二篇 線性數據結構
第3章 線性表 47
3.1 線性表的概念及運算 47
3.1.1 線性表的邏輯結構 47
3.1.2 線性表的抽象數據類型 48
3.2 線性表的順序表示與實現 49
3.2.1 線性表的順序存儲結構 49
3.2.2 順序表的基本運算 50
3.2.3 順序表的實現算法分析 53
3.3 順序表的套用舉例 53
3.4 線性表的鏈式表示與實現 58
3.4.1 單鍊表的存儲結構 58
3.4.2 單鍊表的基本運算 60
3.5 單鍊表套用舉例 65
3.6 循環單鍊表 70
3.6.1 循環單鍊表的鏈式存儲 71
3.6.2 循環單鍊表的套用 72
3.7 雙向鍊表 76
3.7.1 雙向鍊表的存儲結構 76
3.7.2 雙向鍊表的插入操作和刪除操作 77
3.8 雙向鍊表的套用舉例 79
3.9 靜態鍊表 82
3.9.1 靜態鍊表的存儲結構 82
3.9.2 靜態鍊表的實現 83
3.9.3 靜態鍊表的套用 85
3.10 各種線性表的操作 86
3.11 一元多項式的表示與相乘 94
3.11.1 一元多項式的表示 94
3.11.2 一元多項式相乘 95
3.12 小結 99
3.13 習題 100
第4章 棧 101
4.1 棧的表示與實現 101
4.1.1 棧的定義 101
4.1.2 棧的抽象數據類型 102
4.2 棧的順序表示與實現 102
4.2.1 棧的順序存儲結構 102
4.2.2 順序棧的基本運算 103
4.2.3 共享棧的問題 105
4.3 棧的套用舉例一 107
4.4 棧的鏈式表示與實現 111
4.4.1 棧的存儲結構 111
4.4.2 棧的基本運算 112
4.4.3 鏈棧的套用 114
4.5 棧的套用舉例二 115
4.5.1 數制轉換 116
4.5.2 括弧配對 117
4.5.3 行編輯程式 119
4.6 棧與遞歸的實現 121
4.6.1 遞歸 121
4.6.2 消除遞歸 124
4.7 棧的套用舉例三 129
4.7.1 表達式的轉換與計算 130
4.7.2 表達式的運算 132
4.8 小結 136
4.9 習題 137
第5章 佇列 138
5.1 佇列的定義及抽象數據類型 138
5.1.1 佇列的定義 138
5.1.2 佇列的抽象數據類型 138
5.2 佇列的順序存儲及實現 139
5.2.1 順序佇列的表示 139
5.2.2 順序佇列的“假溢出” 142
5.2.3 順序循環佇列的表示 143
5.2.4 順序循環佇列的實現 144
5.2.5 順序循環佇列實例 145
5.3 佇列的鏈式存儲及實現 148
5.3.1 鏈式佇列的表示 148
5.3.2 鏈式佇列的實現 150
5.3.3 鏈式佇列實例 152
5.4 雙端佇列 156
5.4.1 雙端佇列的定義 156
5.4.2 雙端佇列的套用 156
5.5 佇列在楊輝三角中的套用 159
5.5.1 楊輝三角 159
5.5.2 楊輝三角的佇列構造 159
5.5.3 楊輝三角佇列的實現 160
5.6 小結 164
5.7 習題 164
第6章 串 165
6.1 串的定義及抽象數據類型 165
6.1.1 串的定義 165
6.1.2 串的抽象數據類型 165
6.2 串的順序表示與實現 167
6.2.1 串的順序存儲結構 167
6.2.2 串的基本運算 168
6.3 串的套用舉例 173
6.4 串的堆分配表示與實現 174
6.4.1 堆分配的存儲結構 175
6.4.2 堆串的基本運算 175
6.5 堆串的套用舉例 181
6.6 串的鏈式存儲表示與實現 183
6.6.1 串的鏈式存儲結構 183
6.6.2 鏈串的基本運算 184
6.7 鏈串的套用舉例 189
6.8 串的模式匹配 191
6.8.1 經典的模式匹配算法─Brute-Force 191
6.8.2 KMP算法 193
6.8.3 模式匹配套用舉例 198
6.9 小結 202
6.10 習題 202
第7章 數組 203
7.1 數組的定義及抽象數據類型 203
7.1.1 數組的定義 203
7.1.2 數組的抽象數據類型 204
7.2 數組的順序表示與實現 204
7.2.1 數組的順序存儲結構 204
7.2.2 數組的基本運算 206
7.2.3 數組的套用舉例 208
7.3 特殊矩陣的壓縮存儲 209
7.3.1 對稱矩陣的壓縮存儲 210
7.3.2 三角矩陣的壓縮存儲 210
7.3.3 對角矩陣的壓縮存儲 211
7.4 稀疏矩陣的壓縮存儲 212
7.4.1 稀疏矩陣的定義 212
7.4.2 稀疏矩陣的抽象數據類型 212
7.4.3 稀疏矩陣的三元組表示 213
7.4.4 稀疏矩陣的三元組實現 213
7.5 稀疏矩陣的套用舉例 219
7.5.1 稀疏矩陣相乘三元組表示 219
7.5.2 稀疏矩陣相乘三元組實現 221
7.6 稀疏矩陣的十字鍊表表示與實現 224
7.6.1 稀疏矩陣的十字鍊表表示 224
7.6.2 稀疏矩陣的十字鍊表實現 225
7.7 稀疏矩陣的十字鍊表實現套用舉例 228
7.8 小結 233
7.9 習題 234
第8章 廣義表 235
8.1 廣義表的定義及抽象數據類型 235
8.1.1 廣義表的定義 235
8.1.2 廣義表的抽象數據類型 236
8.2 廣義表的頭尾鍊表表示與實現 236
8.2.1 廣義表的頭尾鍊表存儲結構 236
8.2.2 廣義表的基本運算 237
8.2.3 採用頭尾鍊表存儲結構的廣義表套用舉例 240
8.3 廣義表的擴展線性鍊表表示與實現 243
8.3.1 廣義表的擴展線性鍊表存儲 243
8.3.2 廣義表的基本運算 244
8.3.3 採用擴展線性鍊表存儲結構的廣義表套用舉例 247
8.4 小結 249
8.5 習題 250
第三篇 非線性數據結構
第9章 樹 251
9.1 樹的定義及抽象數據類型 251
9.1.1 樹的定義 251
9.1.2 樹的邏輯表示 252
9.1.3 樹的抽象數據類型 253
9.2 二叉樹 254
9.2.1 二叉樹的定義 254
9.2.2 二叉樹的性質 255
9.2.3 二叉樹的抽象數據類型 257
9.3 二叉樹的存儲表示與實現 258
9.3.1 二叉樹的順序存儲 258
9.3.2 二叉樹的鏈式存儲 258
9.3.3 二叉樹的基本運算 259
9.4 二叉樹的遍歷 263
9.4.1 二叉樹遍歷的定義 263
9.4.2 二叉樹的先序遍歷 263
9.4.3 二叉樹的中序遍歷 265
9.4.4 二叉樹的後序遍歷 267
9.5 二叉樹遍歷的套用舉例 269
9.5.1 二叉樹的創建 269
9.5.2 二叉樹的輸出 273
9.5.3 二叉樹的計數 276
9.6 二叉樹的線索化 279
9.6.1 二叉樹線索化的定義.. 279
9.6.2 二叉樹的線索化 280
9.6.3 線索二叉樹的遍歷 282
9.6.4 線索二叉樹的套用舉例 284
9.7 樹、森林與二叉樹 287
9.7.1 樹的存儲結構 287
9.7.2 樹轉換為二叉樹 290
9.7.3 森林轉換為二叉樹 291
9.7.4 二叉樹轉換為樹和森林 292
9.7.5 樹和森林的遍歷 292
9.8 哈夫曼樹 293
9.8.1 哈夫曼樹的定義 293
9.8.2 哈夫曼編碼 294
9.8.3 哈夫曼編碼算法的實現 295
9.9 樹與二叉樹的套用舉例 301
9.9.1 相似二叉樹 301
9.9.2 由先序和中序、中序和後序確定二叉樹 302
9.9.3 樹的孩子兄弟鍊表套用舉例 308
9.10 小結 311
9.11 習題 312
第10章 圖 313
10.1 圖的定義與相關概念 313
10.1.1 圖的定義 313
10.1.2 圖的相關概念 314
10.1.3 圖的抽象數據類型 316
10.2 圖的存儲結構 317
10.2.1 鄰接矩陣表示法 317
10.2.2 鄰接表表示法 318
10.2.3 十字鍊表表示法 320
10.2.4 鄰接多重鍊表表示法 321
10.3 圖的套用舉例 322
10.3.1 採用鄰接矩陣創建圖 322
10.3.2 採用鄰接表創建圖 325
10.4 圖的遍歷 328
10.4.1 圖的深度優先遍歷 328
10.4.2 圖的廣度優先遍歷 331
10.4.3 圖的遍歷套用舉例 333
10.5 圖的連通性問題 335
10.5.1 無向圖的連通分量與生成樹 335
10.5.2 最小生成樹 337
10.6 有向無環圖 342
10.6.1 AOV網與拓撲排序 342
10.6.2 AOE網與關鍵路徑 345
10.6.3 關鍵路徑套用舉例 349
10.7 最短路徑 354
10.7.1 從某個頂點到其餘各頂點的最短路徑 354
10.7.2 每一對頂點之間的最短路徑 359
10.8 圖的套用舉例 363
10.9 小結 367
10.10 習題 368
第四篇 查找和排序
第11章 查找 369
11.1 查找的基本概念 369
11.2 靜態查找 370
11.2.1 順序表的查找 370
11.2.2 有序順序表的查找 371
11.2.3 索引順序表的查找 373
11.2.4 靜態查找套用舉例 374
11.3 動態查找 377
11.3.1 二叉排序樹 377
11.3.2 平衡二叉樹 384
11.4 B_樹與B+樹 392
11.4.1 B_樹 392
11.4.2 B+樹 399
11.5 散列表 400
11.5.1 散列表的定義 400
11.5.2 散列函式的構造方法 401
11.5.3 處理衝突的方法 402
11.5.4 散列表套用舉例 403
11.6 小結 407
11.7 習題 408
第12章 內排序 409
12.1 排序的基本概念 409
12.2 插入排序 410
12.2.1 直接插入排序 410
12.2.2 折半插入排序 411
12.2.3 希爾排序 412
12.2.4 插入排序套用舉例 413
12.3 選擇排序 415
12.3.1 簡單選擇排序 415
12.3.2 堆排序 417
12.3.3 選擇排序套用舉例 421
12.4 交換排序 423
12.4.1 冒泡排序 423
12.4.2 快速排序 424
12.4.3 交換排序套用舉例 427
12.5 歸併排序 431
12.5.1 歸併排序算法 431
12.5.2 歸併排序套用舉例 432
12.6 基數排序 434
12.6.1 基數排序算法 434
12.6.2 基數排序套用舉例 437
12.7 各種排序算法的比較 441
12.8 排序算法套用舉例 442
12.9 小結 445
12.10 習題 446
第13章 外排序 447
13.1 外存的存取特性 447
13.2 磁碟排序 448
13.2.1 歸併排序的基本方法 448
13.2.2 多路歸併排序 449
13.3 磁帶排序 451
13.3.1 2路歸併排序 451
13.3.2 多路非平衡歸併排序 452
13.4 小結 453

相關詞條

熱門詞條

聯絡我們