出版時間:2010-3 出版社:清華大學出版社 作者:管致錦 等編著 頁數(shù):287
前言
數(shù)據(jù)結構是計算機科學各專業(yè)以及其他相近專業(yè)的核心課程之一,其研究對象為問題求解方法、程序設計方法和典型的數(shù)據(jù)結構算法。 本書根據(jù)現(xiàn)代教育教學特點,充分考慮到一般本科院校學校計算機及其相關專業(yè)的現(xiàn)狀,嚴格遵循教育部計算機及相關專業(yè)研究生考試大綱的要求,吸收國外教材的一些新思想,既有創(chuàng)新,又兼顧了傳統(tǒng)教材的優(yōu)點。把教師的教學要求與學生學習、實際工作需要和進一步深造等需求緊密結合起來?! ”緯瓤紤]數(shù)據(jù)結構的組織方式,又強化算法的實踐與應用。采用自上而下的設計方法,從抽象的數(shù)據(jù)結構描述到數(shù)據(jù)結構的組織,再到操作的具體實現(xiàn),并通過實例說明應用方法。這種組織方法的目的是:為了使學生在學習過程中更好地分析研究計算機加工數(shù)據(jù)的特性,以便為應用所涉及的數(shù)據(jù)選擇適當?shù)倪壿嫿Y構、存儲結構及其相應的操作方法,通過程序設計實現(xiàn)相應的算法,求得相關問題的解,并能掌握算法的時間分析和空間分析技術。使學生通過實現(xiàn)算法的復雜程序訓練,編寫出結構清晰、正確易讀、符合軟件工程規(guī)范的程序。使教師方便組織教學內容,教學過程結構清晰,內容循序漸進易于講解?! ”緯褂脴藴蔆++作為數(shù)據(jù)結構和算法的描述語言。采用C++語言中的類來表示抽象數(shù)據(jù)類型(ADT);盡可能用C++的類和面向對象結構來實現(xiàn)數(shù)據(jù)結構的算法。對基本的數(shù)據(jù)結構采用面向對象的方法,將數(shù)據(jù)與對象封裝成類,以便在其他應用程序中直接使用?! ”緯x者應已經(jīng)修完程序設計課程并熟悉標準C++語言,所使用的C++代碼均在VC++編譯器上全部通過測試?! ”緯嵌辔焕蠋煻嗄陙韽氖聰?shù)據(jù)結構教學的智慧和經(jīng)驗的結晶,提供了豐富的教學輔助手段,其配套教材有《數(shù)據(jù)結構實踐教程》和《數(shù)據(jù)結構學習指導與習題集》,同時由清華大學出版社出版。這些輔助教材為數(shù)據(jù)結構課程的教學和學習提供了有效的保障。數(shù)據(jù)結構前言本書第1章、第6章和第7章由管致錦編寫,第2章~第5章由徐慧編寫,第8章和第9章由陳德裕編寫,全書的統(tǒng)稿由管致錦負責。杭月芹、顧頎、周建美、丁衛(wèi)平、陳蘇蓉、顧衛(wèi)江、丁紅、章雅娟、周潔、朱穎等對本書進行了詳細審閱,并提出了寶貴意見。聶志浪、趙戈杰、凡剛、陳驚雷、禹杰等同學完成了本書大部分算法代碼的測試工作?! ”緯捌渑涮捉滩木帉懞蛯嵺`過程歷時3年,盡管做了大量的努力,也難免存在不妥和錯誤之處,懇請讀者予以指正,我們也會在適當時間進行修訂和補充,同時對教材中引用和參考的其他同行的文獻資料在此一并致以感謝。
內容概要
本書根據(jù)數(shù)據(jù)結構的特點,充分考慮到教師教學、學生學習與進一步深造,以及相關人員實際工作需要,在處理好數(shù)據(jù)結構的組織方式和強化算法的實踐與應用的同時,使學生通過實現(xiàn)算法的復雜程序訓練,編寫出結構清晰、正確易讀、符合軟件工程規(guī)范的程序;使教師方便組織教學內容,教學過程結構清晰,內容循序漸進且易于講解。 本書符合教育部計算機及相關專業(yè)研究生考試大綱對數(shù)據(jù)結構內容的要求。 本書使用C++作為數(shù)據(jù)結構和算法的描述語言。采用C++語言中的類來表示抽象數(shù)據(jù)類型(ADT),用C++的類和面向對象結構實現(xiàn)數(shù)據(jù)結構的算法。所使用的C++代碼在Visual C++編譯器上全部通過測試。 為了方便本書的學習和教學,提供有配套教材《數(shù)據(jù)結構實踐教程》、《數(shù)據(jù)結構學習指導與習題集》和相關的學習課件,本系列教材的所有源代碼都可以從清華大學出版社網(wǎng)站(http://www.tup.corn)上免費下載。 本書可作為計算機類及其相關專業(yè)的教材,也可供從事計算機工程與應用的科技工作者參考。
書籍目錄
第1章 緒論 1.1 數(shù)據(jù)結構的概念 1.1.1 引言 1.1.2 數(shù)據(jù)結構的發(fā)展及其在計算機科學中所處的地位 1.1.3 什么是數(shù)據(jù)結構 1.1.4 有關概念和術語 1.2 數(shù)據(jù)類型和抽象數(shù)據(jù)類型 1.2.1 數(shù)據(jù)類型 1.2.2 抽象數(shù)據(jù)類型 1.3 算法和算法分析 1.3.1 算法特性 1.3.2 算法描述 1.3.3 算法性能分析與度量第2章 線性表 2.1 線性表的類型定義 2.2 線性表的順序存儲結構及實現(xiàn) 2.2.1 線性表的順序存儲 2.2.2 順序表的實現(xiàn) 2.3 線性表的鏈式存儲結構及實現(xiàn) 2.3.1 線性表的鏈式存儲 2.3.2 單鏈表的實現(xiàn) 2.3.3 其他形式的鏈表 2.4 線性表的其他存儲方法 2.4.1 順序存儲與鏈式存儲的比較 2.4.2 靜態(tài)鏈表 2.4.3 間接尋址 2.5 線性表應用舉例第3章 特殊線性表 3.1 棧 3.1.1 棧的邏輯結構 3.1.2 棧的順序存儲結構及實現(xiàn) 3.1.3 棧的鏈式存儲及實現(xiàn) 3.1.4 順序棧和鏈棧的比較 3.1.5 棧的應用舉例 3.2 隊列 3.2.1 隊列的邏輯結構 3.2.2 隊列的順序存儲結構及實現(xiàn) 3.2.3 隊列的鏈式存儲及實現(xiàn) 3.2.4 隊列的應用第4章 串及其模式匹配 4.1 串的定義 4.1.1 串的相關概念 4.1.2 串的抽象數(shù)據(jù)類型定義 4.2 串的存儲結構 4.2.1 串的順序存儲結構 4.2.2 串的鏈式存儲結構 4.2.3 串的索引存儲結構 4.2.4 串的堆存儲 4.3 順序串的實現(xiàn) 4.3.1 常用C++字符串函數(shù) 4.3.2 串類 4.4 串操作舉例 4.5 模式匹配第5章 廣義線性表 5.1 數(shù)組 5.1.1 數(shù)組的定義 5.1.2 數(shù)組的順序存儲 5.2 矩陣的壓縮存儲 5.2.1 特殊矩陣的壓縮存儲 5.2.2 稀疏矩陣的壓縮存儲 5.2.3 稀疏矩陣的運算 5.3 廣義表 ……第6章 樹和二叉樹第7章 圖第8章 查找第9章 排序參考文獻
章節(jié)摘錄
算法(algorithm)是對特定問題求解步驟的一種描述,是指令的有限序列,其中每一條指令表示一個或多個操作。一個算法應該具有下列特性?! 。?)有窮性。一個算法必須在有窮步之后結束,即必須在有限時間內完成?! 。?)確定性。算法的每一步必須有確切的定義,無二義性.算法的執(zhí)行對應著相同的輸入僅有唯一的一條路徑?! 。?)可行性。算法中的每一步都可以通過已經(jīng)實現(xiàn)的基本運算的有限次執(zhí)行得以實現(xiàn)?! 。?)輸入。一個算法具有零個或多個輸入,這些輸入取自特定的數(shù)據(jù)對象集合?! 。?)輸出。一個算法具有一個或多個輸出,這些輸出同輸入之間存在某種特定的關系。 算法的含義與程序十分相似,但又有區(qū)別。一個程序不一定滿足有窮性。例如操作系統(tǒng),只要整個系統(tǒng)不遭破壞,它將永遠不會停止,即使沒有作業(yè)需要處理,它仍處于動態(tài)等待中。因此,操作系統(tǒng)不是一個算法。另一方面,程序中的指令必須是機器可執(zhí)行的,而算法中的指令則無此限制。算法代表了對問題的解,而程序則是算法在計算機上的特定實現(xiàn)。一個算法若用程序設計語言來描述,則它就是一個程序。 算法與數(shù)據(jù)結構是相輔相成的。解決某一特定類型問題的算法可以選定不同的數(shù)據(jù)結構,而且選擇恰當與否直接影響算法的效率。反之,一種數(shù)據(jù)結構的優(yōu)劣由各種算法的執(zhí)行來體現(xiàn)?! ∫O計一個好的算法通常要考慮以下要求?! 。?)正確性。算法的執(zhí)行結果應當滿足預先規(guī)定的功能和性能要求?! 。?)可讀性。一個算法應當思路清晰、層次分明、簡單明了、易讀易懂。 (3)健壯性。當輸入不合法數(shù)據(jù)時,應能作適當處理,不至于引起嚴重后果。 ?。?)高效性。有較高的時間效率并能有效使用存儲空間。
圖書封面
評論、評分、閱讀與下載