第一部分 預備知識
第1章 數據結構和算法
1.1 數據結構的原則
1.2 抽象數據類型和數據結構
1.3 設計模式
1.4 問題、算法和程序
1.5 深入學習導讀
1.6 習題
第2章 數學預備知識
2.1 集合和關系
2.2 常用數學術語
2.3 對數
2.4 級數求和與遞歸
2.5 遞歸
2.6 數學證明方法
2.7 估計
2.8 深入學習導讀
2.9 習題
第3章 算法分析
3.1 概述
3.2 最佳、最差和平均情況
3.3 換一臺更快的計算機,還是換一種更快的算法
3.4 漸近分析
3.5 程序運行時間的計算
3.6 問題的分析
3.7 容易混淆的概念
3.8 多參數問題
3.9 空間代價
3.10 加速你的程序
3.11 實證分析
3.12 深入學習導讀
3.13 習題
3.14 項目設計
第二部分 基本數據結構
第4章 線性表、棧和隊列
4.1 線性表
4.2 棧
4.3 隊列
4.4 字典
4.5 深入學習導讀
4.6 習題
4.7 項目設計
第5章 二叉樹
5.1 定義及主要特性
5.2 遍歷二叉樹
5.3 二叉樹的實現(xiàn)
5.4 二叉檢索樹
5.5 堆與優(yōu)先隊列
5.6 Huffman編碼樹
5.7 深入學習導讀
5.8 習題
5.9 項目設計
第6章 樹
6.1 樹的定義與術語
6.2 父指針表示法
6.3 樹的實現(xiàn)
6.4 K叉樹
6.5 樹的順序表示法
6.6 深入學習導讀
6.7 習題
6.8 項目設計
第三部分 排序與檢索
第7章 內排序
7.1 排序術語及記號
7.2 三種代價為Θ(n2)的排序算法
7.3 Shell排序
7.4 歸并排序
7.5 快速排序
7.6 堆排序
7.7 分 配排序和基數排序
7.8 對各種排序算法的實驗比較
7.9 排序問題的下限
7.10 深入學習導讀
7.11 習題
7.12 項目設計
第8章 文件管理和外排序
8.1 主存儲器和輔助存儲器
8.2 磁盤
8.3 緩沖區(qū)和緩沖池
8.4 程序員的文件視圖
8.5 外排序
8.6 深入學習導讀
8.7 習題
8.8 項目設計
第9章 檢索
9.1 檢索未排序和已排序的數組
9.2 自組織線性表
9.3 集合檢索
9.4 散列方法
9.5 深入學習導讀
9.6 習題
9.7 項目設計
第10章 索引技術
10.1 線性索引
10.2 ISAM
10.3 基于樹的索引
10.4 2-3樹
10.5 B樹
10.6 深入學習導讀
10.7 習題
10.8 項目設計
第四部分 高級數據結構
第11章 圖
11.1 術語和表示法
11.2 圖的實現(xiàn)
11.3 圖的遍歷
11.4 最短路徑問題
11.5 最小支撐樹
11.6 深入學習導讀
11.7 習題
11.8 項目設計
第12章 線性表和數組高級技術
12.1 廣義表
12.2 矩陣的表示方法
12.3 存儲管理
12.4 深入學習導讀
12.5 習題
12.6 項目設計
第13章 高級樹結構
13.1 Trie結構
13.2 平衡樹
13.3 空間數據結構
13.4 深入學習導讀
13.5 習題
13.6 項目設計
第五部分 算法理論
第14章 分析技術
14.1 求和技術
14.2 遞歸關系
14.3 均攤分析
14.4 深入學習導讀
14.5 習題
14.6 項目設計
第15章 下限
15.1 下限證明介紹
15.2 線性表檢索的下限
15.3 查找最大值
15.4 對抗性下限證明
15.5 狀態(tài)空間下限證明
15.6 找到第i大元素
15.7 優(yōu)化排序
15.8 深入學習導讀
15.9 習題
15.10 項目設計
第16章 算法模式
16.1 動態(tài)規(guī)劃
16.2 隨機算法
16.3 數值算法
16.4 深入學習導讀
16.5 習題
16.6 項目設計
第17章 計算的限制
17.1 歸約
17.2 難解問題
17.3 不可解問題
17.4 深入學習導讀
17.5 習題
17.6 項目設計
第六部分 附錄
附錄A 實用函數
參考文獻
詞匯表