《數(shù)據(jù)結(jié)構(gòu)》是針對應(yīng)用型本科教學(xué)特征和需求而編寫的,書中系統(tǒng)地介紹了常見數(shù)據(jù)結(jié)構(gòu)和算法的相關(guān)理論和實現(xiàn)方法,主要包括線性表、棧、隊列、串、數(shù)組和廣義表、樹和二叉樹、圖等邏輯結(jié)構(gòu)及其對應(yīng)的存儲結(jié)構(gòu)和操作。另外,該書還集中介紹了常見的排序和查找算法,并對算法的效率進(jìn)行了分析。
《數(shù)據(jù)結(jié)構(gòu)》以C語言為算法實現(xiàn)語言,以理論講解為基石,以案例講解為驅(qū)動,每個章節(jié)配備思考題和章后習(xí)題(包括理論習(xí)題和上機(jī)操作習(xí)題)。該書致力于將理論和實踐相結(jié)合,由淺入深地實現(xiàn)理論和實踐內(nèi)容的逐級內(nèi)化。
《數(shù)據(jù)結(jié)構(gòu)》可作為應(yīng)用型高等院校計算機(jī)科學(xué)與技術(shù)、軟件工程、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)、信息安全等相關(guān)專業(yè)的本科生專業(yè)教材或參考用書,也可作為計算機(jī)相關(guān)從業(yè)技術(shù)人員的自學(xué)和參考用書。
更多科學(xué)出版社服務(wù),請掃碼獲取。
“數(shù)據(jù)結(jié)構(gòu)”是計算機(jī)科學(xué)與技術(shù)學(xué)科中一門十分重要的專業(yè)基礎(chǔ)課程,也是其他工科的重要選修課之一。2022年發(fā)布的《計算機(jī)類教學(xué)質(zhì)量國家標(biāo)準(zhǔn)》中將“數(shù)據(jù)結(jié)構(gòu)”課程列為計算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)、網(wǎng)絡(luò)工程專業(yè)、信息安全專業(yè)、物聯(lián)網(wǎng)工程等5個學(xué)科的基礎(chǔ)課之一。另外,數(shù)據(jù)科學(xué)與大數(shù)據(jù)、人工智能等專業(yè)都要求學(xué)生具備較好的算法和數(shù)據(jù)結(jié)構(gòu)相關(guān)基礎(chǔ)知識。
編者結(jié)合本科的教學(xué)要求和省屬學(xué)校學(xué)生的學(xué)習(xí)特點,注重理論和實踐相結(jié)合。本書中將知識內(nèi)容、實踐內(nèi)容有機(jī)融合,體現(xiàn)了程序設(shè)計方法中抽象、枚舉、歸納3個原則的運用,反復(fù)再現(xiàn)算法的復(fù)雜性、效率、折中、重用等重要概念。
本書在內(nèi)容的選取上體現(xiàn)了突出應(yīng)用的原則——針對應(yīng)用型本科課程“教與學(xué)”的特點,在實例列舉上力求做到典型和恰當(dāng),并在各章都附有相應(yīng)的習(xí)題(包括理論習(xí)題和上機(jī)操作習(xí)題);以實例介紹各種數(shù)據(jù)結(jié)構(gòu)的應(yīng)用。
在內(nèi)容的組織上遵循“循序漸進(jìn)”的原則——從數(shù)據(jù)類型、線性表、棧、隊列開講數(shù)據(jù)結(jié)構(gòu),與前導(dǎo)課程“高級語言程序設(shè)計”內(nèi)容前后貫通,無縫銜接;內(nèi)容由淺入深,按常用數(shù)據(jù)結(jié)構(gòu)、簡單數(shù)據(jù)結(jié)構(gòu)、樹與二叉樹、圖與網(wǎng)、查找和排序的次序安排主要教學(xué)內(nèi)容。
在內(nèi)容的敘述上符合“通俗易懂”的原則,在算法的描述上力求結(jié)構(gòu)清晰、描述正確、易讀易理解,并對每一個算法都做了大量的注釋。在文字?jǐn)⑹錾狭η笞龅接蓽\入深和深入淺出,用語大眾化,增強(qiáng)可讀性。
全書共10章。第1章介紹數(shù)據(jù)結(jié)構(gòu)和算法的基本概念,以及算法的評價方法;第2章介紹線性表的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、基本操作,以及基本操作的時空復(fù)雜度分析;第3章深入淺出地介紹棧的定義、順序棧、鏈棧,以及棧的應(yīng)用;第4章介紹隊列的基本概念、順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu),以及隊列的應(yīng)用;第5章介紹串的定義、存儲結(jié)構(gòu)及其操作;第6章分別介紹了一維數(shù)組、二維數(shù)組、多維數(shù)組,特殊矩陣的存儲方法,以及廣義表的定義、抽象結(jié)構(gòu)及存儲結(jié)構(gòu);第7章介紹樹和二叉樹,主要包括樹和二叉樹的定義、遍歷方法、基本應(yīng)用;第8章介紹圖,包括圖的基本概念、圖的存儲、圖的遍歷,以及圖的應(yīng)用,并介紹相關(guān)的性能分析;第9章和第10章介紹查找和排序,并對其性能進(jìn)行分析和對比。
全書側(cè)重應(yīng)用性,力求教學(xué)內(nèi)容與應(yīng)用實際緊密結(jié)合;強(qiáng)調(diào)實踐性,建議讀者多動手,通過實際編程實現(xiàn)各種算法,并在深入分析的基礎(chǔ)上改進(jìn)算法或提出新的算法,強(qiáng)調(diào)習(xí)題和上機(jī)實驗題的重要性。
本書由逯洋擔(dān)任主編,具體編寫分工如下:逯洋負(fù)責(zé)本書整體的章節(jié)設(shè)計,并編寫了第2~4章;孫宏宇編寫了第5~8章;王曉宇編寫了第9章和第10章;魯錚編寫了第1章;李穎和李闖負(fù)責(zé)全書的文字校對工作。
編者在編寫本書時,查閱和參考了眾多文獻(xiàn)資料,從中得到了許多教益和啟發(fā),在此向參考文獻(xiàn)的作者致以誠摯的謝意。
由于時間倉促和編者水平有限,書中難免有不妥和疏漏之處,敬請讀者批評指正。
第1章 數(shù)據(jù)結(jié)構(gòu)和算法
1.1 數(shù)據(jù)結(jié)構(gòu)的基本概念
1.2 抽象數(shù)據(jù)類型的表示與實現(xiàn)
1.2.1 抽象、數(shù)據(jù)抽象和過程抽象
1.2.2 封裝與信息隱蔽
1,2.3 數(shù)據(jù)類型和抽象數(shù)據(jù)類型
1.2.4 數(shù)據(jù)結(jié)構(gòu)和抽象數(shù)據(jù)類型
1.3 算法
1.3.1 算法的概念
1.3 ,2算法的基本特性
1.4 算法的設(shè)計與評價
1.4.1 評價算法的標(biāo)準(zhǔn)
1.4.2 常見的算法設(shè)計方法
小結(jié)
習(xí)題
第2章 線性表
2.1 線性表的基本概念
2.1.1 線性表的定義
2.1.2 線性表的邏輯結(jié)構(gòu)
2.1.3 線性表的基本運算
2.2 線性表的順序表示與實現(xiàn)
2.2.1 線性表的順序存儲結(jié)構(gòu)
2.2.2 順序表的實現(xiàn)
2.2.3 順序表基本運算的實現(xiàn)
2.2.4 順序表的算法分析
2.3 線性表的鏈?zhǔn)奖硎九c實現(xiàn)
2.3.1 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)(鏈表)
2.3.2 鏈表的實現(xiàn)
2.3.3 鏈表基本運算的實現(xiàn)
2.3.4 鏈表的算法分析
2.4 單循環(huán)鏈表和雙鏈表
2.4.1 單循環(huán)鏈表
2.4.2 雙鏈表
2.4.3 順序表和鏈表的比較
2.5 線性表的應(yīng)用
2.5.1 順序表的應(yīng)用
2.5.2 鏈表的應(yīng)用
小結(jié)
習(xí)題
第3章 棧
3.1 基本概念
3.1.1 棧的概念
3.1.2 棧的基本運算
3.2 棧的順序存儲結(jié)構(gòu)
3.2.1 順序棧
3.2.2 順序棧的基本操作
3.3 棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)
3.3.1 鏈棧的實現(xiàn)
3.3.2 鏈棧的基本操作
3.4 棧的應(yīng)用
3.4.1 數(shù)制轉(zhuǎn)換
3.4.2 括號匹配
3.4.3 “迷宮”游戲
小結(jié)
習(xí)題
第4章 隊列
4.1 隊列的基本概念和基本運算
4.1.1 隊列的基本概念
4.1.2 隊列的基本運算
4.2 隊列的順序存儲結(jié)構(gòu)
4.2.1 隊列的順序表示
4.2.2 順序隊列的基本運算
4.2.3 循環(huán)隊列
4.2.4 循環(huán)隊列的基本運算
……
第5章 串
第6章 數(shù)組和廣義表
第7章 樹和二叉樹
第8章 圖
第9章 查找
第10章 排序
參考文獻(xiàn)