全書共10章,詳細(xì)介紹各種數(shù)據(jù)結(jié)構(gòu)以及查找、排序的各種方法,對(duì)每種類型的數(shù)據(jù)結(jié)構(gòu)以實(shí)例為切入點(diǎn),詳細(xì)敘述其基本概念、邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和常用算法。知識(shí)組織清晰,算法完整,便于讀者上手。配套完整的視頻課程,并以目錄樹形式展示,方便讀者查閱學(xué)習(xí)。部分章節(jié)增加知識(shí)拓展部分,幫助讀者訓(xùn)練計(jì)算思維。 配套出版《數(shù)據(jù)結(jié)構(gòu)習(xí)題與實(shí)驗(yàn)教程(C語言描述)微課視頻版》(978-7-302-64234-3),方便課后復(fù)習(xí)或備考研究生入學(xué)考試及各類技能考試。 書中實(shí)例豐富,對(duì)主要算法均給出了C語言函數(shù)實(shí)現(xiàn)。為了便于教學(xué),各章后配有豐富例題及解答。適合作為高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的教材,也可供對(duì)計(jì)算機(jī)程序設(shè)計(jì)感興趣的讀者自學(xué)參考。
配套900分鐘慕課視頻,隨時(shí)掃碼觀看視頻講解;多維度、跨課程講解概念原理;配套豐富習(xí)題與實(shí)踐;各章后的番外體現(xiàn)了課程思政,育人于無聲。
新一輪科技革命和產(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)緊缺型人才。
本書為高等學(xué)校計(jì)算機(jī)類專業(yè)的數(shù)據(jù)結(jié)構(gòu)課程而編寫,依據(jù)理論應(yīng)用思維遞進(jìn)訓(xùn)練的原則,選材精練,對(duì)基本理論的敘述深入淺出、通俗易懂。書中實(shí)例豐富,主要算法均給出了C語言函數(shù)實(shí)現(xiàn),加上主函數(shù)后即可運(yùn)行。
本書是2022年度黑龍江省高等教育教學(xué)改革研究重點(diǎn)委托項(xiàng)目四新背景下應(yīng)用型本科教育教學(xué)新基建實(shí)踐路徑研究(No.SJGZ20220164)的部分成果。
本書從第1版出版至今已經(jīng)有十余年時(shí)間。根據(jù)前兩個(gè)版次讀者的使用效果和反饋意見,及計(jì)算機(jī)學(xué)科的新發(fā)展,并結(jié)合當(dāng)前教學(xué)中使用的新媒體、新技術(shù)和編者在教學(xué)中的新認(rèn)識(shí),制訂了本書的編寫方案,本書旨在成為幫助讀者更便利地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的教材或參考書。本次改版在沿承第2版的描述方法和講解風(fēng)格的基礎(chǔ)上,主要進(jìn)行了以下修訂和增補(bǔ)。
(1) 編者團(tuán)隊(duì)錄制的數(shù)據(jù)結(jié)構(gòu)在線開放課程于2021年11月在智慧樹平臺(tái)上運(yùn)行,課程體系框架的設(shè)計(jì)、算法描述風(fēng)格和本書基本一致,課程視頻以章節(jié)為模塊進(jìn)行錄制。本書附有該課程的全部教學(xué)視頻,并以章節(jié)樹的形式給出,方便讀者查閱學(xué)習(xí)。
(2) 各章最后增加知識(shí)拓展部分,并特別增加附錄A,或?qū)?shù)據(jù)結(jié)構(gòu)在實(shí)際應(yīng)用中的案例進(jìn)行講解,或?qū)ι婕暗拿溯W事進(jìn)行介紹,或是討論數(shù)據(jù)結(jié)構(gòu)中的某些原理在其他領(lǐng)域的使用,或是依據(jù)某個(gè)案例對(duì)本章知識(shí)點(diǎn)進(jìn)行分析,為讀者訓(xùn)練計(jì)算思維提供了幫助。
(3) 參照近年的研究生聯(lián)考題目和學(xué)科發(fā)展,對(duì)部分例題進(jìn)行了替換。
(4) 進(jìn)一步統(tǒng)一了全書算法描述風(fēng)格、數(shù)據(jù)類型名和專業(yè)術(shù)語的使用,方便讀者把握全書的知識(shí)脈絡(luò)。
以上修訂使本書更便于教學(xué)組織和實(shí)踐操作; 配套的視頻課程既便于教學(xué),又便于自學(xué)。本書可作為高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的本科教材,也可作為非計(jì)算機(jī)專業(yè)的選修課教材和計(jì)算機(jī)應(yīng)用技術(shù)人員的自學(xué)教材或參考書。
本書共10章,總課時(shí)為80學(xué)時(shí)左右,其中算法實(shí)驗(yàn)為30學(xué)時(shí)。
第1章介紹數(shù)據(jù)結(jié)構(gòu)的一般概念和算法分析的初步知識(shí); 第2章~第5章分別討論了線性表、棧與隊(duì)列、串、數(shù)組等邏輯結(jié)構(gòu)及其在不同存儲(chǔ)結(jié)構(gòu)上各種操作的實(shí)現(xiàn)算法; 第6章和第7章論述了樹和圖的兩種重要的非線性邏輯結(jié)構(gòu)、存儲(chǔ)方法及重要的應(yīng)用; 第8章和第9章討論了各種查找表及查找方法、各種排序算法及其應(yīng)用。第10章討論了文件的基本概念和相關(guān)算法。
本書由王夢(mèng)菊、齊景嘉任主編,李儉、郝春梅任副主編,侯菡萏任主審。各章編寫分工如下: 第1、2、3、9章由哈爾濱金融學(xué)院的齊景嘉編寫; 第6、7章由哈爾濱金融學(xué)院的王夢(mèng)菊編寫; 第5、8章和附錄由哈爾濱金融學(xué)院的李儉編寫; 第4、10章由哈爾濱金融學(xué)院的郝春梅編寫。全書由王夢(mèng)菊統(tǒng)一編排定稿。
本書編者都是多年從事本課程教學(xué)的教師,但由于編者水平有限,不妥與疏漏之處在所難免,敬請(qǐng)廣大讀者批評(píng)指正。
編者
2023年5月
第1章概述
1.1引言
1.2基本概念與術(shù)語
1.3抽象數(shù)據(jù)類型
1.4算法和算法的分析
1.4.1算法的基本概念
1.4.2算法的時(shí)間復(fù)雜度
1.4.3算法的空間復(fù)雜度
本章小結(jié)
知識(shí)拓展
第2章線性表
2.1線性表的邏輯結(jié)構(gòu)
2.1.1線性表的引例
2.1.2線性表的定義
2.1.3線性表的基本操作
2.2線性表的順序存儲(chǔ)結(jié)構(gòu)
2.2.1順序表結(jié)構(gòu)
2.2.2順序表的基本操作
2.3線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
2.3.1鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
2.3.2單鏈表上的基本運(yùn)算
2.3.3循環(huán)鏈表和雙向鏈表
2.4順序表與鏈表的比較
2.5線性表的應(yīng)用
本章小結(jié)
知識(shí)拓展
第3章棧和隊(duì)列
3.1棧
3.1.1棧的引例
3.1.2棧的類型定義
3.1.3棧的順序存儲(chǔ)表示和操作的實(shí)現(xiàn)
3.1.4棧的鏈?zhǔn)酱鎯?chǔ)表示和操作的實(shí)現(xiàn)
3.2棧的應(yīng)用
3.3隊(duì)列
3.3.1隊(duì)列的引例
3.3.2隊(duì)列的定義及其基本操作
3.3.3隊(duì)列的順序存儲(chǔ)表示和操作的實(shí)現(xiàn)
3.3.4隊(duì)列的鏈?zhǔn)酱鎯?chǔ)表示和操作的實(shí)現(xiàn)
3.4隊(duì)列的應(yīng)用
本章小結(jié)
知識(shí)拓展
目錄
數(shù)據(jù)結(jié)構(gòu)(C語言描述)(第3版)慕課·微課視頻版
第4章串
4.1串的定義及基本操作
4.1.1串的引例
4.1.2串的基本概念
4.1.3串的基本操作
4.2串的存儲(chǔ)結(jié)構(gòu)
4.2.1串的定長(zhǎng)順序存儲(chǔ)結(jié)構(gòu)
4.2.2串的堆式存儲(chǔ)
4.2.3串的塊鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
4.3串的模式匹配
4.3.1樸素的模式匹配算法
4.3.2KMP算法
4.4串的應(yīng)用
本章小結(jié)
知識(shí)拓展
第5章數(shù)組與廣義表
5.1數(shù)組的定義和運(yùn)算
5.1.1數(shù)組的定義
5.1.2數(shù)組的基本運(yùn)算
5.2數(shù)組的順序存儲(chǔ)結(jié)構(gòu)
5.2.1行優(yōu)先存儲(chǔ)
5.2.2列優(yōu)先存儲(chǔ)
5.3矩陣的壓縮存儲(chǔ)
5.3.1特殊矩陣對(duì)稱矩陣和三角矩陣
5.3.2稀疏矩陣
5.4廣義表的定義與性質(zhì)
5.4.1廣義表的定義
5.4.2廣義表的性質(zhì)
5.5廣義表的存儲(chǔ)結(jié)構(gòu)
5.5.1頭尾表示法
5.5.2孩子兄弟表示法
5.6廣義表的基本操作
5.7數(shù)組的應(yīng)用
本章小結(jié)
知識(shí)拓展
第6章樹和二叉樹
6.1樹的概念和基本操作
6.1.1樹的引例
6.1.2樹的定義和基本術(shù)語
6.1.3樹的表示方法
6.1.4樹的基本操作
6.2二叉樹
6.2.1二叉樹的定義
6.2.2二叉樹的性質(zhì)
6.2.3二叉樹的基本操作
6.3二叉樹的存儲(chǔ)結(jié)構(gòu)
6.3.1順序存儲(chǔ)結(jié)構(gòu)
6.3.2鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
6.4二叉樹的遍歷
6.4.1前序遍歷
6.4.2中序遍歷
6.4.3后序遍歷
6.4.4層次遍歷
6.5線索二叉樹
6.5.1線索二叉樹的概念
6.5.2中序線索二叉樹的構(gòu)造算法
6.5.3查找線索二叉樹上結(jié)點(diǎn)的前驅(qū)和后繼
6.5.4線索二叉樹的遍歷
6.6哈夫曼樹及其應(yīng)用
6.6.1哈夫曼樹的定義
6.6.2構(gòu)造哈夫曼樹
6.6.3哈夫曼樹的應(yīng)用
6.7樹與森林
6.7.1樹的存儲(chǔ)結(jié)構(gòu)
6.7.2樹、森林與二叉樹的轉(zhuǎn)換
6.7.3樹和森林的遍歷
6.8二叉樹的應(yīng)用
本章小結(jié)
知識(shí)拓展
第7章圖
7.1圖的定義和基本術(shù)語
7.1.1圖的引例
7.1.2圖的定義
7.1.3圖的基本術(shù)語
7.2圖的存儲(chǔ)結(jié)構(gòu)
7.2.1數(shù)組表示法
7.2.2鄰接表
7.2.3十字鏈表
7.2.4鄰接多重表
7.3圖的遍歷
7.3.1深度優(yōu)先搜索
7.3.2廣度優(yōu)先搜索遍歷
7.4圖的連通性問題
7.4.1無向圖的連通分量和生成樹
7.4.2有向圖的強(qiáng)連通分量
7.4.3最小生成樹
7.4.4關(guān)結(jié)點(diǎn)和重連通分量
7.5有向無環(huán)圖及其應(yīng)用
7.5.1拓?fù)渑判?/p>
7.5.2關(guān)鍵路徑
7.6最短路徑
7.6.1求某一源點(diǎn)到其余各頂點(diǎn)的最短路徑
7.6.2每一對(duì)頂點(diǎn)之間的最短路徑
7.7圖的應(yīng)用
本章小結(jié)
知識(shí)拓展
第8章查找
8.1基本概念
8.2靜態(tài)查找表
8.2.1順序表的查找
8.2.2有序表的查找
8.2.3靜態(tài)樹表的查找
8.2.4索引順序表的查找
8.3動(dòng)態(tài)查找表
8.3.1二叉排序樹和平衡二叉樹
8.3.2B樹和B 樹
8.4哈希表
8.4.1哈希表的概念
8.4.2哈希函數(shù)的構(gòu)造方法
8.4.3處理沖突的方法
8.4.4哈希表的查找及其分析
8.5查找的應(yīng)用
本章小結(jié)
知識(shí)拓展
第9章排序
9.1排序的基本概念
9.2插入排序
9.2.1直接插入排序
9.2.2折半插入排序
9.2.3希爾排序
9.3交換排序
9.3.1冒泡排序
9.3.2快速排序
9.4選擇排序
9.4.1直接選擇排序
9.4.2樹狀選擇排序
9.4.3堆排序
9.5歸并排序
9.6各種內(nèi)部排序方法的比較
9.7排序的應(yīng)用
本章小結(jié)
知識(shí)拓展
第10章文件
10.1文件的基本概念
10.1.1文件引例
10.1.2文件的定義
10.1.3文件的邏輯結(jié)構(gòu)及操作
10.1.4文件的物理結(jié)構(gòu)
10.2順序文件
10.2.1什么是順序文件
10.2.2磁帶存儲(chǔ)的順序文件的操作
10.2.3磁盤存儲(chǔ)的順序文件的操作
10.3索引文件
10.3.1什么是索引文件
10.3.2索引文件的操作
10.3.3多級(jí)索引文件
10.4ISAM文件和VSAM文件
10.4.1ISAM文件
10.4.2VSAM文件
10.5哈希文件
10.6多關(guān)鍵字文件
10.6.1多重表文件
10.6.2倒排文件
本章小結(jié)
知識(shí)拓展
附錄A相關(guān)知識(shí)拓展
參考文獻(xiàn)