出版時(shí)間:2009-9 出版社:水利水電出版社 作者:陸勤 頁數(shù):269 字?jǐn)?shù):455000
前言
數(shù)據(jù)結(jié)構(gòu)是一門討論“描述現(xiàn)實(shí)世界實(shí)體的數(shù)學(xué)模型(非數(shù)值計(jì)算)及其上的操作在計(jì)算機(jī)中如何表示和實(shí)現(xiàn)”的學(xué)科。隨著計(jì)算機(jī)硬件、軟件技術(shù)的飛速發(fā)展和計(jì)算機(jī)系統(tǒng)在各行業(yè)的廣泛應(yīng)用,有關(guān)數(shù)據(jù)結(jié)構(gòu)的理論和技術(shù)也成為了計(jì)算機(jī)應(yīng)用技術(shù)教育的重要部分?! ?shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)技術(shù)應(yīng)用方面的主要基礎(chǔ)課程之一,它引導(dǎo)學(xué)生學(xué)會(huì)從實(shí)際應(yīng)用問題入手,分析研究計(jì)算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用所涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及其相應(yīng)的操作算法,并初步掌握算法的時(shí)間和空間分析技術(shù)。另一方面,本課程的學(xué)習(xí)過程也是進(jìn)行復(fù)雜程序設(shè)計(jì)、調(diào)試并排除錯(cuò)誤的訓(xùn)練過程,要求學(xué)生編寫的程序代碼結(jié)構(gòu)清晰、正確易讀,具有良好的可維護(hù)性?! ”緯凑辗怯?jì)算機(jī)專業(yè)計(jì)算機(jī)課程基本要求中所規(guī)定的數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)內(nèi)容,并參考教育部制定的計(jì)算機(jī)基礎(chǔ)教學(xué)主要課程教學(xué)大綱編寫。全書共分9章。第1章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊(duì)列、字符串、數(shù)組與特殊矩陣、樹、圖的多種存儲(chǔ)結(jié)構(gòu)和典型算法應(yīng)用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數(shù)排序等多種排序算法?! ”緯捎米鞲叩葘W(xué)校非計(jì)算機(jī)專業(yè)本科學(xué)生數(shù)據(jù)結(jié)構(gòu)課程的教材,旨在培養(yǎng)學(xué)生運(yùn)用數(shù)據(jù)結(jié)構(gòu)的基本概念和方法解決實(shí)際問題的能力。一般情況下,課堂講授學(xué)時(shí)數(shù)應(yīng)安排為40~60學(xué)時(shí),集體卜機(jī)實(shí)踐時(shí)間應(yīng)安排為30學(xué)時(shí),可根據(jù)具體條件適當(dāng)增減教學(xué)內(nèi)容和學(xué)時(shí)數(shù)。多上機(jī)實(shí)踐是學(xué)好本書內(nèi)容的捷徑,希望讀者通過學(xué)習(xí)本書盡快掌握數(shù)據(jù)結(jié)構(gòu)的基本應(yīng)用技能?! ”緯申懬谥骶?,特別感謝國(guó)防科學(xué)技術(shù)大學(xué)鄒逢興教授對(duì)本書的出版所給予的巨大幫助。此外,作者參閱了國(guó)內(nèi)外一些有關(guān)數(shù)據(jù)結(jié)構(gòu)的教材、書籍,受益匪淺。在此,謹(jǐn)向這些教材、書籍的作者表示感謝?! ∮捎跁r(shí)問倉(cāng)促及作者水平有限,書中難免存在錯(cuò)誤或不當(dāng)之處,敬請(qǐng)廣大讀者批評(píng)指正。
內(nèi)容概要
本書系統(tǒng)地闡述了基本數(shù)據(jù)結(jié)構(gòu)的多種存儲(chǔ)結(jié)構(gòu)和典型算法,以及應(yīng)用數(shù)據(jù)結(jié)構(gòu)理論解決實(shí)際問題的基本方法和技巧,努力使讀者牢固掌握數(shù)據(jù)結(jié)構(gòu)的理論,培養(yǎng)靈活運(yùn)用并巧妙解決具體問題的能力,為讀者今后進(jìn)一步地深入學(xué)習(xí)實(shí)踐打下堅(jiān)實(shí)基礎(chǔ)。 全書內(nèi)容嚴(yán)謹(jǐn)、編排合理、文字流暢、示例典型、實(shí)用性強(qiáng),書中的程序均已在MicrosoftVisual c++6.0系統(tǒng)下編譯運(yùn)行。全書共分9章。第l章介紹數(shù)據(jù)結(jié)構(gòu)的基本概念和算法描述及分析。第2章至第7章分別介紹線性表、棧和隊(duì)列、字符串、數(shù)組與特殊矩陣、樹、圖的多種存儲(chǔ)結(jié)構(gòu)和典型算法應(yīng)用示例。第8章介紹了線性表的查找、查找樹、哈希表查找(雜湊法)方法。第9章介紹了插入排序、交換排序、選擇排序、二路歸并排序、基數(shù)排序等多種排序算法。 本書可用作高等學(xué)校非計(jì)算機(jī)專業(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è)計(jì)原則 1.3.2 算法的描述 1.3.3 算法分析 思考題與習(xí)題第2章 線性表 2.1 線性表的定義和基本運(yùn)算 2.2 線性表的順序存儲(chǔ)結(jié)構(gòu) 2.2.1 順序存儲(chǔ)結(jié)構(gòu) 2.2.2 順序表的基本操作及其時(shí)間效率分析 2.3 線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 2.3.1 單鏈表及其基本操作 2.3.2 特殊鏈表 2.4 線性表的應(yīng)用示例——多項(xiàng)式的代數(shù)運(yùn)算 思考題與習(xí)題第3章 棧和隊(duì)列 3.1 棧 3.1.1 棧的定義及其運(yùn)算 3.1.2 順序棧 3.1.3 多棧共享鄰接空間 3.1.4 鏈棧 3.1.5 棧的應(yīng)用舉例 3.2 隊(duì)列(queue) 3.2.1 隊(duì)列的定義及其運(yùn)算 3.2.2 隊(duì)列的順序存儲(chǔ)結(jié)構(gòu) 3.2.3 隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 3.2.4 循環(huán)隊(duì)列 3.2.5 隊(duì)列的應(yīng)用舉例 思考題與習(xí)題第4章 字符串 4.1 串的概念 4.1.1 串的定義 4.1.2 主串和子串 4.2 串的存儲(chǔ)結(jié)構(gòu) 4.2.1 串的靜態(tài)存儲(chǔ)結(jié)構(gòu) 4.2.2 串的動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu) 4.3 求子串運(yùn)算 4.4 串的模式匹配 4.4.1 串的模式匹配的簡(jiǎn)單算法 4.4.2 模式匹配的改進(jìn)算法——KMP算法 思考題與習(xí)題第5章 數(shù)組與特殊矩陣 5.1 數(shù)組的概念 5.2 靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組 5.3 特殊矩陣及其壓縮存儲(chǔ) 5.3.1 特殊矩陣 5.3.2 特殊矩陣的壓縮存儲(chǔ) 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 二叉樹的存儲(chǔ) 6.2.1 順序存儲(chǔ)結(jié)構(gòu) 6.2.2 鏈?zhǔn)酱鎯?chǔ)結(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 用擴(kuò)充先序序列構(gòu)造二義樹 6.6 線索二叉樹 6.6.1 線索二叉樹的定義及結(jié)構(gòu) 6.6.2 線索二叉樹的操作 6.7 樹的存儲(chǔ)結(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 圖的存儲(chǔ)方法 7.2.1 鄰接矩陣及其順序存儲(chǔ) 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 單源點(diǎn)最短路徑 7.5.2 每一對(duì)頂點(diǎn)之間的最短路徑 7.6 有向無環(huán)圖及其應(yīng)用 7.6.1 AOV網(wǎng)與拓?fù)渑判? 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 哈希表中查找和插入算法的實(shí)現(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 簡(jiǎn)單選擇排序 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í)題參考文獻(xiàn)
章節(jié)摘錄
2.結(jié)點(diǎn) 用于描述一個(gè)獨(dú)立事物的名稱、數(shù)量、特征、性質(zhì)的一組相關(guān)信息組成一個(gè)數(shù)據(jù)結(jié)點(diǎn),簡(jiǎn)稱結(jié)點(diǎn)(node)。結(jié)點(diǎn)也稱數(shù)據(jù)元素(data element),是組成數(shù)據(jù)的基本單位。在程序中通常把結(jié)點(diǎn)作為一個(gè)整體進(jìn)行考慮和處理。例如,在表1.1所示的學(xué)生數(shù)據(jù)中,為了便于處理,把其中的每一行(代表一名學(xué)生的信息)作為一個(gè)基本單位來考慮,故該數(shù)據(jù)由10個(gè)結(jié)點(diǎn)構(gòu)成。 一般情況下,一個(gè)結(jié)點(diǎn)中含有若干個(gè)字段(也叫數(shù)據(jù)項(xiàng))。例如,在表1.1 所示的表格數(shù)據(jù)中,每個(gè)結(jié)點(diǎn)都由學(xué)號(hào)、姓名、課程、成績(jī)4個(gè)字段構(gòu)成。字段是構(gòu)成數(shù)據(jù)的最小單位。 3. 關(guān)鍵字 每個(gè)數(shù)據(jù)項(xiàng)叫做結(jié)點(diǎn)的一個(gè)域(field),唯一標(biāo)識(shí)結(jié)點(diǎn)的一組域稱為關(guān)鍵字(key)。例如,在設(shè)計(jì)處理上述學(xué)生成績(jī)的程序時(shí),每個(gè)學(xué)生的數(shù)據(jù)結(jié)點(diǎn)均包括學(xué)生的學(xué)號(hào)、姓名、課程、成績(jī)等,學(xué)號(hào)和課程可以作為結(jié)點(diǎn)的關(guān)鍵字,用以唯一標(biāo)識(shí)學(xué)生信息?! ?. 邏輯結(jié)構(gòu) 類型相同、內(nèi)容相關(guān)的眾多結(jié)點(diǎn)構(gòu)成一個(gè)結(jié)點(diǎn)集合。結(jié)點(diǎn)集合中結(jié)點(diǎn)和結(jié)點(diǎn)之間的邏輯關(guān)系稱為數(shù)據(jù)的邏輯結(jié)構(gòu)。在表1-1所示的表格數(shù)據(jù)中,各結(jié)點(diǎn)之間在邏輯上有一種線性關(guān)系,它指出了10個(gè)結(jié)點(diǎn)在表中的排列順序。根據(jù)這種線性關(guān)系,可以處理表中第1位學(xué)生的信息、第2位學(xué)生的信息……等等。 5. 存儲(chǔ)結(jié)構(gòu) 數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)表示和實(shí)現(xiàn)稱為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)或物理結(jié)構(gòu),也稱存儲(chǔ)表示。在存儲(chǔ)結(jié)點(diǎn)集合時(shí),除了存儲(chǔ)數(shù)據(jù)結(jié)點(diǎn)外,還必須體現(xiàn)出結(jié)點(diǎn)之間的關(guān)系。表1-l所示的表格數(shù)據(jù)在計(jì)算機(jī)中可以有多種存儲(chǔ)表示,例如,可以表示成數(shù)組,存放在內(nèi)存中;也可以表示成文件,存放在磁盤上。 用來存儲(chǔ)一個(gè)數(shù)據(jù)結(jié)點(diǎn),以及該結(jié)點(diǎn)與其他結(jié)點(diǎn)之間關(guān)系的存儲(chǔ)單元稱為存儲(chǔ)結(jié)點(diǎn)。因?yàn)橐粋€(gè)數(shù)據(jù)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)存儲(chǔ)結(jié)點(diǎn),所以,在不致混淆時(shí),存儲(chǔ)結(jié)點(diǎn)也簡(jiǎn)稱為結(jié)點(diǎn)。尚未存儲(chǔ)數(shù)據(jù)的存儲(chǔ)結(jié)點(diǎn)稱為空白結(jié)點(diǎn)(或空結(jié)點(diǎn)、自由結(jié)點(diǎn))。6.數(shù)據(jù)處理數(shù)據(jù)處理是指利用程序?qū)?shù)據(jù)進(jìn)行查找、插入、刪除、合并、排序、統(tǒng)計(jì)以及計(jì)算等操作。數(shù)據(jù)結(jié)構(gòu)重點(diǎn)研究各種數(shù)據(jù)通常需要進(jìn)行哪些操作,如何設(shè)計(jì)完成相應(yīng)的算法,從而提高程序運(yùn)行效率。
編輯推薦
新世紀(jì)電子信息與自動(dòng)化系列課程改革教材?! ∶麕煵邉?,名師主理,教改結(jié)晶,教材精品。
圖書封面
評(píng)論、評(píng)分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載