數(shù)據(jù)結(jié)構(gòu)

出版時間:2008-7  出版社:清華大學出版社  作者:吳燦銘  頁數(shù):323  
Tag標簽:無  

內(nèi)容概要

  《數(shù)據(jù)結(jié)構(gòu)(C++版)》通過架構(gòu)清晰和易懂的表達方式將數(shù)據(jù)結(jié)構(gòu)中各種算法作最詳盡的詮釋與舉例,并利用完整的C++程序設計將各種理論加以實踐。  全書共9章,包括數(shù)據(jù)結(jié)構(gòu)概述、數(shù)組和稀疏矩陣、鏈表、堆棧、隊列、樹、圖、排序、查找。為了將算法講解的清晰易懂,《數(shù)據(jù)結(jié)構(gòu)(C++版)》不盡以偽代碼來說明,而是利用C++語言來展現(xiàn),同時,書中的重要理論均輔以范例程序,從而透徹理解原理的精髓。為了驗收各章的學習成果,章后附加重點整理和習題,提供更多實戰(zhàn)演練的機會?!  稊?shù)據(jù)結(jié)構(gòu)(C++版)》適合作為計算機專業(yè)和信息專業(yè)本、??粕臄?shù)據(jù)結(jié)構(gòu)教材,也可作為參加自學考試人員和計算機應用技術人員的自學參考書。

書籍目錄

第1章 數(shù)據(jù)結(jié)構(gòu)概述1.1 數(shù)據(jù)結(jié)構(gòu)簡介1.1.1 數(shù)據(jù)與信息1.1.2 算法1.2 程序設計簡介1.2.1 程序開發(fā)流程1.2.2 結(jié)構(gòu)化程序設計1.2.3 面向?qū)ο蟪绦蛟O計1.2.4 數(shù)據(jù)類型1.3 面向?qū)ο蟮母拍钆cC++語言1.3.1 C++語言1.3.2 類1.3.3 繼承1.3.4 多態(tài)1.4 算法效率的分析1.4.1 大O1.4.2 大Q1.4.3 大θ重點整理本章習題第2章 數(shù)組和稀疏矩陣2.1 線性表2.1.1 線性表的定義2.1.2 線性表的應用2.2 數(shù)組簡介2.2.1 一維數(shù)組2.2.2 二維數(shù)組2.2.3 三維數(shù)組2.2.4 n維數(shù)組2.3 矩陣簡介與運算2.3.1 矩陣相加2.3.2 矩陣相乘2.3.3 轉(zhuǎn)置矩陣2.3.4 稀疏矩陣2.3.5 上三角形矩陣2.3.6 下三角形矩陣2.3.7 帶狀矩陣2.4 數(shù)組與多項式2.4.1 多項式簡介2.4.2 多項式的加法重點整理本章習題第3章 鏈表3.1 指針簡介3.1.1 指針聲明3.1.2 動態(tài)內(nèi)存分配3.1.3 C++語言中的動態(tài)分配與釋放3.2 單鏈表3.2.1 單鏈表的建立3.2.2 單鏈表的結(jié)點刪除3.2.3 單鏈表的結(jié)點插入3.2.4 單鏈表的反轉(zhuǎn)3.2.5 單鏈表的連接3.2.6 多項式的表示法3.3 循環(huán)鏈表3.3.1 循環(huán)鏈表的定義3.3.2 循環(huán)鏈表的結(jié)點插入3.3.3 循環(huán)鏈表的結(jié)點刪除3.3.4 循環(huán)鏈表的連接3.3.5 循環(huán)鏈表與稀疏矩陣的表示法3.4 雙向鏈表3.4.1 雙向鏈表的定義3.4.2 雙向鏈表的結(jié)點插入3.4.3 雙向鏈表的結(jié)點刪除重點整理本章習題第4章 堆棧4.1 堆棧簡介4.1.1 堆棧的工作原理4.1.2 堆棧的隊列實現(xiàn)4.1.3 堆棧的鏈表實現(xiàn)4.2 堆棧的應用4.2.1 遞歸4.2.2 河內(nèi)塔問題4.2.3 迷宮問題4.2.4 八皇后問題4.3 算術表達式的求值4.3.1 中序表示法求值4.3.2 前序表示法求值4.3.3 后序表示法求值4.4 中序表達式轉(zhuǎn)換成前序和后序表達式4.4.1 二叉樹法4.4.2 括號法4.4.3 堆棧法4.5 前序和后序表達式轉(zhuǎn)換成中序表達式4.5.1 括號法4.5.2 堆棧法重點整理本章習題第5章 隊列5.1 隊列簡介5.1.1 隊列的基本操作5.1.2 隊列的數(shù)組實現(xiàn)5.1.3 隊列的鏈表實現(xiàn)5.2 隊列的應用5.2.1 循環(huán)隊列5.2.2 優(yōu)先隊列5.2.3 雙向隊列重點整理本章習題第6章 樹6.1 樹簡介6.2 二叉樹簡介6.2.1 二叉樹的定義6.2.2 特殊二叉樹的介紹6.3 二叉樹的存儲方式6.3.1 二叉樹的數(shù)組表示法6.3.2 二叉樹的鏈表表示法6.4 二叉樹的遍歷6.4.1 中序遍歷6.4.2 前序遍歷6.4.3 后序遍歷6.4.4 二叉樹的遍歷實例6.4.5 二元運算樹6.5 二叉樹的深入研究6.5.1 排序二叉樹6.5.2 線索二叉樹6.5.3 索引二叉樹6.6 樹的二叉樹表示法6.6.1 樹轉(zhuǎn)換成二叉樹6.6.2 二叉樹轉(zhuǎn)換成樹6.6.3 森林轉(zhuǎn)換成二叉樹6.6.4 二叉樹轉(zhuǎn)換成森林6.6.5 樹與森林的遍歷6.6.6 確定惟一二叉樹重點整理本章習題第7章 圖7.1 圖的簡介7.1.1 圖的起源7.1.2 圖的名詞術語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.5 最小生成樹7.5.1 Prim算法7.5.2 Kruskal算法7.6 圖的最短路徑7.6.1 單點對全部頂點的最短路徑7.6.2 頂點之間的最短路徑7.7 AOV網(wǎng)絡與拓撲排序7.7.1 拓撲排序7.7.2 AOE網(wǎng)絡重點整理本章習題第8章 排序8.1 排序簡介8.1.1 排序的分類8.1.2 排序算法的分析8.2 內(nèi)部排序法8.2.1 冒泡排序法8.2.2 選擇排序法8.2.3 插入排序法8.2.4 希爾排序法8.2.5 合并排序法8.2.6 快速排序法8.2.7 堆排序法8.2.8 基數(shù)排序法8.3 外部排序法8.3.1 直接合并排序法8.3.2 K-路合并法8.3.3 多相合并法重點整理本章習題第9章 查找9.1 查找簡介9.2 常見的查找方法9.2.1 順序查找法9.2.2 二分查找法9.2.3 插值查找法9.2.4 斐波納契查找法9.2.5 哈希查找法重點整理本章習題

