數據結構

-
【作 者】陸勤 主編
【I S B N 】978-7-5084-6611-8
【責任編輯】李炎
【適用讀者群】本科
【出版時間】2009-09-01
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】
【千字數】455
【印 張】17.5
【定 價】¥28
【叢 書】新世紀電子信息與自動化系列課程改革教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書系統地闡述了基本數據結構的多種存儲結構和典型算法,以及應用數據結構理論解決實際問題的基本方法和技巧,努力使讀者牢固掌握數據結構的理論,培養靈活運用并巧妙解決具體問題的能力,為讀者今后進一步地深入學習實踐打下堅實基礎。
全書內容嚴謹、編排合理、文字流暢、示例典型、實用性強,書中的程序均已在Microsoft Visual C++ 6.0系統下編譯運行。全書共分9章。第1章介紹數據結構的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊列、字符串、數組與特殊矩陣、樹、圖的多種存儲結構和典型算法應用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數排序等多種排序算法。
本書可用作高等學校非計算機專業本科學生數據結構課程的教材。
本書系統闡述了基本數據結構的多種存儲結構和典型算法,以及應用數據結構理論解決實際問題的基本方法和技巧。
本書力圖使讀者牢固掌握數據結構的理論,培養靈活運用并巧妙解決具體問題的能力,為讀者今后進一步地深入學習實踐打下堅實基礎。
全書內容嚴謹、編排合理、文字流暢、示例典型、實用性強,書中的程序均已在Microsoft Visual C++ 6.0系統下編譯運行。
數據結構是一門討論“描述現實世界實體的數學模型(非數值計算)及其上的操作在計算機中如何表示和實現”的學科。隨著計算機硬件、軟件技術的飛速發展和計算機系統在各行業的廣泛應用,有關數據結構的理論和技術也成為了計算機應用技術教育的重要部分。
數據結構是計算機技術應用方面的主要基礎課程之一,它引導學生學會從實際應用問題入手,分析研究計算機加工的數據結構的特性,以便為應用所涉及的數據選擇適當的邏輯結構、存儲結構及其相應的操作算法,并初步掌握算法的時間和空間分析技術。另一方面,本課程的學習過程也是進行復雜程序設計、調試并排除錯誤的訓練過程,要求學生編寫的程序代碼結構清晰、正確易讀,具有良好的可維護性。
本書按照非計算機專業計算機課程基本要求中所規定的數據結構課程的教學內容,并參考教育部制定的計算機基礎教學主要課程教學大綱編寫。全書共分9章。第1章介紹數據結構的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊列、字符串、數組與特殊矩陣、樹、圖的多種存儲結構和典型算法應用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數排序等多種排序算法。
本書可用作高等學校非計算機專業本科學生數據結構課程的教材,旨在培養學生運用數據結構的基本概念和方法解決實際問題的能力。一般情況下,課堂講授學時數應安排為40~60學時,集體上機實踐時間應安排為30學時,可根據具體條件適當增減教學內容和學時數。多上機實踐是學好本書內容的捷徑,希望讀者通過學習本書盡快掌握數據結構的基本應用技能。
本書由陸勤主編,特別感謝國防科學技術大學鄒逢興教授對本書的出版所給予的巨大幫助。此外,作者參閱了國內外一些有關數據結構的教材、書籍,受益匪淺。在此,謹向這些教材、書籍的作者表示感謝。
由于時間倉促及作者水平有限,書中難免存在錯誤或不當之處,敬請廣大讀者批評指正。
編 者
2009年5月
前言
第1章 緒論 1
1.1 數據結構討論的范疇 2
1.2 數據結構的基本概念 2
1.2.1 基本術語 2
1.2.2 數據結構 4
1.2.3 數據類型和抽象數據類型 6
1.3 算法及其描述和分析 9
1.3.1 算法的特性及其設計原則 9
1.3.2 算法的描述 10
1.3.3 算法分析 11
思考題與習題 15
第2章 線性表 17
2.1 線性表的定義和基本運算 18
2.2 線性表的順序存儲結構 20
2.2.1 順序存儲結構 20
2.2.2 順序表的基本操作及其時間
效率分析 22
2.3 線性表的鏈式存儲結構 24
2.3.1 單鏈表及其基本操作 24
2.3.2 特殊鏈表 32
2.4 線性表的應用示例——多項式的
代數運算 36
思考題與習題 38
第3章 棧和隊列 41
3.1 棧 42
3.1.1 棧的定義及其運算 42
3.1.2 順序棧 43
3.1.3 多棧共享鄰接空間 46
3.1.4 鏈棧 47
3.1.5 棧的應用舉例 49
3.2 隊列(queue) 58
3.2.1 隊列的定義及其運算 59
3.2.2 隊列的順序存儲結構 60
3.2.3 隊列的鏈式存儲結構 62
3.2.4 循環隊列 64
3.2.5 隊列的應用舉例 66
思考題與習題 70
第4章 字符串 73
4.1 串的概念 74
4.1.1 串的定義 74
4.1.2 主串和子串 75
4.2 串的存儲結構 76
4.2.1 串的靜態存儲結構 76
4.2.2 串的動態存儲結構 77
4.3 求子串運算 78
4.4 串的模式匹配 80
4.4.1 串的模式匹配的簡單算法 80
4.4.2 模式匹配的改進算法——KMP算法 82
思考題與習題 85
第5章 數組與特殊矩陣 87
5.1 數組的概念 88
5.2 靜態數組與動態數組 90
5.3 特殊矩陣及其壓縮存儲 93
5.3.1 特殊矩陣 93
5.3.2 特殊矩陣的壓縮存儲 94
5.4 稀疏矩陣 97
5.4.1 三元組順序表 98
5.4.2 行邏輯鏈接的順序表 100
5.4.3 十字鏈表 101
思考題與習題 102
第6章 樹 105
6.1 基本概念 106
6.1.1 樹的定義和有關術語 106
6.1.2 二叉樹 108
6.2 二叉樹的存儲 110
6.2.1 順序存儲結構 110
6.2.2 鏈式存儲結構 112
6.3 二叉樹的抽象數據類型 112
6.4 二叉樹的遍歷 115
6.4.1 二叉樹的遍歷方法 115
6.4.2 二叉樹的遍歷算法 118
6.4.3 樹、森林和二叉樹的轉換 122
6.5 二叉樹的構造 124
6.5.1 用中序序列和先序序列構造二叉樹 124
6.5.2 用擴充先序序列構造二叉樹 126
6.6 線索二叉樹 127
6.6.1 線索二叉樹的定義及結構 127
6.6.2 線索二叉樹的操作 128
6.7 樹的存儲結構 131
6.8 樹和森林的遍歷 135
6.8.1 樹的遍歷 135
6.8.2 森林的遍歷 135
6.9 哈夫曼樹 136
6.9.1 哈夫曼樹算法 136
6.9.2 哈夫曼樹在編碼問題中的應用 139
思考題與習題 143
第7章 圖 147
7.1 基本概念 148
7.1.1 圖的定義 148
7.1.2 有關術語 148
7.2 圖的存儲方法 151
7.2.1 鄰接矩陣及其順序存儲 151
7.2.2 鄰接表 154
7.2.3 十字鏈表 157
7.2.4 鄰接多重表 160
7.3 圖的遍歷 162
7.3.1 深度優先搜索 162
7.3.2 廣度優先搜索 167
7.4 最小生成樹 169
7.4.1 最小生成樹的基本概念 169
7.4.2 構造最小生成樹的普里姆(Prim)
方法 169
7.4.3 構造最小生成樹的克魯斯卡爾
(Kruskal)算法 173
7.5 最短路徑 176
7.5.1 單源點最短路徑 176
7.5.2 每一對頂點之間的最短路徑 179
7.6 有向無環圖及其應用 181
7.6.1 AOV網與拓撲排序 181
7.6.2 AOE網與關鍵路徑 191
思考題與習題 198
第8章 查找 203
8.1 基本概念與術語 204
8.2 線性表的查找 205
8.2.1 順序查找 205
8.2.2 順序表的折半查找 206
8.2.3 分塊查找 209
8.3 查找樹 210
8.3.1 二叉查找樹 210
8.3.2 平衡二叉樹(AVL樹) 218
8.3.3 B-樹和B+樹 226
8.4 哈希表查找(雜湊法) 234
8.4.1 哈希表與哈希方法 234
8.4.2 哈希函數的構造方法 235
8.4.3 處理沖突方法 237
8.4.4 哈希表中查找和插入算法的實現 241
8.4.5 哈希表的查找算法分析 242
思考題與習題 243
第9章 排序 247
9.1 基本概念 248
9.2 插入排序 248
9.2.1 直接插入排序 248
9.2.2 二分法插入排序 250
9.2.3 表插入排序 251
9.2.4 希爾排序(Shell's Sort) 253
9.3 交換排序 254
9.3.1 冒泡排序(Bubble Sort) 254
9.3.2 快速排序 256
9.4 選擇排序 258
9.4.1 簡單選擇排序 258
9.4.2 樹形選擇排序 259
9.4.3 堆排序(Heap Sort) 260
9.5 二路歸并排序 264
9.6 基數排序 264
9.6.1 多關鍵字排序 265
9.6.2 鏈式基數排序 265
思考題與習題 268
參考文獻 270
- 數據結構(Python語言描述) [曹岳輝 劉衛國 康松林 編著]
- 數據結構——C語言(微課版) [主編 梁海英]
- 數據結構(C語言版)習題解答及實訓指導 [李根強 謝月娥]
- 數據結構(C語言版) [主編 李根強 劉浩 謝月娥]
- 數據結構(Java版) [主編 李云平]
- 數據結構 [主編 韓利凱 朱浩悅]
- 數據結構(C語言版)(第三版) [主編 庫波 曹靜]
- 數據結構(Java版) [孫琳 張宇]
- 數據結構 [許繪香 段明義]
- 數據結構(C語言描述) [李素若 陳萬華 游明坤 編著]
- 數據結構習題解答及上機指導 [李素若 琚輝 嚴永松 編著]
- 數據結構(C++描述)習題解答及實習指導 [李根強 謝月娥 主編]
- 數據結構(C語言版)學習指導與習題解答 [趙堅 姜梅 主編]
- 數據結構(C++描述) [李根強 主 編]
- 數據結構(C++版)--習題解答及實習指導 [李根強 主編]
- 數據結構算法--Visual C++ 6.0程序集 [侯識忠 等編著]
- 數據結構算法--C++ Builder 6.0程序集 [侯識忠 等編著]
- 數據結構(C語言版)學習指導與習題解答 [趙堅 姜梅 主編]
- 數據結構(C語言版) [趙堅 姜梅 主編]
- 數據結構(C語言描述) [斯慶巴拉 主編]
- 數據結構(C++版)(第二版) [李根強]
- 數據結構(C++版)(第二版)習題解答及實訓指導 [李根強]
- 數據結構——用C語言描述 [蔡明志 編著]
- 數據結構(C++版) [李根強 主編]
- 數據結構--用C語言描述(第二版) [寧正元 易金聰 編著]
- 數據結構(C語言描述) [馬秋菊 主編]
- 數據結構(C/C++描述) [阮宏一 主編]
- 數據結構--C語言描述(第二版) [王路群 主編]
- 數據結構、算法與應用(Java語言描述) [[美]Sartaj Sahni(薩爾塔杰.薩]
- 數據結構實驗程序 [智東杰 主 編]