出版時間:2012-2 出版社:清華大學(xué)出版社 作者:陳寶平 編
前言
數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)和信息管理專業(yè)一門重要的專業(yè)基礎(chǔ)課,只要涉及程序的地方,均要用到數(shù)據(jù)結(jié)構(gòu)的知識,許多課程(如操作系統(tǒng)、編譯原理、數(shù)據(jù)庫和人工智能等)也要用到數(shù)據(jù)結(jié)構(gòu)的知識。其主要內(nèi)容是研究和解決非數(shù)值計算的問題,討論如何合理地組織、存儲和處理數(shù)據(jù)的方法與技術(shù); 其主要任務(wù)是使讀者掌握數(shù)據(jù)組織、存儲和處理的常用方法和常用的算法思想及在實際中的應(yīng)用技巧,為今后學(xué)習(xí)后續(xù)專業(yè)課和進(jìn)行軟件開發(fā)打下良好的基礎(chǔ)?! ”緯木帉懻唛L期從事數(shù)據(jù)結(jié)構(gòu)的教學(xué),對課程的難點和重點有比較深切的體會。在總結(jié)講授數(shù)據(jù)結(jié)構(gòu)課程的基礎(chǔ)上,對多年傳授的數(shù)據(jù)結(jié)構(gòu)教學(xué)內(nèi)容進(jìn)行合理的重組,既強調(diào)數(shù)據(jù)結(jié)構(gòu)的原理和方法,又注重其實踐性與實用性。本書希望能夠引起讀者對數(shù)據(jù)結(jié)構(gòu)課程的興趣,提高對數(shù)據(jù)結(jié)構(gòu)課程的重要性、必要性的認(rèn)識,特別希望能夠提高數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)實效,讓讀者滿意并有收獲?! ”緯敿?xì)介紹了各種基本的數(shù)據(jù)結(jié)構(gòu),包括線性結(jié)構(gòu)、數(shù)組和廣義表、樹(層次)結(jié)構(gòu)和圖結(jié)構(gòu); 基本的存儲結(jié)構(gòu),包括順序(數(shù)組)結(jié)構(gòu)、鏈接結(jié)構(gòu)、索引結(jié)構(gòu)和散列結(jié)構(gòu),以及其中的一種或多種結(jié)構(gòu)的組合及應(yīng)用。本書具有以下特色: ?。?) 采用C++版,注重面向?qū)ο蟮木幊蹋瑥娬{(diào)算法的邏輯性、嚴(yán)謹(jǐn)性、技巧性以及時間復(fù)雜度等,弱化C++語言中的繼承、派生等機制?! 。?) 本著“加強基礎(chǔ),注重算法,因材施教,案例驅(qū)動”的教育理念,在算法的設(shè)計上做了大膽改革,為了更好地理解理論知識,每章之后都配有應(yīng)用實例,提倡從實用性和實踐性的角度學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?! 。?) 完全包含2011年計算機統(tǒng)考大綱中數(shù)據(jù)結(jié)構(gòu)指定的相關(guān)知識點?! 。?) 通俗易懂、圖文并茂,詳略得當(dāng),便于從事計算機工作的人員自學(xué)?! ”緯?,5,10章及所有的課后習(xí)題由阿雅娜編寫,第2,3,4章由張巨萍編寫,第6,8章由陳寶平編寫,第7,9章由孫寶軍編寫。陳寶平對全書的文字風(fēng)格、內(nèi)容、算法實現(xiàn)等方面進(jìn)行了細(xì)致的修改和統(tǒng)稿。作者在此對趙俊嵐教授、喬曉華教授和王彪教授表示衷心的感謝,他們對此書提出的建議和意見都彌足可貴。同時感謝王景龍、魏娜、李澤申等同學(xué),仔細(xì)閱讀本書的預(yù)印版,驗證了書稿的部分算法并調(diào)試了代碼。 本書力求以通俗的語言和實例描述數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容。實例豐富,圖表清晰,深入淺出,易于讀者融會貫通。根據(jù)C++的特點設(shè)計與實現(xiàn)了各種數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)和算法,有助于讀者進(jìn)一步掌握C++的編程思想、方法和技術(shù)內(nèi)涵?! ∮捎诰幷咚接邢?,書中錯誤和不妥之處在所難免,懇請讀者與同行批評指正。 陳寶平
內(nèi)容概要
數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)教學(xué)計劃中的核心課程,也是計算機及相關(guān)專業(yè)考研和水平等級考試的必考科目。要從事和計算機科學(xué)與技術(shù)相關(guān)的工作,尤其是計算機應(yīng)用領(lǐng)域的開發(fā)和研制工作,必須具備堅實的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)。《21世紀(jì)高等學(xué)校規(guī)劃教材·計算機科學(xué)與技術(shù):數(shù)據(jù)結(jié)構(gòu)(C++版)》介紹了學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)所用到的預(yù)備知識,敘述了數(shù)據(jù)結(jié)構(gòu)、算法以及抽象數(shù)據(jù)類型的概念,介紹了線性表、棧、隊列和串、數(shù)組和廣義表、樹和二叉樹、圖等常用數(shù)據(jù)結(jié)構(gòu),討論了常用的查找、排序和索引技術(shù)?! ?1世紀(jì)高等學(xué)校規(guī)劃教材·計算機科學(xué)與技術(shù):數(shù)據(jù)結(jié)構(gòu)(C++版)》內(nèi)容豐富,層次清晰,講解深入淺出,可作為計算機及相關(guān)專業(yè)本??茢?shù)據(jù)結(jié)構(gòu)課程的教材,也可供從事計算機軟件開發(fā)和應(yīng)用的工程技術(shù)人員閱讀、參考。
書籍目錄
第1章 論1.1 為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)1.2 什么是數(shù)據(jù)結(jié)構(gòu)1.2.1 數(shù)據(jù)的邏輯結(jié)構(gòu)1.2.2 數(shù)據(jù)的存儲結(jié)構(gòu)1.2.3 抽象數(shù)據(jù)類型1.3 算法與算法分析1.3.1 算法1.3.2 算法的設(shè)計要求1.3.3 算法效率的量度1.3.4 算法的設(shè)計方式習(xí)題第2章 性表2.1 線性表的邏輯結(jié)構(gòu)2.1.1 線性表的定義2.1.2 線性表的抽象數(shù)據(jù)類型定義2.2 線性表的順序表示和實現(xiàn)2.2.1 順序存儲結(jié)構(gòu)的定義2.2.2 基本操作在順序表中的實現(xiàn)2.2.3 順序存儲結(jié)構(gòu)的特點2.3 線性表的鏈?zhǔn)奖硎竞蛯崿F(xiàn)2.3.1 單鏈表2.3.2 雙向鏈表2.3.3 循環(huán)鏈表2.3.4 鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點2.4 一元多項式求和2.4.1 一元多項式的表示2.4.2 一元多項式的求和習(xí)題第3章 棧和隊列3.1 棧3.1.1 棧的抽象數(shù)據(jù)類型定義3.1.2 棧的實現(xiàn)3.2 棧的應(yīng)用舉例3.3 棧與遞歸3.4 隊列3.4.1 隊列的抽象數(shù)據(jù)類型定義3.4.2 隊列的實現(xiàn)3.4.3 隊列的應(yīng)用習(xí)題第4章 串4.1 串類型的定義4.2 串的存儲結(jié)構(gòu)4.2.1 串的順序存儲結(jié)構(gòu)4.2.2 堆分配存儲表示4.2.3 串的塊鏈存儲表示4.3 串的模式匹配算法4.3.1 求子串的定位函數(shù)4.3.2 模式匹配的一種改進(jìn)算法4.4 串的應(yīng)用習(xí)題第5章 數(shù)組和廣義表5.1 數(shù)組5.1.1 數(shù)組的定義5.1.2 數(shù)組的存儲5.1.3 特殊矩陣5.1.4 稀疏矩陣5.2 廣義表5.2.1 廣義表的定義5.2.2 廣義表的存儲結(jié)構(gòu)5.2.3 廣義表的遞歸算法5.2.4 廣義表的應(yīng)用習(xí)題第6章 樹與二叉樹6.1 樹的定義與基本術(shù)語6.2 二叉樹6.2.1 二叉樹的定義6.2.2 二叉樹的性質(zhì)6.2.3 二叉樹的存儲結(jié)構(gòu)6.3 二叉樹的遍歷6.3.1 遞歸遍歷二叉樹6.3.2 應(yīng)用二叉樹遍歷的實例6.4 線索二叉樹6.5 樹與森林6.5.1 樹的存儲表示6.5.2 森林與二叉樹的轉(zhuǎn)換6.5.3 樹的遍歷6.5.4 森林的遍歷6.6 樹的應(yīng)用6.6.1 堆6.6.2 哈夫曼樹與編碼習(xí)題第7章 集合與搜索7.1 集合及其表示7.1.1 集合的定義7.1.2 集合的抽象數(shù)據(jù)類型7.1.3 用位向量實現(xiàn)集合7.2 靜態(tài)搜索結(jié)構(gòu)7.2.1 搜索的定義7.2.2 靜態(tài)搜索結(jié)構(gòu)7.2.3 順序搜索7.2.4 基于有序順序表的折半搜索7.2.5 分塊搜索7.3 二叉搜索樹7.3.1 二叉搜索樹的定義7.3.2 二叉搜索樹的搜索7.3.3 二叉搜索樹的插入7.3.4 二叉搜索樹的建立7.3.5 二叉搜索樹的刪除7.4 AVL樹7.4.1 AVL樹的定義7.4.2 最小不平衡二叉樹7.4.3 不平衡二叉樹的調(diào)整方法7.4.4 建立平衡二叉樹舉例7.5 應(yīng)用舉例計算機登錄驗證習(xí)題第8章 圖8.1 圖的定義8.1.1 圖的定義與相關(guān)術(shù)語8.1.2 圖的抽象數(shù)據(jù)類型8.2 圖的存儲結(jié)構(gòu)8.2.1 數(shù)組表示法8.2.2 鄰接表表示法8.2.3 鄰接多重表表示法8.2.4 十字鏈表法8.3 圖的遍歷8.3.1 深度優(yōu)先遍歷8.3.2 廣度優(yōu)先遍歷8.4 圖的最小生成樹8.4.1 Prim算法8.4.2 Kruskal算法8.5 最短路徑8.5.1 單源最短路徑8.5.2 每對頂點的最短路徑8.6 拓?fù)渑判?.7 關(guān)鍵路徑8.8 應(yīng)用實例習(xí)題第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.5 歸并排序9.5.1 歸并排序概述9.5.2 遞歸的歸并排序算法9.6 基數(shù)排序9.6.1 多關(guān)鍵碼排序9.6.2 鏈?zhǔn)交鶖?shù)排序9.7 各種排序方法的比較討論9.8 外部排序的方法習(xí)題第10章 索引結(jié)構(gòu)和散列10.1 靜態(tài)索引結(jié)構(gòu)10.1.1 線性索引10.1.2 倒排表10.1.3 m路靜態(tài)索引樹10.2 動態(tài)索引結(jié)構(gòu)10.2.1 動態(tài)的m路靜態(tài)索引樹10.2.2 B_樹10.2.3 B_樹的插入10.2.4 B_樹的刪除10.2.5 B+樹10.3 散列10.3.1 散列函數(shù)10.3.2 開散列方法10.3.3 閉散列方法10.3.4 散列表的實現(xiàn)10.3.5 散列表分析習(xí)題參考文獻(xiàn)
圖書封面
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載