數據結構
-
【作 者】主編 韓利凱 朱浩悅
【I S B N 】978-7-5170-4541-0
【責任編輯】李炎
【適用讀者群】本專通用
【出版時間】2016-08-01
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】228
【千字數】349
【印 張】14.25
【定 價】¥30
【叢 書】普通高等教育“十三五”規劃教材(計算機專業群)
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書系統地介紹了各種常用的數據結構與算法,共分為10章。第1章為緒論,引入數據結構與算法的一些基本概念;第2~7章分別介紹線性表、棧與隊列、串、數組與廣義表、樹與二叉樹和圖等幾種基本的數據結構;第8~9章分別介紹各種查找和內、外排序的基本運算,它們都是數據處理中廣泛使用的技術;第10章列舉了數據結構課程設計實例,通過綜合訓練,培養學生分析問題、解決問題、編程和動手操作等多方面的能力,并運用所學的數據結構知識去解決實際問題。
本書內容豐富,邏輯性強,選材精練,圖文并茂,對基本理論的敘述深入淺出、通俗易懂;既注重理論知識,又強調工程實用;精選的應用實例涉及領域相當廣泛,給讀者提供了思路與方法,有助于提高讀者分析問題和解決問題的能力。全書采用類C語言作為數據結構和算法的描述語言,每章后進行小結并配有適量習題,便于讀者掌握各章的重點和難點并進行必要的訓練,既便于教學,又便于自學。
•講解精煉,突出實用。本書精選基礎理論內容,降低了概念的抽象性和理論的難度,突出實用性,增加了數據結構研究內容的應用實例,抽象數據類型定義實例,并以具體實例說明算法的優化等。
•結構合理,重點突出。本書講述了數據結構的重要內容,體系結構合理,重點難點突出,為方便讀者理解某些易產生疑問的知識點,還給出了額外的分析;每章節的例子和習題較為豐富;最后一章列舉了數據結構課程設計實例,通過綜合訓練,培養學生分析問題、解決問題、編程和動手操作等多方面的能力。
•創新思維,培養能力。本書注重啟發創新思維,培養能力;概念準確,邏輯性強;書中內容都經過編者深入研究,且在教學實踐中反復驗證,因而較易理解,旨在提高學生的實際分析問題的能力和解決問題的能力,增強算法分析的能力。
“數據結構”是計算機科學中一門綜合性的專業基礎課。主要介紹如何合理地組織數據,有效地存儲和處理數據,正確地設計算法以及對算法的分析和評價。通過對本課程的學習,使學生深入透徹地理解數據結構的邏輯結構和物理結構的基本概念以及有關算法,培養基本的、良好的程序設計技能,編制高效可靠的程序,為學習操作系統、編譯原理和數據庫等課程奠定基礎。
目前,“數據結構”不僅是計算機專業的一門重要的專業基礎課程,而且大多數高等院校的非計算機專業也將“數據結構”作為主干課程。“數據結構”不僅是計算機專業考研的必考科目之一,還是全國計算機等級考試、軟件資格(水平)考試的主要考試內容。
本書內容豐富,邏輯性強,選材精練,圖文并茂,對基本理論的敘述深入淺出、通俗易懂,既注重理論知識,又強調工程實用,所精選的應用實例涉及領域相當廣泛,給讀者提供了思路與方法,有助于提高讀者分析問題和解決問題的能力。全書采用類C語言作為數據結構和算法的描述語言,每章后進行小結并配有適量習題,便于讀者掌握各章的重點和難點并進行必要的訓練,既便于教學,又便于自學。
本書主要內容如下:
第1章:如果讀者剛接觸數據結構,這一章將告訴您數據結構是什么,以及本書的學習目標、學習方法和學習內容;另外,還介紹了本書對算法的描述方法。
第2章:主要介紹了線性表。首先講解線性表的邏輯結構,然后介紹線性表的各種常用存儲結構,在每一節均給出了算法的具體應用。通過這一章的學習,讀者可以掌握順序表、動態鏈表和靜態鏈表的操作。
第3章:主要介紹操作受限的線性表—棧和隊列,內容包括棧的定義,棧的基本操作及棧與遞歸的轉化,隊列的概念,順序隊列和鏈式隊列的運算。
第4章:主要介紹一種特殊的線性表—串,內容包括串的概念,串的各種存儲表示,以及串的模式匹配算法。
第5章:主要介紹數組與廣義表,內容包括數組的概念,數組(矩陣)的存儲結構及運算,幾種特殊矩陣;廣義表的概念,廣義表的兩種存儲方式,廣義表的操作實現。
第6章:主要介紹非線性數據結構—樹和二叉樹,內容包括樹和二叉樹的概念,樹和二叉樹的存儲表示,二叉樹的性質,二叉樹的遍歷和線索化,樹、森林與二叉樹的轉換及哈夫曼樹。
第7章:主要介紹非線性數據結構—圖,內容包括圖的概念和存儲結構、圖的遍歷、最小生成樹、拓撲排序、關鍵路徑及最短路徑。
第8章:主要介紹數據結構的常用技術—查找。首先介紹查找的概念,然后結合具體實例介紹各種查找算法,并給出了完整程序。
第9章:主要介紹數據結構的常用技術—排序。首先介紹排序的相關概念,然后介紹各種內外排序技術,并給出了具體實現算法。
第10章:通過對本章的學習,可以復習數據結構的基本算法,學習數據結構實驗系統開發的全過程,了解系統設計的一般要求;掌握文件包含處理的基本方法;提高程序編寫和程序調試的能力。
本書由西安文理學院韓利凱、朱浩悅擔任主編,高寅生、楊彩霖擔任副主編。其中第1章由李向軍編寫;第2章、第3章、第7章由韓旭編寫;第4章、第8章由朱浩悅編寫;第5章、第6章由王昭陽編寫;第9章由劉光軍、韓利凱編寫;第10章由韓利凱編寫。
在教材編寫過程中,編者參考了國內外眾多數據結構與算法方面的優秀教材,其中大多列舉在書后的參考文獻中。在此,我們對這些教材的編著者表示衷心感謝。
中國水利水電出版社的領導和編審老師給予本書編寫以很大的支持與細心指導,在此也表示衷心的感謝!
由于編者水平有限,時間倉促,書中難免存在一些不足之處,殷切希望廣大讀者批評指正。
第1章 緒論 1
1.1 數據結構的研究內容 1
1.2 基本概念和術語 4
1.2.1 數據、數據元素、數據項和
數據對象 4
1.2.2 數據結構 4
1.2.3 數據類型和抽象數據類型 8
1.3 算法與數據結構 12
1.3.1 數據結構上的基本運算 13
1.3.2 算法的定義及特性 14
1.3.3 算法分析 14
1.4 本章小結 25
習題1 26
第2章 線性表 29
2.1 線性表的概念及其抽象數據類型定義 29
2.1.1 線性表的邏輯結構 29
2.1.2 線性表的抽象數據類型定義 30
2.2 線性表的順序存儲 31
2.2.1 線性表的順序存儲結構 31
2.2.2 線性表順序存儲結構上的基本運算 33
2.3 線性表的鏈式存儲 36
2.3.1 單鏈表 36
2.3.2 單鏈表上的基本運算 37
2.3.3 循環鏈表 43
2.3.4 雙向鏈表 44
2.3.5 靜態鏈表 46
2.4 線性表應用—一元多項式的表示
及相加 47
2.5 順序表與鏈表的綜合比較 50
2.5.1 順序表和鏈表的比較 50
2.5.2 線性表鏈式存儲方式的比較 51
2.6 本章小結 51
習題2 52
第3章 限定性線性表—棧與隊列 55
3.1 棧 55
3.1.1 棧的定義 55
3.1.2 棧的表示和實現 57
3.1.3 棧的應用舉例 61
3.2 隊列 63
3.2.1 隊列的定義 63
3.2.2 隊列的表示和實現 65
3.2.3 隊列的應用舉例 70
3.3 本章小結 73
習題3 74
第4章 串 76
4.1 串的基本概念 76
4.1.1 串的定義 76
4.1.2 串的基本操作 77
4.2 串的存儲實現 79
4.2.1 定長順序串表示 79
4.2.2 堆分配存儲表示 82
4.2.3 串的鏈接存儲表示 84
4.2.4 子串定位運算的實現 86
4.3 串的應用舉例 88
4.4 本章小結 89
習題4 90
第5章 數組和廣義表 92
5.1 數組的定義與基本操作 92
5.1.1 數組的定義 92
5.1.2 數組的基本操作 93
5.2 數組的順序存儲和實現 93
5.2.1 數組的順序存儲結構 93
5.2.2 數組的順序存儲的實現 95
5.3 特殊矩陣的壓縮存儲 96
5.3.1 規律分布的特殊矩陣 96
5.3.2 稀疏矩陣 98
5.4 廣義表 100
5.4.1 廣義表的概念 101
5.4.2 廣義表的存儲結構 102
5.4.3 廣義表的操作實現 104
5.5 本章小結 106
習題5 106
第6章 樹與二叉樹 109
6.1 樹的定義與基本術語 109
6.2 二叉樹 111
6.2.1 二叉樹的定義與基本操作 112
6.2.2 二叉樹的性質 112
6.2.3 二叉樹的存儲結構 114
6.3 二叉樹的遍歷與線索化 116
6.3.1 二叉樹的遍歷 116
6.3.2 遍歷算法應用 119
6.3.3 線索二叉樹 122
6.3.4 由遍歷序列確定二叉樹 126
6.4 樹、森林和二叉樹的關系 127
6.4.1 樹的存儲結構 127
6.4.2 樹、森林與二叉樹的相互轉換 129
6.4.3 樹與森林的遍歷 132
6.5 哈夫曼樹及其應用 134
6.5.1 哈夫曼樹 134
6.5.2 哈夫曼編碼 136
6.6 本章小結 138
習題6 138
第7章 圖 141
7.1 圖的定義與基本術語 141
7.1.1 圖的定義 141
7.1.2 圖的基本術語 141
7.2 圖的存儲結構 143
7.2.1 鄰接矩陣表示法 143
7.2.2 鄰接表表示法 145
7.2.3 十字鏈表 146
7.2.4 鄰接多重表 148
7.3 圖的遍歷 149
7.3.1 深度優先搜索 149
7.3.2 廣度優先搜索 150
7.4 圖的應用 152
7.4.1 圖的連通性問題 152
7.4.2 有向無環圖的應用 156
7.4.3 最短路徑問題 160
7.5 本章小結 162
習題7 162
第8章 查找 164
8.1 查找的基本概念 164
8.2 順序查找法 165
8.3 折半查找法 166
8.4 散列表及其查找 169
8.4.1 常用的散列函數 170
8.4.2 處理沖突的方法 171
8.4.3 散列表的查找分析 175
8.5 本章小結 177
習題8 177
第9章 內部排序 179
9.1 排序的概念 179
9.1.1 排序的穩定性 179
9.1.2 排序用到的結構與操作 179
9.2 插入排序 180
9.2.1 直接插入排序 180
9.2.2 直接插入排序復雜度分析 181
9.2.3 其他插入排序 181
9.3 交換排序 184
9.3.1 最簡單的交換排序 184
9.3.2 冒泡排序 184
9.3.3 冒泡排序的優化 185
9.3.4 快速排序 186
9.4 選擇排序 189
9.4.1 簡單選擇排序 189
9.4.2 樹形選擇排序 190
9.4.3 堆排序 191
9.5 歸并排序 196
9.6 基數排序 196
9.6.1 多關鍵字排序 196
9.6.2 鏈式基數排序 197
9.7 內部排序算法的分析和比較 198
9.8 本章小結 199
習題9 200
第10章 數據結構課程實訓 202
10.1 系統設計的要求 202
10.1.1 系統總體結構設計 202
10.1.2 系統詳細設計 204
10.1.3 系統調試和維護 205
10.2 文件的包含處理 206
10.2.1 什么是文件包含 206
10.2.2 如何對“數據結構實驗系統”
進行文件包含 208
10.2.3 “數據結構實驗系統”主控模塊 209
10.3 數據結構課程設計 210
10.3.1 課程設計的目的 210
10.3.2 課程設計的內容 210
10.3.3 課程設計報告 211
10.3.4 課程設計的考核 212
10.4 課程設計的要求 212
10.5 課程設計題目 213
參考文獻 220
- 數據結構(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(薩爾塔杰.薩]
- 數據結構實驗程序 [智東杰 主 編]