産品特色
內容簡介
這本《C++數據結構與算法(第4版)》全麵係統地介紹瞭數據結構,並以C++語言實現相關的算法。
主要強調瞭數據結構和算法之間的聯係,使用麵嚮對象的方法介紹數據結構,其內容包括算法的復雜度分析、鏈錶、棧、隊列、遞歸、二叉樹、圖、排序和散列。本書還清晰地闡述瞭同類教材中較少提到的內存管理、數據壓縮和字符串匹配等主題。書中包含大量的示例分析和圖形,便於讀者進一步理解和鞏固所學的知識。
目錄
第1章 C++麵嚮對象程序設計 1
1.1 抽象數據類型 1
1.2 封裝 1
1.3 繼承 5
1.4 指針 7
1.4.1 指針與數組 10
1.4.2 指針與復製構造函數 12
1.4.3 指針與析構函數 14
1.4.4 指針和引用變量 14
1.4.5 函數指針 17
1.5 多態性 18
1.6 C++和麵嚮對象程序設計 20
1.7 標準模闆庫 20
1.7.1 容器 21
1.7.2 迭代器 21
1.7.3 算法 21
1.7.4 函數對象 22
1.8 標準模闆庫中的嚮量 24
1.9 數據結構與麵嚮對象編程 29
1.10 案例分析:隨機訪問文件 30
1.11 習題 38
1.12 編程練習 40
參考書目 42
第2章 復雜度分析 43
2.1 計算復雜度以及漸近復雜度 43
2.2 大O錶示法 44
2.3 大O錶示法的性質 46
2.4 Ω錶示法與Θ錶示法 47
2.5 可能存在的問題 48
2.6 復雜度示例 49
2.7 確定漸近復雜度示例 50
2.8 最好、平均和最壞情況 51
2.9 攤銷復雜度(amortized complexity) 54
2.10 NP完整性 57
2.11 習題 59
參考書目 61
第3章 鏈錶 63
3.1 單嚮鏈錶 63
3.1.1 插入 68
3.1.2 刪除 70
3.1.3 查找 74
3.2 雙嚮鏈錶 74
3.3 循環鏈錶 78
3.4 跳躍鏈錶(skip list) 79
3.5 自組織鏈錶 83
3.6 稀疏錶 87
3.7 標準模闆庫中的鏈錶 89
3.8 小結 92
3.9 案例分析:圖書館 93
3.10 習題 101
3.11 編程練習 102
參考書目 105
第4章 棧與隊列 107
4.1 棧 107
4.2 隊列 113
4.3 優先隊列 119
4.4 標準模闆庫中的棧 119
4.5 標準模闆庫中的隊列 120
4.6 標準模闆庫中的優先隊列 121
4.7 標準模版庫中的雙端隊列 123
4.8 案例分析:迷宮問題 127
4.9 習題 131
4.10 編程練習 133
參考書目 134
第5章 遞歸 135
5.1 遞歸定義 135
5.2 函數調用與遞歸實現 137
5.3 分析遞歸調用 139
5.4 尾遞歸 142
5.5 非尾遞歸 142
5.6 間接遞歸 147
5.7 嵌套遞歸 148
5.8 不閤理遞歸 149
5.9 迴溯 152
5.10 小結 157
5.11 案例分析:遞歸下降解釋器 158
5.12 習題 165
5.13 編程練習 167
參考書目 169
第6章 二叉樹 171
6.1 樹、二叉樹和二叉查找樹 171
6.2 二叉樹的實現 174
6.3 二叉查找樹的查找 176
6.4 樹的遍曆 179
6.4.1 廣度優先遍曆 179
6.4.2 深度優先遍曆 180
6.4.3 不使用棧的深度優先遍曆 186
6.5 插入 191
6.6 刪除 193
6.6.1 閤並刪除 194
6.6.2 復製刪除 196
6.7 樹的平衡 198
6.7.1 DSW算法 200
6.7.2 AVL樹 202
6.8 自適應樹(self-adjusting tree) 207
6.8.1 自重新構造樹(self-restructuring tree) 207
6.8.2 “張開”策略(splaying) 208
6.9 堆 212
6.9.1 將堆作為優先隊列 213
6.9.2 用數組實現堆 215
6.10 treap樹 218
6.11 k-d樹 221
6.12 波蘭錶示法和錶達式樹 225
6.13 案例分析:計算單詞齣現的頻率 229
6.14 習題 235
6.15 編程練習 239
參考書目 242
第7章 多叉樹 245
7.1 B樹傢族 245
7.1.1 B樹 247
7.1.2 B*樹 254
7.1.3 B+樹 255
7.1.4 前綴B+樹 257
7.1.5 k-d B樹 259
7.1.6 位樹 264
7.1.7 R樹 265
7.1.8 2-4樹 267
7.1.9 標準模闆庫中的集閤(set)以及多重集閤(multiset) 278
7.1.10 標準模闆庫中的映射(map)和多映射(multimap) 282
7.2 trie 286
7.3 小結 292
7.4 案例分析:拼寫檢查器 292
7.5 習題 300
7.6 編程練習 301
參考書目 304
第8章 圖 307
8.1 圖的錶示法 308
8.2 圖的遍曆 309
8.3 最短路徑 312
8.4 環的檢測 319
8.5 生成樹 322
8.6 連通性 324
8.6.1 無嚮圖中的連通性 324
8.6.2 有嚮圖中的連通性 326
8.7 拓撲排序 328
8.8 網絡 329
8.8.1 最大流 329
8.8.2 成本最低的最大流 337
8.9 匹配 340
8.9.1 穩定匹配問題 344
8.9.2 分配問題 346
8.9.3 非二分圖中的匹配集閤 348
8.10 歐拉(Eulerian)圖與漢密爾頓 (Hamiltonian)圖 349
8.10.1 歐拉圖 349
8.10.2 漢密爾頓圖 352
8.11 圖的上色問題 356
8.12 圖論中的NP完整性問題 359
8.12.1 派係問題 359
8.12.2 三色問題 360
8.12.3 頂點覆蓋問題 361
8.12.4 漢密爾頓環問題 361
8.13 案例分析:唯一代錶 363
8.14 習題 372
8.15 編程練習 376
參考書目 377
第9章 排序 381
9.1 基本的排序算法 382
9.1.1 插入排序 382
9.1.2 選擇排序 384
9.1.3 冒泡排序 386
9.1.4 梳排序 388
9.2 決策樹 389
9.3 高效排序算法 392
9.3.1 希爾排序 392
9.3.2 堆排序 395
9.3.3 快速排序 397
9.3.4 歸並排序 402
9.3.5 基數排序 405
9.3.6 計數排序 408
9.4 標準模闆庫中的排序 410
9.5 小結 414
9.6 案例分析:多項式相加 414
9.7 習題 420
9.8 編程練習 422
參考書目 423
第10章 散列 427
10.1 散列函數 427
10.1.1 除餘法 428
10.1.2 摺疊法 428
10.1.3 平方取中法 429
10.1.4 提取法 429
10.1.5 基數轉換法 429
10.1.6 全域散列法 429
10.2 衝突解決方法 430
10.2.1 開放定址法 430
10.2.2 鏈接法 435
10.2.3 桶定址 436
10.3 刪除 437
10.4 理想散列函數 438
10.4.1 Cichelli方法 438
10.4.2 FHCD算法 440
10.5 再散列 442
10.6 可擴展文件的散列函數 444
10.6.1 可擴展散列 445
10.6.2 綫性散列 446
10.7 案例分析:使用桶的散列 449
10.8 習題 456
10.9 編程練習 457
參考書目 458
第11章 數據壓縮 461
11.1 數據壓縮的條件 461
11.2 Huffman編碼 463
11.3 Run-Length編碼方式 473
11.4 Ziv-Lempel編碼方式 474
11.5 案例分析:Huffman方法和Run-Length編碼方式 476
11.6 習題 485
11.7 編程練習 486
參考書目 487
第12章 內存管理 489
12.1 sequential-fit方法 490
12.2 nonsequential-fit方法 491
12.3 垃圾迴收 497
12.3.1 標記和清除 498
12.3.2 復製方法 504
12.3.3 遞增的垃圾迴收 505
12.3.4 分代垃圾迴收 510
12.4 小結 513
12.5 案例分析 514
12.6 習題 521
12.7 編程練習 522
參考書目 524
第13章 字符串匹配 527
13.1 字符串的精確匹配 527
13.1.1 簡單的算法 527
13.1.2 Knuth-Morris-Pratt算法 530
13.1.3 Boyer-Moore算法 536
13.1.4 多次搜索 545
13.1.5 麵嚮位的方法 546
13.1.6 單詞集閤的匹配 550
13.1.7 正則錶達式的匹配 555
13.1.8 後綴trie和樹 558
13.1.9 後綴數組 563
13.2 字符串的模糊匹配 564
13.2.1 字符串的近似性 565
13.2.2 有k個錯誤的字符串匹配 570
13.3 案例分析:最長的共有子字符串 573
13.4 習題 580
13.5 編程練習 581
參考書目 582
附錄A 計算大O 585
附錄B 標準模闆庫中的算法 591
附錄C NP完整性 599
前言/序言
數據結構是計算機科學教育的基本組成部分之一,計算機科學的許多其他領域都是在此基礎上建立的。對於希望從事軟件係統的設計、實現、測試或者維護的讀者而言,數據結構的知識是必不可少的。本書嚮讀者提供瞭從事這類工作所必須具備的知識。
本書主要講述數據結構的三個重要特性。首先,著重強調瞭數據結構與其算法之間的聯係,包括算法的復雜度分析。其次,數據結構是以麵嚮對象的方式呈現的,以與當前的設計以及實現範式一緻。為瞭加強封裝以及分解,特彆強調瞭信息隱藏原則。最後,本書的重要組成部分之一是數據結構的實現,在此選擇C++作為編程語言。
C++語言是由C語言演化而來的麵嚮對象語言,是一種廣泛應用於産業界以及學術界的優秀編程語言。用該語言來介紹數據結構非常有效,並且很自然。由於C++在編程中的廣泛應用以及語言本身的麵嚮對象特性,使用該語言講述數據結構以及算法課程是非常閤適的,即使是入門級課程也是如此。
C++數據結構與算法(第4版) 下載 mobi epub pdf txt 電子書 格式
評分
☆☆☆☆☆
很好很強大,初來咋道,以前用c要自編list組織內存,現在直接用範形模闆,代碼簡練,幾行代碼包含很多內容,有時需要百度,配閤起來看。c
評分
☆☆☆☆☆
從零開始,一點點介紹C++的基本語法、麵嚮對象、STL、Windows程序、MFC等內容,簡單易懂,適閤入門
評分
☆☆☆☆☆
好書永遠不會過時,學習學習
評分
☆☆☆☆☆
東西好評,物流一如既往的速度,運輸沒有破損,書也是正版的,信得過京東,
評分
☆☆☆☆☆
包裝不錯,紙質較好,正版圖書!
評分
☆☆☆☆☆
我買錯瞭,看來要先把c++學一下
評分
☆☆☆☆☆
可以可以可以可以可以
評分
☆☆☆☆☆
內容不錯,但是京東的包裝搞到書籍有些受損,這點就不好瞭
評分
☆☆☆☆☆
內容不錯,覆蓋麵廣,需要一段時間消化!