出版時間:2002-3 出版社:清華大學出版社 作者:彭波 頁數(shù):257
前言
本書是按照美國電氣電子工程師學會(Institute of Electrical and Electronic Engineers, IEEE)和計算機協(xié)會(Association for Computing Machinery, ACM)的《計算機學科教學計劃2001》的要求編寫的?! 皵?shù)據(jù)結(jié)構(gòu)”在計算機科學中是一門綜合性的專業(yè)基礎(chǔ)課。數(shù)據(jù)結(jié)構(gòu)的研究不僅涉及到計算機硬件(特別是編碼理論、存儲裝置和存取方法等)的研究范圍,而且和計算機軟件的研究有著更密切的關(guān)系,無論是編譯程序,還是操作系統(tǒng),都涉及到數(shù)據(jù)元素在存儲器中的分配問題。在研究信息檢索時也必須考慮如何組織數(shù)據(jù),以便查找和存取數(shù)據(jù)元素更為方便??梢哉J為數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學、計算機硬件和計算機軟件三者之間的一門核心課程,是從事計算機科學及其應(yīng)用的科技工作者必須掌握的重要課程。 本教材作為《21 世紀計算機專業(yè)大專系列教材》之一。教材在內(nèi)容組織和編排上力求體現(xiàn)“先理論,后應(yīng)用,理論與應(yīng)用相結(jié)合”的原則,強調(diào)對理論知識的理解和運用。通過對本課程的學習,掌握各種數(shù)據(jù)結(jié)構(gòu)的基本概念、邏輯特性和物理表示法,以及相應(yīng)運算的算法;靈活運用各種數(shù)據(jù)結(jié)構(gòu)解決實際應(yīng)用問題,并且為學習后繼專業(yè)課程打下良好的基礎(chǔ)?! ∪珪卜譃?章。 第1章綜述數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、算法描述、算法分析,以及數(shù)據(jù)結(jié)構(gòu)與其他課程之間的關(guān)系等?! 〉?章至第7章介紹了基本的數(shù)據(jù)結(jié)構(gòu),如線性表、棧、隊列、串、數(shù)組、廣義表、樹、二叉樹及圖等,分別討論了數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),以及相應(yīng)運算的算法?! 〉?章和第9章為查找和排序,介紹了常用的幾種查找方法和內(nèi)部排序方法?! ”窘滩挠幸韵轮饕攸c: ?。?)基礎(chǔ)理論知識的闡述由淺入深、通俗易懂、邏輯性強。在內(nèi)容的組織與編排上,略去了一些理論上的推導和繁瑣的數(shù)學證明。 ?。?)為了有助于學生加深對基礎(chǔ)理論知識的理解,培養(yǎng)實際應(yīng)用的能力,各章(除第1章外)都配有與該章內(nèi)容相關(guān)的操作應(yīng)用舉例,且配有大量習題?! 。?)教材中使用類 C 語言作為算法描述語言,且所有算法都可以在任何一種 C 語言的開發(fā)環(huán)境中實現(xiàn)。在隨書的配套光盤中可以看到這些算法的 C 語言程序?! 。?)附錄中匯總了本教材各章中介紹的各類數(shù)據(jù)結(jié)構(gòu)時用到的數(shù)據(jù)存儲結(jié)構(gòu)類型說明,供學生上機實驗時參考使用?! ”窘滩闹v課時數(shù)為 60 學時左右,上機實驗時數(shù)在 20 學時以上。教師可以根據(jù)學時數(shù)和學生的實際情況選講操作應(yīng)用舉例中的例子?! ”緯勺鳛楦叩仍盒S嬎銠C專業(yè)大專學生數(shù)據(jù)結(jié)構(gòu)課的教材,也可作為非計算機專業(yè)本科生的教材。 由于作者水平有限,在教材中難免有錯誤,懇請讀者諒解?! ”窘滩挠衫畲笥呀淌谥骶幒蛯彾?,彭波副教授編寫。在上機實現(xiàn)教材中所有算法的過程中得到了曾立、許振文等同志的幫助,在此表示感謝。
內(nèi)容概要
本教材是《21世紀計算機專業(yè)大專系列教材》之一。全書共分9章,第1章綜述數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、算法描述、算法分析,以及數(shù)據(jù)結(jié)構(gòu)與其他課程之間的關(guān)系等。第2章至第7章介紹了基本的數(shù)據(jù)結(jié)構(gòu),如線性表、棧、隊列、串、數(shù)組、廣義表、材、二叉樹及圖等,分別討論了數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),以及相應(yīng)運算的算法。第8章和第9章為查找和排序,介紹了常用的幾種查找方法和內(nèi)部排序方法。教材中使用類C語言作為算法描述語言,且所有算法都可以在任何一種C語言的開發(fā)環(huán)境中實現(xiàn)。在隨書的配套光盤中可以看到這些算法的C語言程序?!稊?shù)據(jù)結(jié)構(gòu)》中所介紹的數(shù)據(jù)結(jié)構(gòu)概念清楚,內(nèi)容豐富。為了有助于學生加深對基礎(chǔ)理論知識的理解,培養(yǎng)實際應(yīng)用的能力,各章(除第1章外)都配有與該章內(nèi)容相關(guān)的操作應(yīng)用舉例,且配有大量習題?!稊?shù)據(jù)結(jié)構(gòu)》可作為高等院校計算機專業(yè)大專數(shù)據(jù)結(jié)構(gòu)課程的教材,也可作為非計算機專業(yè)本科生的教材。
書籍目錄
第1章 緒論 1.1 數(shù)據(jù)結(jié)構(gòu)概述 1.2 數(shù)據(jù)結(jié)構(gòu)的發(fā)展概況 1.3 數(shù)據(jù)結(jié)構(gòu)與其他課程的關(guān)系 1.4 基本概念 1.5 算法描述及分析 1.5.1 算法的重要特性 1.5.2 算法的描述方法 1.5.3 算法的設(shè)計要求 1.5.4 算法效率的度量 1.5.5 算法的空間需求 習題第2章 線性表 2.1 線性表的邏輯結(jié)構(gòu) 2.1.1 線性表的定義 2.1.2 線性表的基本操作 2.2 線性表的順序存儲結(jié)構(gòu) 2.2.1 線性表的順序存儲表示 2.2.2 基本操作在順序表上的實現(xiàn) 2.2.3 線性表順序存儲結(jié)構(gòu)小結(jié) 2.3 線性表的鏈式存儲結(jié)構(gòu) 2.3.1 線性表的鏈式存儲表示 2.3.2 基本操作在單鏈表上的實現(xiàn) 2.3.3 循環(huán)鏈表 2.3.4 雙向鏈表 2.3.5 線性表鏈式存儲結(jié)構(gòu)小結(jié) 2.4 線性表的兩種存儲結(jié)構(gòu)比較 2.5 線性表操作應(yīng)用舉例 習題第3章 棧和隊列 3.1 棧 3.1.1 棧的邏輯結(jié)構(gòu) 3.1.2 棧的順序存儲結(jié)構(gòu) 3.1.3 棧的鏈式存儲結(jié)構(gòu) 3.2 隊列 3.2.1 隊列的邏輯結(jié)構(gòu) 3.2.2 隊列的順序存儲結(jié)構(gòu) 3.2.3 隊列的鏈式存儲結(jié)構(gòu) 3.3 棧和隊列操作應(yīng)用舉例 習題第4章 串 4.1 串的邏輯結(jié)構(gòu) 4.1.1 串的定義 4.1.2 串的基本操作 4.2 串的存儲結(jié)構(gòu) 4.2.1 定長順序存儲結(jié)構(gòu) 4.2.2 堆分配存儲結(jié)構(gòu) 4.2.3 塊鏈存儲結(jié)構(gòu) 4.3 串操作應(yīng)用舉例 習題第5章 數(shù)組與廣義表 5.1 數(shù)組的邏輯結(jié)構(gòu) 5.1.1 數(shù)組的定義 5.1.2 數(shù)組的基本操作 5.2 數(shù)組的順序存儲結(jié)構(gòu) 5.3 矩陣的壓縮存儲 5.3.1 特殊矩陣的壓縮存儲 5.3.2 稀疏矩陣的邏輯結(jié)構(gòu) 5.3.3 稀疏矩陣的存儲結(jié)構(gòu) 5.4 廣義表 5.4.1 廣義表的邏輯結(jié)構(gòu) 5.4.2 廣義表的存儲結(jié)構(gòu) 5.5 數(shù)組與廣義表操作應(yīng)用舉例 習題第6章 樹與二叉樹 6.1 樹 6.1.1 樹的邏輯結(jié)構(gòu) 6.1.2 樹的存儲結(jié)構(gòu) 6.2 二叉樹 6.2.1 二叉樹的邏輯結(jié)構(gòu) 6.2.2 二叉樹的基本性質(zhì) 6.2.3 二叉樹的存儲結(jié)構(gòu) 6.3 遍歷二叉樹 6.3.1 遍歷二叉樹的操作定義 6.3.2 遍歷二叉樹的遞歸算法 6.3.3 遍歷二叉樹的非遞歸算法 6.3.4 建立二叉樹的算法 6.4 二叉線索樹 6.4.1 二叉線索樹的引出 6.4.2 二叉線索樹的定義 6.4.3 二叉線索樹的存儲結(jié)構(gòu) 6.4.4 二叉線索樹的操作 6.5 樹和森林與二叉樹的轉(zhuǎn)換 6.5.1 樹與二叉樹的轉(zhuǎn)換 6.5.2 森林與二叉樹的轉(zhuǎn)換 6.5.3 樹和森林的遍歷 6.6 赫夫曼樹及其應(yīng)用 6.6.1 基本概念 6.6.2 赫夫曼算法 6.6.3 赫夫曼編碼 6.6.4 赫夫曼樹和赫夫曼編碼的存儲表示 6.6.5 赫夫曼編碼的算法 6.6.6 示例 6.7 樹與二叉樹操作應(yīng)用舉例 習題第7章 圖 7.1 圖的邏輯結(jié)構(gòu) 7.1.1圖的定義 7.1.2 圖的基本操作 7.1.3 圖的基本概念 7.2 圖的存儲結(jié)構(gòu) 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 最小生成樹 7.5 最短路徑 7.5.1 求某個源點到其他頂點的最短路徑 7.5.2 求每一對頂點之間的最短路徑 7.6 拓撲排序 7.6.1 AOV網(wǎng) 7.6.2 拓撲排序 7.7 關(guān)鍵路徑 7.7.1 AOE網(wǎng) 7.7.2 關(guān)鍵路徑的概念 7.7.3 關(guān)鍵路徑的算法 7.8 圖操作應(yīng)用舉例 習題第8章 查找 8.1 基本概念 8.2 靜態(tài)查找 8.2.1 靜態(tài)查找的基本操作 8.2.2 靜態(tài)查找表的順序存儲結(jié)構(gòu) 8.2.3 順序查找 8.2.4 折半查找 8.2.5 分塊查找 8.3 動態(tài)查找 8.3.1 動態(tài)查找的基本操作 8.3.2 動態(tài)查找表的二叉鏈表存儲結(jié)構(gòu) 8.3.3 二叉排序樹 8.3.4 二叉平衡樹 8.3.5 B樹 8.4 散列表 8.4.1 散列表的概念 8.4.2 散列函數(shù)的構(gòu)造方法 8.4.3 處理沖突的方法 8.4.4 散列表的查找和分析 8.5 查找操作應(yīng)用舉例 習題第9章 排序 9.1 基本概念 9.2 插入排序法 9.2.1 直接插入排序 9.2.2 希爾排序 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 鏈式基數(shù)排序 9.7 各種內(nèi)部排序法的比較 9.8 排序操作應(yīng)用舉例 習題附錄 數(shù)據(jù)存儲結(jié)構(gòu)綜合參考文獻
章節(jié)摘錄
第1章 緒論 自從世界上第一臺電子計算機問世以來,計算機科學和計算機軟件、硬件技術(shù)得到飛速地發(fā)展;計算機的應(yīng)用領(lǐng)域也從最初的科學計算逐步發(fā)展到人類社會的各個領(lǐng)域。計算機加工處理的對象由簡單的數(shù)值、字符發(fā)展到文字、圖像、聲音等各種復雜的帶有不同類型及相互有不同關(guān)系的數(shù)據(jù)。為了編制“好”的程序,必須要分析程序處理的數(shù)據(jù)的特性及數(shù)據(jù)之間的關(guān)系,這就是“數(shù)據(jù)結(jié)構(gòu)”這門學科形成和發(fā)展的背景。 1.1 數(shù)據(jù)結(jié)構(gòu)概述 眾所周知,計算機的程序是對數(shù)據(jù)進行加工處理。在大多數(shù)情況下,這些數(shù)據(jù)并不是無組織的,數(shù)據(jù)之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)的重要內(nèi)容。那么,什么是數(shù)據(jù)結(jié)構(gòu)呢?先不妨舉例說明,然后給出明確定義。 例1.1 一個大學的學生健康情況管理?! ”?.1 中的學生健康情況登記表就是一個數(shù)據(jù)結(jié)構(gòu)。表中每個學生的情況為一個記錄,它由姓名、學號、性別、年齡、班級和健康狀況等6個數(shù)據(jù)項組成。計算機學生健康情況管理的主要功能包括:查詢、瀏覽、插入、修改、刪除和統(tǒng)計等。
圖書封面
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載