《數據結構》是為“數據結構”課程編寫的教材,也可作為學習數據結構及其算法的C程序設計的參考教材!稊祿Y構》的前部分主要討論了線性結構、樹形結構、圖狀(網狀)結構的數據結構定義、算法及其應用;后部分主要討論了實現查找和排序操作的基本數據結構和算法。《數據結構》采用C語言作為數據結構和算法的描述語言!稊祿Y構》主要章節(jié)還包含了實驗、習題、課程設計等內容,可作為實驗、課程設計的參考書,也可作為考試復習參考書!稊祿Y構》概念表述嚴謹,邏輯推理嚴密,語言精練,用詞達意,既便于教學,又便于自學。
《數據結構》可作為計算機類專業(yè)或信息類相關專業(yè)的本科或專科教材,或作為“數據結構”課程研究生入學考試的參考書,也可供從事計算機工程與應用工作的科技工作者參考。
第1章 緒論
1.1 數據結構的基本概念
1.2 算法和算法分析
1.2.1 算法定義
1.2.2 算法特性
1.2.3 算法設計要求
1.2.4 算法分析
1.3 習題
第2章 線性表
2.1 線性表的邏輯結構及其運算
2.2 線性表的順序存儲結構和實現
2.2.1 線性表的順序存儲結構
2.2.2 順序表基本操作的實現
2.3 線性表的鏈式存儲結構和實現
2.3.1 線性表的鏈式存儲結構
2.3.2 單鏈表基本操作的實現
2.3.3 靜態(tài)鏈表
2.4 循環(huán)鏈表和雙向鏈表
2.4.1 循環(huán)鏈表
2.4.2 雙向鏈表
2.5 實驗:線性表
2.5.1 實驗2.1:順序表
2.5.2 實驗2.2:單鏈表
2.5.3 實驗2.3:靜態(tài)鏈表
2.6 習題
第3章 棧和隊列
3.1 棧
3.2 棧的順序存儲結構和實現
3.2.1 順序棧的定義和實現
3.2.2 鏈棧的定義和實現
3.3 棧的應用
3.4 隊列
3.5 隊列的存儲結構和實現
3.5.1 順序循環(huán)隊列的定義和實現
3.5.2 鏈隊列的定義和實現
3.6 實驗:棧和隊列
3.6.1 實驗3.1:順序棧
3.6.2 實驗3.2:鏈棧
3.6.3 實驗3.3:循環(huán)隊列
3.6.4 實驗3.4:鏈隊列
3.7 習題
第4章 串和數組及廣義表
4.1 串的基本概念
4.2 串的存儲表示和實現
4.2.1 串的定長順序存儲和實現
4.2.2 串的堆分配存儲和實現
4.2.3 串的塊鏈式存儲和實現
4.3 串的模式匹配算法
4.4 數組
4.4.1 數組的定義
4.4.2 數組的順序表示和實現
4.5 矩陣的壓縮存儲
4.5.1 特殊矩陣的壓縮存儲
4.5.2 稀疏矩陣的壓縮存儲
4.6 廣義表
4.7 實驗:串和數組及廣義表
4.7.1 實驗4.1:定長順序串的基本操作
4.7.2 實驗4.2:稀疏矩陣的基本運算
4.8 習題
第5章 樹和二叉樹
5.1 樹的定義與存儲結構
5.1.1 樹的定義與基本術語
5.1.2 樹的存儲結構
5.2 二叉樹
5.2.1 二叉樹的定義與性質
5.2.2 二叉樹的存儲結構
5.3 二叉樹遍歷和線索
5.3.1 二叉樹遍歷的遞歸算法
5.3.2 二叉樹遍歷的非遞歸算法
5.3.3 線索二叉樹
5.4 樹、森林和二叉樹的轉換與遍歷
5.4.1 樹轉換成二叉樹
5.4.2 二叉樹轉換成森林
5.4.3 森林轉換成二叉樹
5.4.4 樹和森林的遍歷
5.5 赫夫曼樹
5.5.1 赫夫曼樹的定義與構造
5.5.2 赫夫曼編碼及其算法
5.6 實驗:樹和二叉樹
5.6.1 實驗5.1:二叉樹遍歷的遞歸算法
5.6.2 實驗5.2:二叉樹遍歷的非遞歸算法
5.6.3 實驗5.3:赫夫曼編碼
5.7 習題
第6章 圖
6.1 圖的基本概念
6.2 圖的存儲結構
6.2.1 鄰接矩陣
6.2.2 鄰接表
6.2.3 十字鏈表
6.2.4 鄰接多重表
6.2.5 邊表
6.3 圖的遍歷
6.3.1 深度優(yōu)先搜索遍歷
6.3.2 廣度優(yōu)先搜索遍歷
6.4 最小生成樹
6.4.1 普里姆算法
6.4.2 克魯斯卡爾算法
6.5 有向無環(huán)圖及其應用
6.5.1 拓撲排序
6.5.2 關鍵路徑
6.6 最短路徑
6.6.1 單源頂點出發(fā)的最短路徑
6.6.2 每一對頂點間的最短路徑
6.7 實驗:圖
6.7.1 實驗6.1:圖的深度優(yōu)先搜索遍歷
6.7.2 實驗6.2:圖的廣度優(yōu)先搜索遍歷
6.7.3 實驗6.3:最小生成樹的普里姆算法
6.7.4 實驗6.4:最小生成樹的克魯斯卡爾算法
6.7.5 實驗6.5:拓撲排序
6.7.6 實驗6.6:關鍵路徑
6.7.7 實驗6.7:單源點出發(fā)最短路徑的迪杰斯特拉算法
6.7.8 實驗6.8:每一對頂點間最短路徑的弗洛伊德算法
6.8 習題
第7章 查找
7.1 查找的概念
7.2 靜態(tài)查找
7.2.1 順序查找
7.2.2 折半查找
7.2.3 分塊查找
7.3 動態(tài)查找
7.3.1 二叉排序樹的定義
7.3.2 二叉排序樹的查找
7.3.3 二叉排序樹的插入
7.3.4 二叉排序樹的建樹
7.3.5 二叉排序樹的刪除
7.4 平衡二叉樹
7.4.1 平衡二叉樹的定義
7.4.2 平衡二叉樹的旋轉
7.4.3 平衡二叉排序樹的建樹與插入
7.5 索引查找
7.5.1 B-樹的定義
7.5.2 B-樹的查找
7.5.3 B-樹的插入
7.5.4 B-樹的刪除
7.5.5 B+樹
7.6 哈希查找
7.6.1 哈希函數
7.6.2 沖突處理
7.6.3 哈希查找
7.6.4 哈希表的插入與刪除
7.7 實驗:查找
7.7.1 實驗7.1:順序查找與折半查找
7.7.2 實驗7.2:分塊查找
7.7.3 實驗7.3:二叉排序樹的操作
7.7.4 實驗7.4:平衡二叉排序樹的建樹
7.7.5 實驗7.5:B一樹的建樹與查找
7.7.6 實驗7.6:基于開放地址法的哈希表查找算法
7.7.7 實驗7.7:基于鏈地址法的哈希表查找算法
7.8 習題
第8章 排序
8.1 排序的基本概念
8.2 插入排序
8.2.1 直接插入排序
8.2.2 折半插入排序
8.2.3 表插入排序
8.2.4 希爾排序
8.3 交換排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 選擇排序
8.4.1 簡單選擇排序
8.4.2 錦標賽樹形選擇排序
8.4.3 堆排序
8.5 歸并排序
8.6 基數排序
8.6.1 多關鍵字排序
8.6.2 鏈式基數排序
8.7 內部排序方法的比較
8.8 實驗:排序
8.8.1 實驗8.1:插入排序
8.8.2 實驗8.2:交換排序
8.8.3 實驗8.3:選擇排序
8.8.4 實驗8.4:歸并排序
8.8.5 實驗8.5:基數排序
8.9 習題
習題參考答案