本書介紹了數(shù)據結構的基本概念和基本算法。全書共分為10章,包括概論、線性表及其順序存儲、線性表的鏈式存儲、字符串、數(shù)組和特殊矩陣、遞歸、樹型結構、二叉樹、圖、檢索、內排序等內容,附錄給出了較為詳細的基礎實驗和幾類綜合課程設計題。
本書內容豐富,邏輯性強,文字清晰流暢,既注重理論知識,又強調工程實用。書中既體現(xiàn)了抽象數(shù)據類型的概念,又對每個算法的具體實現(xiàn)給出了完整的C語言源代碼描述。
與本書配套的電子教案、書中所有算法的源代碼和習題參考答案均可從人民郵電出版社教學服務與資源網(www.ptpedu.com.cn)上免費下載。
本書可作為高等院校計算機專業(yè)及相關專業(yè)本科生“數(shù)據結構”課程的教材,也可作為從事計算機工程與應用的廣大讀者的參考書。
1.“十二五”普通高等教育本科國家級規(guī)劃教材 2.江西省精品課程、省精品資源共享課程配套教材 3.C語言實現(xiàn),提供全部實例代碼及實驗代碼。
第1章 概論
1.1 數(shù)據結構的基本概念與術語
1.1.1 數(shù)據結構的基本概念
1.1.2 數(shù)據的邏輯結構
1.1.3 數(shù)據的存儲結構
1.1.4 數(shù)據的運算集合
1.2 數(shù)據類型和抽象數(shù)據類型
1.2.1 數(shù)據類型
1.2.2 抽象數(shù)據類型
1.2.3 抽象數(shù)據類型的描述和實現(xiàn)
1.3 算法和算法分析
1.3.1 算法的基本概念和基本特征
1.3.2 算法的時間復雜度和空間復雜度
習題
第1章 概論
1.1 數(shù)據結構的基本概念與術語
1.1.1 數(shù)據結構的基本概念
1.1.2 數(shù)據的邏輯結構
1.1.3 數(shù)據的存儲結構
1.1.4 數(shù)據的運算集合
1.2 數(shù)據類型和抽象數(shù)據類型
1.2.1 數(shù)據類型
1.2.2 抽象數(shù)據類型
1.2.3 抽象數(shù)據類型的描述和實現(xiàn)
1.3 算法和算法分析
1.3.1 算法的基本概念和基本特征
1.3.2 算法的時間復雜度和空間復雜度
習題
第2章 線性表及其順序存儲
2.1 線性表
2.2 順序表
2.2.1 順序表的基本概念及描述
2.2.2 順序表的實現(xiàn)
2.3 !
2.3.1 棧的基本概念及描述
2.3.2 順序棧及其實現(xiàn)
2.3.3 棧的應用之一——括號匹配
2.3.4 棧的應用之二——算術表達式求值
2.4 隊列
2.4.1 隊列的基本概念及描述
2.4.2 順序隊列及其實現(xiàn)
2.4.3 順序循環(huán)隊列及其實現(xiàn)
習題
第3章 線性表的鏈式存儲
3.1 鏈式存儲
3.2 單鏈表
3.2.1 單鏈表的基本概念及描述
3.2.2 單鏈表的實現(xiàn)
3.3 帶頭結點的單鏈表
3.3.1 帶頭結點的單鏈表的基本概念及描述
3.3.2 帶頭結點的單鏈表的實現(xiàn)
3.4 循環(huán)單鏈表
3.4.1 循環(huán)單鏈表的基本概念及描述
3.4.2 循環(huán)單鏈表的實現(xiàn)
3.5 雙鏈表
3.5.1 雙鏈表的基本概念及描述
3.5.2 雙鏈表的實現(xiàn)
3.6 鏈式!
3.6.1 鏈式棧的基本概念及描述
3.6.2 鏈式棧的實現(xiàn)
3.7 鏈式隊列
3.7.1 鏈式隊列的基本概念及描述
3.7.2 鏈式隊列的實現(xiàn)
習題
第4章 字符串、數(shù)組和特殊矩陣
4.1 字符串
4.1.1 字符串的基本概念
4.1.2 字符串類的定義
4.1.3 字符串的存儲及其實現(xiàn)
4.2 字符串的模式匹配
4.2.1 樸素的模式匹配算法
4.2.2 快速模式匹配算法
4.3 數(shù)組
4.3.1 數(shù)組和數(shù)組元素
4.3.2 數(shù)組類的定義
4.3.3 數(shù)組的順序存儲及實現(xiàn)
4.4 特殊矩陣
4.4.1 對稱矩陣的壓縮存儲
4.4.2 三角矩陣的壓縮存儲
4.4.3 帶狀矩陣的壓縮存儲
4.5 稀疏矩陣
4.5.1 稀疏矩陣類的定義
4.5.2 稀疏矩陣的順序存儲及其實現(xiàn)
4.5.3 稀疏矩陣的鏈式存儲及實現(xiàn)
習題
第5章 遞歸
5.1 遞歸的基本概念與遞歸程序設計
5.2 遞歸程序執(zhí)行過程的分析
5.3 遞歸程序到非遞歸程序的轉換
5.3.1 簡單遞歸程序到非遞歸程序的轉換
5.3.2 復雜遞歸程序到非遞歸程序的轉換
5.4 遞歸程序設計的應用實例
習題
第6章 樹型結構
6.1 樹的基本概念
6.2 樹類的定義
6.3 樹的存儲結構
6.3.1 雙親表示法
6.3.2 孩子表示法
6.3.3 孩子兄弟表示法
6.4 樹的遍歷
6.5 樹的線性表示
6.5.1 樹的括號表示
6.5.2 樹的層號表示
習題
第7章 二叉樹
7.1 二叉樹的基本概念
7.2 二叉樹的基本運算
7.3 二叉樹的存儲結構
7.3.1 順序存儲結構
7.3.2 鏈式存儲結構
7.4 二叉樹的遍歷
7.4.1 二叉樹遍歷的定義
7.4.2 二叉樹遍歷的遞歸實現(xiàn)
7.4.3 二叉樹遍歷的非遞歸實現(xiàn)
7.5 二叉樹其他運算的實現(xiàn)
7.6 穿線二叉樹
7.6.1 穿線二叉樹的定義
7.6.2 中序穿線二叉樹的基本運算
7.6.3 中序穿線二叉樹的存儲結構及其實現(xiàn)
7.7 樹、森林和二叉樹的轉換
7.7.1 樹、森林到二叉樹的轉換
7.7.2 二叉樹到樹、森林的轉換
習題
第8章 圖
8.1 圖的基本概念
8.2 圖的基本運算
8.3 圖的基本存儲結構
8.3.1 鄰接矩陣及其實現(xiàn)
8.3.2 鄰接表及其實現(xiàn)
8.3.3 鄰接多重表
8.4 圖的遍歷
8.4.1 深度優(yōu)先遍歷
8.4.2 廣度優(yōu)先遍歷
8.5 生成樹與最小生成樹
8.5.1 最小生成樹的定義
8.5.2 最小生成樹的普里姆(Prim)算法
8.5.3 最小生成樹的克魯斯卡爾(Kruskal)算法
8.6 最短路徑
8.6.1 單源最短路徑
8.6.2 所有頂點對的最短路徑
8.7 拓撲排序
8.8 關鍵路徑
習題
第9章 檢索
9.1 檢索的基本概念
9.2 線性表的檢索
9.2.1 順序檢索
9.2.2 二分法檢索
9.2.3 分塊檢索
9.3 二叉排序樹
9.4 豐滿樹和平衡樹
9.4.1 豐滿樹
9.4.2 平衡二叉排序樹
9.5 最佳二叉排序樹和Huffman樹
9.5.1 擴充二叉樹
9.5.2 最佳二叉排序樹
9.5.3 Huffman樹
9.6 B樹
9.6.1 B-樹的定義
9.6.2 B-樹的基本操作
9.6.3 B+樹
9.7 散列表檢索
9.7.1 散列存儲
9.7.2 散列函數(shù)的構造
9.7.3 沖突處理
習題
第10章 內排序
10.1 排序的基本概念
10.2 插入排序
10.2.1 直接插入排序
10.2.2 二分法插入排序
10.2.3 表插入排序
10.2.4 Shell插入排序
10.3 選擇排序
10.3.1 直接選擇排序
10.3.2 樹型選擇排序
10.3.3 堆排序
10.4 交換排序
10.4.1 冒泡排序
10.4.2 快速排序
10.5 歸并排序
10.6 基數(shù)排序
10.6.1 多排序碼的排序
10.6.2 靜態(tài)鏈式基數(shù)排序
習題
附錄1 基礎實驗
實驗1 線性表的順序實現(xiàn)
實驗2 不帶頭結點的單鏈表
實驗3 帶頭結點的單鏈表
實驗4 棧與字符串
實驗5 遞歸
實驗6 樹
實驗7 二叉樹
實驗8 圖
實驗9 檢索
實驗10 排序
附錄2 綜合實驗
參考文獻