內容簡介
全書共分10章:緒論、線性表、字元串、棧與佇列、二叉樹與樹、集合與字典、高級字典結構、排序、圖和算法分析與設計。《算法與數據結構:C語言描述(第2版)》體系完整,概念清楚,內容充實,取材適當。第一版被列入“面向21世紀課程教材”,2004年被評為“北京市高等教育精品教材”,第二版被列入普通高等教育“十一五”國家級規劃教材。
新版採用“數據結構作為抽象數據類型的物理實現”觀點,在內容和形式上都進行了許多改進和擴充,提高了抽象數據類型在教學中的地位和作用,更加突出了重點,還補充了習題,增加了索引。新版的第4次印刷本對書稿中的各種問題進行了認真的修改與完善,提高了全書的可讀性。
由於在編寫中注意到知識模組的獨立性和相關性,不同專業和不同水平的學生可以根據需要組合使用。《算法與數據結構:C語言描述(第2版)》既可以作為計算機專業本科“數據結構”教材,也可以作為理工科有關專業本科和計算機專業專科學生學習相關課程的教材或教學參考書。
圖書目錄
1 緒論.
1.1 從問題到程式?
1.1.1 問題分析與抽象 ?
1.1.2 程式的設計與實現 ?
1.2 抽象數據類型 ?
1.2.1 什麼是抽象數據類型 ?
1.2.2 意義與作用 ?
1.2.3 舉例 ?
1.3 數據結構 ?
1.3.1 什麼是數據結構 ?
1.3.2 數據結構的分類 ?
1.3.3 結點與結構 ?
1.3.4 外存數據的組織 ?
1.4 算法 ?
1.4.1 什麼是算法 ?
1.4.2 算法的設計 ?
1.4.3 算法的精化 ?
1.4.4 算法的分析 ?
小結 ?
習題 ?
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.4 套用舉例 ?
2.4.1 Josephus問題 ?
2.4.2 採用順序表模擬 ?
2.4.3 採用循環鍊表模擬 ?
2.5 矩陣 ?
2.5.1 矩陣的順序表示 ?
2.5.2 稀疏矩陣的表示方法 ?
2.6 廣義表與動態存儲管理 ?
2.6.1 廣義表 ?
2.6.2 結點的動態分配與回收 ?
2.6.3 廢料收集與存儲壓縮 ?
小結 ?
習題 ?
3 字元串?
3.1 字元串及其抽象數據類型 ?
3.1.1 基本概念 ?
3.1.2 抽象數據類型 ?
3.2 字元串的實現 ?
3.2.1 順序表示 ?
3.2.2 連結表示 ?
3.3 模式匹配 ?
3.3.1 樸素的模式匹配 ?
3.3.2 無回溯的模式匹配 ?
小結 ?
習題 ?
4 棧與佇列?
4.1 棧及其抽象數據類型 ?
4.1.1 基本概念 ?
4.1.2 抽象數據類型 ?
4.2 棧的實現 ?
4.2.1 順序表示 ?
4.2.2 連結表示 ?
4.3 棧的套用 ?
4.3.1 棧與遞歸 ?
4.3.2 迷宮問題 ?
4.3.3 表達式計算 ?
4.4 佇列及其抽象數據類型 ?
4.4.1 基本概念 ?
4.4.2 抽象數據類型 ?
4.5 佇列的實現 ?
4.5.1 順序表示 ?
4.5.2 連結表示 ?
4.6 佇列的套用 ?
小結 ?
習題 ?
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.4 二叉樹的套用 ?
5.4.1 堆與優先佇列 ?
5.4.2 哈夫曼樹及其套用 ?
5.5 樹及其抽象數據類型 ?
5.5.1 基本概念 ?
5.5.2 抽象數據類型 ?
5.5.3 樹的週遊 ?
5.6 樹的實現 ?
5.6.1 父指針表示法 ?
5.6.2 子表表示法 ?
5.6.3 長子-兄弟表示法 ?
5.6.4 樹的其他表示法..
5.7 樹林 ?
5.7.1 樹林的週遊 ?
5.7.2 樹林的存儲表示 ?
5.7.3 樹林與二叉樹的轉換 ?
小結 ?
習題 ?
6 集合與字典?
6.1 集合及其抽象數據類型 ?
6.1.1 基本概念 ?
6.1.2 主要運算 ?
6.1.3 抽象數據類型 ?
6.2 集合的實現 ?
6.2.1 集合的位向量表示 ?
6.2.2 集合的單鍊表表示 ?
6.3 字典及其抽象數據類型 ?
6.3.1 基本概念 ?
6.3.2 抽象數據類型 ?
6.4 字典的順序表示 ?
6.4.1 存儲結構 ?
6.4.2 算法的實現 ?
6.4.3 有序順序表與二分法檢索 ?
6.5 字典的散列表示 ?
6.5.1 基本概念 ?
6.5.2 散列函式 ?
6.5.3 碰撞的處理 ?
6.5.4 散列檔案 ?
小結 ?
習題 ?
7 高級字典結構?
7.1 字典與索引 ?
7.1.1 字典的索引 ?
7.1.2 索引的抽象 ?
7.2 字元樹 ?
7.2.1 雙鏈樹表示 ?
7.2.2 多鍊表示 ?
7.3 二叉排序樹 ?
7.3.1 二叉排序樹 ?
7.3.2 二叉排序樹的檢索 ?
7.3.3 二叉排序樹的插入和構造 ?
7.3.4 二叉排序樹的刪除 ?
7.4 最佳二叉排序樹 ?
7.4.1 基本概念 ?
7.4.2 等機率的檢索 ?
7.4.3 不等概的情況 ?
7.5 平衡二叉排序樹 ?
7.5.1 基本概念 ?
7.5.2 調整平衡的模式 ?
7.5.3 實現 ?
7.6 索引檔案 ?
7.6.1 多分樹 ?
7.6.2 B樹 ?
7.6.3 B+樹 ?
小結 ?
習題 ?
8 排序?
8.1 基本概念 ?
8.2 插入排序 ?
8.2.1 直接插入排序 ?
8.2.2 二分法插入排序 ?
8.2.3 表插入排序 ?
8.2.4 Shell排序 ?
8.3 選擇排序 ?
8.3.1 直接選擇排序 ?
8.3.2 堆排序 ?
8.4 交換排序 ?
8.4.1 起泡排序 ?
8.4.2 快速排序 ?
8.5 分配排序 ?
8.5.1 概述 ?
8.5.2 基數排序 ?
8.6 歸併排序 ?
8.6.1 內排序 ?
8.6.2 外排序 ?
小結 ?
習題 ?
9 圖?
9.1 基本概念及其抽象數據類型 ?
9.1.1 基本概念 ?
9.1.2 抽象數據類型 ?
9.2 圖的週遊 ?
9.2.1 深度優先週遊 ?
9.2.2 廣度優先週遊 ?
9.3 存儲表示 ?
9.3.1 鄰接矩陣表示法 ?
9.3.2 鄰接表表示法 ?
9.3.3 兩種表示的比較 ?
9.4 最小生成樹 ?
9.4.1 最小生成樹及其性質 ?
9.4.2 最小生成樹的構造 ?
9.5 最短路徑 ?
9.5.1 Dijkstra算法 ?
9.5.2 Floyd算法 ?
9.6 拓撲排序 ?
9.6.1 AOV網 ?
9.6.2 拓撲排序 ?
9.7 關鍵路徑 ?
9.7.1 AOE網 ?
9.7.2 關鍵路徑 ?
小結 ?
習題 ?
10 算法分析與設計?
10.1 算法分析技術 ?
10.1.1 空間代價分析 ?
10.1.2 時間代價分析 ?
10.2 算法設計技術 ?
10.2.1 分治法 ?
10.2.2 貪心法 ?
10.2.3 動態規劃法 ?
10.2.4 回溯法 ?
10.2.5 分枝界限法與0/1背包問題?
小結 ?
習題 ?
參考文獻 ?
索引?
算法清單?
後記