“數(shù)據(jù)結(jié)構(gòu)”是計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機學(xué)科的核心課程,而且已成為其
他理工專業(yè)的熱門選修課,對于訓(xùn)練學(xué)生程序設(shè)計能力和編程水平、提高專業(yè)素質(zhì)有重要作用。
該書詳細(xì)討論了線性表、棧、隊列、串、數(shù)組、樹和二叉樹、圖等常用數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用,并對查找和排序的各種實現(xiàn)方法進(jìn)行了闡述和比較,涵蓋了數(shù)據(jù)結(jié)構(gòu)的全部經(jīng)典內(nèi)容。
本書可作為國內(nèi)高等院校計算機學(xué)科相關(guān)專業(yè)的教材,也可供從事計算機軟件開發(fā)和應(yīng)用的工程技術(shù)人員閱讀、參考。其銷售渠道主要是面向國內(nèi)高等院校。在每學(xué)年的高效春秋季教材預(yù)定目錄及指南中可作廣泛宣傳與引導(dǎo)。
適讀人群 :本科、學(xué)生、研究人員、教師
該教材將成為數(shù)據(jù)結(jié)構(gòu)教學(xué)實踐中已有教學(xué)研究成果的載體,集中體現(xiàn)先進(jìn)的教學(xué)思想與教學(xué)理念,相信該教材的出版將對提高計算機科學(xué)與技術(shù)專業(yè)數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)水平和教學(xué)質(zhì)量起到積極的作用。
再版前言:
“數(shù)據(jù)結(jié)構(gòu)”是計算機及相關(guān)專業(yè)的專業(yè)基礎(chǔ)核心課程。
在計算機科學(xué)的各領(lǐng)域中,經(jīng)常要使用到各種不同的數(shù)據(jù)結(jié)構(gòu),譬如操作系統(tǒng)中要使用到隊列、目錄樹等;數(shù)據(jù)庫系統(tǒng)中要使用到線性表、索引樹等;編譯系統(tǒng)中要使用到棧、哈希表、語法樹等;人工智能中要使用廣義表、檢索樹、有向圖等。因此,當(dāng)你在掌握了各種常用數(shù)據(jù)結(jié)構(gòu),能對算法進(jìn)行時間和空間復(fù)雜度分析后,便會知道在何種情況下使用何種數(shù)據(jù)結(jié)構(gòu)zui方便有效,從而為以后研究和開發(fā)大型程序打下堅實基礎(chǔ)。學(xué)好數(shù)據(jù)結(jié)構(gòu),對從事計算機技術(shù)及相關(guān)領(lǐng)域工作的人員來說,非常重要。
數(shù)據(jù)結(jié)構(gòu)主要是研究現(xiàn)實世界中的各種數(shù)據(jù)(數(shù)字、字符、字符串、聲音、圖形、圖像等)的邏輯結(jié)構(gòu)、在計算機中的存儲結(jié)構(gòu)以及相關(guān)算法實現(xiàn);分析針對同一問題的各種不同算法的優(yōu)劣。學(xué)生學(xué)習(xí)該課程后,將具備用各種數(shù)據(jù)結(jié)構(gòu)來解決實際問題及評價算法優(yōu)劣的能力,為后續(xù)計算機專業(yè)課程的學(xué)習(xí)打下堅實基礎(chǔ),起到了承上啟下的關(guān)鍵作用。
本書結(jié)合編者多年教學(xué)及實踐經(jīng)驗,在《數(shù)據(jù)結(jié)構(gòu)》(C語言版)(2013年1月出版)的基礎(chǔ)上,堅持“面向應(yīng)用,易教易學(xué)”原則,做了如下修訂:增加了“斐波拉切查找”、“跳躍表”、“紅黑樹”、“優(yōu)先隊列”等內(nèi)容,擴大知識點且做到完全涵蓋碩士研究生數(shù)據(jù)結(jié)構(gòu)考試大綱所規(guī)定的考試內(nèi)容;增加“實驗指導(dǎo)”內(nèi)容,方便教師合理安排實驗,方便學(xué)生了解具體實驗內(nèi)容;將“圖”的部分算法進(jìn)行合理修正,使之更方便理解和實現(xiàn);刪除了部分過時或不常用的算法內(nèi)容;對全書的一些印刷錯誤進(jìn)行了修正。
本書仍采用常用的c語言作為算法的描述語言,形式上學(xué)生更容易理解和接受。全書力求將數(shù)據(jù)結(jié)構(gòu)理論知識與具體應(yīng)用實例相結(jié)合,有助加深學(xué)生的理解和掌握。本書中所選的例題和習(xí)題都具有一定的針對性和代表性。
百密一疏,在所難免,本書也必然存在一些不足,懇請讀者們提出好的意見和建議。
編者 2017年7月
1. 緒論
數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、抽象數(shù)據(jù)類型的概念;算法、算法描述與算法分析。
2. 線性表
線性表的邏輯結(jié)構(gòu)定義、基本操作和在兩種存儲結(jié)構(gòu)中基本操作的實現(xiàn);鏈表;特殊形式的線性表;用線性表表示一元多項式及實現(xiàn)稀疏多項式的相加等運算。
3. 棧和隊列
棧和隊列的結(jié)構(gòu)特性、基本操作及在兩種存儲結(jié)構(gòu)上基本操作的實現(xiàn);棧和隊列的應(yīng)用、遞歸算法的設(shè)計。
4. 串
串的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及其基本運算;串上實現(xiàn)的模式匹配算法。
5. 數(shù)組和廣義表
數(shù)組的邏輯結(jié)構(gòu)定義和存儲方法;特殊矩陣和稀疏矩陣的壓縮存儲方法;廣義表的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)以及廣義表運算的遞歸算法。
6. 樹和二叉樹
樹的基本概念;二叉樹的定義、性質(zhì)、存儲表示;二叉樹的遍歷;線索二叉樹;森林和二叉樹的相互轉(zhuǎn)換;樹的應(yīng)用;哈夫曼樹及哈夫曼編碼。
7. 圖
圖的基本概念、存儲表示(鄰接矩陣、鄰接表);圖的遍歷;最小生成樹;拓?fù)渑判;關(guān)鍵路徑;最短路徑。
8. 查找
查找表是集合類型的數(shù)據(jù)結(jié)構(gòu),其操作借助靜態(tài)查找表(順序查找、折半查找、斐波拉契查找、跳躍列表)、動態(tài)查找表(二次排序樹、B樹、紅黑樹)、哈希表實現(xiàn)。
9. 內(nèi)部排序
內(nèi)部排序介紹插入排序、交換排序(冒泡排序、快速排序)、選擇排序(堆、優(yōu)先隊列)、歸并排序;排序的基本思想和算法分析。
10.實驗安排