數據結構(C語言實現雙色印刷第2版面向新工科普通高等教育系列教材)
內容大鋼
本書內容包括緒論,線性表,棧與隊列,串、數組與廣義表,樹和二叉樹等。全書採用C語言作為數據結構和演算法的描述語言。本書內容編排符合當前高等院校「數據結構」課程的現狀和發展趨勢,知識點涵蓋全面,案例和課後習題豐富,每章均有案例以鞏固讀者對知識點的掌握,突出實用性和實踐性。
本書可作為高等院校電腦科學與技術、軟體工程等相關專業「數據結構」課程的教材,也可作為從事電腦軟體開發、準備考取電腦專業研究生和參加電腦軟體與技術資格考試人員的參考用書。
作者介紹
編者:張建偉//陳銳//馬軍霞|責編:郝建偉//張翠翠
目錄
前言
第1章 緒論
1.1 數據結構的基本概念
1.2 抽象數據類型
1.2.1 抽象數據類型的定義
1.2.2 抽象數據類型的描述
1.3 數據的邏輯結構與存儲結構
1.3.1 邏輯結構
1.3.2 存儲結構
1.4 演算法的特性與演算法的描述
1.4.1 演算法的定義
1.4.2 演算法的特性
1.4.3 演算法的描述
1.5 演算法分析
1.5.1 演算法設計的要求
1.5.2 演算法時間複雜度
1.5.3 演算法空間複雜度
1.6 關於數據結構課程的地位及學習方法
習題
第2章 線性表
2.1 線性表的概念及運算
2.1.1 線性表的邏輯結構
2.1.2 線性表的抽象數據類型
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.3.5 雙向鏈表
2.4 線性表應用舉例:一元多項式的表示與相乘
2.4.1 一元多項式的表示
2.4.2 一元多項式相乘
2.5 小結
習題
第3章 棧與隊列
3.1 棧的表示與實現
3.1.1 棧的定義
3.1.2 棧的抽象數據類型
3.1.3 順序棧
3.1.4 鏈棧
3.2 棧的應用
3.2.1 數制轉換
3.2.2 行編輯程序
3.2.3 算術表達式求值
3.3 棧的遞歸
3.3.1 遞歸
3.3.2 消除遞歸
3.4 隊列的表示與實現
3.4.1 隊列的定義
3.4.2 隊列的抽象數據類型
3.4.3 順序隊列
3.4.4 順序循環隊列
3.4.5 雙端隊列*
3.4.6 鏈式隊列
3.5 隊列的應用
3.5.1 隊列在楊輝三角中的應用
3.5.2 隊列在迴文中的應用
3.6 小結
習題
第4章 串、數組與廣義表
4.1 串的定義和抽象數據類型
4.1.1 串的定義
4.1.2 串的抽象數據類型
4.1.3 串的表示與實現
4.1.4 串的模式匹配
4.2 數組
4.2.1 數組的定義
4.2.2 數組的抽象數據類型
4.2.3 數組的順序表示與實現
4.2.4 特殊矩陣的壓縮存儲
4.2.5 稀疏矩陣的壓縮存儲
4.2.6 稀疏矩陣的應用舉例
4.3 廣義表
4.3.1 廣義表的定義
4.3.2 廣義表的抽象數據類型
4.3.3 廣義表的存儲表示
4.3.4 廣義表的應用舉例
4.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.2.4 二叉樹的存儲表示
5.3 二叉樹的遍歷及應用
5.3.1 二叉樹遍歷的定義
5.3.2 二叉樹的先序遍歷
5.3.3 二叉樹的中序遍歷
5.3.4 二叉樹的後序遍歷
5.3.5 二叉樹的應用舉例
5.4 二叉樹的線索化
5.4.1 二叉樹的線索化定義
5.4.2 二叉樹的線索化
5.4.3 線索二叉樹的遍歷
5.4.4 線索二叉樹的應用舉例
5.5 樹、森林與二叉樹
5.5.1 樹的存儲結構
5.5.2 樹轉換為二叉樹
5.5.3 森林轉換為二叉樹
5.5.4 二叉樹轉換為樹和森林
5.5.5 樹和森林的遍歷
5.6 並查集
5.6.1 並查集的定義
5.6.2 並查集的實現
5.6.3 並查集的應用舉例
5.7 綜合應用舉例:哈夫曼樹
5.7.1 哈夫曼樹的定義
5.7.2 哈夫曼編碼
5.7.3 哈夫曼編碼演算法的實現
5.8 小結
習題
第6章 圖
6.1 圖的定義與相關概念
6.1.1 圖的定義
6.1.2 圖的相關概念
6.1.3 圖的抽象數據類型
6.2 圖的存儲結構
6.2.1 鄰接矩陣表示法
6.2.2 鄰接表表示法
6.2.3 十字鏈表表示法
6.2.4 鄰接多重表表示法
6.3 圖的遍歷
6.3.1 圖的深度優先遍歷
6.3.2 圖的廣度優先遍歷
6.4 圖的連通性問題
6.4.1 無向圖的連通分量與生成樹
6.4.2 最小生成樹
6.5 有向無環圖
6.5.1 AOV網與拓撲排序
6.5.2 AOE網與關鍵路徑
6.6 最短路徑
6.6.1 從某個頂點到其餘各頂點的最短路徑
6.6.2 每一對頂點之間的最短路徑
6.7 圖的應用舉例
6.7.1 求圖中距離某個頂點的最短路徑長度為k的所有頂點
6.7.2 求圖中頂點u到頂點v的簡單路徑
6.8 小結
習題
第7章 查找
7.1 查找的基本概念
7.2 靜態查找
7.2.1 順序表的查找
7.2.2 有序順序表的查找
7.2.3 索引順序表的查找
7.3 動態查找
7.3.1 二叉排序樹
7.3.2 平衡二叉樹
7.3.3 紅黑樹
7.4 B-樹與B+樹
7.4.1 B-樹
7.4.2 B+樹
7.5 哈希表
7.5.1 哈希表的定義
7.5.2 哈希函數的構造方法
7.5.3 處理衝突的方法
7.5.4 哈希表查找與分析
7.5.5 哈希表的應用舉例
7.6 小結
習題
第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.7.1 外排序基本思想
8.7.2 生成初始歸併段
8.7.3 處理歸併段形成有序文件
8.8 小結
習題
參考文獻