本書是一部系統(tǒng)論述數(shù)據(jù)結(jié)構(gòu)與算法的立體化教程。本書共10章,內(nèi)容主要包括緒論、線性表、棧和隊(duì)列、串、遞歸、數(shù)組和廣義表、樹與二叉樹、圖、查找、排序等。本書以項(xiàng)目案例具體實(shí)現(xiàn)的方式引入知識(shí)點(diǎn)。每章都引入對(duì)應(yīng)的案例,并進(jìn)行詳細(xì)的分析。并配以程序?qū)崿F(xiàn),理論講解簡(jiǎn)潔明了。此外,還提供了教學(xué)大綱、PPT課件、習(xí)題答案、微視頻和思政案例等配套資料,強(qiáng)調(diào)應(yīng)用性和實(shí)踐性。 本書主要面向新工科背景下計(jì)算機(jī)類相關(guān)專業(yè)學(xué)生學(xué)習(xí)使用,也可供相關(guān)學(xué)科學(xué)習(xí)者參考。
掌握數(shù)據(jù)結(jié)構(gòu),開啟編程之門,提高代碼效率
內(nèi)容全面詳實(shí),案例生動(dòng)經(jīng)典,配套資源豐富
科技與文化融為一體,培養(yǎng)專業(yè)精神和終身學(xué)習(xí)的能力
不僅講解數(shù)據(jù)的組織方式,更傳授科學(xué)研究的方法,提升問題分析和解決能力
新一輪科技革命和產(chǎn)業(yè)變革帶動(dòng)了傳統(tǒng)產(chǎn)業(yè)的升級(jí)改造。黨的二十大報(bào)告強(qiáng)調(diào)必須堅(jiān)持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動(dòng)力,深入實(shí)施科教興國(guó)戰(zhàn)略、人才強(qiáng)國(guó)戰(zhàn)略、創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略,開辟發(fā)展新領(lǐng)域新賽道,不斷塑造發(fā)展新動(dòng)能新優(yōu)勢(shì)。建設(shè)高質(zhì)量高等教育體系是擺在高等教育面前的重大歷史使命和政治責(zé)任。高等教育要堅(jiān)持國(guó)家戰(zhàn)略引領(lǐng),聚焦重大需求布局,推進(jìn)新工科、新醫(yī)科、新農(nóng)科、新文科建設(shè),加快培養(yǎng)緊缺型人才。
數(shù)據(jù)結(jié)構(gòu)與算法作為計(jì)算機(jī)類核心專業(yè)基礎(chǔ)課程之一,是程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),也是操作系統(tǒng)、軟件工程等課程的先修課程。此外,它還是學(xué)科競(jìng)賽、專業(yè)筆試和面試以及研究生錄取考試的重要內(nèi)容。該書具有受眾群體廣、受重視程度高和專業(yè)性強(qiáng)的特點(diǎn)。
通過本教材的學(xué)習(xí),應(yīng)能熟練掌握線性結(jié)構(gòu)、棧和隊(duì)列、數(shù)組、樹形結(jié)構(gòu)和圖形結(jié)構(gòu)等數(shù)據(jù)邏輯結(jié)構(gòu)的特點(diǎn)和性質(zhì),掌握順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)等數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及其應(yīng)用。此外,還應(yīng)該能夠熟練運(yùn)用查找、排序等數(shù)據(jù)處理技術(shù),深入理解各種數(shù)據(jù)對(duì)象的特點(diǎn),學(xué)會(huì)數(shù)據(jù)的組織方式和實(shí)現(xiàn)方法,掌握數(shù)據(jù)加工處理的基本理論和技能,提升分析問題和解決問題的能力,并初步具備科學(xué)研究的能力。
本書將思政元素有機(jī)融入數(shù)據(jù)結(jié)構(gòu)與算法的內(nèi)容中,旨在培養(yǎng)學(xué)生的專業(yè)認(rèn)同感、探索未知、終身學(xué)習(xí)的能力,以及精益求精的工匠精神。
本書共分為10章,第1章介紹數(shù)據(jù)結(jié)構(gòu)與算法這門課程的總體情況,重點(diǎn)介紹基本概念和術(shù)語(yǔ)、數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)類型和抽象數(shù)據(jù)類型以及算法和算法分析方法。第2章主要介紹線性表的定義和基本操作、典型案例、線性表的順序存儲(chǔ)、線性表的鏈?zhǔn)酱鎯?chǔ)、案例分析與實(shí)現(xiàn)。第3章主要介紹棧的定義及特點(diǎn)、典型案例、棧的抽象數(shù)據(jù)類型定義、棧的順序存儲(chǔ)、棧的鏈?zhǔn)酱鎯?chǔ)、棧的案例分析與實(shí)現(xiàn)、隊(duì)列的定義及特點(diǎn)、典型案例、隊(duì)列的抽象數(shù)據(jù)類型定義、隊(duì)列的順序存儲(chǔ)、隊(duì)列的鏈?zhǔn)酱鎯?chǔ)、隊(duì)列的案例分析與實(shí)現(xiàn)。第4章主要介紹串及其基本運(yùn)算、典型案例、串的存儲(chǔ)結(jié)構(gòu)、匹配模式、案例分析與實(shí)現(xiàn)。第5章主要介紹遞歸定義、遞歸調(diào)用的實(shí)現(xiàn)原理、遞歸算法的設(shè)計(jì)。第6章主要介紹數(shù)組的邏輯結(jié)構(gòu)、數(shù)組的物理結(jié)構(gòu)、典型案例、特殊矩陣、廣義表、案例分析與實(shí)現(xiàn)。第7章主要介紹樹的基本概念、典型案例、二叉樹、遍歷二叉樹和線索二叉樹、樹的存儲(chǔ)結(jié)構(gòu)、樹和森林、二叉樹的應(yīng)用、案例分析與實(shí)現(xiàn)。第8章主要介紹圖的定義和基本術(shù)語(yǔ)、典型案例、圖的類型定義、圖的存儲(chǔ)結(jié)構(gòu)、圖的遍歷、圖的連通性、圖的應(yīng)用、案例分析與實(shí)現(xiàn)。第9章主要介紹查找的基本概念、典型案例、線性表查找、樹表的查找、哈希表查找、案例分析與實(shí)現(xiàn)。第10章主要介紹排序的基本概念、典型案例、插入排序、交換排序、選擇排序、歸并排序、各種內(nèi)排序方法的比較和選擇、案例分析與實(shí)現(xiàn)。
本書由劉朝霞、趙靜、李紹華擔(dān)任主編,刁建華、李敏、樸在吉、邵峰擔(dān)任副主編。全書由劉朝霞、趙靜負(fù)責(zé)統(tǒng)稿。
本書的編寫得到了大連外國(guó)語(yǔ)大學(xué)軟件學(xué)院領(lǐng)導(dǎo)以及任課教師的大力支持,在此表示衷心的感謝。
本書出版得到了遼寧省一流本科課程建設(shè)項(xiàng)目、遼寧省本科教學(xué)改革研究項(xiàng)目、大連外國(guó)語(yǔ)大學(xué)本科教學(xué)改革研究重點(diǎn)項(xiàng)目、大連外國(guó)語(yǔ)大學(xué)課程思政示范課建設(shè)項(xiàng)目的資助。
本教材示例的源程序、微視頻及電子教案可在清華大學(xué)出版社網(wǎng)站上免費(fèi)下載。
雖然編者力求完美,但水平有限,書中難免會(huì)出現(xiàn)疏漏,懇請(qǐng)廣大讀者批評(píng)指正。
編者
2023年7月
隨書資源
第1章緒論
1.1數(shù)據(jù)結(jié)構(gòu)與算法總覽
1.2基本概念和術(shù)語(yǔ)
1.3數(shù)據(jù)的邏輯結(jié)構(gòu)
1.4數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
1.5數(shù)據(jù)類型和抽象數(shù)據(jù)類型
1.5.1數(shù)據(jù)類型
1.5.2抽象數(shù)據(jù)類型
1.6算法和算法分析方法
1.6.1算法及算法的特性
1.6.2算法的時(shí)間復(fù)雜度
1.6.3算法的空間復(fù)雜度
1.7本章小結(jié)
習(xí)題1
第2章線性表
2.1線性表的定義
2.2典型案例
2.3線性表的抽象數(shù)據(jù)類型定義
2.4順序表的定義和基本操作
2.4.1順序表的定義
2.4.2順序表的基本操作
2.5鏈表的定義和基本操作
2.5.1單鏈表的定義
2.5.2單鏈表的基本操作
2.5.3循環(huán)鏈表
2.5.4雙向鏈表
2.6順序表和鏈表的比較
2.7案例分析與實(shí)踐
2.8小結(jié)
習(xí)題2
數(shù)據(jù)結(jié)構(gòu)與算法(C語(yǔ)言)微課視頻·在線題庫(kù)版
目錄
第3章棧和隊(duì)列
3.1棧的定義及特點(diǎn)
3.2棧的典型案例
3.3棧的抽象數(shù)據(jù)類型定義
3.4棧的順序存儲(chǔ)
3.4.1順序棧的定義
3.4.2順序棧的存儲(chǔ)形態(tài)
3.4.3順序棧的入棧和出棧
3.4.4順序棧的基本操作
3.5棧的鏈?zhǔn)酱鎯?chǔ)
3.5.1鏈棧的定義
3.5.2鏈棧的基本操作
3.6棧的案例分析與實(shí)現(xiàn)
3.7隊(duì)列的定義及特點(diǎn)
3.8隊(duì)列的典型案例
3.9隊(duì)列的抽象數(shù)據(jù)類型定義
3.10隊(duì)列的順序存儲(chǔ)
3.10.1順序隊(duì)列的定義
3.10.2順序隊(duì)列的基本操作
3.10.3循環(huán)隊(duì)列
3.10.4循環(huán)隊(duì)列的基本操作
3.11隊(duì)列的鏈?zhǔn)酱鎯?chǔ)
3.11.1鏈隊(duì)列的定義
3.11.2鏈隊(duì)列的基本操作
3.12隊(duì)列的案例分析與實(shí)現(xiàn)
3.13小結(jié)
習(xí)題3
第4章串
4.1串的定義及其基本運(yùn)算
4.1.1串的基本概念
4.1.2串的基本運(yùn)算
4.2典型案例
4.3串的存儲(chǔ)結(jié)構(gòu)
4.3.1串的順序存儲(chǔ)結(jié)構(gòu)
4.3.2串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
4.4模式匹配
4.5案例分析與實(shí)現(xiàn)
4.6小結(jié)
習(xí)題4
第5章遞歸
5.1遞歸的定義
5.1.1遞歸的基本概念
5.1.2何時(shí)使用遞歸
5.1.3遞歸模型
5.2遞歸調(diào)用的實(shí)現(xiàn)原理
5.3遞歸算法的設(shè)計(jì)
5.3.1遞歸算法設(shè)計(jì)的步驟
5.3.2遞歸數(shù)據(jù)結(jié)構(gòu)的遞歸算法設(shè)計(jì)
5.3.3遞歸求解方法的遞歸算法設(shè)計(jì)
5.4本章小結(jié)
習(xí)題5
第6章數(shù)組和廣義表
6.1多維數(shù)組的定義
6.1.1數(shù)組的邏輯結(jié)構(gòu)
6.1.2數(shù)組的物理結(jié)構(gòu)
6.2典型案例
6.3特殊矩陣
6.3.1對(duì)稱矩陣
6.3.2三角矩陣
6.3.3對(duì)角矩陣
6.4稀疏矩陣
6.4.1稀疏矩陣的定義
6.4.2稀疏矩陣的三元組表存儲(chǔ)
6.4.3稀疏矩陣的十字鏈表存儲(chǔ)
6.5廣義表
6.5.1廣義表的定義和基本運(yùn)算
6.5.2廣義表的存儲(chǔ)
6.5.3廣義表的基本操作
6.6案例分析與實(shí)現(xiàn)
6.7小結(jié)
習(xí)題6
第7章樹與二叉樹
7.1樹的基本概念
7.1.1樹的定義
7.1.2基本術(shù)語(yǔ)
7.2典型案例
7.3二叉樹
7.3.1二叉樹的定義
7.3.2二叉樹的性質(zhì)
7.3.3二叉樹的存儲(chǔ)結(jié)構(gòu)
7.3.4二叉樹的基本操作
7.4遍歷二叉樹和線索二叉樹
7.4.1遍歷二叉樹
7.4.2線索二叉樹
7.5樹、森林與二叉樹
7.5.1樹的存儲(chǔ)結(jié)構(gòu)
7.5.2樹和二叉樹的轉(zhuǎn)換
7.5.3森林和二叉樹的轉(zhuǎn)換
7.5.4樹的遍歷
7.5.5森林的遍歷
7.6二叉樹的應(yīng)用
7.6.1二叉排序樹
7.6.2哈夫曼樹
7.6.3哈夫曼編碼
7.7案例分析與實(shí)現(xiàn)
7.8小結(jié)
習(xí)題7
第8章圖
8.1圖的定義和基本術(shù)語(yǔ)
8.1.1圖的定義
8.1.2圖的基本術(shù)語(yǔ)
8.2典型案例
8.3圖的類型定義
8.4圖的存儲(chǔ)結(jié)構(gòu)
8.4.1鄰接矩陣
8.4.2鄰接表
8.4.3十字鏈表
8.5圖的遍歷
8.5.1深度優(yōu)先搜索
8.5.2廣度優(yōu)先搜索
8.6圖的連通性
8.7圖的應(yīng)用
8.7.1最小生成樹
8.7.2最短路徑
8.7.3拓?fù)渑判?
8.7.4關(guān)鍵路徑
8.8案例分析與實(shí)現(xiàn)
8.9小結(jié)
習(xí)題8
第9章查找
9.1查找的基本概念
9.2典型案例
9.3線性表查找
9.3.1順序查找
9.3.2折半查找
9.3.3分塊查找
9.4樹表的查找
9.4.1二叉排序樹
9.4.2平衡二叉樹
9.5哈希表查找
9.5.1哈希表的基本概念
9.5.2哈希表的構(gòu)造方法
9.5.3哈希沖突的解決方法
9.5.4哈希表查找算法分析
9.6案例分析與實(shí)現(xiàn)
9.7小結(jié)
習(xí)題9
第10章排序
10.1排序的基本概念
10.2典型案例
10.3插入排序
10.3.1直接插入排序
10.3.2希爾排序
10.4交換排序
10.4.1冒泡排序
10.4.2快速排序
10.5選擇排序
10.5.1直接選擇排序
10.5.2堆排序
10.6歸并排序
10.6.1一次歸并
10.6.2一趟歸并排序
10.6.3二路歸并排序
10.7各種內(nèi)排序方法的比較和選擇
10.8案例分析與實(shí)現(xiàn)
10.9小結(jié)
習(xí)題10
參考文獻(xiàn)