本書共11章,一方面,涵蓋數(shù)據(jù)結(jié)構(gòu)的基本概念,定義了線性表、棧、隊(duì)列、串、數(shù)組、廣義表、樹(shù)和二叉樹(shù)、圖、查找、排序等各種結(jié)構(gòu)的抽象數(shù)據(jù)類型,給出了相應(yīng)操作的實(shí)現(xiàn)算法,并在最后一章給出了幾個(gè)課程設(shè)計(jì)的實(shí)例。另一方面,采用C語(yǔ)言描述算法,并給出了各種算法的效率分析,以及這些結(jié)構(gòu)在計(jì)算機(jī)科學(xué)及其他領(lǐng)域的應(yīng)用。此外,每章后均配有典型例題、上機(jī)實(shí)驗(yàn)和習(xí)題。本書中的所有算法都在VC++環(huán)境下調(diào)試通過(guò)。本書在內(nèi)容安排上,突出由淺入深、循序漸進(jìn)、通俗易懂的特點(diǎn)。算法分析透徹,講解清晰,便于學(xué)生自學(xué)。為了激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力,書中融入了一些典型的應(yīng)用實(shí)例,如命題公式真值表的求解算法、出棧序列的求解算法等。本書可作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)本科生的“數(shù)據(jù)結(jié)構(gòu)”課程教材,也可供相關(guān)科技人員學(xué)習(xí)參考。
前言
教學(xué)建議
第1章緒論
1.1數(shù)據(jù)結(jié)構(gòu)的研究對(duì)象
1.2數(shù)據(jù)結(jié)構(gòu)的發(fā)展概況
1.3基本概念與術(shù)語(yǔ)
1.4數(shù)據(jù)類型與抽象數(shù)據(jù)類型
1.4.1數(shù)據(jù)類型
1.4.2抽象數(shù)據(jù)類型
1.4.3抽象數(shù)據(jù)類型的表示與實(shí)現(xiàn)
1.5算法與算法分析
1.5.1算法
1.5.2算法設(shè)計(jì)的原則
1.5.3算法效率的衡量方法和準(zhǔn)則
1.5.4算法的存儲(chǔ)空間需求
1.6典型例題
1.7上機(jī)實(shí)驗(yàn)
1.8小結(jié)
習(xí)題
第2章線性表
2.1線性表的定義
2.1.1線性表的概念
2.1.2線性表的抽象數(shù)據(jù)類型定義
2.2線性表的順序表示與實(shí)現(xiàn)
2.2.1線性表的順序表示
2.2.2線性表的順序?qū)崿F(xiàn)
2.2.3順序表的應(yīng)用舉例
2.3線性表的鏈?zhǔn)奖硎九c實(shí)現(xiàn)
2.3.1單鏈表
2.3.2雙向鏈表
2.3.3循環(huán)鏈表
2.3.4靜態(tài)鏈表
2.3.5鏈表的應(yīng)用舉例
2.4典型例題
2.5上機(jī)實(shí)驗(yàn)
2.6小結(jié)
習(xí)題
第3章棧與隊(duì)列
3.1棧
3.1.1棧的抽象數(shù)據(jù)類型定義
3.1.2棧的表示與實(shí)現(xiàn)
3.2棧的應(yīng)用舉例
3.2.1數(shù)制轉(zhuǎn)換
3.2.2括號(hào)匹配的檢驗(yàn)
3.2.3表達(dá)式求值
3.2.4求命題公式的真值
3.3棧與遞歸實(shí)現(xiàn)
3.3.1遞歸的定義
3.3.2遞歸與棧的關(guān)系
3.3.3遞歸的實(shí)現(xiàn)
3.3.4用遞歸求所有出棧序列
3.3.5遞歸的消除
3.4隊(duì)列
3.4.1隊(duì)列的抽象數(shù)據(jù)類型定義
3.4.2隊(duì)列的鏈?zhǔn)奖硎九c實(shí)現(xiàn)
3.4.3隊(duì)列的順序表示與實(shí)現(xiàn)——循環(huán)隊(duì)列
3.4.4隊(duì)列的應(yīng)用舉例
3.5典型例題
3.6上機(jī)實(shí)驗(yàn)
3.7小結(jié)
習(xí)題
第4章串
4.1串的定義
4.2串的表示與實(shí)現(xiàn)
4.2.1串的順序存儲(chǔ)表示
4.2.2串的鏈?zhǔn)酱鎯?chǔ)表示
4.3串的模式匹配
4.3.1簡(jiǎn)單匹配算法
4.3.2首尾匹配算法
4.3.3KMP算法
4.4典型例題
4.5上機(jī)實(shí)驗(yàn)
4.6小結(jié)
習(xí)題
第5章數(shù)組與廣義表
5.1數(shù)組的定義
5.2數(shù)組的順序存儲(chǔ)
5.3矩陣的壓縮存儲(chǔ)
5.3.1特殊矩陣
5.3.2稀疏矩陣
5.4廣義表
5.4.1廣義表的定義
5.4.2廣義表的存儲(chǔ)結(jié)構(gòu)
5.5典型例題
5.6上機(jī)實(shí)驗(yàn)
5.7小結(jié)
習(xí)題
第6章樹(shù)與二叉樹(shù)
6.1樹(shù)的定義
6.1.1樹(shù)的概念與術(shù)語(yǔ)
6.1.2樹(shù)的邏輯表示方法
6.1.3樹(shù)的抽象數(shù)據(jù)類型定義
6.2二叉樹(shù)的定義
6.2.1二叉樹(shù)的概念
6.2.2二叉樹(shù)的重要性質(zhì)
6.3二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
6.3.1二叉樹(shù)的順序存儲(chǔ)表示
6.3.2二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)表示
6.4二叉樹(shù)的遍歷
6.4.1二叉樹(shù)遍歷的概念
6.4.2二叉樹(shù)遍歷的遞歸算法
6.4.3二叉樹(shù)遍歷的非遞歸算法
6.4.4層次遍歷算法
6.4.5遍歷算法的應(yīng)用舉例
6.5二叉樹(shù)的構(gòu)造
6.6線索二叉樹(shù)
6.6.1線索二叉樹(shù)的定義
6.6.2線索鏈表的建立
6.6.3線索鏈表的遍歷算法
6.7樹(shù)和森林的表示方法
6.7.1雙親表示法
6.7.2孩子鏈表表示法
6.7.3孩子-兄弟鏈表表示法
6.7.4樹(shù)、森林和二叉樹(shù)的對(duì)應(yīng)關(guān)系
6.8樹(shù)和森林的遍歷
6.8.1樹(shù)的遍歷
6.8.2森林的遍歷
6.8.3樹(shù)遍歷算法的應(yīng)用
6.9赫夫曼樹(shù)與赫夫曼編碼
6.9.1赫夫曼樹(shù)的定義
6.9.2赫夫曼樹(shù)的構(gòu)造
6.9.3赫夫曼編碼
6.10典型例題
6.11上機(jī)實(shí)驗(yàn)
6.12小結(jié)
習(xí)題
第7章圖
7.1圖的定義與術(shù)語(yǔ)
7.1.1圖的相關(guān)術(shù)語(yǔ)
7.1.2圖的抽象數(shù)據(jù)類型定義
7.2圖的存儲(chǔ)表示
7.2.1圖的鄰接矩陣存儲(chǔ)表示
7.2.2圖的鄰接表存儲(chǔ)表示
7.2.3有向圖的十字鏈表存儲(chǔ)表示
7.2.4無(wú)向圖的鄰接多重表存儲(chǔ)表示
7.3圖的遍歷
7.3.1深度優(yōu)先搜索遍歷圖
7.3.2廣度優(yōu)先搜索遍歷圖
7.3.3圖遍歷的應(yīng)用舉例
7.4最小生成樹(shù)
7.4.1普里姆算法
7.4.2克魯斯卡爾算法
7.5兩點(diǎn)之間的最短路徑問(wèn)題
7.5.1從某個(gè)源點(diǎn)到其余各點(diǎn)的最短路徑
7.5.2每一對(duì)頂點(diǎn)之間的最短路徑
7.6拓?fù)渑判?br />
7.7關(guān)鍵路徑
7.8典型例題
7.9上機(jī)實(shí)驗(yàn)
7.10小結(jié)
習(xí)題
第8章查找
8.1基本概念
8.2靜態(tài)查找表
8.2.1順序查找
8.2.2有序表查找
8.2.3索引查找
8.3動(dòng)態(tài)查找樹(shù)表
8.3.1二叉排序樹(shù)
8.3.2平衡二叉樹(shù)
8.3.3B-樹(shù)
8.3.4B+樹(shù)
8.3.5鍵樹(shù)
8.4哈希表
8.4.1哈希表的概念
8.4.2哈希函數(shù)的構(gòu)造方法
8.4.3處理沖突的方法
8.4.4哈希表的查找
8.4.5哈希表的插入操作
8.4.6哈希表的刪除操作
8.5典型例題
8.6上機(jī)實(shí)驗(yàn)
8.7小結(jié)
習(xí)題
第9章排序
9.1概述
9.1.1什么是排序
9.1.2內(nèi)部排序和外部排序
9.1.3內(nèi)部排序的方法
9.2插入排序
9.2.1直接插入排序
9.2.2折半插入排序
9.2.3二路插入排序
9.2.4表插入排序
9.2.5希爾排序
9.3交換排序
9.3.1起泡排序
9.3.2快速排序
9.4選擇排序
9.4.1簡(jiǎn)單選擇排序
9.4.2堆排序
9.5歸并排序
9.6基數(shù)排序
9.6.1多關(guān)鍵字排序
9.6.2鏈?zhǔn)交鶖?shù)排序
9.7各種排序方法的綜合比較
9.8外排序簡(jiǎn)介
9.8.1外存信息的存取
9.8.2外排序的基本方法
9.9典型例題
9.10上機(jī)實(shí)驗(yàn)
9.11小結(jié)
習(xí)題
第10章文件
10.1文件的基本概念
10.1.1什么是文件
10.1.2文件的邏輯結(jié)構(gòu)及操作
10.1.3文件的存儲(chǔ)結(jié)構(gòu)
10.2順序文件
10.3索引文件
10.3.1ISAM文件
10.3.2VSAM文件
10.4哈希文件
10.5多關(guān)鍵字文件
10.5.1多重表文件
10.5.2倒排文件
10.5.3倒排文件的應(yīng)用
10.6典型例題
10.7上機(jī)實(shí)驗(yàn)
10.8小結(jié)
習(xí)題
第11章課程設(shè)計(jì)舉例
11.1通訊錄管理
11.2停車場(chǎng)管理
11.3文本文件的檢索
11.4導(dǎo)師制問(wèn)題
11.5家譜管理
11.6教學(xué)計(jì)劃安排
參考文獻(xiàn)