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