數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程(修訂版)(附光盤)
定 價:45 元
叢書名:高等院校信息管理與信息系統(tǒng)專業(yè)系列教材
- 作者:嚴(yán)蔚敏 ,陳文博 著
- 出版時間:2011/5/1
- ISBN:9787302243908
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.12
- 頁碼:391
- 紙張:膠版紙
- 版次:1
- 開本:16開
《數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程(修訂版)》從數(shù)據(jù)類型的角度,分別討論了四大類型的數(shù)據(jù)結(jié)構(gòu)的邏輯特性、存儲表示及其應(yīng)用。此外,還專辟一章,以若干實例闡述以抽象數(shù)據(jù)類型為中心的程序設(shè)計方法。書中每一章后都配有適量的習(xí)題,以供讀者復(fù)習(xí)提高之用。第1~9章還專門設(shè)有“解題指導(dǎo)與示例”一節(jié)內(nèi)容,不僅給出答案,對大部分題目提供了詳盡的解答注釋;其中的一些算法題還給出了多種解法。書中主要算法和最后一章的實例中的全部程序代碼均收錄在與《數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程(修訂版)》配套的光盤之中。
《數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程(修訂版)》內(nèi)容豐富,概念闡述細(xì)致清楚,可作為高等院校計算機類專業(yè)和信息類相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”或“軟件基礎(chǔ)”課程的本科教材。另外,對于準(zhǔn)備參加計算機類研究生專業(yè)課統(tǒng)考的考生,《數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程(修訂版)》也可作為應(yīng)試的解題指導(dǎo)。
“數(shù)據(jù)結(jié)構(gòu)”是計算機程序設(shè)計的重要理論基礎(chǔ),它所討論的知識內(nèi)容和提倡的技術(shù)方法,無論對進一步學(xué)習(xí)計算機領(lǐng)域的其他課程,還是對從事軟件工程的開發(fā),都有著不可替代的作用!皵(shù)據(jù)結(jié)構(gòu)”是公認(rèn)的計算機學(xué)科本科和大專的核心課程,也是計算機類專業(yè)“考研”和等級水平考試的必考科目,而且正逐漸發(fā)展成為眾多理工專業(yè)的熱門選修課。本書正是針對這一背景和社會需求編寫的教材性讀物,在內(nèi)容選材方面,更多地考慮了普通高等院校計算機專業(yè)和信息類相關(guān)專業(yè)的讀者的實際需要。
為了便于讀者理解,書中對數(shù)據(jù)結(jié)構(gòu)眾多知識點的來龍去脈都做了詳細(xì)的解釋和說明,并配有大量的算法實例穿插其間。書的最后還專門辟出一章,用來講解數(shù)據(jù)結(jié)構(gòu)在解決實際問題中的應(yīng)用示例,便于讀者舉一反三。考慮到計算機技術(shù)的發(fā)展和進步,在內(nèi)容的編排方面盡量做到推陳出新,實例也力求新穎,以適應(yīng)技術(shù)發(fā)展的潮流。
本書的第1章綜述數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)和抽象數(shù)據(jù)類型等基本概念和算法;第2章、第4章至第7章從數(shù)據(jù)類型的角度,分別討論線性表、棧和隊列、串和數(shù)組、二叉樹和樹以及圖和廣義表等數(shù)據(jù)結(jié)構(gòu)的邏輯特性、存儲表示及其應(yīng)用;第3章和第8章分別討論排序和查找表的各種實現(xiàn)方法,其中除介紹各種實現(xiàn)方法外,并著重對算法的時間效率做了定性的分析,對算法的應(yīng)用場合及適用范圍進行了比較和介紹;第9章討論常用的文件結(jié)構(gòu);第10章則以8個數(shù)據(jù)結(jié)構(gòu)的綜合應(yīng)用為例,闡述以抽象數(shù)據(jù)類型為中心的程序設(shè)計方法。書的每一章都配有適量的習(xí)題,供讀者復(fù)習(xí)提高之用。
本書在編排方面注意了數(shù)據(jù)結(jié)構(gòu)本身的內(nèi)在聯(lián)系和從易到難的學(xué)習(xí)規(guī)律。例如,將排序安排在第3章,因為對讀者來說,排序的內(nèi)容比較容易理解,而且所涉及的數(shù)據(jù)結(jié)構(gòu)主要是線性結(jié)構(gòu);又如對棧和隊列的學(xué)習(xí)重點是它們的應(yīng)用,因此在第4章里更多地列舉了棧和隊列的應(yīng)用例子;在第5章中,結(jié)合C語言的串類型講解串結(jié)構(gòu)的知識內(nèi)容,以使實際和理論在應(yīng)用中和諧統(tǒng)一起來,等等。雖然廣義表屬線性結(jié)構(gòu),但由于它的“遞歸”特性,使得涉及廣義表操作的算法和樹更相似,因此將它放在圖之后進行討論,以降低理解難度。第10章的內(nèi)容相當(dāng)于“數(shù)據(jù)結(jié)構(gòu)實習(xí)指導(dǎo)”,本意是為學(xué)生提供一個“綜合利用數(shù)據(jù)結(jié)構(gòu)知識編制小型軟件”的規(guī)范示例。
全書采用了類C語言作為數(shù)據(jù)結(jié)構(gòu)和操作算法的描述工具,它是C語言的一個精選子集,同時又采用了C++對C的非面向?qū)ο蟮脑鰪姽δ。例如,動態(tài)分配和釋放順序存儲結(jié)構(gòu)的空間;利用引用參數(shù)傳遞函數(shù)運算的結(jié)果;使用默認(rèn)參數(shù)以簡化函數(shù)參數(shù)表的描述等。這些措施使數(shù)據(jù)類型的定義和數(shù)據(jù)結(jié)構(gòu)相關(guān)操作算法的描述更加簡明清晰,可讀性更好,轉(zhuǎn)變成C程序也極為方便。另一方面又埋下了伏筆,把類型定義和操作算法稍加技術(shù)處理,就很容易將其封裝成類,并進一步轉(zhuǎn)化成面向?qū)ο蟮某绦蚰P汀?br /> 從課程性質(zhì)上講,“數(shù)據(jù)結(jié)構(gòu)”是一門專業(yè)技術(shù)基礎(chǔ)課。它的教學(xué)要求應(yīng)當(dāng)是:學(xué)會從問題入手,分析研究計算機加工的數(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è)計的訓(xùn)練過程,要求學(xué)生會書寫符合軟件工程規(guī)范的文件,編寫的程序代碼應(yīng)結(jié)構(gòu)清晰、正確易讀,能上機調(diào)試并排除錯誤。數(shù)據(jù)結(jié)構(gòu)比高級程序設(shè)計語言課有著更高的要求,它重在培養(yǎng)學(xué)生的數(shù)據(jù)抽象能力。事實一再證明,任何具有創(chuàng)新成分的軟件成果都離不開數(shù)據(jù)的抽象和在數(shù)據(jù)抽象基礎(chǔ)上的算法描述。數(shù)據(jù)抽象能力是一種創(chuàng)造性的思維活動,是任何軟件開發(fā)工具也無法取代的。本書將通過不同層次的應(yīng)用示例培養(yǎng)學(xué)生逐步掌握數(shù)據(jù)抽象的能力,學(xué)會數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的使用方法,為今后的學(xué)習(xí)和提高編程水平打下扎實的基礎(chǔ)。
本書可作為計算機類專業(yè)的本科教材,也可以作為電子信息類相關(guān)專業(yè)的選修教材,教授可為40至60學(xué)時,另外應(yīng)留有一定的時間供學(xué)生完成適量的上機作業(yè)。本書在編寫方面以通俗易懂為其宗旨,特別注意了技術(shù)細(xì)節(jié)的交代,以便于自學(xué),故也可作為從事計算機應(yīng)用等工作的科技人員參考和查閱用書。在學(xué)習(xí)本書時應(yīng)至少掌握一門高級程序設(shè)計的知識,如掌握的是C語言則最為理想;若能具有初步的離散數(shù)學(xué)和概率論的知識,對書中某些內(nèi)容的理解會更容易。學(xué)習(xí)本書的同時還可把《數(shù)據(jù)結(jié)構(gòu)》 (C語言版)作為配套參考用書。
與本書配套的光盤中含有書中所有算法和最后一章應(yīng)用示例的全部源程序,可在Visual C++ 5.0或6.0的環(huán)境下編譯執(zhí)行,讀者還可改變其中的輸入數(shù)據(jù),以觀察程序?qū)Σ煌斎氲膱?zhí)行結(jié)果。為了便于讀者理解算法,在光盤中還為部分算法配有執(zhí)行過程的示例演示。
應(yīng)當(dāng)感謝因特網(wǎng),在本書的寫作過程中,通過E-mail傳送書稿使不在同一地方工作的兩位作者可以做到隨時交換意見并頻繁修改書稿,以便使本書內(nèi)容盡可能地做到令讀者滿意。但因時間倉促,仍有不盡如人意之處,請讀者和同行賜教。
在寫作本書的過程中,劉巍、錢大智、李莉、樓健、徐佳、金穎、林京秀、王福建等同學(xué)參加了第10章有關(guān)程序的調(diào)試工作,在此表示感謝。
嚴(yán)蔚敏 清華大學(xué)計算機科學(xué)與技術(shù)系
陳文博 北京工業(yè)大學(xué)計算機學(xué)院
2000年7月
第1章 緒論
1.1 數(shù)據(jù)結(jié)構(gòu)討論的范疇
1.2 與數(shù)據(jù)結(jié)構(gòu)相關(guān)的概念
1.2.1 基本概念和術(shù)語
1.2.2 數(shù)據(jù)結(jié)構(gòu)(data structures)
1.2.3 數(shù)據(jù)類型和抽象數(shù)據(jù)類型
1.3 算法及其描述和分析
1.3.1 算法
1.3.2 算法的描述
1.3.3 算法效率的衡量方法和準(zhǔn)則
1.3.4 算法的存儲空間需求
解題指導(dǎo)與示例
習(xí)題
第2章 線性表
2.1 線性表的類型定義
2.1.1 線性表的定義
2.1.2 線性表的基本操作
2.2 線性表的順序表示和實現(xiàn)
2.2.1 順序表--線性表的順序存儲表示
2.2.2 順序表中基本操作的實現(xiàn)
2.2.3 順序表其他算法舉例
2.3 線性表的鏈?zhǔn)奖硎竞蛯崿F(xiàn)
2.3.1 單鏈表和指針
2.3.2 單鏈表的基本操作
2.3.3 單鏈表的其他操作舉例
2.3.4 循環(huán)鏈表
2.3.5 雙向鏈表
2.4 有序表
2.5 順序表和鏈表的綜合比較
解題指導(dǎo)與示例
習(xí)題
第3章 排序
3.1 排序的基本概念
3.2 簡單排序方法
3.2.1 插入排序
3.2.2 起泡排序
3.3 先進排序方法
3.3.1 快速排序
3.3.2 歸并排序
3.3.3 堆排序
3.4 基數(shù)排序
3.5 各種排序方法的綜合比較
解題指導(dǎo)與示例
習(xí)題
第4章 棧和隊列
4.1 棧
4.1.1 棧的結(jié)構(gòu)特點和操作
4.1.2 棧的表示和操作的實現(xiàn)
4.2 棧的應(yīng)用舉例
4.3 隊列
4.3.1 隊列的結(jié)構(gòu)特點和操作
4.3.2 隊列的表示和操作的實現(xiàn)
4.4 隊列應(yīng)用舉例
解題指導(dǎo)與示例
習(xí)題
第5章 串和數(shù)組
5.1 串的定義和操作
5.2 串的表示和實現(xiàn)
5.2.1 定長順序存儲表示
5.2.2 堆分配存儲表示
5.2.3 塊鏈存儲表示
5.3 正文模式匹配
5.4 正文編輯--串操作應(yīng)用舉例
5.5 數(shù)組
5.5.1 數(shù)組的定義和操作
5.5.2 數(shù)組的順序表示和實現(xiàn)
5.5.3 數(shù)組的應(yīng)用
5.6 矩陣的壓縮存儲
5.6.1 特殊形狀矩陣的存儲表示
5.6.2 隨機稀疏矩陣的存儲壓縮
解題指導(dǎo)與示例
習(xí)題
第6章 二叉樹和樹
6.1 二叉樹
6.1.1 二叉樹的定義和基本術(shù)語
6.1.2 二叉樹的幾個基本性質(zhì)
6.1.3 二叉樹的存儲結(jié)構(gòu)
6.2 二叉樹遍歷
6.2.1 問題的提出
6.2.2 遍歷算法描述
6.2.3 二叉樹遍歷應(yīng)用舉例
6.2.4 線索二叉樹
6.3 樹和森林
6.3.1 樹和森林的定義
6.3.2 樹和森林的存儲結(jié)構(gòu)
6.3.3 樹和森林的遍歷
6.4 樹的應(yīng)用
6.4.1 堆排序的實現(xiàn)
6.4.2 二叉排序樹
6.4.3 赫夫曼樹及其應(yīng)用
解題指導(dǎo)與示例
習(xí)題
第7章 圖和廣義表
7.1 圖的定義和術(shù)語
7.2 圖的存儲結(jié)構(gòu)
7.2.1 圖的數(shù)組(鄰接矩陣)存儲表示
7.2.2 圖的鄰接表存儲表示
7.3 圖的遍歷
7.3.1 深度優(yōu)先搜索遍歷圖
7.3.2 廣度優(yōu)先搜索遍歷圖
7.4 連通網(wǎng)的最小生成樹
7.5 單源最短路徑
7.6 拓?fù)渑判?br />7.7 關(guān)鍵路徑
7.8 廣義表
7.8.1 廣義表的定義
7.8.2 廣義表的存儲結(jié)構(gòu)
7.8.3 廣義表的遍歷
解題指導(dǎo)與示例
習(xí)題
第8章 查找表
8.1 靜態(tài)查找表
8.1.1 順序查找
8.1.2 折半查找
8.1.3 分塊查找
8.2 動態(tài)查找表
8.2.1 二叉查找樹
8.2.2 鍵樹
8.3 哈希表及其查找
8.3.1 什么是哈希表
8.3.2 構(gòu)造哈希函數(shù)的幾種方法
8.3.3 處理沖突的方法和建表示例
8.3.4 哈希表的查找及其性能分析
8.3.5 哈希表的應(yīng)用舉例
解題指導(dǎo)與示例
習(xí)題
第9章 文件
9.1 基本概念
9.1.1 外存儲器簡介
9.1.2 有關(guān)文件的基本概念
9.2 順序文件
9.2.1 存儲在順序存儲器上的文件
9.2.2 存儲在直接存儲器上的文件
9.3 索引文件
9.3.1 B樹
9.3.2 B?+ 樹和索引順序文件
9.4 哈希文件
9.4.1 文件組織方式
9.4.2 文件的操作
9.5 多關(guān)鍵碼文件
9.5.1 倒排文件
9.5.2 索引鏈接文件
解題指導(dǎo)與示例
習(xí)題
第10章 數(shù)據(jù)結(jié)構(gòu)程序設(shè)計示例
10.1 抽象數(shù)據(jù)類型
10.2 從問題到程序的求解過程
10.2.1 建立數(shù)據(jù)結(jié)構(gòu)模型設(shè)計抽象數(shù)據(jù)類型
10.2.2 算法設(shè)計
10.2.3 實現(xiàn)抽象數(shù)據(jù)類型
10.2.4 編制程序代碼并進行靜態(tài)測試和動態(tài)調(diào)試
10.3 程序的規(guī)范說明
10.4 應(yīng)用示例分析
10.4.1 含并、交和差運算的集合類型
10.4.2 最佳任務(wù)分配方案求解
10.4.3 排隊問題的系統(tǒng)仿真
10.4.4 十進制四則運算計算器
10.4.5 自行車零部件庫的庫存模型
10.4.6 教務(wù)課程計劃的輔助制定
10.4.7 一個小型全文檢索模型
10.4.8 汽車牌照的快速查找
實習(xí)題
實習(xí)一 鏈表的維護與文件形式的保存
實習(xí)二 用回溯法求解“穩(wěn)定婚配”問題
實習(xí)三 以隊列實現(xiàn)的仿真技術(shù)預(yù)測理發(fā)館的經(jīng)營狀況
實習(xí)四 利用樹形結(jié)構(gòu)的搜索算法模擬因特網(wǎng)域名的查詢
實習(xí)五 管道鋪設(shè)施工的最佳方案選擇
實習(xí)六 使用哈希表技術(shù)判別兩個源程序的相似性
附錄 算法一覽表
參考文獻