數(shù)據(jù)結(jié)構(gòu)教程
定 價(jià):39 元
- 作者:李春葆 編
- 出版時(shí)間:2013/2/1
- ISBN:9787302305170
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP312C
- 頁碼:367
- 紙張:膠版紙
- 版次:1
- 開本:16開
讀者對象:本書既便于教師課堂講授, 又便于自學(xué)者閱讀,可作為高等院校計(jì)算機(jī)相關(guān)專業(yè)本科生、專科生的教材, 也可供廣大從事計(jì)算機(jī)應(yīng)用的科技人員參考
《高等學(xué)校數(shù)據(jù)結(jié)構(gòu)課程系列教材:數(shù)據(jù)結(jié)構(gòu)教程(C#語言描述)》系統(tǒng)地介紹了常用的數(shù)據(jù)結(jié)構(gòu)以及排序、查找的各種算法,闡述了各種數(shù)據(jù)結(jié)構(gòu)的邏輯關(guān)系、存儲表示及運(yùn)算操作,并采用C#語言描述數(shù)據(jù)組織和算法實(shí)現(xiàn)。
《高等學(xué)校數(shù)據(jù)結(jié)構(gòu)課程系列教材:數(shù)據(jù)結(jié)構(gòu)教程(C#語言描述)》既注重原理,又注重實(shí)踐,配有大量圖表、實(shí)踐教學(xué)項(xiàng)目和習(xí)題,內(nèi)容豐富,概念講解清楚,表達(dá)嚴(yán)謹(jǐn),邏輯性強(qiáng),語言精練,可讀性好。
《高等學(xué)校數(shù)據(jù)結(jié)構(gòu)課程系列教材:數(shù)據(jù)結(jié)構(gòu)教程(C#語言描述)》既便于教師課堂講授,又便于自學(xué)者閱讀,可作為高等院校計(jì)算機(jī)相關(guān)專業(yè)本科生、專科生的教材,也可供廣大從事計(jì)算機(jī)應(yīng)用的科技人員參考。
計(jì)算機(jī)是數(shù)據(jù)處理的工具。數(shù)據(jù)結(jié)構(gòu)課程作為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的核心課程,主要講授數(shù)據(jù)的各種組織方式以及建立在這些結(jié)構(gòu)之上的各種運(yùn)算算法的實(shí)現(xiàn),它不僅為計(jì)算機(jī)語言程序設(shè)計(jì)提供了方法性的指導(dǎo),還在一個(gè)更高的層次上總結(jié)了程序設(shè)計(jì)的常用方法和常用技巧。
要學(xué)好數(shù)據(jù)結(jié)構(gòu)課程,首先要從宏觀上理解本課程的目的和地位。該課程是在學(xué)完某種程序設(shè)計(jì)語言后開設(shè)的。僅掌握一門程序設(shè)計(jì)語言,不一定能編寫出“好程序”,數(shù)據(jù)結(jié)構(gòu)課程就是為寫好程序服務(wù)的。程序是用于數(shù)據(jù)計(jì)算的,在編寫程序之前要理解數(shù)據(jù)的結(jié)構(gòu),這里是指數(shù)據(jù)的邏輯結(jié)構(gòu)。從數(shù)據(jù)元素之間的相鄰關(guān)系歸納起來,數(shù)據(jù)的邏輯結(jié)構(gòu)主要有線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖形結(jié)構(gòu)。僅弄清數(shù)據(jù)邏輯結(jié)構(gòu)是不夠的,還要將這些數(shù)據(jù)存放到計(jì)算機(jī)內(nèi),這稱為數(shù)據(jù)的存儲結(jié)構(gòu)。一種數(shù)據(jù)邏輯結(jié)構(gòu)可能由多種存儲結(jié)構(gòu)實(shí)現(xiàn)。當(dāng)設(shè)計(jì)好數(shù)據(jù)存儲結(jié)構(gòu)后,就可以對其進(jìn)行操作了,這種操作的指令序列稱為算法。不同的功能對應(yīng)不同的算法,同一功能也可以有多種算法,從算法的時(shí)間和空間來分析,可以得到最佳算法。數(shù)據(jù)結(jié)構(gòu)課程總結(jié)和歸納了在軟件開發(fā)中常用的數(shù)據(jù)結(jié)構(gòu),從數(shù)據(jù)邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和基本運(yùn)算算法設(shè)計(jì)3個(gè)層面來討論,可以提高學(xué)生基本的數(shù)據(jù)組織和處理能力,為后續(xù)課程,如操作系統(tǒng)、數(shù)據(jù)庫原理和編譯原理等的學(xué)習(xí)打下基礎(chǔ)。
本書是作者根據(jù)近20年的教學(xué)經(jīng)驗(yàn),參考近年國內(nèi)外出版的多種數(shù)據(jù)結(jié)構(gòu)以及C#面向?qū)ο蟪绦蛟O(shè)計(jì)教材,考慮教與學(xué)的特點(diǎn),合理地進(jìn)行內(nèi)容的取舍,精心組織編寫而成的。目前,國內(nèi)外數(shù)據(jù)結(jié)構(gòu)教材大多數(shù)采用C/C++語言描述算法,考慮到C#語言與C/C++的一致性和良好的Windows界面設(shè)計(jì)優(yōu)點(diǎn),本書采用C#語言面向?qū)ο蠓椒枋鏊惴ê蛯?shí)驗(yàn)程序設(shè)計(jì)。
全書由10章構(gòu)成,各章內(nèi)容如下:
第1章緒論,介紹數(shù)據(jù)結(jié)構(gòu)的基本概念、采用C#語言描述算法的特點(diǎn)、算法分析方法和如何設(shè)計(jì)好算法等。
第2章線性表,介紹線性表的定義、線性表的兩種主要的存儲結(jié)構(gòu)和各種基本運(yùn)算算法設(shè)計(jì),最后通過示例討論線性表的應(yīng)用。
第3章棧和隊(duì)列,介紹棧的定義、棧的存儲結(jié)構(gòu)、棧的各種基本運(yùn)算算法設(shè)計(jì)和棧的應(yīng)用; 隊(duì)列的定義、隊(duì)列的存儲結(jié)構(gòu)和隊(duì)列的各種基本運(yùn)算算法設(shè)計(jì)和隊(duì)列的應(yīng)用。
第4章串,介紹串的定義、串的存儲結(jié)構(gòu)、串的各種基本運(yùn)算算法設(shè)計(jì)和串的模式匹配算法。
第5章數(shù)組和廣義表,介紹數(shù)組的定義、幾種特殊矩陣的壓縮存儲方式、稀疏矩陣的壓縮存儲及相關(guān)算法設(shè)計(jì); 遞歸的定義和遞歸算法設(shè)計(jì)方法; 廣義表的定義、廣義表的存儲結(jié)構(gòu)及相關(guān)算法設(shè)計(jì)方法。
第6章樹和二叉樹,介紹樹的定義、樹的邏輯表示方法、樹的性質(zhì)、樹的遍歷和樹的存儲結(jié)構(gòu)二叉樹; 介紹二叉樹的定義、二叉樹的性質(zhì)、樹/森林和二叉樹的轉(zhuǎn)換與還原、二叉樹存儲結(jié)構(gòu)、二叉樹基本運(yùn)算算法設(shè)計(jì)、二叉樹的遞歸和非遞歸遍歷算法、二叉樹的構(gòu)造、線索二叉樹和哈夫曼樹等。
第7章圖,介紹圖的定義、圖的存儲結(jié)構(gòu)、圖的基本運(yùn)算算法設(shè)計(jì)、圖的兩種遍歷算法以及圖的應(yīng)用(包括圖的最小生成樹、最短路徑、拓?fù)渑判蚝完P(guān)鍵路徑等)。
第8章查找,介紹查找的定義、線性表上的各種查找方法、樹表上的各種查找方法以及哈希表查找方法等。
第9章內(nèi)排序,介紹排序的定義、插入排序方法、交換排序方法、選擇排序方法、歸并排序方法和基數(shù)排序方法,并對各種排序方法進(jìn)行了比較。
第10章外排序,介紹外排序的定義、外排序的基本步驟,重點(diǎn)討論了磁盤排序中的各種算法。
另外,附錄A中給出各章練習(xí)題單項(xiàng)選擇題部分的答案。
本書主要特點(diǎn)如下:
。1) 結(jié)構(gòu)清晰,內(nèi)容豐富,文字?jǐn)⑹龊啙嵜髁,可讀性強(qiáng)。
。2) 圖文并茂,全書用300多幅圖來表述和講解數(shù)據(jù)的組織結(jié)構(gòu)和算法設(shè)計(jì)思想。
(3) 力求歸納各類算法設(shè)計(jì)的規(guī)律,如單鏈表算法中很多是基于建表算法的,二叉樹算法中很多是基于遍歷算法的,圖算法中很多是基于深度優(yōu)先遍歷的。如果讀者掌握了建表算法、二叉樹的遍歷算法和圖遍歷算法,那么設(shè)計(jì)相關(guān)算法就會駕輕就熟了。
。4) 深入討論遞歸算法設(shè)計(jì)的方法。遞歸算法設(shè)計(jì)是數(shù)據(jù)結(jié)構(gòu)課程中的難點(diǎn)之一。作者從遞歸模型入手,介紹了從求解問題中提取遞歸模型的通用方法,講解了從遞歸模型到遞歸算法設(shè)計(jì)的基本規(guī)律。
。5) 書中含有大量的實(shí)踐項(xiàng)目,全面覆蓋并超越了教育部制定的《高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)實(shí)踐教學(xué)體系與規(guī)范》中數(shù)據(jù)結(jié)構(gòu)課程的實(shí)踐教學(xué)要求。作者已在Visual Studio.NET 2005/2008開發(fā)環(huán)境中全部調(diào)試并通過這些實(shí)踐項(xiàng)目。
本書的編寫工作得到湖北省教育廳和武漢大學(xué)教學(xué)研究項(xiàng)目《計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)課程體系改革》的大力支持,特別是國家級名師何炎祥教授和主管教學(xué)工作的王麗娜副院長對本書的編寫給予了建設(shè)性的指導(dǎo),國家珠峰計(jì)劃——武漢大學(xué)計(jì)算機(jī)弘毅班的兩屆學(xué)生和眾多編者授課的本科生提出了許多富有啟發(fā)的建議,清華大學(xué)出版社魏江江主任全力支持本書的編寫工作,作者在此一并表示衷心感謝!
本書是課程組全體教師多年教學(xué)經(jīng)驗(yàn)的總結(jié)和體現(xiàn),盡管作者不遺余力,但由于水平所限,仍難免有錯誤和不足之處,敬請廣大教師和同學(xué)們批評指正。歡迎讀者通過郵箱跟作者聯(lián)系,在此表示萬分感謝!
編者2012年10月
李春葆,武漢大學(xué)計(jì)算機(jī)學(xué)院教授,主要研究方向?yàn)閿?shù)據(jù)挖掘和算法設(shè)計(jì),先后主持和參加多個(gè)大型研究項(xiàng)目。主要為本科生講授數(shù)據(jù)結(jié)構(gòu)(15年以上)和軟件工程等課程,為研究生講授軟件開發(fā)新技術(shù)、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘等課程,并出版十多部精品著作。
第1章 緒論
1.1 什么是數(shù)據(jù)結(jié)構(gòu)
1.1.1 數(shù)據(jù)結(jié)構(gòu)的定義
1.1.2 數(shù)據(jù)的邏輯結(jié)構(gòu)
1.1.3 數(shù)據(jù)的存儲結(jié)構(gòu)
1.1.4 數(shù)據(jù)的運(yùn)算
1.1.5 數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型
1.2 算法及其描述
1.2.1 什么是算法
1.2.2 算法描述
1.3 算法分析
1.3.1 算法的特性和算法設(shè)計(jì)的目標(biāo)
1.3.2 算法時(shí)間效率分析
1.3.3 算法存儲空間分析
1.4 數(shù)據(jù)結(jié)構(gòu)的目標(biāo)
本章小結(jié)
練習(xí)題1
第2章 線性表
2.1 線性表的定義
2.1.1 什么是線性表
2.1.2 線性表的抽象數(shù)據(jù)類型描述
2.2 線性表的順序存儲結(jié)構(gòu)
2.2.1 線性表的順序存儲結(jié)構(gòu)順序表
2.2.2 順序表基本運(yùn)算的實(shí)現(xiàn)
2.3 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)
2.3.1 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)鏈表
2.3.2 單鏈表
2.3.3 雙鏈表
2.3.4 循環(huán)鏈表
2.4 線性表的應(yīng)用
本章小結(jié)
練習(xí)題2
第3章 棧和隊(duì)列
3.1 棧
3.1.1 棧的定義
3.1.2 棧的順序存儲結(jié)構(gòu)及其基本運(yùn)算的實(shí)現(xiàn)
3.1.3 棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)及其基本運(yùn)算的實(shí)現(xiàn)
3.1.4 棧的應(yīng)用
3.2 隊(duì)列
3.2.1 隊(duì)列的定義
3.2.2 隊(duì)列的順序存儲結(jié)構(gòu)及其基本運(yùn)算的實(shí)現(xiàn)
3.2.3 隊(duì)列的鏈?zhǔn)酱鎯Y(jié)構(gòu)及其基本運(yùn)算的實(shí)現(xiàn)
3.2.4 隊(duì)列的應(yīng)用
本章小結(jié)
練習(xí)題3
第4章 串
4.1 串的基本概念
4.1.1 什么是串
4.1.2 串的抽象數(shù)據(jù)類型
4.2 串的存儲結(jié)構(gòu)
4.2.1 串的順序存儲結(jié)構(gòu)順序串
4.2.2 串的鏈?zhǔn)酱鎯Y(jié)構(gòu)鏈串
4.3 串的模式匹配
4.3.1 Brute-Force算法
4.3.2 KMP算法
本章小結(jié)
練習(xí)題4
第5章 數(shù)組和廣義表
5.1 數(shù)組
5.1.1 數(shù)組的定義
5.1.2 數(shù)組的存儲結(jié)構(gòu)
5.1.3 特殊矩陣的壓縮存儲
……
第6章 樹和二叉樹
第7章 圖
第8章 查找
第9章 內(nèi)排序
第10章 外排序
附錄A 部分練習(xí)題參考答案
參考文獻(xiàn)