《數據結構與實訓(第2版)》內容共分8章,第1章介紹了數據結構和算法的基本概念,第2~4章介紹了線性表、堆棧、隊列、串、數組等常用的線性結構,第5、6章介紹了非線性結構樹形結構和圖狀結構,第7、8章介紹了兩個基本技術排序和查找的常用算法。附錄A中介紹了實訓的相關知識,包括實訓的步驟、實訓報告規范、實訓的環境。對每一種數據結構都詳細闡述了基本概念、各種不同的存儲結構及在不同存儲結構上主要算法的實現,并給出豐富的典型例題,以幫助讀者理解。
《數據結構與實訓》自2008年出版以來,以其內容組織合理,例題豐富,實踐性強等優點受到了廣大讀者的歡迎,為了適應高職高專教育的發展需要,根據廣大讀者和出版社的要求對第1版進行修訂。具體修改如下:
1.對全書一些章節重新進行了編寫,以更簡明、淺顯的語言講述各知識點,使教學內容更通俗易懂,易于學生接受。
2.對每章的實訓例題、4.5節的典型題例進行重新調整、編寫,降低難度,增加實用性。
3.每章增加例題。
4.每章刪去較難的例題、實訓例題。
5.刪去第1版的8.6節,以及3.2.4、3.3.3、7.3.4小節。
6.提供電子教案和習題答案,方便學生學習和教師教學。
通過這次修訂,更注重應用與實踐,適應高職高專的特點,并且保持了第1版的風格與體系,讀者使用起來會更實用。
本書講授學時數為60學時左右,實訓學時數為20學時以上。教師可根據學時數和學生的實際情況選講本書的例子。
本書由張紅霞、白桂梅任主編。書中第1~4章由白桂梅編寫,第5~7章、附錄A由張紅霞編寫,第8章由王勤編寫。張紅霞審閱第1~4章,白桂梅審閱第5~8章,全書由張紅霞統稿。
在本書的修訂中,電子工業出版社編輯提出了許多寶貴意見和建議,給予了大力支持和幫助,在此表示衷心的感謝。
本書有大量的算法語句、程序語句及計算公式,對于其中的變量,為了方便讀者閱讀,避免歧義,不再區分正、斜體,而是統一采用正體,特此說明。
由于編者水平有限,雖然在編寫過程中不遺余力,但書中疏漏和錯誤之處在所難免,懇請廣大同行和讀者不吝指正。
第1章 概論
1.1 引言
1.1.1 什么是數據結構
1.1.2 數據結構研究什么
1.2 數據結構的基本概念
1.3 算法和算法的分析
1.3.1 算法及算法的描述
1.3.2 算法設計的要求
1.3.3 算法的分析
習題
第2章 線性表
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.3.3 雙向鏈表
2.4 順序表與鏈表的比較
2.5 典型題例
2.6 實訓例題
2.6.1 實訓例題1:有序順序表的建立及查找
2.6.2 實訓例題2:多項式的表示和相加
習題
實訓習題
第3章 堆棧和隊列
3.1 堆棧
3.1.1 堆棧的定義及基本運算
3.1.2 堆棧的順序存儲結構
3.1.3 堆棧的鏈式存儲結構
3.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.6 實訓例題
3.6.1 實訓例題1:順序循環隊列的操作
3.6.2 實訓例題2:括號配對
習題
實訓習題
第4章 串與數組
4.1 串及其基本運算
4.1.1 串的基本概念
4.1.2 串的基本運算
4.2 串的存儲結構
4.2.1 串的順序存儲
4.2.2 串的堆存儲結構
4.2.3 串的鏈式存儲
4.3 串的模式匹配算法及子串替換算法
4.3.1 模式匹配的Brute-Force算法
4.3.2 子串替換算法
4.4 數組
4.4.1 數組的定義
4.4.2 一維數組、二維數組和多維數組
4.5 典型題例
4.6 實訓例題
4.6.1 實訓例題1:字符串操作
4.6.2 實訓例題2:二維數組
習題
實訓習題
第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 遍歷二叉樹
5.3.1 二叉樹的遍歷方法
5.3.2 二叉樹遍歷算法應用典型例題
5.4 線索二叉樹
5.5 樹、森林和二叉樹的關系
5.5.1 樹、森林轉換為二叉樹
5.5.2 樹、森林的遍歷
5.6 哈夫曼樹及其應用
5.6.1 哈夫曼樹的定義及構造
5.6.2 哈夫曼樹的應用
5.7 典型題例
5.8 實訓例題
5.8.1 實訓例題1:根據順序存儲建立二叉鏈表,并對二叉樹進行先序、中序、后序遍歷
5.8.2 實訓例題2:設計哈夫曼編碼
習題
實訓習題
第6章 圖
6.1 圖的定義和術語
6.1.1 圖的定義
6.1.2 圖的基本術語
6.1.3 圖的基本操作
6.2 圖的存儲結構
6.2.1 鄰接矩陣
6.2.2 鄰接表
6.2.3 鄰接矩陣和鄰接表的比較
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.6 拓撲排序
6.7 典型題例
6.8 實訓例題
6.8.1 實訓例題1:圖的遍歷
6.8.2 實訓例題2:設計學習計劃
習題
實訓習題
第7章 查找
7.1 基本概念
7.2 線性表的查找
7.2.1 順序查找
7.2.2 折半查找
7.2.3 分塊查找
7.3 二叉排序樹的查找
7.3.1 二叉排序樹(Binary Sort Tree)的定義
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.6 實訓例題
7.6.1 實訓例題1:構造二叉排序樹
7.6.2 實訓例題2:哈希表的操作
習題
實訓習題
第8章 排序
8.1 排序的基本概念
8.2 插入排序
8.2.1 直接插入排序
8.2.2 希爾排序
8.3 交換排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 選擇排序
8.4.1 直接選擇排序
8.4.2 堆排序
8.5 歸并排序
8.6 各種內部排序方法的比較
8.7 典型題例
8.8 實訓例題
8.8.1 實訓例題1:不同排序算法的比較
8.8.2 實訓例題2:學生成績名次表
習題
實訓習題
附錄A 數據結構實訓指南
A.1 綜述
A.2 實訓步驟
A.3 實訓報告規范
A.4 數據結構實訓的上機環境
A.5 Trubo C 2.0編譯、連接時的錯誤和警告信息
參考文獻