數據結構教程
黃育潛、滕少華編著書籍
《數據結構教程》用精練、流暢的語言詳述了數據結構的基本概念、基本思想、基本原理及實際背景。共分十章,內容包括:緒論,線性表,棧和隊列,特殊鏈表和特殊線性表,內、外排序,樹,圖,檢索,文件。
書中以大量的例子來突出這樣一個思想:數據結構是演演算法設計和描述的基礎與工具,並採取了“對象描述、關鍵一步和總體控制”的演演算法講解模式等多項化解難點的創新作法,在教學中深受學生歡迎。另外,《數據結構教程》採用實用的PASCAL語言作為數據結構和演演算法的描述工具,這將便於讀者自學,也有利於幫助讀者在今後的實踐中應用所學的知識。
1.1 數據結構和演演算法
1.2 數據的邏輯結構和存儲結構
1.3 演演算法和演演算法分析
2.1 線性表及其基本運算
2.1.1 線性表
2.1.2 線性表的基本運算
2.2 線性表的順序存儲實現
2.2.1 向量——線性表的順序存儲表示
2.2.2 插入、刪除與查找演演算法
2.3 應用——多項式相加(順序存儲實現)
2.3.1 多項式的壓縮表示及其順序存儲
2.3.2 多項式相加
2.4 線性表的鏈式存儲實現
2.4.1 單鏈表——線性表的鏈式存儲表示
2.4.2 單鏈表的插入、刪除與查找
2.4.3 關於單鏈表實現的註記
2.5 應用——多項式相加(鏈式存儲實現)
2.5.1 多項式的鏈式存儲表示
2.5.2 多項式的相加
3.1 棧
3.1.1 棧的概念
3.1.2 棧的基本運算
3.2 棧的順序存儲實現
3.2.1 順序棧——棧的順序存儲表示
3.2.2 基本運算的實現
3.3 棧的應用——算術表達式的求值
3.3.1 表達式求值與運算符的優先數
3.3.2 表達式的中綴表示與後綴表示
3.3.3 表達式求值的演演算法實現
3.4 棧的鏈式存儲實現及其應用
3.4.1 鏈接棧——棧的鏈式存儲表示
3.4.2 基本運算的實現
3.4.3 鏈接棧的應用——可用空間棧
3.5 隊列
3.5.1 隊列的概念
3.5.2 隊列的基本運算
3.6 隊列的實現
3.6.1 順序隊列——隊列的順序存儲實現
3.6.2 循環(順序)隊列——隊列的另一種順序存儲實現
3.6.3 鏈接隊列——隊列的鏈式存儲實現
3.7 隊列的應用——醫院門診部病人管理系統
3.7.1 病人管理系統及所需數據結構
3.7.2 病人管理系統的實現
4.1 帶頭結點的鏈表
4.1.1 LWH——帶頭結點的鏈表(List With Header node)
4.1.2 LWH的基本運算
4.1.3 頭結點的其它應用和設計
4.2 環形鏈表
4.2.1 CL——環形鏈表(Circular linked List)
4.2.2 CL的基本運算
4.2.3 CL的應用
4.3 雙鏈表
4.3.1 DL——雙鏈表(Double—Iinked List)
4.3.2 DL的基本運算
4.3.3 DL的應用——簡單行編輯器的設計與實現
4.4 字元串
4.4.1 串的基本概念
4.4.2 串的基本運算
4.4.3 串的存儲實現
4.5 特殊矩陣
4.5.1 對稱矩陣
4.5.2 三角矩陣
4.5.3 稀疏矩陣
5.1 引言
5.2 插入排序
5.2.1 直接插入排序
5.2.2 折半插入排序
5.2.3 Shell排序
5.3 選擇排序
5.3.1 直接選擇排序
5.3.2 堆排序
5.4 交換排序
5.4.1 冒泡排序
5.4.2 快速排序
5.5 歸併排序
5.6 分配排序
6.1 樹的基本概念
6.2 樹的存儲結構
6.3 樹的遍歷
6.4 樹的線性表示
6.5 二叉樹
6.5.1 滿二叉樹和完全二叉樹
6.5.2 樹轉換成相應二叉樹
6.6 二叉樹的遍歷
6.7 二叉樹的順序存儲
6.7.1 完全二叉樹的順序存儲
6.7.2 按前序的存儲形式
6.8 穿線二叉樹
6.8.1 穿線二叉樹的操作
6.8.2 穿線排序
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 生成樹和最小生成樹
7.5 最短路徑
7.5.1 從一個源點到其它各頂點的最短路徑
7.5.2 每一對頂點之間的最短路徑
7.6 拓撲排序
8.1 基本概念
8.2 線性表的檢索
8.2.1 順序檢索法
8.2.2 二分檢索法
8.2.3 分頁塊檢索
8.3 二叉排序樹
8.4 豐滿樹和平衡樹
8.4.1 豐滿樹
8.4.2 平衡二叉排序樹
8.5 最佳二叉排序樹和Huffman樹
8.5.1 擴充二叉樹
8.5.2 最佳二叉排序樹
8.5.3 Huffman樹
8.6 散列表(Hash)檢索
8.6.1 散列函數
8.6.2 處理衝突的方法
9.1 文件的基本概念
9.2 外存儲器簡介
9.2.1 磁帶
9.2.2 磁碟
9.2.3 分頁塊存儲法
9.3 文件組織概述
9.3.1 文件的邏輯結構
9.3.2 文件的存儲結構
9.3.3 文件上的操作
10.1 外排序概述
10.2 磁碟排序
10.2.1 多路合併
10.2.2 初始順串的生成
10.3 磁帶排序
10.3.1 平衡合併排序
10.3.2 多階段合併排序
《數據結構教程》(第二版)是1996年出版的第一版的修訂版。修訂版在保持第一版基本框架和特色的基礎上,對其中的內容做了大量的增刪和修改,書中所有演演算法採用C語言描述。
書中討論了包括線性表、堆棧、隊列、樹和圖在內的各種數據結構和數據文件的基本概念、邏輯結構與存儲結構,以及在這些結構的基礎上所實施的相關操作。全書仍分為11章。每一章在增加了大量例題解析的同時,還配有豐富的、各種類型的習題,並且提供了體現各章基本內容的上機實踐題。
本書可以作為高等院校計算機專業本科學生的教材,也可以作為報考高等學校計算機專業碩士研究生入學考試的復慣用書,同時還可以作為從事計算機系統軟體和應用軟體設計與開發人員的參考資料。
第1章 緒論
1.1 什麼是數據結構
1.2 數據結構的發展簡史及其在計算機科學中的地位
1.3 演演算法
1.3.1 演演算法及其性質
1.3.2 基本演演算法
1.3.3 演演算法的描述
1.4 演演算法分析
1.4.1 時間複雜度
1.4.2 空間複雜度
1.4.3 其他方面
習題
第2章 線性表
2.1 線性表的定義及其基本操作
2.1.1 線性表的定義
2.1.2 線性表的基本操作
2.2 線性表的順序存儲結構
2.2.1 順序存儲結構的構造
2.2.2 幾種常見操作的實現
2.2.3 順序存儲結構小結
2.3 線性鏈表及其操作
2.3.1 線性鏈表的構造
2.3.2 線性鏈表的基本演演算法
2.4 循環鏈表及其操作
2.5 雙向鏈表及其操作
2.5.1 雙向鏈表的構造
2.5.2 雙向鏈表的插入與刪除演演算法
2.6 鏈表的應用舉例
2.6.1 鏈式存儲結構下的一元多項式相加
2.6.2 列印文本文件的最後n行
習題
第3章 數組
3.1 數組的概念
3.2 數組的存儲結構
3.3 矩陣的壓縮存儲
3.3.1 對稱矩陣的壓縮存儲
3.3.2 對角矩陣的壓縮存儲
3.4 稀疏矩陣的三元組表表示
3.4.1 稀疏矩陣的三元組表存儲方法
3.4.2 稀疏矩陣的轉置演演算法
3.4.3 稀疏矩陣的相加演演算法
3.4.4 稀疏矩陣的相乘演演算法
3.5 稀疏矩陣的鏈表表示
3.5.1 線性鏈表存儲方法
3.5.2 帶行指針向量的鏈表存儲方法
3.5.3 十字鏈表存儲方法
3.6 數組的應用舉例
3.6.1 一元多項式的數組表示
3.6.2 n階魔方
習題
第4章 堆棧和隊列
4.1 堆棧的概念及其操作
4.1.1 堆棧的定義
4.1.2 堆棧的基本操作
4.2 堆棧的順序存儲結構
4.2.1 順序堆棧的構造
4.2.2 順序堆棧的基本演演算法
4.2.3 多個堆棧共享連續空間
4.3 堆棧的鏈式存儲結構
……
第5章 廣義表
第6章 串
第7章 樹與二叉樹
第8章 圖
第9章 文件及查找
第10章 內排序
第11章 外排序
附錄 上機實踐題
習題答案
參考文獻