出版時間:2010-6 出版社:廈門大學(xué)出版社 作者:石曼銀 編 頁數(shù):239
前言
“數(shù)據(jù)結(jié)構(gòu)”是計算機程序設(shè)計的重要理論基礎(chǔ),它不僅是計算機專業(yè)的核心課程,也是其他理工專業(yè)的熱門選修課。在計算機的應(yīng)用領(lǐng)域中,數(shù)據(jù)結(jié)構(gòu)有著廣泛的應(yīng)用?! ”緯亲髡吒鶕?jù)自己的教學(xué)經(jīng)驗總結(jié),為高職高專計算機專業(yè)學(xué)生編寫的教材。作者在教學(xué)過程中發(fā)現(xiàn),大多數(shù)學(xué)生在初學(xué)數(shù)據(jù)結(jié)構(gòu)時,容易誤解算法與程序之間的關(guān)系,經(jīng)常會把書中的算法當(dāng)作程序直接在編譯器上進行運行測試。為了解決這個問題,本書采用C語言作為數(shù)據(jù)結(jié)構(gòu)和算法的描述語言,并且對關(guān)鍵的算法都安排了完整的C語言程序供學(xué)生上機實習(xí)參考,程序均在VC編譯器下編譯運行。書中給出的每一個算法都是完整的,只要添加上主函數(shù),程序即可運行,主函數(shù)的添加可以模仿書中給出的完整程序?! 「呗毟邔n愒盒C嫦驊?yīng)用,注重實踐,本書力求做到選材精練,敘述簡潔,通俗易懂,盡量避免抽象理論的介紹和復(fù)雜公式的推導(dǎo)。對各種數(shù)據(jù)結(jié)構(gòu)均從實際出發(fā),通過對實例的分析,使學(xué)生理解數(shù)據(jù)結(jié)構(gòu)的基本概念。 考慮到專升本和其他考試的需要,在每章后面附有適量的習(xí)題。習(xí)題中編排了較多的選擇題和填空題,并配有習(xí)題答案,方便學(xué)生自學(xué)參考?! ”緯卜?章,第1章介紹了數(shù)據(jù)結(jié)構(gòu)的基本概念和算法分析的初步知識;第2章到第5章介紹了線性表、棧和隊列、串、數(shù)組和廣義表等線性結(jié)構(gòu)的基本概念及常用算法的實現(xiàn);第6章和第7章介紹了非線性結(jié)構(gòu)的樹、二叉樹、圖等數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)和不同存儲結(jié)構(gòu)上的一些操作的實現(xiàn);第8章介紹了各種查找表及查找方法;第9章介紹了各種排序算法。本書計劃學(xué)時為80學(xué)時左右,其中上機實習(xí)為35學(xué)時左右?! ”緯?、5、6、7章由石曼銀編寫,第2、3、4章由張啟寧編寫,第8、9章由李志亮編寫,全書由石曼銀統(tǒng)一編排定稿。
內(nèi)容概要
數(shù)據(jù)結(jié)構(gòu)(C語言描述)》是作者根據(jù)自己的教學(xué)經(jīng)驗總結(jié),為高職高專計算機專業(yè)學(xué)生編寫的教材。作者在教學(xué)過程中發(fā)現(xiàn),大多數(shù)學(xué)生在初學(xué)數(shù)據(jù)結(jié)構(gòu)時,容易誤解算法與程序之間的關(guān)系,經(jīng)常會把書中的算法當(dāng)作程序直接在編譯器上進行運行測試。為了解決這個問題,《數(shù)據(jù)結(jié)構(gòu)(C語言描述)》采用C語言作為數(shù)據(jù)結(jié)構(gòu)和算法的描述語言,并且對關(guān)鍵的算法都安排了完整的C語言程序供學(xué)生上機實習(xí)參考,程序均在VC編譯器下編譯運行。書中給出的每一個算法都是完整的,只要添加上主函數(shù),程序即可運行,主函數(shù)的添加可以模仿書中給出的完整程序。
書籍目錄
前言第1章 緒論1.1 什么是數(shù)據(jù)結(jié)構(gòu)1.2 數(shù)據(jù)結(jié)構(gòu)的重要性1.3 基本概念和術(shù)語1.3.1 基本術(shù)語1.3.2 數(shù)據(jù)的邏輯結(jié)構(gòu)1.3.3 數(shù)據(jù)的存儲結(jié)構(gòu)1.3.4 數(shù)據(jù)的運算與實現(xiàn)1.4 抽象數(shù)據(jù)類型1.5 算法與算法分析1.5.1 問題、算法和程序1.5.2 算法設(shè)計的要求1.5.3 算法分析本章小結(jié)練習(xí)題第2章 線性表2.1 線性表的基本概念2.1.1 線性表的自然語言定義2.1.2 線性表的ADT定義2.2 線性表的順序存儲結(jié)構(gòu)及其運算2.2.1 順序表的存儲結(jié)構(gòu)2.2.2 順序表的基本操作2.2.3 順序表的特點2.3 線性表的鏈式存儲結(jié)構(gòu)及其運算2.3.1 單鏈表的存儲結(jié)構(gòu)2.3.2 單鏈表的基本運算2.3.3 循環(huán)鏈表(Circular Linked List)2.3.4 雙向鏈表(Double Linked List)2.3.5 線性表鏈式存儲結(jié)構(gòu)的特點2.4 線性表的應(yīng)用舉例2.5 上機實驗2.5.1 實驗?zāi)康?.5.2 實驗內(nèi)容本章小結(jié)練習(xí)題第3章 棧和隊列3.1 棧的基本概念3.1.1 棧的自然語言定義3.1.2 棧的ADT定義3.2 棧的順序存儲結(jié)構(gòu)及其運算3.2.1 棧的順序存儲結(jié)構(gòu)3.2.2 順序棧的基本操作3.3 棧的鏈式存儲結(jié)構(gòu)及其運算3.3.1 棧的鏈式存儲結(jié)構(gòu)3.3.2 鏈棧的基本操作3.4 棧的應(yīng)用舉例3.5 隊列3.5.1 隊列的自然語言定義3.5.2 隊列的ADT定義3.6 隊列的順序存儲結(jié)構(gòu)及其運算3.6.1 隊列的順序存儲結(jié)構(gòu)3.6.2 循環(huán)隊列3.6.3 循環(huán)隊列的基本操作3.7 隊列的鏈式存儲結(jié)構(gòu)及其運算3.7.1 隊列的鏈式存儲結(jié)構(gòu)3.7.2 鏈隊列的基本操作3.8 隊列的應(yīng)用舉例3.9 上機實驗3.9.1 實驗?zāi)康?.9.2 實驗內(nèi)容本章小結(jié)練習(xí)題第4章 串4.1 串的基本概念4.1.1 串的自然語言定義4.1.2 串的ADT定義4.2 串的順序存儲結(jié)構(gòu)及其運算4.2.1 串的順序定長存儲結(jié)構(gòu)4.2.2 順序串的基本操作4.3 串的堆分配存儲結(jié)構(gòu)及其運算4.3.1 串的堆分配存儲結(jié)構(gòu)4.3.2 串的堆分配存儲結(jié)構(gòu)的基本操作4.4 串的鏈式存儲結(jié)構(gòu)4.5 串的應(yīng)用舉例4.6 上機實驗4.6.1 實驗?zāi)康?.6.2 實驗內(nèi)容本章小結(jié)練習(xí)題第5章 數(shù)組和廣義表5.1 數(shù)組的定義與存儲5.1.1 數(shù)組的定義5.1.2 數(shù)組的順序存儲結(jié)構(gòu)5.2 矩陣的壓縮存儲5.2.1 特殊矩陣5.2.2 稀疏矩陣5.3 廣義表5.3.1 廣義表的定義5.3.2 廣義表的基本操作5.3.3 廣義表的存儲結(jié)構(gòu)5.4 上機實驗5.4.1 實驗?zāi)康?.4.2 實驗內(nèi)容本章小結(jié)練習(xí)題第6章 樹6.1 樹的基本概念6.1.1 樹的自然語言定義6.1.2 樹的ADT定義6.1.3 樹的表示方法6.1.4 樹的基本術(shù)語6.2 樹的存儲結(jié)構(gòu)6.2.1 樹的順序存儲結(jié)構(gòu)6.2.2 樹的鏈式存儲結(jié)構(gòu)6.3 二叉樹6.3.二叉樹的定義6.3.2 二叉樹的性質(zhì)6.3.3 二叉樹的存儲結(jié)構(gòu)6.3.4 二叉樹的遍歷6.3.5 線索二叉樹6.3.6 二叉樹的應(yīng)用6.4 樹、森林與二叉樹之間的轉(zhuǎn)換6.4.1 樹、森林轉(zhuǎn)換為二叉樹6.4.2 二叉樹轉(zhuǎn)換為樹、森林6.4.3 樹和森林的遍歷6.5 哈夫曼樹6.5.1 哈夫曼樹的基本概念6.5.2 構(gòu)造哈夫曼樹6.5.3 哈夫曼樹的應(yīng)用6.6 上機實驗6.6.1 實驗?zāi)康?.6.2 實驗內(nèi)容本章小結(jié)練習(xí)題第7章 圖7.1 圖的基本概念7.1.1 圖的定義7.1.2 圖的基本術(shù)語7.2 圖的存儲結(jié)構(gòu)7.2.1 鄰接矩陣7.2.2 接表7.3 圖的遍歷7.3.1 深度優(yōu)先搜索遍歷7.3.2 廣度優(yōu)先搜索遍歷7.4 最小生成樹7.4.1 生成樹7.4.2 最小生成樹7.5 最短路徑7.5.1 某個源點到其他各頂點的最短路徑7.5.2 每對頂點之間的最短路徑7.6 有向無環(huán)圖及其應(yīng)用……第8章 查找第9章 排序參考答案參考文獻
章節(jié)摘錄
數(shù)據(jù)類型是指程序設(shè)計語言中各變量可取的數(shù)據(jù)種類。例如在FORTRAN語言中,變量的數(shù)據(jù)類型有整型、實型和復(fù)數(shù)型;在c語言中,數(shù)據(jù)類型有基本類型和構(gòu)造類型兩種,其中基本類型有整型、浮點型、字符型等,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、聯(lián)合、指針、枚舉型、自定義等。數(shù)據(jù)類型是高級程序設(shè)計語言中的一個基本概念,它和數(shù)據(jù)結(jié)構(gòu)的概念密切相關(guān)。一方面,在程序設(shè)計語言中,每一個數(shù)據(jù)都屬于某種數(shù)據(jù)類型。類型明顯或隱含地規(guī)定了數(shù)據(jù)的取值范圍、存儲方式以及允許進行的運算。可以認為,數(shù)據(jù)類型是在程序設(shè)計中已經(jīng)實現(xiàn)了的數(shù)據(jù)結(jié)構(gòu)。另一方面,在程序設(shè)計過程中,當(dāng)需要引入某種新的數(shù)據(jù)結(jié)構(gòu)時,總是借助編程語言所提供的數(shù)據(jù)類型來描述數(shù)據(jù)的存儲結(jié)構(gòu)?! ≡诜治鲆恍?fù)雜的情況或處理復(fù)雜的事物時,我們一般采用抽象思維的方法,即舍去復(fù)雜系統(tǒng)中非本質(zhì)的成分,只對其中一些本質(zhì)的可以反映系統(tǒng)重要特性的東西歸納提煉出來,設(shè)計出系統(tǒng)的模型,然后深入研究這些模型,得出一般的規(guī)律性的東西,解決實際問題。這種抽象思維的方法同樣適用于軟件系統(tǒng)的設(shè)計和研究。在復(fù)雜的軟件系統(tǒng)設(shè)計中,對所包括的數(shù)據(jù)和操作進行抽象分析,從而更有效地進行軟件系統(tǒng)的設(shè)計,將數(shù)據(jù)抽象和運算抽象緊密地結(jié)合在一起就構(gòu)成抽象數(shù)據(jù)類型的概念?! 〕橄髷?shù)據(jù)類型(Abstract Data Type,ADT)是指用以下方式構(gòu)造出來的數(shù)據(jù)類型,定義一個數(shù)據(jù)邏輯模型(數(shù)學(xué)模型),以及定義在該模型上的一組操作。抽象數(shù)據(jù)類型的定義取決于它的一組邏輯特性,與其在計算機內(nèi)部如何表示和實現(xiàn)無關(guān)。換句話說,不論它的內(nèi)部結(jié)構(gòu)如何變化,只要它的數(shù)學(xué)特性不變,都不影響它的外部使用?! 〕橄髷?shù)據(jù)類型的概念并不是全新的概念,它實際上是我們熟悉的基本數(shù)據(jù)類型概念的引申和發(fā)展。由計算機高級程序設(shè)計語言可知,基本數(shù)據(jù)類型已隱含著數(shù)據(jù)模型和定義在該模型上的運算的統(tǒng)一,只是沒有形成抽象數(shù)據(jù)類型的概念而已。如整型就是整數(shù)值模型與加、減、乘、除、取模等幾種運算的統(tǒng)一體。
圖書封面
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載