新一輪科技革命和產(chǎn)業(yè)變革帶動了傳統(tǒng)產(chǎn)業(yè)的升級改造。黨的二十大報告強(qiáng)調(diào)必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強(qiáng)國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,開辟發(fā)展新領(lǐng)域新賽道,不斷塑造發(fā)展新動能新優(yōu)勢。建設(shè)高質(zhì)量高等教育體系是擺在高等教育面前的重大歷史使命和政治責(zé)任。高等教育要堅持國家戰(zhàn)略引領(lǐng),聚焦重大需求布局,推進(jìn)新工科、新醫(yī)科、新農(nóng)科、新文科建設(shè),加快培養(yǎng)緊缺型人才。
本書為高等學(xué)校計算機(jī)類專業(yè)的數(shù)據(jù)結(jié)構(gòu)課程而編寫,依據(jù)理論應(yīng)用思維遞進(jìn)訓(xùn)練的原則,選材精練,對基本理論的敘述深入淺出、通俗易懂。書中實例豐富,主要算法均給出了C語言函數(shù)實現(xiàn),加上主函數(shù)后即可運行。
本書是2022年度黑龍江省高等教育教學(xué)改革研究重點委托項目四新背景下應(yīng)用型本科教育教學(xué)新基建實踐路徑研究(No.SJGZ20220164)的部分成果。
本書從第1版出版至今已經(jīng)有十余年時間。根據(jù)前兩個版次讀者的使用效果和反饋意見,及計算機(jī)學(xué)科的新發(fā)展,并結(jié)合當(dāng)前教學(xué)中使用的新媒體、新技術(shù)和編者在教學(xué)中的新認(rèn)識,制訂了本書的編寫方案,本書旨在成為幫助讀者更便利地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的教材或參考書。本次改版在沿承第2版的描述方法和講解風(fēng)格的基礎(chǔ)上,主要進(jìn)行了以下修訂和增補。
(1) 編者團(tuán)隊錄制的數(shù)據(jù)結(jié)構(gòu)在線開放課程于2021年11月在智慧樹平臺上運行,課程體系框架的設(shè)計、算法描述風(fēng)格和本書基本一致,課程視頻以章節(jié)為模塊進(jìn)行錄制。本書附有該課程的全部教學(xué)視頻,并以章節(jié)樹的形式給出,方便讀者查閱學(xué)習(xí)。
(2) 各章最后增加知識拓展部分,并特別增加附錄A,或?qū)?shù)據(jù)結(jié)構(gòu)在實際應(yīng)用中的案例進(jìn)行講解,或?qū)ι婕暗拿溯W事進(jìn)行介紹,或是討論數(shù)據(jù)結(jié)構(gòu)中的某些原理在其他領(lǐng)域的使用,或是依據(jù)某個案例對本章知識點進(jìn)行分析,為讀者訓(xùn)練計算思維提供了幫助。
(3) 參照近年的研究生聯(lián)考題目和學(xué)科發(fā)展,對部分例題進(jìn)行了替換。
(4) 進(jìn)一步統(tǒng)一了全書算法描述風(fēng)格、數(shù)據(jù)類型名和專業(yè)術(shù)語的使用,方便讀者把握全書的知識脈絡(luò)。
以上修訂使本書更便于教學(xué)組織和實踐操作; 配套的視頻課程既便于教學(xué),又便于自學(xué)。本書可作為高等學(xué)校計算機(jī)相關(guān)專業(yè)的本科教材,也可作為非計算機(jī)專業(yè)的選修課教材和計算機(jī)應(yīng)用技術(shù)人員的自學(xué)教材或參考書。
本書共10章,總課時為80學(xué)時左右,其中算法實驗為30學(xué)時。
第1章介紹數(shù)據(jù)結(jié)構(gòu)的一般概念和算法分析的初步知識; 第2章~第5章分別討論了線性表、棧與隊列、串、數(shù)組等邏輯結(jié)構(gòu)及其在不同存儲結(jié)構(gòu)上各種操作的實現(xiàn)算法; 第6章和第7章論述了樹和圖的兩種重要的非線性邏輯結(jié)構(gòu)、存儲方法及重要的應(yīng)用; 第8章和第9章討論了各種查找表及查找方法、各種排序算法及其應(yīng)用。第10章討論了文件的基本概念和相關(guān)算法。
本書由王夢菊、齊景嘉任主編,李儉、郝春梅任副主編,侯菡萏任主審。各章編寫分工如下: 第1、2、3、9章由哈爾濱金融學(xué)院的齊景嘉編寫; 第6、7章由哈爾濱金融學(xué)院的王夢菊編寫; 第5、8章和附錄由哈爾濱金融學(xué)院的李儉編寫; 第4、10章由哈爾濱金融學(xué)院的郝春梅編寫。全書由王夢菊統(tǒng)一編排定稿。
本書編者都是多年從事本課程教學(xué)的教師,但由于編者水平有限,不妥與疏漏之處在所難免,敬請廣大讀者批評指正。
編者
2023年5月
第1章概述
1.1引言
1.2基本概念與術(shù)語
1.3抽象數(shù)據(jù)類型
1.4算法和算法的分析
1.4.1算法的基本概念
1.4.2算法的時間復(fù)雜度
1.4.3算法的空間復(fù)雜度
本章小結(jié)
知識拓展
第2章線性表
2.1線性表的邏輯結(jié)構(gòu)
2.1.1線性表的引例
2.1.2線性表的定義
2.1.3線性表的基本操作
2.2線性表的順序存儲結(jié)構(gòu)
2.2.1順序表結(jié)構(gòu)
2.2.2順序表的基本操作
2.3線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)
2.3.1鏈?zhǔn)酱鎯Y(jié)構(gòu)
2.3.2單鏈表上的基本運算
2.3.3循環(huán)鏈表和雙向鏈表
2.4順序表與鏈表的比較
2.5線性表的應(yīng)用
本章小結(jié)
知識拓展
第3章棧和隊列
3.1棧
3.1.1棧的引例
3.1.2棧的類型定義
3.1.3棧的順序存儲表示和操作的實現(xiàn)
3.1.4棧的鏈?zhǔn)酱鎯Ρ硎竞筒僮鞯膶崿F(xiàn)
3.2棧的應(yīng)用
3.3隊列
3.3.1隊列的引例
3.3.2隊列的定義及其基本操作
3.3.3隊列的順序存儲表示和操作的實現(xiàn)
3.3.4隊列的鏈?zhǔn)酱鎯Ρ硎竞筒僮鞯膶崿F(xiàn)
3.4隊列的應(yīng)用
本章小結(jié)
知識拓展
目錄
數(shù)據(jù)結(jié)構(gòu)(C語言描述)(第3版)慕課·微課視頻版
第4章串
4.1串的定義及基本操作
4.1.1串的引例
4.1.2串的基本概念
4.1.3串的基本操作
4.2串的存儲結(jié)構(gòu)
4.2.1串的定長順序存儲結(jié)構(gòu)
4.2.2串的堆式存儲
4.2.3串的塊鏈?zhǔn)酱鎯Y(jié)構(gòu)
4.3串的模式匹配
4.3.1樸素的模式匹配算法
4.3.2KMP算法
4.4串的應(yīng)用
本章小結(jié)
知識拓展
第5章數(shù)組與廣義表
5.1數(shù)組的定義和運算
5.1.1數(shù)組的定義
5.1.2數(shù)組的基本運算
5.2數(shù)組的順序存儲結(jié)構(gòu)
5.2.1行優(yōu)先存儲
5.2.2列優(yōu)先存儲
5.3矩陣的壓縮存儲
5.3.1特殊矩陣對稱矩陣和三角矩陣
5.3.2稀疏矩陣
5.4廣義表的定義與性質(zhì)
5.4.1廣義表的定義
5.4.2廣義表的性質(zhì)
5.5廣義表的存儲結(jié)構(gòu)
5.5.1頭尾表示法
5.5.2孩子兄弟表示法
5.6廣義表的基本操作
5.7數(shù)組的應(yīng)用
本章小結(jié)
知識拓展
第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二叉樹的存儲結(jié)構(gòu)
6.3.1順序存儲結(jié)構(gòu)
6.3.2鏈?zhǔn)酱鎯Y(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é)點的前驅(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樹的存儲結(jié)構(gòu)
6.7.2樹、森林與二叉樹的轉(zhuǎn)換
6.7.3樹和森林的遍歷
6.8二叉樹的應(yīng)用
本章小結(jié)
知識拓展
第7章圖
7.1圖的定義和基本術(shù)語
7.1.1圖的引例
7.1.2圖的定義
7.1.3圖的基本術(shù)語
7.2圖的存儲結(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é)點和重連通分量
7.5有向無環(huán)圖及其應(yīng)用
7.5.1拓?fù)渑判?/p>
7.5.2關(guān)鍵路徑
7.6最短路徑
7.6.1求某一源點到其余各頂點的最短路徑
7.6.2每一對頂點之間的最短路徑
7.7圖的應(yīng)用
本章小結(jié)
知識拓展
第8章查找
8.1基本概念
8.2靜態(tài)查找表
8.2.1順序表的查找
8.2.2有序表的查找
8.2.3靜態(tài)樹表的查找
8.2.4索引順序表的查找
8.3動態(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é)
知識拓展
第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é)
知識拓展
第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磁帶存儲的順序文件的操作
10.2.3磁盤存儲的順序文件的操作
10.3索引文件
10.3.1什么是索引文件
10.3.2索引文件的操作
10.3.3多級索引文件
10.4ISAM文件和VSAM文件
10.4.1ISAM文件
10.4.2VSAM文件
10.5哈希文件
10.6多關(guān)鍵字文件
10.6.1多重表文件
10.6.2倒排文件
本章小結(jié)
知識拓展
附錄A相關(guān)知識拓展
參考文獻(xiàn)