本書(shū)在選材與編排上, 貼近當(dāng)前普通高等院!皵(shù)據(jù)結(jié)構(gòu)”課程的現(xiàn)狀和發(fā)展趨勢(shì), 內(nèi)容難度適度, 突出實(shí)用性和應(yīng)用性。在內(nèi)容選取與結(jié)構(gòu)上, 本書(shū)并未對(duì)各種數(shù)據(jù)結(jié)構(gòu)面面俱到, 而是通過(guò)分類和講解典型結(jié)構(gòu), 使讀者形成對(duì)數(shù)據(jù)結(jié)構(gòu)的宏觀認(rèn)識(shí)。根據(jù)內(nèi)容側(cè)重, 本書(shū)共分為8章, 分別為緒論、線性表、棧和隊(duì)列、串和數(shù)組、樹(shù)形結(jié)構(gòu)、圖、內(nèi)排序和查找。
本書(shū)在選材與編排上,貼近當(dāng)前普通高等院!皵(shù)據(jù)結(jié)構(gòu)”課程的現(xiàn)狀和發(fā)展趨勢(shì),內(nèi)容難度適度,突出實(shí)用性和應(yīng)用性。
配套微課視頻、教學(xué)課件、教學(xué)大綱、習(xí)題答案、源代碼等資源
《數(shù)據(jù)結(jié)構(gòu)(Python版)》于2019年4月正式出版以來(lái),經(jīng)過(guò)了幾次印刷,許多高等學(xué)校已將其作為“數(shù)據(jù)結(jié)構(gòu)”課程的教材。本書(shū)不僅深受這些學(xué)校師生的鐘愛(ài),而且也獲得了良好的社會(huì)效益。但從另外一個(gè)角度來(lái)看,作者有責(zé)任和義務(wù)維護(hù)好這本書(shū)的質(zhì)量,及時(shí)更新本書(shū)的內(nèi)容,做到與時(shí)俱進(jìn)。
本書(shū)修訂內(nèi)容如下。
(1) 重新對(duì)每章內(nèi)容進(jìn)行了梳理。
(2) 第2~8章中,每章都增加了實(shí)驗(yàn)題及其解答,便于提高讀者動(dòng)手能力。
(3) 針對(duì)每章章后的應(yīng)用題,重新對(duì)程序進(jìn)行了運(yùn)行和調(diào)試,使習(xí)題答案準(zhǔn)確無(wú)誤。
(4) 針對(duì)每章的重點(diǎn)或難點(diǎn)的算法和實(shí)驗(yàn),配置了微課視頻進(jìn)行講解。
(5) 刪去了附錄A的考試試題,而是將試題及其答案作為教輔資源,供讀者下載。
希望通過(guò)這樣的修訂,讓更多的教師和學(xué)生喜歡本書(shū),也希望本書(shū)信息容量大、知識(shí)性強(qiáng)的特色能夠很好地延續(xù)下去。
本書(shū)的作者為呂云翔、郭穎美、孟爻、吳宜航、楊壯,曾洪立參與了部分內(nèi)容的編寫并進(jìn)行了素材整理及配套資源制作等。
書(shū)中如有不當(dāng),請(qǐng)讀者不吝賜教,及時(shí)提出寶貴意見(jiàn)。
作者
2023年3月
第1章緒論
1.1引言
1.1.1學(xué)習(xí)目的
1.1.2課程內(nèi)容
1.2基本概念
1.2.1數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)
1.2.2數(shù)據(jù)類型與抽象數(shù)據(jù)類型
1.3算法
1.3.1算法的概念
1.3.2算法描述
1.3.3算法分析
小結(jié)
習(xí)題1
第2章線性表
2.1線性表及其基本操作
2.1.1線性表的基本概念
2.1.2抽象數(shù)據(jù)類型描述
2.1.3線性表的存儲(chǔ)和實(shí)現(xiàn)
2.2線性表的順序存儲(chǔ)
2.2.1順序表
2.2.2順序表的基本操作實(shí)現(xiàn)
2.3線性表的鏈?zhǔn)酱鎯?chǔ)和實(shí)現(xiàn)
2.3.1單鏈表
2.3.2單鏈表的基本操作實(shí)現(xiàn)
2.3.3其他鏈表
2.4順序表與鏈表的比較
2.5實(shí)驗(yàn)
2.5.1數(shù)字加1
2.5.2只出現(xiàn)一次的數(shù)字
2.5.3合并有序鏈表
小結(jié)
習(xí)題2
第3章棧和隊(duì)列
3.1棧
3.1.1棧的基本概念
3.1.2棧的抽象數(shù)據(jù)類型描述
3.1.3順序棧
3.1.4鏈棧
3.2隊(duì)列
3.2.1隊(duì)列的基本概念
3.2.2隊(duì)列的抽象數(shù)據(jù)類型描述
3.2.3順序隊(duì)列
3.2.4鏈隊(duì)列
3.2.5優(yōu)先級(jí)隊(duì)列
3.3棧和隊(duì)列的比較
3.4實(shí)驗(yàn)
3.4.1用隊(duì)列實(shí)現(xiàn)棧
3.4.2用棧實(shí)現(xiàn)隊(duì)列
3.4.3棧的最小值
小結(jié)
習(xí)題3
第4章串和數(shù)組
4.1串
4.1.1串的基本概念
4.1.2串的抽象數(shù)據(jù)類型描述
4.1.3順序串
4.1.4鏈串
4.2串的模式匹配
4.2.1Brute Force算法
4.2.2KMP算法
4.3數(shù)組
4.3.1數(shù)組的基本概念
4.3.2數(shù)組的特性
4.3.3數(shù)組的遍歷
4.4特殊矩陣的壓縮存儲(chǔ)
4.4.1三角矩陣的壓縮存儲(chǔ)
4.4.2對(duì)稱矩陣的壓縮存儲(chǔ)
4.4.3對(duì)角矩陣的壓縮存儲(chǔ)
4.4.4稀疏矩陣的壓縮存儲(chǔ)
4.5實(shí)驗(yàn)
4.5.1驗(yàn)證回文串
4.5.2轉(zhuǎn)置矩陣
4.5.3左旋轉(zhuǎn)字符串
小結(jié)
習(xí)題4
第5章樹(shù)結(jié)構(gòu)
5.1樹(shù)
5.1.1樹(shù)的基本概念
5.1.2樹(shù)的術(shù)語(yǔ)
5.2二叉樹(shù)
5.2.1二叉樹(shù)的基本概念
5.2.2二叉樹(shù)的性質(zhì)
5.2.3二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
5.2.4二叉樹(shù)的遍歷
5.2.5二叉樹(shù)遍歷算法的應(yīng)用
5.2.6二叉樹(shù)的建立
5.3哈夫曼樹(shù)及哈夫曼編碼
5.3.1哈夫曼樹(shù)的基本概念
5.3.2哈夫曼樹(shù)的構(gòu)造
5.3.3哈夫曼編碼
5.3.4構(gòu)造哈夫曼樹(shù)和哈夫曼編碼的類的描述
5.4樹(shù)和森林
5.4.1樹(shù)的存儲(chǔ)結(jié)構(gòu)
5.4.2樹(shù)的遍歷規(guī)則
5.5實(shí)驗(yàn)
5.5.1二叉樹(shù)剪枝
5.5.2相同的樹(shù)
5.5.3翻轉(zhuǎn)二叉樹(shù)
小結(jié)
習(xí)題5
第6章圖
6.1圖概述
6.1.1圖的基本概念
6.1.2圖的抽象數(shù)據(jù)類型描述
6.2圖的存儲(chǔ)結(jié)構(gòu)
6.2.1鄰接矩陣
6.2.2鄰接表
6.3圖的遍歷
6.4最小生成樹(shù)
6.4.1最小生成樹(shù)的基本概念
6.4.2Kruskal算法
6.4.3Prim算法
6.5最短路徑
6.5.1單源最短路徑
6.5.2求任意兩個(gè)頂點(diǎn)間的最短路徑
6.6拓?fù)渑判蚝完P(guān)鍵路徑
6.6.1拓?fù)渑判?
6.6.2關(guān)鍵路徑
6.7實(shí)驗(yàn)
6.7.1尋找圖中是否存在路徑
6.7.2最小花費(fèi)
小結(jié)
習(xí)題6
第7章排序
7.1排序概述
7.1.1排序的基本概念
7.1.2排序算法的性能評(píng)價(jià)
7.1.3待排序的記錄和順序表的類描述
7.2插入排序
7.2.1直接插入排序
7.2.2希爾排序
7.3交換排序
7.3.1冒泡排序
7.3.2快速排序
7.4選擇排序
7.4.1直接選擇排序
7.4.2堆排序
7.5歸并排序
7.6實(shí)驗(yàn)
7.6.1投票排序
7.6.2查找缺失的數(shù)字
7.6.3檢查高度
小結(jié)
習(xí)題7
第8章查找
8.1查找的基本概念
8.1.1什么是查找
8.1.2查找表
8.1.3平均查找長(zhǎng)度
8.2靜態(tài)表查找
8.2.1順序查找
8.2.2二分查找
8.2.3分塊查找
8.3動(dòng)態(tài)表查找
8.3.1二叉排序樹(shù)查找
8.3.2平衡二叉樹(shù)
8.3.3B-樹(shù)和B 樹(shù)
8.4哈希表查找
8.4.1哈希表的概念
8.4.2哈希函數(shù)
8.4.3解決沖突的方法
8.4.4哈希表查找性能分析
8.5實(shí)驗(yàn)
8.5.1二叉搜索樹(shù)的最小絕對(duì)差
8.5.2查找插入位置
8.5.3排序矩陣查找
小結(jié)
習(xí)題8
附錄A實(shí)踐題
第2章線性表
第3章棧和隊(duì)列
第4章串和數(shù)組
第5章樹(shù)結(jié)構(gòu)
第6章圖
第7章排序
第8章查找
參考文獻(xiàn)