出版時間:2009-9 出版社:水利水電出版社 作者:陸勤 頁數(shù):269 字數(shù):455000
前言
數(shù)據(jù)結(jié)構(gòu)是一門討論“描述現(xiàn)實世界實體的數(shù)學(xué)模型(非數(shù)值計算)及其上的操作在計算機中如何表示和實現(xiàn)”的學(xué)科。隨著計算機硬件、軟件技術(shù)的飛速發(fā)展和計算機系統(tǒng)在各行業(yè)的廣泛應(yīng)用,有關(guān)數(shù)據(jù)結(jié)構(gòu)的理論和技術(shù)也成為了計算機應(yīng)用技術(shù)教育的重要部分?! ?shù)據(jù)結(jié)構(gòu)是計算機技術(shù)應(yīng)用方面的主要基礎(chǔ)課程之一,它引導(dǎo)學(xué)生學(xué)會從實際應(yīng)用問題入手,分析研究計算機加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用所涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應(yīng)的操作算法,并初步掌握算法的時間和空間分析技術(shù)。另一方面,本課程的學(xué)習(xí)過程也是進行復(fù)雜程序設(shè)計、調(diào)試并排除錯誤的訓(xùn)練過程,要求學(xué)生編寫的程序代碼結(jié)構(gòu)清晰、正確易讀,具有良好的可維護性。 本書按照非計算機專業(yè)計算機課程基本要求中所規(guī)定的數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)內(nèi)容,并參考教育部制定的計算機基礎(chǔ)教學(xué)主要課程教學(xué)大綱編寫。全書共分9章。第1章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊列、字符串、數(shù)組與特殊矩陣、樹、圖的多種存儲結(jié)構(gòu)和典型算法應(yīng)用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數(shù)排序等多種排序算法。 本書可用作高等學(xué)校非計算機專業(yè)本科學(xué)生數(shù)據(jù)結(jié)構(gòu)課程的教材,旨在培養(yǎng)學(xué)生運用數(shù)據(jù)結(jié)構(gòu)的基本概念和方法解決實際問題的能力。一般情況下,課堂講授學(xué)時數(shù)應(yīng)安排為40~60學(xué)時,集體卜機實踐時間應(yīng)安排為30學(xué)時,可根據(jù)具體條件適當(dāng)增減教學(xué)內(nèi)容和學(xué)時數(shù)。多上機實踐是學(xué)好本書內(nèi)容的捷徑,希望讀者通過學(xué)習(xí)本書盡快掌握數(shù)據(jù)結(jié)構(gòu)的基本應(yīng)用技能?! ”緯申懬谥骶?,特別感謝國防科學(xué)技術(shù)大學(xué)鄒逢興教授對本書的出版所給予的巨大幫助。此外,作者參閱了國內(nèi)外一些有關(guān)數(shù)據(jù)結(jié)構(gòu)的教材、書籍,受益匪淺。在此,謹向這些教材、書籍的作者表示感謝?! ∮捎跁r問倉促及作者水平有限,書中難免存在錯誤或不當(dāng)之處,敬請廣大讀者批評指正。
內(nèi)容概要
本書系統(tǒng)地闡述了基本數(shù)據(jù)結(jié)構(gòu)的多種存儲結(jié)構(gòu)和典型算法,以及應(yīng)用數(shù)據(jù)結(jié)構(gòu)理論解決實際問題的基本方法和技巧,努力使讀者牢固掌握數(shù)據(jù)結(jié)構(gòu)的理論,培養(yǎng)靈活運用并巧妙解決具體問題的能力,為讀者今后進一步地深入學(xué)習(xí)實踐打下堅實基礎(chǔ)。 全書內(nèi)容嚴(yán)謹、編排合理、文字流暢、示例典型、實用性強,書中的程序均已在MicrosoftVisual c++6.0系統(tǒng)下編譯運行。全書共分9章。第l章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊列、字符串、數(shù)組與特殊矩陣、樹、圖的多種存儲結(jié)構(gòu)和典型算法應(yīng)用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數(shù)排序等多種排序算法。 本書可用作高等學(xué)校非計算機專業(yè)本科學(xué)生數(shù)據(jù)結(jié)構(gòu)課程的教材。
書籍目錄
總序前言第1章 緒論 1.1 數(shù)據(jù)結(jié)構(gòu)討論的范疇 1.2 數(shù)據(jù)結(jié)構(gòu)的基本概念 1.2.1 基本術(shù)語 1.2.2 數(shù)據(jù)結(jié)構(gòu) 1.2.3 數(shù)據(jù)類型和抽象數(shù)據(jù)類型 1.3 算法及其描述和分析 1.3.1 算法的特性及其設(shè)計原則 1.3.2 算法的描述 1.3.3 算法分析 思考題與習(xí)題第2章 線性表 2.1 線性表的定義和基本運算 2.2 線性表的順序存儲結(jié)構(gòu) 2.2.1 順序存儲結(jié)構(gòu) 2.2.2 順序表的基本操作及其時間效率分析 2.3 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu) 2.3.1 單鏈表及其基本操作 2.3.2 特殊鏈表 2.4 線性表的應(yīng)用示例——多項式的代數(shù)運算 思考題與習(xí)題第3章 棧和隊列 3.1 棧 3.1.1 棧的定義及其運算 3.1.2 順序棧 3.1.3 多棧共享鄰接空間 3.1.4 鏈棧 3.1.5 棧的應(yīng)用舉例 3.2 隊列(queue) 3.2.1 隊列的定義及其運算 3.2.2 隊列的順序存儲結(jié)構(gòu) 3.2.3 隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu) 3.2.4 循環(huán)隊列 3.2.5 隊列的應(yīng)用舉例 思考題與習(xí)題第4章 字符串 4.1 串的概念 4.1.1 串的定義 4.1.2 主串和子串 4.2 串的存儲結(jié)構(gòu) 4.2.1 串的靜態(tài)存儲結(jié)構(gòu) 4.2.2 串的動態(tài)存儲結(jié)構(gòu) 4.3 求子串運算 4.4 串的模式匹配 4.4.1 串的模式匹配的簡單算法 4.4.2 模式匹配的改進算法——KMP算法 思考題與習(xí)題第5章 數(shù)組與特殊矩陣 5.1 數(shù)組的概念 5.2 靜態(tài)數(shù)組與動態(tài)數(shù)組 5.3 特殊矩陣及其壓縮存儲 5.3.1 特殊矩陣 5.3.2 特殊矩陣的壓縮存儲 5.4 稀疏矩陣 5.4.1 三元組順序表 5.4.2 行邏輯鏈接的順序表 5.4.3 十字鏈表 思考題與習(xí)題第6章 樹 6.1 基本概念 6.1.1 樹的定義和有關(guān)術(shù)語 6.1.2 二叉樹 6.2 二叉樹的存儲 6.2.1 順序存儲結(jié)構(gòu) 6.2.2 鏈?zhǔn)酱鎯Y(jié)構(gòu) 6.3 二叉樹的抽象數(shù)據(jù)類型 6.4 二叉樹的遍歷 6.4.1 二叉樹的遍歷方法 6.4.2 二又樹的遍歷算法 6.4.3 樹、森林和二又樹的轉(zhuǎn)換 6.5 二叉樹的構(gòu)造 6.5.1 用中序序列和先序序列構(gòu)造二叉樹 6.5.2 用擴充先序序列構(gòu)造二義樹 6.6 線索二叉樹 6.6.1 線索二叉樹的定義及結(jié)構(gòu) 6.6.2 線索二叉樹的操作 6.7 樹的存儲結(jié)構(gòu) 6.8 樹和森林的遍歷 6.8.1 樹的遍歷 6.8.2 森林的遍歷 6.9 哈夫曼樹 6.9.1 哈夫曼樹算法 6.9.2 哈夫曼樹在編碼問題中的應(yīng)用 思考題與習(xí)題第7章 圖 7.1 基本概念 7.1.1 圖的定義 7.1.2 有關(guān)術(shù)語 7.2 圖的存儲方法 7.2.1 鄰接矩陣及其順序存儲 7.2.2 鄰接表 7.2.3 十字鏈表 7.2.4 鄰接多重表 7.3 圖的遍歷 7.3.1 深度優(yōu)先搜索 7.3.2 廣度優(yōu)先搜索 7.4 最小生成樹 7.4.1 最小生成樹的基本概念 7.4.2 構(gòu)造最小生成樹的普里姆(Prim)方法 7.4.3 構(gòu)造最小生成樹的克魯斯卡爾(Kruskal)算法 7.5 最短路徑 7.5.1 單源點最短路徑 7.5.2 每一對頂點之間的最短路徑 7.6 有向無環(huán)圖及其應(yīng)用 7.6.1 AOV網(wǎng)與拓撲排序 7.6.2 AOE網(wǎng)與關(guān)鍵路徑 思考題與習(xí)題第8章 查找 8.1 基本概念與術(shù)語 8.2 線性表的查找 8.2.1 順序查找 8.2.2 順序表的折半查找 8.2.3 分塊查找 8.3 查找樹 8.3.1 二叉查找樹 8.3.2 平衡二叉樹(AVL樹) 8.3.3 B-樹和B+樹 8.4 哈希表查找(雜湊法) 8.4.1 哈希表與哈希方法 8.4.2 哈希函數(shù)的構(gòu)造方法 8.4.3 處理沖突方法 8.4.4 哈希表中查找和插入算法的實現(xiàn) 8.4.5 哈希表的查找算法分析 思考題與習(xí)題第9章 排序 9.1 基本概念 9.2 插入排序 9.2.1 直接插入排序 9.2.2 二分法插入排序 9.2.3 表插入排序 9.2.4 希爾排序(Shell's Sort) 9.3 交換排序 9.3.1 冒泡排序(Bubble Sott) 9.3.2 快速排序 9.4 選擇排序 9.4.1 簡單選擇排序 9.4.2 樹形選擇排序 9.4.3 堆排序(Heap Sort) 9.5 二路歸并排序 9.6 基數(shù)排序 9.6.1 多關(guān)鍵字排序 9.6.2 鏈?zhǔn)交鶖?shù)排序 思考題與習(xí)題參考文獻
章節(jié)摘錄
2.結(jié)點 用于描述一個獨立事物的名稱、數(shù)量、特征、性質(zhì)的一組相關(guān)信息組成一個數(shù)據(jù)結(jié)點,簡稱結(jié)點(node)。結(jié)點也稱數(shù)據(jù)元素(data element),是組成數(shù)據(jù)的基本單位。在程序中通常把結(jié)點作為一個整體進行考慮和處理。例如,在表1.1所示的學(xué)生數(shù)據(jù)中,為了便于處理,把其中的每一行(代表一名學(xué)生的信息)作為一個基本單位來考慮,故該數(shù)據(jù)由10個結(jié)點構(gòu)成?! ∫话闱闆r下,一個結(jié)點中含有若干個字段(也叫數(shù)據(jù)項)。例如,在表1.1 所示的表格數(shù)據(jù)中,每個結(jié)點都由學(xué)號、姓名、課程、成績4個字段構(gòu)成。字段是構(gòu)成數(shù)據(jù)的最小單位。 3. 關(guān)鍵字 每個數(shù)據(jù)項叫做結(jié)點的一個域(field),唯一標(biāo)識結(jié)點的一組域稱為關(guān)鍵字(key)。例如,在設(shè)計處理上述學(xué)生成績的程序時,每個學(xué)生的數(shù)據(jù)結(jié)點均包括學(xué)生的學(xué)號、姓名、課程、成績等,學(xué)號和課程可以作為結(jié)點的關(guān)鍵字,用以唯一標(biāo)識學(xué)生信息?! ?. 邏輯結(jié)構(gòu) 類型相同、內(nèi)容相關(guān)的眾多結(jié)點構(gòu)成一個結(jié)點集合。結(jié)點集合中結(jié)點和結(jié)點之間的邏輯關(guān)系稱為數(shù)據(jù)的邏輯結(jié)構(gòu)。在表1-1所示的表格數(shù)據(jù)中,各結(jié)點之間在邏輯上有一種線性關(guān)系,它指出了10個結(jié)點在表中的排列順序。根據(jù)這種線性關(guān)系,可以處理表中第1位學(xué)生的信息、第2位學(xué)生的信息……等等。 5. 存儲結(jié)構(gòu) 數(shù)據(jù)在計算機中的存儲表示和實現(xiàn)稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu),也稱存儲表示。在存儲結(jié)點集合時,除了存儲數(shù)據(jù)結(jié)點外,還必須體現(xiàn)出結(jié)點之間的關(guān)系。表1-l所示的表格數(shù)據(jù)在計算機中可以有多種存儲表示,例如,可以表示成數(shù)組,存放在內(nèi)存中;也可以表示成文件,存放在磁盤上。 用來存儲一個數(shù)據(jù)結(jié)點,以及該結(jié)點與其他結(jié)點之間關(guān)系的存儲單元稱為存儲結(jié)點。因為一個數(shù)據(jù)結(jié)點對應(yīng)一個存儲結(jié)點,所以,在不致混淆時,存儲結(jié)點也簡稱為結(jié)點。尚未存儲數(shù)據(jù)的存儲結(jié)點稱為空白結(jié)點(或空結(jié)點、自由結(jié)點)。6.數(shù)據(jù)處理數(shù)據(jù)處理是指利用程序?qū)?shù)據(jù)進行查找、插入、刪除、合并、排序、統(tǒng)計以及計算等操作。數(shù)據(jù)結(jié)構(gòu)重點研究各種數(shù)據(jù)通常需要進行哪些操作,如何設(shè)計完成相應(yīng)的算法,從而提高程序運行效率。
編輯推薦
新世紀(jì)電子信息與自動化系列課程改革教材?! ∶麕煵邉?,名師主理,教改結(jié)晶,教材精品。
圖書封面
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載