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