數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)及相關(guān)專業(yè)的核心專業(yè)基礎(chǔ)課,那么什么是數(shù)據(jù)結(jié)構(gòu)呢?科學(xué)百科是這樣定義的: 數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運(yùn)行或者存儲(chǔ)效率。數(shù)據(jù)結(jié)構(gòu)往往與高效的檢索算法和索引技術(shù)有關(guān)。
該定義包含兩重含義,即數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)和數(shù)據(jù)結(jié)構(gòu)應(yīng)用。從數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)角度看,數(shù)據(jù)結(jié)構(gòu)是指存在相互關(guān)系的數(shù)據(jù)元素集合,并包含相應(yīng)的數(shù)據(jù)運(yùn)算,在實(shí)現(xiàn)時(shí)就需要考慮數(shù)據(jù)的邏輯類型,將這些數(shù)據(jù)以某種合理方式存儲(chǔ)在計(jì)算機(jī)中,繼而高效地實(shí)現(xiàn)對(duì)應(yīng)運(yùn)算的算法。像計(jì)算機(jī)語言中的數(shù)據(jù)類型都是已經(jīng)實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)。從數(shù)據(jù)結(jié)構(gòu)的應(yīng)用角度看,人們不必關(guān)心數(shù)據(jù)的存儲(chǔ)和運(yùn)算的具體實(shí)現(xiàn)細(xì)節(jié),只需要將其作為一個(gè)功能包用于求解更復(fù)雜的問題,在適當(dāng)?shù)某橄髮哟紊峡紤]程序的結(jié)構(gòu)和算法。理解和掌握數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)有助于應(yīng)用數(shù)據(jù)結(jié)構(gòu),提高計(jì)算機(jī)求解問題的能力。
教學(xué)內(nèi)容設(shè)計(jì)
數(shù)據(jù)結(jié)構(gòu)課程主要以數(shù)據(jù)的邏輯結(jié)構(gòu)為主線,介紹線性表、棧和隊(duì)列、樹和二叉樹、圖等數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)和應(yīng)用。該課程一方面培養(yǎng)學(xué)生基本的數(shù)據(jù)結(jié)構(gòu)觀,即從邏輯層面理解數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)特性以及基本運(yùn)算,繼而合理地實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu),使之成為像程序設(shè)計(jì)語言中那樣可以直接使用的數(shù)據(jù)類型; 另一方面培養(yǎng)學(xué)生運(yùn)用各種數(shù)據(jù)結(jié)構(gòu)的能力,即針對(duì)一個(gè)較復(fù)雜的數(shù)據(jù)處理問題,選擇合適的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)出好的求解算法。
本書圍繞這兩個(gè)目標(biāo)設(shè)計(jì)教學(xué)內(nèi)容,總結(jié)編者長期在教學(xué)線的教學(xué)研究和教學(xué)經(jīng)驗(yàn),同時(shí)參考近年來國內(nèi)外出版的多種數(shù)據(jù)結(jié)構(gòu)教材,考慮教與學(xué)的特點(diǎn),合理地進(jìn)行知識(shí)點(diǎn)取舍和延伸,精心組織編寫而成。本書采用C 語言描述數(shù)據(jù)結(jié)構(gòu)和算法。全書由10章構(gòu)成,各章內(nèi)容如下:
第1章緒論。本章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念、采用C 語言描述算法的方法和特點(diǎn)、算法分析方法和如何設(shè)計(jì)好算法等。
第2章線性表。本章介紹線性表的定義、線性表的兩類主要存儲(chǔ)結(jié)構(gòu)和各種基本運(yùn)算算法設(shè)計(jì); 通過多項(xiàng)式相加的示例討論線性表的應(yīng)用; 介紹STL中的vector和list容器及其使用方法。
第3章棧和隊(duì)列。本章介紹棧的定義、棧的存儲(chǔ)結(jié)構(gòu)、棧的各種基本運(yùn)算算法設(shè)計(jì)和棧的應(yīng)用,隊(duì)列的定義、隊(duì)列的存儲(chǔ)結(jié)構(gòu)、隊(duì)列的各種基本運(yùn)算算法設(shè)計(jì)和隊(duì)列的應(yīng)用,STL中的stack(棧)、queue(隊(duì)列)、deque(雙端隊(duì)列)和priority_queue(優(yōu)先隊(duì)列)容器及其使用方法。
第4章串。本章介紹串的定義、串的存儲(chǔ)結(jié)構(gòu)和串的各種基本運(yùn)算算法設(shè)計(jì),STL中的string容器的使用方法,串的模式匹配算法BF和KMP及其應(yīng)用。
第5章數(shù)組和稀疏矩陣。本章介紹數(shù)組的定義、數(shù)組的存儲(chǔ)結(jié)構(gòu)、幾種特殊矩陣的壓縮存儲(chǔ)和稀疏矩陣的壓縮存儲(chǔ)。
第6章遞歸。本章介紹遞歸的定義、遞歸模型、遞歸算法設(shè)計(jì)和分析方法,以及遞歸算法轉(zhuǎn)換為非遞歸算法的一般過程。
第7章樹和二叉樹。本章介紹樹的定義、樹的邏輯結(jié)構(gòu)表示方法、樹的性質(zhì)、樹的遍歷和樹的存儲(chǔ)結(jié)構(gòu),二叉樹的定義、二叉樹的性質(zhì)、二叉樹的存儲(chǔ)結(jié)構(gòu)、二叉樹的基本運(yùn)算算法設(shè)計(jì)、二叉樹的遞歸和非遞歸遍歷算法、二叉樹的構(gòu)造、線索二叉樹和哈夫曼樹,樹/森林和二叉樹的轉(zhuǎn)換與還原過程,并查集的定義與實(shí)現(xiàn)。
第8章圖。本章介紹圖的定義、圖的存儲(chǔ)結(jié)構(gòu)、圖的基本運(yùn)算算法設(shè)計(jì)、圖的兩種遍歷算法以及圖的應(yīng)用,圖的應(yīng)用包括求小生成樹、短路徑、拓?fù)渑判蚝完P(guān)鍵路徑。
第9章查找。本章介紹查找的定義、線性表上的各種查找算法、各種樹表的查找算法,以及哈希表查找算法及其應(yīng)用、STL中的哈希表容器(如unordered_map和unordered_set)的使用方法。
第10章排序。本章介紹排序的定義、插入排序方法、交換排序方法、選擇排序方法、歸并排序方法和基數(shù)排序方法,以及各種內(nèi)排序方法比較、外排序的基本過程和相關(guān)算法。
教學(xué)內(nèi)容緊扣《高等學(xué)校計(jì)算機(jī)專業(yè)核心課程教學(xué)實(shí)施方案》和《計(jì)算機(jī)學(xué)科碩士研究生入學(xué)考試大綱》,涵蓋教學(xué)方案及考研大綱要求的全部知識(shí)點(diǎn)。書中帶*的章節(jié)或示例為選講或選學(xué)內(nèi)容,難度相對(duì)較高,供提高者研習(xí)。本書的主要特點(diǎn)如下:
① 結(jié)構(gòu)清晰,內(nèi)容豐富,文字?jǐn)⑹龊啙嵜髁,可讀性強(qiáng)。
② 圖文并茂,全書用了300多幅圖表述和講解數(shù)據(jù)的組織結(jié)構(gòu)和算法設(shè)計(jì)思想。
③ 力求歸納各類算法設(shè)計(jì)的規(guī)律,如單鏈表算法中很多是基于建表算法,二叉樹算法中很多是基于4種遍歷算法,圖算法中很多是基于兩種遍歷算法,如果讀者掌握了相關(guān)的基礎(chǔ)算法,那么對(duì)于較復(fù)雜的算法設(shè)計(jì)就會(huì)駕輕就熟。
④ 深入討論遞歸算法設(shè)計(jì)方法。遞歸算法設(shè)計(jì)是數(shù)據(jù)結(jié)構(gòu)課程中的難點(diǎn)之一,編者從遞歸模型入手,介紹了從求解問題中提取遞歸模型的通用方法,講解了從遞歸模型到遞歸算法設(shè)計(jì)的基本規(guī)律。
⑤ 書中提供了大量的教學(xué)示例并詳細(xì)解析,將抽象概念和抽象的算法過程具體化。
⑥ 結(jié)合知識(shí)點(diǎn)提供了若干相關(guān)的實(shí)戰(zhàn)題,實(shí)戰(zhàn)題來源于力扣(https://leetcodecn.com/)、POJ(http://poj.org/)和HDU(http://acm.hdu.edu.cn/)網(wǎng)站。
⑦ 與C 語言深度結(jié)合,充分利用C 語言的特點(diǎn)實(shí)現(xiàn)書中的所有算法,全部算法及其示例均在Dev C 5.1中調(diào)試通過。
⑧ 提供了大量的練習(xí)題、上機(jī)實(shí)驗(yàn)題和在線編程題,供教學(xué)中選用。
教學(xué)實(shí)驗(yàn)設(shè)計(jì)
教學(xué)實(shí)驗(yàn)是提高利用數(shù)據(jù)結(jié)構(gòu)原理解決實(shí)際問題必不可少的環(huán)節(jié),本書將實(shí)驗(yàn)教學(xué)和理論教學(xué)有機(jī)結(jié)合,構(gòu)成完整的體系。
① 每章包含基礎(chǔ)實(shí)驗(yàn)和應(yīng)用實(shí)驗(yàn)。基礎(chǔ)實(shí)驗(yàn)屬于驗(yàn)證性實(shí)驗(yàn),是上機(jī)實(shí)現(xiàn)相關(guān)數(shù)據(jù)結(jié)構(gòu)或者算法,用于強(qiáng)化對(duì)基本數(shù)據(jù)結(jié)構(gòu)觀的認(rèn)知; 應(yīng)用實(shí)驗(yàn)屬于設(shè)計(jì)或者綜合性實(shí)驗(yàn),是利用相關(guān)數(shù)據(jù)結(jié)構(gòu)完成較復(fù)雜的算法實(shí)現(xiàn),用于提高運(yùn)用各種數(shù)據(jù)結(jié)構(gòu)解決復(fù)雜問題的能力。
② 每章包含若干與教學(xué)內(nèi)容緊密結(jié)合的、難度適中的在線編程題,所有題目都經(jīng)過精心挑選,均來自力扣、POJ和HDU網(wǎng)站。力扣(中國)是一個(gè)極好的學(xué)習(xí)和實(shí)驗(yàn)在線編程平臺(tái),POJ和HDU是目前國內(nèi)秀的ACM訓(xùn)練網(wǎng)站。每道在線編程題都提供了多個(gè)測(cè)試用例,可以對(duì)實(shí)驗(yàn)算法進(jìn)行時(shí)間和空間的全方位測(cè)試。
配套教學(xué)資源
本書配套的輔助教材為《數(shù)據(jù)結(jié)構(gòu)教程(C 語言描述)(第2版)學(xué)習(xí)與上機(jī)實(shí)驗(yàn)指導(dǎo)》和《數(shù)據(jù)結(jié)構(gòu)在線編程實(shí)訓(xùn)(C 語言)(全程視頻講解版)》,前者提供了所有練習(xí)題和上機(jī)實(shí)驗(yàn)題的解題思路和參考答案,后者提供了所有實(shí)戰(zhàn)題和在線編程題的解題思路和參考答案(含全部題目的視頻講解),所有程序均在相關(guān)平臺(tái)中驗(yàn)證通過并給出了時(shí)間和空間數(shù)據(jù)。
為了方便教師教學(xué)和學(xué)生學(xué)習(xí),本書提供了全面、豐富的教學(xué)資源。配套教學(xué)資源包中的內(nèi)容如下:
① 教學(xué)PPT。提供全部教學(xué)內(nèi)容的精美PPT課件,僅供任課教師在教學(xué)中使用。
② 源程序代碼。所有源代碼按章組織,例如ch2文件夾中存放第2章的源代碼,其中,ch2\\Exam23.cpp為例2.3的源代碼。
③ 數(shù)據(jù)結(jié)構(gòu)課程教學(xué)大綱和電子教案。包含54學(xué)時(shí)課堂講授的教學(xué)內(nèi)容安排和18學(xué)時(shí)實(shí)驗(yàn)的實(shí)驗(yàn)教學(xué)內(nèi)容安排,供教師參考。
④ 在線作業(yè)。包括選擇題、判斷題、填空題、簡答題和編程題。
⑤ 書中配套絕大部分知識(shí)點(diǎn)的教學(xué)視頻,視頻采用微課碎片化形式組織(含266個(gè)小視頻,累計(jì)超過45小時(shí))。
資源下載提示
課件等資源: 掃描封底的課件下載二維碼,在公眾號(hào)書圈下載。
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
在線作業(yè): 掃描封底作業(yè)系統(tǒng)二維碼,登錄網(wǎng)站在線做題及查看答案。
視頻等資源: 掃描封底刮刮卡中的二維碼,再掃描書中相應(yīng)章節(jié)中的二維碼,可以在線學(xué)習(xí)。
本書第2、3、6、7和10章由李春葆編寫,第1、4和5章由匡志強(qiáng)編寫,第8和9章由蔣林編寫,李春葆完成全書的規(guī)劃和統(tǒng)稿工作。本書的出版得到清華大學(xué)出版社魏江江分社長的全力支持,王冰飛老師給予精心編輯,力扣(中國)網(wǎng)站提供了無私的幫助,編者在此一并表示衷心的感謝。盡管編者不遺余力,但由于水平所限,本書難免存在不足之處,敬請(qǐng)教師和同學(xué)們批評(píng)指正,在此表示衷心的感謝。
編者2021年5月
第1章緒論
1.1什么是數(shù)據(jù)結(jié)構(gòu)
1.1.1數(shù)據(jù)結(jié)構(gòu)的定義
1.1.2數(shù)據(jù)的邏輯結(jié)構(gòu)
1.1.3數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
1.1.4數(shù)據(jù)的運(yùn)算
1.1.5數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型
1.2算法及其描述
1.2.1什么是算法
1.2.2算法描述
1.2.3C 語言描述算法的要點(diǎn)
1.3算法分析
1.3.1算法的設(shè)計(jì)目標(biāo)
1.3.2算法的時(shí)間性能分析
1.3.3算法的存儲(chǔ)空間分析
1.4數(shù)據(jù)結(jié)構(gòu)的目標(biāo)
1.5練習(xí)題
1.5.1問答題
1.5.2算法設(shè)計(jì)題
1.6上機(jī)實(shí)驗(yàn)題
1.6.1基礎(chǔ)實(shí)驗(yàn)題
1.6.2應(yīng)用實(shí)驗(yàn)題
1.7在線編程題
第2章線性表
2.1線性表的定義
2.1.1什么是線性表
2.1.2線性表的抽象數(shù)據(jù)類型描述
2.2線性表的順序存儲(chǔ)結(jié)構(gòu)
2.2.1線性表的順序存儲(chǔ)結(jié)構(gòu)順序表
2.2.2線性表基本運(yùn)算算法在順序表中的實(shí)現(xiàn)
2.2.3順序表的應(yīng)用算法設(shè)計(jì)示例
2.3線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
2.3.1鏈表
2.3.2單鏈表
2.3.3單鏈表的應(yīng)用算法設(shè)計(jì)示例
2.3.4雙鏈表
2.3.5雙鏈表的應(yīng)用算法設(shè)計(jì)示例
2.3.6循環(huán)鏈表
2.4順序表和鏈表的比較
2.5線性表的應(yīng)用兩個(gè)多項(xiàng)式相加
2.5.1問題描述
2.5.2問題求解
2.6STL中的線性表
2.6.1vector向量容器
2.6.2list鏈表容器
2.7練習(xí)題
2.7.1問答題
2.7.2算法設(shè)計(jì)題
2.8上機(jī)實(shí)驗(yàn)題
2.8.1基礎(chǔ)實(shí)驗(yàn)題
2.8.2應(yīng)用實(shí)驗(yàn)題
2.9在線編程題
第3章棧和隊(duì)列
3.1棧
3.1.1棧的定義
3.1.2棧的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法的實(shí)現(xiàn)
3.1.3順序棧的應(yīng)用算法設(shè)計(jì)示例
3.1.4棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及其基本運(yùn)算算法的實(shí)現(xiàn)
3.1.5鏈棧的應(yīng)用算法設(shè)計(jì)示例
3.1.6STL中的stack棧容器
3.1.7棧的綜合應(yīng)用
3.2隊(duì)列
3.2.1隊(duì)列的定義
3.2.2隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算算法的實(shí)現(xiàn)
3.2.3循環(huán)隊(duì)列的應(yīng)用算法設(shè)計(jì)示例
3.2.4隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及其基本運(yùn)算算法的實(shí)現(xiàn)
3.2.5鏈隊(duì)的應(yīng)用算法設(shè)計(jì)示例
3.2.6STL中的queue隊(duì)列容器
3.2.7隊(duì)列的綜合應(yīng)用
3.2.8STL中的雙端隊(duì)列和優(yōu)先隊(duì)列
3.3*棧和隊(duì)列的擴(kuò)展單調(diào)棧和單調(diào)隊(duì)列
3.3.1單調(diào)棧
3.3.2單調(diào)隊(duì)列
3.4練習(xí)題
3.4.1問答題
3.4.2算法設(shè)計(jì)題
3.5上機(jī)實(shí)驗(yàn)題
3.5.1基礎(chǔ)實(shí)驗(yàn)題
3.5.2應(yīng)用實(shí)驗(yàn)題
3.6在線編程題
第4章串
4.1串的定義
4.2串的存儲(chǔ)結(jié)構(gòu)
4.2.1串的順序存儲(chǔ)結(jié)構(gòu)順序串
4.2.2串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)鏈串
4.3STL中的string
4.4串的模式匹配
4.4.1BF算法
4.4.2KMP算法
4.5練習(xí)題
4.5.1問答題
4.5.2算法設(shè)計(jì)題
4.6上機(jī)實(shí)驗(yàn)題
4.6.1基礎(chǔ)實(shí)驗(yàn)題
4.6.2應(yīng)用實(shí)驗(yàn)題
4.7在線編程題
第5章數(shù)組和稀疏矩陣
5.1數(shù)組
5.1.1數(shù)組的基本概念
5.1.2數(shù)組的存儲(chǔ)結(jié)構(gòu)
5.1.3數(shù)組的應(yīng)用
5.2特殊矩陣的壓縮存儲(chǔ)
5.2.1對(duì)稱矩陣的壓縮存儲(chǔ)
5.2.2三角矩陣的壓縮存儲(chǔ)
5.2.3對(duì)角矩陣的壓縮存儲(chǔ)
5.3稀疏矩陣
5.3.1稀疏矩陣的三元組表示
5.3.2稀疏矩陣的十字鏈表表示
5.4練習(xí)題
5.4.1問答題
5.4.2算法設(shè)計(jì)題
5.5上機(jī)實(shí)驗(yàn)題
5.5.1基礎(chǔ)實(shí)驗(yàn)題
5.5.2應(yīng)用實(shí)驗(yàn)題
5.6在線編程題
第6章遞歸
6.1什么是遞歸
6.1.1遞歸的定義
6.1.2何時(shí)使用遞歸
6.1.3遞歸模型
6.1.4遞歸與數(shù)學(xué)歸納法
6.1.5遞歸的執(zhí)行過程
6.1.6遞歸算法的時(shí)空分析
6.2遞歸算法設(shè)計(jì)
6.2.1遞歸算法設(shè)計(jì)的步驟
6.2.2基于遞歸數(shù)據(jù)結(jié)構(gòu)的遞歸算法設(shè)計(jì)
6.2.3基于歸納方法的遞歸算法設(shè)計(jì)
6.3遞歸算法轉(zhuǎn)換為非遞歸算法
6.3.1迭代轉(zhuǎn)換法
6.3.2用棧模擬轉(zhuǎn)換法
6.4練習(xí)題
6.4.1問答題
6.4.2算法設(shè)計(jì)題
6.5上機(jī)實(shí)驗(yàn)題
6.5.1基礎(chǔ)實(shí)驗(yàn)題
6.5.2應(yīng)用實(shí)驗(yàn)題
6.6在線編程題
第7章樹和二叉樹
7.1樹
7.1.1樹的定義
7.1.2樹的邏輯結(jié)構(gòu)表示方法
7.1.3樹的基本術(shù)語
7.1.4樹的性質(zhì)
7.1.5樹的基本運(yùn)算
7.1.6樹的存儲(chǔ)結(jié)構(gòu)
7.2二叉樹
7.2.1二叉樹的概念
7.2.2二叉樹的性質(zhì)
7.2.3二叉樹的存儲(chǔ)結(jié)構(gòu)
7.2.4二叉樹的遞歸算法設(shè)計(jì)
7.2.5二叉樹的基本運(yùn)算算法及其實(shí)現(xiàn)
7.3二叉樹的先序、中序和后序遍歷
7.3.1二叉樹遍歷的概念
7.3.2先序、中序和后序遍歷遞歸算法
7.3.3遞歸遍歷算法的應(yīng)用
7.3.4先序、中序和后序遍歷非遞歸算法
7.4二叉樹的層次遍歷
7.4.1層次遍歷的過程
7.4.2層次遍歷算法的設(shè)計(jì)
7.4.3層次遍歷算法的應(yīng)用
7.5二叉樹的構(gòu)造
7.5.1由先序/中序序列或后序/中序序列構(gòu)造二叉樹
7.5.2*序列化和反序列化
7.6線索二叉樹
7.6.1線索二叉樹的定義
7.6.2線索化二叉樹
7.6.3遍歷線索化二叉樹
7.7哈夫曼樹
7.7.1哈夫曼樹的定義
7.7.2哈夫曼樹的構(gòu)造算法
7.7.3哈夫曼編碼
7.8樹/森林與二叉樹之間的轉(zhuǎn)換及還原
7.8.1一棵樹與二叉樹的轉(zhuǎn)換及還原
7.8.2森林與二叉樹的轉(zhuǎn)換及還原
7.9*并查集
7.9.1并查集的定義
7.9.2并查集的實(shí)現(xiàn)
7.10練習(xí)題
7.10.1問答題
7.10.2算法設(shè)計(jì)題
7.11上機(jī)實(shí)驗(yàn)題
7.11.1基礎(chǔ)實(shí)驗(yàn)題
7.11.2應(yīng)用實(shí)驗(yàn)題
7.12在線編程題
第8章圖
8.1圖的基本概念
8.1.1圖的定義
8.1.2圖的基本術(shù)語
8.2圖的存儲(chǔ)結(jié)構(gòu)
8.2.1鄰接矩陣
8.2.2鄰接表
8.3圖的遍歷
8.3.1圖遍歷的概念
8.3.2深度優(yōu)先遍歷
8.3.3廣度優(yōu)先遍歷
8.3.4非連通圖的遍歷
8.4圖遍歷算法的應(yīng)用
8.4.1深度優(yōu)先遍歷算法的應(yīng)用
8.4.2*回溯法及其應(yīng)用
8.4.3廣度優(yōu)先遍歷算法的應(yīng)用
8.5生成樹和小生成樹
8.5.1生成樹和小生成樹的概念
8.5.2普里姆算法
8.5.3克魯斯卡爾算法
8.6短路徑
8.6.1短路徑的概念
8.6.2狄克斯特拉算法
8.6.3弗洛伊德算法
8.7拓?fù)渑判?/p>
8.7.1什么是拓?fù)渑判?/p>
8.7.2拓?fù)渑判蛩惴ǖ脑O(shè)計(jì)
8.8AOE網(wǎng)和關(guān)鍵路徑
8.8.1什么是AOE網(wǎng)
8.8.2求AOE網(wǎng)的關(guān)鍵路徑
8.9練習(xí)題
8.9.1問答題
8.9.2算法設(shè)計(jì)題
8.10上機(jī)實(shí)驗(yàn)題
8.10.1基礎(chǔ)實(shí)驗(yàn)題
8.10.2應(yīng)用實(shí)驗(yàn)題
8.11在線編程題
第9章查找
9.1查找的基本概念
9.2線性表的查找
9.2.1順序查找
9.2.2折半查找
9.2.3索引存儲(chǔ)結(jié)構(gòu)和分塊查找
9.3樹表的查找
9.3.1二叉排序樹
9.3.2平衡二叉樹
9.3.3*STL中的關(guān)聯(lián)容器
9.3.4B樹
9.3.5B 樹
9.4哈希表的查找
9.4.1哈希表的基本概念
9.4.2哈希函數(shù)的構(gòu)造方法
9.4.3哈希沖突的解決方法
9.4.4哈希表查找及性能分析
9.4.5*STL中的哈希表
9.5練習(xí)題
9.5.1問答題
9.5.2算法設(shè)計(jì)題
9.6上機(jī)實(shí)驗(yàn)題
9.6.1基礎(chǔ)實(shí)驗(yàn)題
9.6.2應(yīng)用實(shí)驗(yàn)題
9.7在線編程題
第10章排序
10.1排序的基本概念
10.2插入排序
10.2.1直接插入排序
10.2.2折半插入排序
10.2.3希爾排序
10.3交換排序
10.3.1冒泡排序
10.3.2快速排序
10.4選擇排序
10.4.1簡單選擇排序
10.4.2堆排序
10.4.3堆數(shù)據(jù)結(jié)構(gòu)
10.5歸并排序
10.5.1自底向上的二路歸并排序
10.5.2自頂向下的二路歸并排序
10.6基數(shù)排序
10.7各種內(nèi)排序方法的比較和選擇
10.8外排序
10.8.1生成初始?xì)w并段的方法
10.8.2多路歸并方法
10.9練習(xí)題
10.9.1問答題
10.9.2算法設(shè)計(jì)題
10.10上機(jī)實(shí)驗(yàn)題
10.10.1基礎(chǔ)實(shí)驗(yàn)題
10.10.2應(yīng)用實(shí)驗(yàn)題
10.11在線編程題
參考文獻(xiàn)