相關商品
商品簡介
作者簡介
序
目次
商品簡介
本書系統地介紹了數據結構的有關內容,主要包括:線性表、棧、隊列、串、數組、廣義表、樹、圖等常用的數據邏輯結構和存儲結構,各種數據結構的基本操作,以及查找、排序算法等。 本書採用的算法全部用C語言描述,各章均附有大量習題。與本書配套的《數據結構教程習題解析與上機指導》(胡元義,黑新宏主編,ISBN 978-7-121-35132-7)詳細給出了本書習題的解題思路和參考答案,對書中的所有算法和涉及算法的示例都給出了完整的C語言實現程序,並且在VC++ 6.0環境下通過上機驗證。 本書結構清晰、算法突出。在內容的組織上,本書強調知識的實用性,既注重理論的完整性,化繁為簡,又將理論融入具體實例中,化難為易,以達到準確、清楚地闡述相關概念和原理的目的。本書注重對數據結構各章節知識闡述的條理性,書中給出的例子也具有較強的實用性與連貫性,以便使讀者對數據結構有全面、透徹的認識。 本書可作為高等院校相關專業本科生及碩士研究生的專業教材或參考書,也可作為相關技術人員的自學用書。
作者簡介
胡元義,男,副教授。1978年―1982年,就讀於陝西工商學院計算機軟件專業;1982年―至今,就職于西安理工大學,歷任工程師、高級工程師。主要從事的研究方向有編譯原理、操作系統及數據結構等。
先後主持《信息學科計算機人才培養模式研究》(2010年校教學研究項目),以及《三本院校人才培養實踐教學模式研究》(2009年陝西省教育廳教學研究項目)。編寫教材共6部,編寫系列教輔書共11部。
先後主持《信息學科計算機人才培養模式研究》(2010年校教學研究項目),以及《三本院校人才培養實踐教學模式研究》(2009年陝西省教育廳教學研究項目)。編寫教材共6部,編寫系列教輔書共11部。
序
本書系統地介紹了數據結構的有關內容,主要包括:線性表、棧、隊列、串、數組、廣義表、樹、圖等常用的數據邏輯結構和存儲結構,各種數據結構的基本操作,以及查找、排序算法等。 本書採用的算法全部用C語言描述,各章均附有大量習題。與本書配套的《數據結構教程習題解析與上機指導》(胡元義,黑新宏主編,ISBN 978-7-121-35132-7)詳細給出了本書習題的解題思路和參考答案,對書中的所有算法和涉及算法的示例都給出了完整的C語言實現程序,並且在VC++ 6.0環境下通過上機驗證。 本書結構清晰、算法突出。在內容的組織上,本書強調知識的實用性,既注重理論的完整性,化繁為簡,又將理論融入具體實例中,化難為易,以達到準確、清楚地闡述相關概念和原理的目的。本書注重對數據結構各章節知識闡述的條理性,書中給出的例子也具有較強的實用性與連貫性,以便使讀者對數據結構有全面、透徹的認識。 本書可作為高等院校相關專業本科生及碩士研究生的專業教材或參考書,也可作為相關技術人員的自學用書。
目次
目 錄
第1章 緒論 1
1.1 數據結構的概念 1
1.1.1 數據與數據元素 2
1.1.2 數據結構 3
1.2 邏輯結構與存儲結構 3
1.2.1 邏輯結構 3
1.2.2 存儲結構 4
1.3 算法與算法分析 5
1.3.1 算法的定義與描述 5
1.3.2 算法分析與複雜度計算 7
習題1 8
第2章 線性表 12
2.1 線性表及其邏輯結構 12
2.1.1 線性表的定義 12
2.1.2 線性表的基本操作 13
2.2 線性表的順序存儲結構及運算實現 13
2.2.1 線性表的順序存儲――順序表 13
2.2.2 順序表上基本運算的實現 15
2.3 線性表的鏈式存儲結構及運算實現 20
2.3.1 單鏈表 21
2.3.2 單鏈表上基本運算的實現 23
2.3.3 循環鏈表 29
2.3.4 雙向鏈表 30
2.3.5 靜態鏈表 32
2.3.6 單鏈表應用示例 35
習題2 37
第3章 棧和隊列 41
3.1 棧 41
3.1.1 棧的定義及基本運算 41
3.1.2 棧的存儲結構與運算實現 42
*3.2 棧與遞歸 47
3.2.1 遞歸及其實現 47
3.2.2 遞歸調用過程分析 48
3.3 隊列 51
3.3.1 隊列的定義及基本運算 51
3.3.2 隊列的存儲結構與運算實現 52
*3.4 遞歸轉化為非遞歸的研究 58
3.4.1 漢諾塔問題的遞歸解法 58
3.4.2 漢諾塔問題的非遞歸解法 61
3.4.3 八皇后問題遞歸解法 63
3.4.4 八皇后問題非遞歸解法 66
習題3 68
第4章 串 72
4.1 串的概念及基本運算 72
4.1.1 串的基本概念 72
4.1.2 串的基本運算 73
4.2 串的順序存儲結構及基本運算 74
4.2.1 串的順序存儲結構 74
4.2.2 順序串的基本運算 75
4.3 串的鏈式存儲結構及基本運算 77
4.3.1 串的鏈式存儲結構 77
4.3.2 鏈串的基本運算 78
4.4 串的模式匹配 80
4.4.1 簡單模式匹配 80
4.4.2 無回溯的KMP匹配 82
*4.4.3 next函數的改進 86
習題4 88
第5章 數組與廣義表 90
5.1 數組的概念與存儲結構 90
5.1.1 數組的基本概念 90
5.1.2 數組的存儲結構 91
5.2 特殊矩陣的壓縮存儲 93
5.2.1 對稱矩陣 94
5.2.2 三角矩陣 95
5.2.3 對角矩陣 96
5.3 稀疏矩陣 97
5.3.1 稀疏矩陣的三元組表示 97
5.3.2 稀疏矩陣十字鏈表的表示 101
5.4 廣義表 104
5.4.1 廣義表的基本概念 104
5.4.2 廣義表的存儲結構 106
5.4.3 廣義表基本操作實現算法 109
習題5 112
第6章 樹與二叉樹 117
6.1 樹的基本概念 117
6.1.1 樹的概念與定義 117
6.1.2 樹的基本術語 118
6.2 二叉樹 119
6.2.1 二叉樹的定義 119
6.2.2 二叉樹的性質 120
6.2.3 二叉樹的存儲結構 122
6.3 二叉樹的遍歷 124
6.3.1 二叉樹的遍歷方法 124
6.3.2 遍歷二叉樹的遞歸算法及遍歷示例 125
6.3.3 遍歷二叉樹的非遞歸算法 128
6.3.4 二叉樹的層次遍歷算法 131
6.3.5 由遍歷序列恢復二叉樹 132
6.3.6 二叉樹遍歷的應用 134
6.4 線索二叉樹 138
6.4.1 線索二叉樹的定義及結構 138
6.4.2 線索化二叉樹 139
6.4.3 訪問線索二叉樹 141
6.5 哈夫曼樹 143
6.5.1 哈夫曼樹基本概念及構造方法 143
6.5.2 哈夫曼算法的實現 146
6.5.3 哈夫曼編碼 148
6.6 樹和森林 150
6.6.1 樹的定義與存儲結構 150
6.6.2 樹、森林與二叉樹之間的轉換 152
6.6.3 樹和森林的遍歷 153
習題6 154
第7章 圖 160
7.1 圖的基本概念 160
7.1.1 圖的定義 160
7.1.2 圖的基本術語 161
7.2 圖的存儲結構 163
7.2.1 鄰接矩陣 164
7.2.2 鄰接表 165
*7.2.3 有向圖的十字鏈表存儲方法 168
*7.2.4 無向圖的鄰接多重表存儲方法 169
7.3 圖的遍歷 170
7.3.1 深度優先搜索 170
7.3.2 廣度優先搜索 173
7.3.3 圖的連通性問題 175
7.4 生成樹與最小生成樹 176
7.4.1 生成樹與生成森林 176
7.4.2 最小生成樹與構造最小生成樹的Prim算法 179
7.4.3 構造最小生成樹的Kruskal算法 182
7.5 最短路徑 185
7.5.1 從一個源點到其他各點的最短路徑 186
7.5.2 每對頂點之間的最短路徑 189
7.6 拓撲排序與關鍵路徑 192
7.6.1 AOV網與拓撲排序 192
7.6.2 AOE網與關鍵路徑 196
習題7 201
第8章 查找 209
8.1 查找的基本概念 209
8.2 靜態查找表 210
8.2.1 順序查找 210
8.2.2 有序表的查找 211
8.3 樹表形式的動態查找表 216
8.3.1 二叉排序樹 216
8.3.2 平衡二叉樹 223
8.3.3 B樹與B+樹 230
8.4 地址映射方式下的動態查找表――哈希表 237
8.4.1 哈希表與哈希方法 237
8.4.2 哈希函數的構造方法 238
8.4.3 處理衝突的方法 240
8.4.4 哈希表的查找 242
習題8 245
第9章 排序 252
9.1 基本概念 252
9.2 插入排序 253
9.2.1 直接插入排序 253
9.2.2 折半插入排序 255
9.2.3 希爾(Shell)排序 256
9.3 交換排序 258
9.3.1 冒泡排序 258
9.3.2 快速排序 260
9.4 選擇排序 263
9.4.1 直接選擇排序 263
9.4.2 堆排序 266
9.5 歸併排序 270
9.6 基數排序 275
9.6.1 多關鍵字排序 275
9.6.2 鏈式基數排序 276
*9.7 外排序簡介 279
9.8 內排序方法討論 282
9.8.1 提高排序效率的方法 282
9.8.2 各種內排序方法的比較 282
習題9 285
附錄 思考題 290
參考文獻 292
第1章 緒論 1
1.1 數據結構的概念 1
1.1.1 數據與數據元素 2
1.1.2 數據結構 3
1.2 邏輯結構與存儲結構 3
1.2.1 邏輯結構 3
1.2.2 存儲結構 4
1.3 算法與算法分析 5
1.3.1 算法的定義與描述 5
1.3.2 算法分析與複雜度計算 7
習題1 8
第2章 線性表 12
2.1 線性表及其邏輯結構 12
2.1.1 線性表的定義 12
2.1.2 線性表的基本操作 13
2.2 線性表的順序存儲結構及運算實現 13
2.2.1 線性表的順序存儲――順序表 13
2.2.2 順序表上基本運算的實現 15
2.3 線性表的鏈式存儲結構及運算實現 20
2.3.1 單鏈表 21
2.3.2 單鏈表上基本運算的實現 23
2.3.3 循環鏈表 29
2.3.4 雙向鏈表 30
2.3.5 靜態鏈表 32
2.3.6 單鏈表應用示例 35
習題2 37
第3章 棧和隊列 41
3.1 棧 41
3.1.1 棧的定義及基本運算 41
3.1.2 棧的存儲結構與運算實現 42
*3.2 棧與遞歸 47
3.2.1 遞歸及其實現 47
3.2.2 遞歸調用過程分析 48
3.3 隊列 51
3.3.1 隊列的定義及基本運算 51
3.3.2 隊列的存儲結構與運算實現 52
*3.4 遞歸轉化為非遞歸的研究 58
3.4.1 漢諾塔問題的遞歸解法 58
3.4.2 漢諾塔問題的非遞歸解法 61
3.4.3 八皇后問題遞歸解法 63
3.4.4 八皇后問題非遞歸解法 66
習題3 68
第4章 串 72
4.1 串的概念及基本運算 72
4.1.1 串的基本概念 72
4.1.2 串的基本運算 73
4.2 串的順序存儲結構及基本運算 74
4.2.1 串的順序存儲結構 74
4.2.2 順序串的基本運算 75
4.3 串的鏈式存儲結構及基本運算 77
4.3.1 串的鏈式存儲結構 77
4.3.2 鏈串的基本運算 78
4.4 串的模式匹配 80
4.4.1 簡單模式匹配 80
4.4.2 無回溯的KMP匹配 82
*4.4.3 next函數的改進 86
習題4 88
第5章 數組與廣義表 90
5.1 數組的概念與存儲結構 90
5.1.1 數組的基本概念 90
5.1.2 數組的存儲結構 91
5.2 特殊矩陣的壓縮存儲 93
5.2.1 對稱矩陣 94
5.2.2 三角矩陣 95
5.2.3 對角矩陣 96
5.3 稀疏矩陣 97
5.3.1 稀疏矩陣的三元組表示 97
5.3.2 稀疏矩陣十字鏈表的表示 101
5.4 廣義表 104
5.4.1 廣義表的基本概念 104
5.4.2 廣義表的存儲結構 106
5.4.3 廣義表基本操作實現算法 109
習題5 112
第6章 樹與二叉樹 117
6.1 樹的基本概念 117
6.1.1 樹的概念與定義 117
6.1.2 樹的基本術語 118
6.2 二叉樹 119
6.2.1 二叉樹的定義 119
6.2.2 二叉樹的性質 120
6.2.3 二叉樹的存儲結構 122
6.3 二叉樹的遍歷 124
6.3.1 二叉樹的遍歷方法 124
6.3.2 遍歷二叉樹的遞歸算法及遍歷示例 125
6.3.3 遍歷二叉樹的非遞歸算法 128
6.3.4 二叉樹的層次遍歷算法 131
6.3.5 由遍歷序列恢復二叉樹 132
6.3.6 二叉樹遍歷的應用 134
6.4 線索二叉樹 138
6.4.1 線索二叉樹的定義及結構 138
6.4.2 線索化二叉樹 139
6.4.3 訪問線索二叉樹 141
6.5 哈夫曼樹 143
6.5.1 哈夫曼樹基本概念及構造方法 143
6.5.2 哈夫曼算法的實現 146
6.5.3 哈夫曼編碼 148
6.6 樹和森林 150
6.6.1 樹的定義與存儲結構 150
6.6.2 樹、森林與二叉樹之間的轉換 152
6.6.3 樹和森林的遍歷 153
習題6 154
第7章 圖 160
7.1 圖的基本概念 160
7.1.1 圖的定義 160
7.1.2 圖的基本術語 161
7.2 圖的存儲結構 163
7.2.1 鄰接矩陣 164
7.2.2 鄰接表 165
*7.2.3 有向圖的十字鏈表存儲方法 168
*7.2.4 無向圖的鄰接多重表存儲方法 169
7.3 圖的遍歷 170
7.3.1 深度優先搜索 170
7.3.2 廣度優先搜索 173
7.3.3 圖的連通性問題 175
7.4 生成樹與最小生成樹 176
7.4.1 生成樹與生成森林 176
7.4.2 最小生成樹與構造最小生成樹的Prim算法 179
7.4.3 構造最小生成樹的Kruskal算法 182
7.5 最短路徑 185
7.5.1 從一個源點到其他各點的最短路徑 186
7.5.2 每對頂點之間的最短路徑 189
7.6 拓撲排序與關鍵路徑 192
7.6.1 AOV網與拓撲排序 192
7.6.2 AOE網與關鍵路徑 196
習題7 201
第8章 查找 209
8.1 查找的基本概念 209
8.2 靜態查找表 210
8.2.1 順序查找 210
8.2.2 有序表的查找 211
8.3 樹表形式的動態查找表 216
8.3.1 二叉排序樹 216
8.3.2 平衡二叉樹 223
8.3.3 B樹與B+樹 230
8.4 地址映射方式下的動態查找表――哈希表 237
8.4.1 哈希表與哈希方法 237
8.4.2 哈希函數的構造方法 238
8.4.3 處理衝突的方法 240
8.4.4 哈希表的查找 242
習題8 245
第9章 排序 252
9.1 基本概念 252
9.2 插入排序 253
9.2.1 直接插入排序 253
9.2.2 折半插入排序 255
9.2.3 希爾(Shell)排序 256
9.3 交換排序 258
9.3.1 冒泡排序 258
9.3.2 快速排序 260
9.4 選擇排序 263
9.4.1 直接選擇排序 263
9.4.2 堆排序 266
9.5 歸併排序 270
9.6 基數排序 275
9.6.1 多關鍵字排序 275
9.6.2 鏈式基數排序 276
*9.7 外排序簡介 279
9.8 內排序方法討論 282
9.8.1 提高排序效率的方法 282
9.8.2 各種內排序方法的比較 282
習題9 285
附錄 思考題 290
參考文獻 292
主題書展
更多
主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。