章節(jié)摘錄

  第1章 數(shù)據(jù)結(jié)構(gòu)概述  對于一個有志于從事IT專業(yè)技術的人士來說,數(shù)據(jù)結(jié)構(gòu)(Data Structure)是一門與計算機軟件和硬件都密切相關的學科,其中包含了算法(Algorithm)、數(shù)據(jù)存儲結(jié)構(gòu)、排序、搜索、哈希函數(shù)與程序設計等概念。  1.1 數(shù)據(jù)結(jié)構(gòu)簡介  數(shù)據(jù)結(jié)構(gòu)可以看成是在數(shù)據(jù)處理過程中用于分析、組織數(shù)據(jù)的方法和操作邏輯,它主要關注數(shù)據(jù)間的特性與相互關系?! ≡诂F(xiàn)代社會中,計算機與信息緊密相關,由于計算機具有處理速度快與存儲容量大的兩大特點(如圖1.1所示),因此在數(shù)據(jù)處理的過程中具有舉足輕重的作用?! ?shù)據(jù)結(jié)構(gòu)是用計算機進行數(shù)據(jù)處理的一套完整邏輯。程序設計者必須選擇一種數(shù)據(jù)結(jié)構(gòu)來進行數(shù)據(jù)的增加、修改、刪除、保存等操作,如果在選擇數(shù)據(jù)結(jié)構(gòu)時作了錯誤的決定,程序的執(zhí)行速度可能變得非常低,如果選錯了數(shù)據(jù)類型,后果更是不堪設想?! ∫虼水斢糜嬎銠C解決問題時,必須以計算機所能接受的模式來認識問題,并設計適當?shù)乃惴ㄈヌ幚頂?shù)據(jù),這是數(shù)據(jù)結(jié)構(gòu)討論的重點。簡單地說,數(shù)據(jù)結(jié)構(gòu)就是對數(shù)據(jù)與算法結(jié)構(gòu)的研究?! ?.1.1 數(shù)據(jù)與信息  談到數(shù)據(jù)結(jié)構(gòu),首先必須了解什么是數(shù)據(jù)(Data)與信息(Information)。從字義上來看,數(shù)據(jù)是指未經(jīng)加工過的文字(Word)、數(shù)字(Number)、符號(Symbol)或圖形(Graph)等,它表達的是沒有什么利用價值的基本元素或?qū)ο?,例如姓名、課程表、通信錄等都可泛泛地稱為“數(shù)據(jù)”(Data)。  當數(shù)據(jù)經(jīng)過處理(Process),例如以特定的方式進行系統(tǒng)地整理、歸納甚至統(tǒng)計分析后就成為信息(Information)。而這樣處理的過程就稱為“數(shù)據(jù)處理”(Data Processing)?! 膰乐?shù)慕嵌葋硇稳荨皵?shù)據(jù)處理”就是用人力或機器設備對數(shù)據(jù)進行系統(tǒng)的整理,如記錄、排序、合并、整合、計算、統(tǒng)計等,以使原始的數(shù)據(jù)符合需求而成為有用的信息。數(shù)據(jù)處理過程如圖1.2所示?! ∮械淖x者可能會有疑問:“數(shù)據(jù)和信息的角色是否絕對一成不變呢?”這也不一定,同一份文件可能在某種狀況下為數(shù)據(jù),而在另一種狀況下則為信息。例如美伊戰(zhàn)爭的某戰(zhàn)役死傷人數(shù)報告,對你我這樣的平民百姓而言,可能只是一份“數(shù)據(jù)”,不過對于英美聯(lián)軍的指揮官而言可就是彌足珍貴的“信息”?! ?.1.2 算法  數(shù)據(jù)結(jié)構(gòu)與算法是程序設計的核心。程序能否快速而有效地完成預定的任務取決于數(shù)據(jù)結(jié)構(gòu),而程序是否能清楚而正確地把問題解決則取決于算法,所以可以這么認為:“數(shù)據(jù)結(jié)構(gòu)+算法=可執(zhí)行的程序”,如圖1.3所示?! ≡陧f氏辭典中算法被定義為:“在有限步驟內(nèi)解決數(shù)學問題的程序。”如果用在計算機領域中,也可以把算法定義成:“為了解決某一個工作或問題所需要有限數(shù)目的機械性或重復性指令與計算步驟”。  在日常生活中有許多工作都可以利用算法來描述,例如員工的工作報告、寵物的飼養(yǎng)過程、學生的功課表等?! ‘斄私饬怂惴ǖ亩x后,需要說明計算機算法所必須符合的5個特性,如圖1.4所示。以上5個特性的說明如表1.1所示?! 〗酉聛硪紤]的是如何描述一個算法。其實算法描述的主要目的是讓人們了解算法的流程與步驟,只要能清楚地表現(xiàn)算法的5項特性即可。常用的算法描述如下。  1.一般文字  一般文字采用中文、英文、數(shù)字等進行描述。文字敘述法的特色在于使用文字或語言敘述來說明演算步驟。圖1.5就是一名學生小華早上上學并買早餐的簡單文字算法。

編輯推薦

  《數(shù)據(jù)結(jié)構(gòu)(C++版)》將各種數(shù)據(jù)結(jié)構(gòu)的重要理論、算法作最詳實的詮釋,大量的圖解說明降低學習難度,完整的范例程序?qū)⒗碚摷右詫嵺`。書中所有的算法均以C++程序語言描述,藉此加深學習理解,促進學用結(jié)合,提高軟件開發(fā)能力。全書共9章,內(nèi)容包括數(shù)據(jù)結(jié)構(gòu)概述、數(shù)組和稀疏矩陣、鏈表、堆棧、隊列、樹、圖、排序、查找。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    數(shù)據(jù)結(jié)構(gòu) PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7