第1章 課程概論
1.1 課程的初步認識
1.2 數據結構的基本概念
1.2.1 基本術語
1.2.2 數據結構的概念
1.2.3 邏輯結構和物理結構
1.2.4 數據結構形式定義
1.3 數據類型及面向對象概念
1.3.1 數據類型概述
1.3.2 抽象數據類型
1.3.3 實現方法
1.3.4 面向對象的概念
1.4 算法及算法分析
1.4.1 算法特性
1.4.2 算法描述
1.4.3 算法設計的要求
1.4.4 算法分析
實習題1
第2章 線性表
2.1 線性表的相關概念及抽象數據類型
2.1.1 線性表的相關概念
2.1.2 線性表抽象數據類型描述
2.1.3 線性表的抽象類定義
2.2 順序表類
2.2.1 順序表的存儲結構
2.2.2 順序表的類定義
2.2.3 順序表類的實現
2.2.4 順序表算法設計舉例
2.3 單鏈表類
2.3.1 單鏈表的存儲結構
2.3.2 單鏈表的類定義
2.3.3 單鏈表類的實現
2.3.4 單鏈表算法設計舉例
2.4 靜態(tài)鏈表類
2.4.1 靜態(tài)鏈表的存儲結構
2.4.2 靜態(tài)鏈表的類定義
2.4.3 靜態(tài)鏈表類的實現
2.5 雙向循環(huán)鏈表類
2.5.1 雙向循環(huán)鏈表的存儲結構
2.5.2 雙向循環(huán)鏈表的類定義
2.5.3 雙向循環(huán)鏈表類的實現
2.6 線性表應用舉例
2.6.1 線性表功能演示程序
2.6.2 進程調度模擬程序
實習題2
第3章 棧
3.1 棧的相關概念及抽象數據類型
3.1.1 棧的相關概念
3.1.2 棧抽象數據類型描述
3.1.3 棧的抽象類定義
3.2 順序棧類
3.2.1 順序棧的存儲結構
3.2.2 順序棧的類定義及實現
3.2.3 順序棧算法設計舉例
3.3 鏈棧類
3.3.1 鏈棧的存儲結構
3.3.2 鏈棧的類定義及實現
3.3.3 鏈棧算法設計舉例
3.4 棧的應用舉例
3.4.1 括號配對問題
3.4.2 表達式求值
3.4.3 棧功能演示程序
實習題3
第4章 隊列
4.1 隊列的相關概念及抽象數據類型
4.1.1 隊列的相關概念
4.1.2 隊列抽象數據類型描述
4.1.3 隊列的抽象類定義
4.2 鏈隊列類
4.2.1 鏈隊列的存儲結構
4.2.2 鏈隊列的類定義及實現
4.2.3 鏈隊列算法設計舉例
4.3 循環(huán)隊列類
4.3.1 隊列的順序存儲結構
4.3.2 循環(huán)隊列類的定義及實現
4.3.3 循環(huán)隊列算法設計舉例
4.4 隊列的應用舉例
4.4.1 顯示楊輝三角形
4.4.2 循環(huán)隊列功能演示程序
實習題4
第5章 串
5.1 串的相關概念及抽象數據類型
5.1.1 串的相關概念
5.1.2 串抽象數據類型描述
5.1.3 串的抽象類定義
5.2 串的存儲結構
5.2.1 順序存儲結構
5.2.2 鏈式存儲結構
5.2.3 堆存儲結構
5.3 設置長度的順序串類Str1
5.3.1 Str1的類定義
5.3.2 求子串、定位操作的實現
5.3.3 刪除、插入及替換操作的實現
5.3.4 Str1類算法設計舉例
5.4 設置結束符的順序串類Str2
5.4.1 Str2類的定義
5.4.2 Str2類的實現
5.4.3 Str2類算法設計舉例
5.5 串的應用舉例
5.5.1 字符串類功能演示程序
5.5.2 文本文件單詞統計程序
實習題5
第6章 數組、矩陣和集合
6.1 數組
6.1.1 數組的相關概念及抽象數據類型
6.1.2 數組類的定義及實現
6.2 矩陣概述
6.2.1 矩陣的相關概念
6.2.2 矩陣的存儲方式
6.3 矩陣類
6.3.1 矩陣類的定義
6.3.2 矩陣類的實現
6.3.3 矩陣類算法設計舉例
6.4 矩陣的壓縮存儲
6.4.1 對稱矩陣的壓縮存儲
6.4.2 對角矩陣的壓縮存儲
6.4.3 稀疏矩陣的壓縮存儲
6.5 稀疏矩陣類
6.5.1 稀疏矩陣類的定義
6.5.2 稀疏矩陣類的實現
6.6 集合
6.6.1 集合的相關概念及抽象數據類型
6.6.2 整數集合類
6.7 應用舉例
6.7.1 整數集合類應用程序
6.7.2 八皇后演示程序
實習題6
第7章 廣義表
7.1 廣義表的相關概念及抽象數據類型
7.1.1 廣義表的相關概念
7.1.2 廣義表抽象數據類型描述
7.2 廣義表的存儲方式
7.2.1 頭尾表示法
7.2.2 兒子兄弟表示法
7.3 廣義表類的定義及實現
7.3.1 廣義表類的定義
7.3.2 建立廣義表的存儲結構
7.3.3 取頭、取尾操作的實現
7.3.4 插入、刪除操作的實現
7.4 廣義表的遞歸算法
7.4.1 廣義表的相等比較
7.4.2 廣義表的成員判別
7.4.3 求廣義表的深度
7.4.4 廣義表遞歸算法設計舉例
7.5 廣義表應用舉例
7.5.1 廣義表演示程序
7.5.2 LISP表達式求值
實習題7
第8章 樹與二叉樹
8.1 樹的相關概念及抽象數據類型
8.1.1 樹的定義
8.1.2 樹的邏輯表示
8.1.3 基本術語
8.1.4 樹抽象數據類型描述
8.2 二叉樹
8.2.1 二叉樹的定義及抽象數據類型
8.2.2 二叉樹的基本性質
8.2.3 二叉樹的存儲結構
8.2.4 二叉樹類的定義
8.2.5 二叉樹類的實現
8.2.6 二叉樹的遍歷
8.2.7 二叉樹算法設計舉例
8.3 排序二叉樹
8.3.1 排序二叉樹的定義
8.3.2 排序二叉樹類的定義
8.3.3 排序二叉樹類的實現
8.4 樹與森林
8.4.1 樹的存儲結構
8.4.2 森林與二叉樹的轉換
8.4.3 樹的遍歷
8.5 哈夫曼樹
8.5.1 哈夫曼樹的定義
8.5.2 哈夫曼樹的構造
8.5.3 哈夫曼編碼
8.6 樹的應用舉例
8.6.1 哈夫曼編碼生成程序
8.6.2 二叉樹遍歷演示程序
實習題8
第9章 圖
9.1 圖的相關概念及抽象數據類型
9.1.1 圖的定義
9.1.2 基本術語
9.1.3 圖抽象數據類型描述
9.2 圖的存儲方式
9.2.1 鄰接矩陣
9.2.2 鄰接鏈表
9.2.3 鄰接多重表
9.3 圖的遍歷
9.3.1 鄰接鏈表圖類
9.3.2 深度優(yōu)先搜索遍歷
9.3.3 廣度優(yōu)先搜索遍歷
9.3.4 算法設計舉例
9.4 圖的應用
9.4.1 拓撲排序
9.4.2 最短路徑
9.5 圖的應用程序設計舉例
9.5.1 圖的遍歷演示程序
9.5.2 最短路徑應用程序
實習題9
第10章 查找
10.1 查找的相關概念
10.2 靜態(tài)查找表
10.2.1 順序表的查找
10.2.2 有序表的查找
10.2.3 靜態(tài)樹表的查找
10.2.4 索引順序表的查找
10.3 動態(tài)查找表
10.3.1 排序二叉樹的查找
10.3.2 B-樹與B+樹
10.4 哈希表
10.4.1 哈希表的概念
10.4.2 常用哈希函數
10.4.3 沖突的處理方法
10.4.4 哈希表的查找
10.5 查找應用程序舉例
10.5.1 排序二叉樹演示程序
10.5.2 圖書信息查詢程序
實習題10
第11章 排序
11.1 排序的相關概念
11.2 幾種簡單的排序算法
11.2.1 直接插入排序
11.2.2 冒泡排序
11.2.3 直接選擇排序
11.3 幾種快速的排序方法
11.3.1 快速排序
11.3.2 樹形選擇排序
11.3.3 堆排序
11.3.4 歸并排序
11.4 基數排序
11.5 排序應用程序舉例——排序算法演示程序
實習題11
第12章 外部排序
12.1 外部排序概述
12.2 多路歸并排序
12.2.1 多路歸并與敗者樹
12.2.2 敗者樹相關的數據結構
12.2.3 調整算法
12.2.4 初建樹算法
12.2.5 k路歸并算法
12.3 置換選擇排序
附錄A C++語言概要
附錄B C++ Builder開發(fā)環(huán)境及操作步驟
附錄C 部分實習題參考答案
參考文獻