數(shù)據(jù)結(jié)構(gòu)與算法
定 價:59.8 元
叢書名:計算機(jī)系列教材
當(dāng)前圖書已被 2 所學(xué)校薦購過!
查看明細(xì)
- 作者:余久久、蔡政策、虞焰興、凌勇、李昌群、唐珊、陳杰、王嬙
- 出版時間:2025/8/1
- ISBN:9787302698852
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.12
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書緊緊圍繞《高等學(xué)校計算機(jī)專業(yè)核心課程教學(xué)實施方案》,并參照安徽省高等學(xué)校計算機(jī)教育研究會課程建設(shè)專業(yè)委員會提出的地方應(yīng)用型本科“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)大綱編寫而成。全書共分為8章,第1章為緒論,主要介紹數(shù)據(jù)結(jié)構(gòu)和算法的基本概念。第2~4章介紹線性數(shù)據(jù)結(jié)構(gòu)的類型、特點及其操作算法等,其中,第2章具體介紹普通的線性表,第3章具體介紹棧與隊列這樣“操作受限”的線性表,第4章則具體介紹一些特殊的線性表(串)與推廣的線性表(數(shù)組、廣義表)。第5、6章介紹樹與圖,主要介紹具有非線性數(shù)據(jù)結(jié)構(gòu)的樹、圖等較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)特征及操作算法。第7、8章介紹查找與排序,主要介紹各種常見的查找與排序算法,以及優(yōu)化存儲結(jié)構(gòu)的思想等。為了起到銜接課堂教學(xué)、方便實驗教學(xué)的作用,本書附錄給出了6個基礎(chǔ)性的數(shù)據(jù)結(jié)構(gòu)實驗題,并配有完整的Python源代碼,能夠在PythonIDLE環(huán)境下順利運行,供學(xué)生上機(jī)調(diào)試參考。本書難易適度,結(jié)構(gòu)清晰,圖文并茂,文字表達(dá)通俗易懂、實用性強(qiáng)。注重理論和實踐的結(jié)合,強(qiáng)調(diào)Python程序算法設(shè)計素養(yǎng)與教育,可幫助讀者進(jìn)一步掌握數(shù)據(jù)結(jié)構(gòu)的基本知識和技能,學(xué)會運用數(shù)據(jù)結(jié)構(gòu)知識解決實際問題。本書適合作為地方應(yīng)用型本科高校計算機(jī)及相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程的教材、計算機(jī)類專業(yè)碩士研究生入學(xué)考試“數(shù)據(jù)結(jié)構(gòu)”課程的考研輔導(dǎo)書,也可作為高職院校軟件技術(shù)類專業(yè)學(xué)生的課外學(xué)習(xí)輔導(dǎo)教材。還可以作為參加計算機(jī)程序算法設(shè)計相關(guān)學(xué)科競賽的培訓(xùn)教材,以及對數(shù)據(jù)結(jié)構(gòu)與算法知識感興趣的各類企業(yè)IT人員與計算機(jī)愛好者的參考書。
在內(nèi)容的選取與結(jié)構(gòu)安排上,本書選擇了語法簡潔、功能強(qiáng)大,有著廣泛應(yīng)用領(lǐng)域Python作為描述語言。通過分類和講解典型結(jié)構(gòu)使讀者對數(shù)據(jù)結(jié)構(gòu)形成宏觀認(rèn)識,強(qiáng)調(diào)算法設(shè)計素養(yǎng)與思政教育相結(jié)合,讀者能夠使用有效的方法處理各類數(shù)據(jù),并在構(gòu)建的數(shù)據(jù)結(jié)構(gòu)上設(shè)計出高效的算法。本書提供配套電子課件,讀者可登錄清華大學(xué)出版社網(wǎng)站下載。每章配有大量選擇題、簡答題、算法設(shè)計題、應(yīng)用題等,附錄還配有完整的數(shù)據(jù)結(jié)構(gòu)實驗及相應(yīng)的Python源代碼,幫助讀者鞏固所學(xué)知識,提高Python程序算法設(shè)計與應(yīng)用能力。本書同時在安徽智慧教育平臺開設(shè)數(shù)據(jù)結(jié)構(gòu)MOOC教學(xué)視頻,可作為地方應(yīng)用型本科計算機(jī)類專業(yè)學(xué)生開展數(shù)據(jù)結(jié)構(gòu)課程“線上+線下”混合學(xué)習(xí)活動的輔助教材。
前言
“數(shù)據(jù)結(jié)構(gòu)”是本科計算機(jī)及相關(guān)專業(yè)的一門核心課程,也是計算機(jī)學(xué)科中的一門理論性較強(qiáng)的專業(yè)基礎(chǔ)課。當(dāng)我們用計算機(jī)求解實際問題時,必然涉及數(shù)據(jù)組織及數(shù)據(jù)處理,這些正是本課程的主要學(xué)習(xí)內(nèi)容。所以,數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計的知識,而且是設(shè)計其他應(yīng)用系統(tǒng)程序的重要基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)與問題求解能力也是評判本科計算機(jī)類專業(yè)學(xué)生是否具有良好專業(yè)素養(yǎng)的標(biāo)準(zhǔn)。計算機(jī)類專業(yè)學(xué)生在學(xué)習(xí)時,要學(xué)會靈活運用各類數(shù)據(jù)結(jié)構(gòu)和算法知識去解決生活中的一些實際問題。因此,掌握扎實的數(shù)據(jù)結(jié)構(gòu)基本知識,對于今后的專業(yè)學(xué)習(xí)、各類中小型Web程序設(shè)計,以及大型軟件系統(tǒng)開發(fā)與維護(hù)等格外重要。對于初學(xué)者來說,許多專業(yè)術(shù)語較為抽象,不容易理解和掌握,本書采用通俗的語言以及案例和圖表講解,便于讀者真正理解和掌握。
黨的二十大報告提出,堅持教育優(yōu)先發(fā)展,科技自立自強(qiáng),人才引領(lǐng)驅(qū)動,加快建設(shè)教育強(qiáng)國,科技強(qiáng)國,人才強(qiáng)國。隨著國內(nèi)人工智能及其相關(guān)技術(shù)的快速發(fā)展,作為學(xué)習(xí)人工智能技術(shù)的語言基礎(chǔ),Python語言以語法簡單易懂、開發(fā)速度快捷、擅長數(shù)據(jù)分析與處理、擁有強(qiáng)大的第三方工具庫等優(yōu)勢,已被廣泛地應(yīng)用于諸多人工智能領(lǐng)域,已成為主流的計算機(jī)程序設(shè)計語言之一,受到越來越多的人青睞。國內(nèi)各高校計算機(jī)類專業(yè)均開設(shè)了“Python程序設(shè)計”課程,因此,本書采用Python作為數(shù)據(jù)結(jié)構(gòu)的描述語言,其相比于傳統(tǒng)的C/C++、Java語言,更容易學(xué)習(xí)。通過學(xué)習(xí)本書的內(nèi)容,讀者既可以加深對數(shù)據(jù)結(jié)構(gòu)基本概念的理解和認(rèn)識,又能提高對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行運算分析與設(shè)計的能力,也為今后學(xué)習(xí)人工智能領(lǐng)域的相關(guān)知識打下堅實的語言基礎(chǔ)。
本書共8章,面向地方應(yīng)用型本科計算機(jī)類專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)目標(biāo),系統(tǒng)地介紹了數(shù)據(jù)結(jié)構(gòu)中的各類線性結(jié)構(gòu)、樹結(jié)構(gòu)、圖結(jié)構(gòu),以及查找、排序方法,并用通俗易懂的語言圖文并茂地闡述了各種數(shù)據(jù)結(jié)構(gòu)的邏輯關(guān)系,以及在計算機(jī)中的存儲表示及其運算等,每章的學(xué)習(xí)目標(biāo)中還都潛移默化地融入了元素。為了同步解決課程實驗教學(xué)問題,附錄部分詳細(xì)給出了6個難度不大但具有代表性的數(shù)據(jù)結(jié)構(gòu)實驗。考慮到地方應(yīng)用型本科計算機(jī)類專業(yè)學(xué)生的算法設(shè)計能力與編程水平有限,每個實驗都給出了完整的Python源代碼,能夠在Python IDLE環(huán)境下順利運行,可供學(xué)生上機(jī)調(diào)試參考。本書參考學(xué)時為52學(xué)時(其中包括12個實驗學(xué)時),各章的參考學(xué)時如表1所示。當(dāng)然,在實際教學(xué)過程中,任課教師可根據(jù)實際教學(xué)安排適度增減教學(xué)內(nèi)容或適時調(diào)整實驗內(nèi)容。需要說明的是,由于現(xiàn)在很多高校紛紛在國內(nèi)一些知名MOOC平臺上開設(shè)自己的“數(shù)據(jù)結(jié)構(gòu)”課程,數(shù)據(jù)結(jié)構(gòu)各類MOOC/SPOC學(xué)習(xí)資源也較為豐富,因此本課程若能采用“線上+線下”相結(jié)合的混合學(xué)習(xí)模式,教學(xué)效果會更佳,更好地培養(yǎng)學(xué)生的自主學(xué)習(xí)能力。表1學(xué)習(xí)內(nèi)容參考學(xué)時分配表
學(xué) 習(xí) 內(nèi) 容參考學(xué)時理論內(nèi)容
(40學(xué)時)第1章緒論2第2章線性表4第3章棧與隊列6第4章串、數(shù)組與廣義表4第5章樹8第6章圖8第7章查找4第8章排序4實驗內(nèi)容
(12學(xué)時)實驗1順序表的基本操作2實驗2鏈表的基本操作2實驗3利用順序棧實現(xiàn)數(shù)制轉(zhuǎn)換2實驗4二叉樹的建立及遞歸遍歷2實驗5二叉樹的應(yīng)用2實驗6折半插入排序算法的實現(xiàn)2本書是編者多年從事地方應(yīng)用型本科高!皵(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)實踐與感悟。是在對備課教案進(jìn)行認(rèn)真而系統(tǒng)的梳理后精心編寫而成,同時也凝聚了多位一線任課教師的教學(xué)心血與教研成果。本書以安徽高校省級質(zhì)量工程項目“軟件工程師培養(yǎng)計劃”(編號: 2023zybj062)、“課程視域下基于OBE的地方應(yīng)用型軟件工程人才培養(yǎng)模式創(chuàng)新與實踐”(編號: 2022jyxm494)、安徽省高校拔尖人才培育項目“應(yīng)用型本科軟件工程專業(yè)新工科建設(shè)研究”(編號: gxbjZD2022087),以及安徽省高?蒲袆(chuàng)新團(tuán)隊(編號: 2023AH010064)為依托,系項目研究成果之一。
本書由安徽三聯(lián)學(xué)院余久久、安徽國際商務(wù)職業(yè)學(xué)院蔡政策、安徽聲訊信息技術(shù)有限公司虞焰興擔(dān)任主編。安徽財貿(mào)職業(yè)學(xué)院凌勇、安徽糧食工程職業(yè)學(xué)院李昌群與唐珊、滁州學(xué)院陳杰、安徽國際商務(wù)職業(yè)學(xué)院王嬙擔(dān)任副主編,共同完成編寫。余久久負(fù)責(zé)完成全書內(nèi)容的統(tǒng)稿工作。在成書過程中,也得到了安徽三聯(lián)學(xué)院智慧交通現(xiàn)代產(chǎn)業(yè)學(xué)院鳳鵬飛、張繼山以及我校相關(guān)的大力支持。此外,安徽聲訊信息技術(shù)有限公司葛阿平、徐勇也為該書部分內(nèi)容的編寫工作提出了很多寶貴的建議,在此表示衷心的感謝。
本著學(xué)習(xí)與借鑒的目的,本書在編寫過程中參考了大量同類數(shù)據(jù)結(jié)構(gòu)與算法方面的書籍及相關(guān)文獻(xiàn)資料,以及百度、IT技術(shù)社區(qū)(論壇)、微信公眾號、國內(nèi)知名MOOC平臺等推送的數(shù)據(jù)結(jié)構(gòu)及算法應(yīng)用方面的網(wǎng)絡(luò)博文,在此謹(jǐn)向原作者表示誠摯的謝意。由于編者水平有限,加之時間倉促,書中的疏漏和不當(dāng)之處仍在所難免,還望各位同行批評指正。
編者2024年7月
余久久,男,碩士研究生,教授。現(xiàn)任安徽三聯(lián)學(xué)院計算機(jī)工程學(xué)院軟件工程教研室主任,本科軟件工程專業(yè)負(fù)責(zé)人,安慶師范大學(xué)碩士研究生導(dǎo)師。研究方向:現(xiàn)代軟件工程,敏捷軟件測試,現(xiàn)代教育技術(shù),高校信息化資源建設(shè)等。
目錄
第1章緒論1
1.1數(shù)據(jù)結(jié)構(gòu)研究的內(nèi)容1
1.1.1為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)2
1.1.2數(shù)據(jù)結(jié)構(gòu)中的例子4
1.1.3數(shù)據(jù)結(jié)構(gòu)研究的內(nèi)容8
1.2數(shù)據(jù)結(jié)構(gòu)中的基本概念8
1.2.1基本概念與術(shù)語8
1.2.2數(shù)據(jù)結(jié)構(gòu)9
1.3數(shù)據(jù)類型的表示與實現(xiàn)12
1.3.1數(shù)據(jù)類型12
1.3.2抽象數(shù)據(jù)類型13
1.4算法與算法分析15
1.4.1算法的定義及特性15
1.4.2算法的時間復(fù)雜度16
1.4.3算法的空間復(fù)雜度20
1.5Python語言簡介21
1.5.1Python的標(biāo)準(zhǔn)數(shù)據(jù)類型21
1.5.2輸入/輸出和文件操作21
1.5.3面向?qū)ο缶幊?2
小結(jié)24
習(xí)題25第2章線性表27
2.1線性表的基本概念27
2.1.1線性表的定義27
2.1.2線性表的抽象數(shù)據(jù)類型描述29
2.2線性表的順序存儲結(jié)構(gòu)30
2.2.1線性表的順序表示30
2.2.2順序表的基本操作32
2.2.3順序表的應(yīng)用案例37
2.3線性表的鏈?zhǔn)奖硎竞蛯崿F(xiàn)39
2.3.1鏈表的存儲結(jié)構(gòu)39
2.3.2單鏈表的基本操作41
2.3.3雙向鏈表57
2.3.4循環(huán)鏈表64
2.4順序表和鏈表的比較69
2.5線性表的應(yīng)用——機(jī)場乘客排隊值機(jī)系統(tǒng)70
小結(jié)71
習(xí)題72第3章棧與隊列75
3.1棧75
3.1.1棧的基本概念75
3.1.2使用Python列表實現(xiàn)棧79
3.1.3棧的應(yīng)用場景81
3.2隊列83
3.2.1隊列的基本概念84
3.2.2使用collections.deque實現(xiàn)隊列85
3.2.3優(yōu)先隊列87
3.2.4隊列的應(yīng)用場景89
小結(jié)91
習(xí)題92第4章串、數(shù)組與廣義表94
4.1串94
4.1.1串的基本概念94
4.1.2串的順序存儲及運算95
4.1.3串的鏈?zhǔn)酱鎯斑\算97
4.1.4串的模式匹配99
4.1.5串的應(yīng)用案例101
4.2數(shù)組102
4.2.1數(shù)組的基本概念102
4.2.2數(shù)組的順序存儲103
4.2.3特殊矩陣的壓縮存儲105
4.2.4數(shù)組的應(yīng)用案例106
4.3廣義表108
4.3.1廣義表的基本概念108
4.3.2廣義表的存儲結(jié)構(gòu)108
4.3.3廣義表的操作109
小結(jié)111
習(xí)題112第5章樹114
5.1樹和二叉樹114
5.1.1樹的定義與基本術(shù)語115
5.1.2二叉樹的定義與特點115
5.1.3樹與二叉樹的示例描述116
5.2二叉樹案例引入116
5.3二叉樹的性質(zhì)和存儲結(jié)構(gòu)118
5.3.1二叉樹的性質(zhì)118
5.3.2二叉樹的存儲結(jié)構(gòu)119
5.4遍歷二叉樹和線索二叉樹121
5.4.1遍歷二叉樹121
5.4.2線索二叉樹130
5.5樹和森林132
5.5.1樹的表示方法132
5.5.2森林和二叉樹的轉(zhuǎn)換134
5.5.3哈夫曼樹136
5.6案例分析與實現(xiàn)138
小結(jié)141
習(xí)題141第6章圖144
6.1圖的基本概念144
6.1.1圖的定義144
6.1.2圖的基本術(shù)語144
6.2圖的存儲結(jié)構(gòu)146
6.2.1鄰接矩陣146
6.2.2鄰接表147
6.3圖的遍歷149
6.3.1深度優(yōu)先遍歷149
6.3.2廣度優(yōu)先遍歷150
6.4圖的最小生成樹152
6.4.1基本概念152
6.4.2Prim算法152
6.4.3Kruskal算法154
6.5最短路徑156
6.5.1基本概念156
6.5.2應(yīng)用實例157
6.6拓?fù)渑判?59
6.6.1基本概念159
6.6.2拓?fù)渑判虻膶崿F(xiàn)160
6.7關(guān)鍵路徑162
6.7.1基本概念162
6.7.2關(guān)鍵路徑的算法164
小結(jié)165
習(xí)題165第7章查找168
7.1查找的基本概念168
7.2線性表的查找169
7.2.1順序查找169
7.2.2折半查找170
7.2.3分塊查找172
7.3二叉樹的查找174
7.3.1二叉排序樹174
7.3.2平衡二叉樹183
7.4哈希表的查找185
7.4.1哈希表186
7.4.2哈希函數(shù)的構(gòu)造方法187
7.4.3沖突處理的方法188
7.4.4哈希表查找的算法分析190
小結(jié)191
習(xí)題191第8章排序194
8.1認(rèn)識排序194
8.1.1排序的基本概念194
8.1.2排序算法的評價指標(biāo)195
8.2插入排序195
8.2.1直接插入排序196
8.2.2二分法插入排序197
8.2.3希爾排序199
8.3交換排序200
8.3.1冒泡排序200
8.3.2快速排序202
8.4選擇排序203
8.4.1簡單選擇排序203
8.4.2堆排序204
8.5歸并排序207
8.6基數(shù)排序208
小結(jié)210
習(xí)題212附錄A實驗215
實驗1順序表的基本操作215
實驗2鏈表的基本操作217
實驗3利用順序棧實現(xiàn)數(shù)制轉(zhuǎn)換220
實驗4二叉樹的建立及遞歸遍歷221
實驗5二叉樹的應(yīng)用224
實驗6折半插入排序算法的實現(xiàn)226參考文獻(xiàn)230