出版時間:2002-7-1 出版社:科學(xué)出版社 作者:繆淮扣,顧訓(xùn)穰,沈俊
Tag標簽:無
前言
作為計算機程序組成部分的數(shù)據(jù)結(jié)構(gòu)和算法的研究,一直受到計算機領(lǐng)域工作者的高度重視。數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)教學(xué)計劃中的一門核心課程,也是信息管理、通信電子、自動控制等與計算機技術(shù)關(guān)系密切的專業(yè)的一門基礎(chǔ)課程。要從事與計算機科學(xué)與技術(shù)相關(guān)的工作,尤其是計算機應(yīng)用領(lǐng)域的開發(fā)和研制工作,必須具備堅實的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)目的是使學(xué)生學(xué)會分析研究計算機所要加工處理的數(shù)據(jù)的特征,掌握組織數(shù)據(jù)、存儲數(shù)據(jù)和處理數(shù)據(jù)的基本方法,并加強在實際應(yīng)用中選擇合適的數(shù)據(jù)結(jié)構(gòu)和相應(yīng)算法的訓(xùn)練。面向?qū)ο蠹夹g(shù)是軟件工程領(lǐng)域中的重要技術(shù),它不僅是一種程序設(shè)汁方法,更重要的是一種對真實世界的抽象思維方式。目前,面向?qū)ο蟮能浖治龊驮O(shè)計技術(shù)已發(fā)展成為軟件開發(fā)的主流方法。為了適應(yīng)軟件開發(fā)方法與技術(shù)的發(fā)展以及應(yīng)用領(lǐng)域的要求,就有必要改進和充實數(shù)據(jù)結(jié)構(gòu)的教學(xué)內(nèi)容。因此,用面向?qū)ο蟮挠^點來描述數(shù)據(jù)結(jié)構(gòu)就成為一種既順理成章又緊迫的選擇。用面向?qū)ο蟮挠^點來描述數(shù)據(jù)結(jié)構(gòu),要涉及到面向?qū)ο蟪绦蛟O(shè)計語言的選用問題。目前被廣泛采用作為程序設(shè)計語言教學(xué)的是c語言,c++是以c語言為基礎(chǔ)、使用比較普遍的面向?qū)ο蟮某绦蛟O(shè)計語言。因此本書采用C++作為數(shù)據(jù)結(jié)構(gòu)的描述語言。數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容豐富,學(xué)習(xí)量大;隱藏在各部分內(nèi)容中的方法和技術(shù)多,貫穿于全書的動態(tài)鏈表存儲結(jié)構(gòu)和遞歸技術(shù)令不少初學(xué)者望而生畏。本書的編寫者長期以來從事數(shù)據(jù)結(jié)構(gòu)課程的教學(xué),對該課程的教學(xué)特點和難點有比較深切的體會。作者在認真總結(jié)二十多年講授“數(shù)據(jù)結(jié)構(gòu)”課程的基礎(chǔ)上,參考了美國ACM/IEEE-cs公布的“計算2001教程”,吸收了國內(nèi)外各種數(shù)據(jù)結(jié)構(gòu)教材的優(yōu)點,對多年來形成的數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)內(nèi)容進行了合理的剪裁,既強調(diào)了數(shù)據(jù)結(jié)構(gòu)的原理和方法,又注重了其實踐性,使之適應(yīng)于現(xiàn)代大學(xué)生的學(xué)習(xí)特點和要求。本書的一個重要特點就是將程序設(shè)計的基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)的方法盡可能地結(jié)合起來。第1、2章介紹C++語言時盡可能給出比較完整的程序,使學(xué)生能對C++語言有比較全面和深入的了解,也便于上機實習(xí),從而為數(shù)據(jù)結(jié)構(gòu)課程的實驗建立良好的基礎(chǔ)。全書共分9章,第1、2章介紹了數(shù)據(jù)結(jié)構(gòu)、算法及其復(fù)雜度的基本概念,對c++作了簡單介紹,并敘述了抽象數(shù)據(jù)類型和面向?qū)ο蟮母拍睢5?~5章介紹了線性結(jié)構(gòu)——線性表、棧、隊列、數(shù)組、廣義表;第6章和第7章介紹了非線性結(jié)構(gòu)——樹和圖;第8章和第9章分別介紹了查找和排序的方法。
內(nèi)容概要
數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)教學(xué)計劃中的一門核心課程,也是信息管理、通信電子、自動控制等與計算機技術(shù)關(guān)系密切的專業(yè)的一門基礎(chǔ)課程。要從事和計算機科學(xué)與技術(shù)相關(guān)的工作,尤其是計算機應(yīng)用領(lǐng)域的開發(fā)和研制工作,必須具備堅實的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)。本書對C++語言作了簡單介紹,敘述了抽象數(shù)據(jù)類型和面向?qū)ο蟮母拍?,介紹了線性表、棧、隊列、數(shù)組、廣義表、樹和圖等數(shù)據(jù)結(jié)構(gòu),并且介紹了查找和排序的方法。全書用C++語言描述并實現(xiàn)了所有數(shù)據(jù)結(jié)構(gòu)的類和程序,并附有習(xí)題,便于教學(xué)。
本書是為高等院校開設(shè)“數(shù)據(jù)結(jié)構(gòu)”課程編寫的教材,可作為計算機專業(yè)本科生教材使用,也可供從事計算機軟件開發(fā)和應(yīng)用的工程技術(shù)人員閱讀、參考。
書籍目錄
1 緒論
1.1 (算法十數(shù)據(jù)結(jié)構(gòu))=程序
1.2 數(shù)據(jù)結(jié)構(gòu)的基本概念
1.2.1 兩個簡單的數(shù)據(jù)結(jié)構(gòu)實例
1.2.2 什么是數(shù)據(jù)結(jié)構(gòu)
1.3 C++語言基礎(chǔ)
1.3.1 程序結(jié)構(gòu)
1.3.2 數(shù)據(jù)聲明和作用域
1.3.3 輸入/輸出
1.3.4 函數(shù)
1.3.5 參數(shù)傳遞
1.3.6 函數(shù)各重載
1.3.7 動態(tài)內(nèi)存分配
1.3.8 結(jié)構(gòu)與聯(lián)合
1.4 算法性能與復(fù)雜度
1.4.1 算法的定義
1.4.2 算法的性能標準
1.4.3 算法的復(fù)雜度
習(xí)題1
2 抽象數(shù)據(jù)類型和C++類
2.1 抽象數(shù)據(jù)類型
2.1.1 從數(shù)據(jù)類型到抽象數(shù)據(jù)類型
2.1.2 封裝和信息隱藏
2.1.3 抽象數(shù)據(jù)類型描述
2.2 類與對象的基本概念
2.2.1 類與對象
2.2.2 消息與合作
2.2.3 多態(tài)性
2.3 面向?qū)ο蟮某绦蛟O(shè)計方法
2.4 C++類與對象
2.5 構(gòu)造函數(shù)和析構(gòu)函數(shù)
2.6 工具函數(shù)
2.7 繼承
2.8 this指針的使用
2.9 虛函數(shù)、多態(tài)性以及動態(tài)聯(lián)編
2.9.1 虛函數(shù)和多態(tài)性
2.9.2 動態(tài)聯(lián)編
2.10 模板類
習(xí)題2
3 線性表
3.1 線性表的定義
3.2 線性表的順序表示
3.2.1 順序表的類定’義
3.2.2 順序表插入、刪除算法的復(fù)雜度分析
3.2.3 順序表的應(yīng)用
3.3 線性表的鏈表表示
3.3.1 單鏈表
3.3.2 單循環(huán)鏈表
3.3.3 雙向循環(huán)鏈表
3.3.4 靜態(tài)鏈表
3.4 多項式抽象數(shù)據(jù)類型
3.4.1 多項式表示
3.4.2 多項式相加
習(xí)題3
4 棧、隊列和遞歸
4.1 棧
4.1.1 順序棧
4.1.2 鏈式棧
4.1.3 表達式的計算
4.2 隊列
4.2.1 循環(huán)隊列
4.2.2 鏈隊列
4.3 遞歸
4.3.1 遞歸的概念
4.3.2 遞歸過程與遞歸工作棧
4.3.3 消除遞歸
4.3.4 迷宮問題
習(xí)題4
5 串、數(shù)組和廣義表
5.1 字符串
5.1.1 字符串的定義、存儲結(jié)構(gòu)和操作
5.1.2 串的操作
5.1.3 常用的C十十字符串函數(shù)
5.1.4 串類及其實現(xiàn)
5.1.5 模式匹配算法
5.2 數(shù)組
5.2.1 C十十中數(shù)組的定義
5.2.2 數(shù)組的抽象數(shù)據(jù)類型表示
5.2.3 數(shù)組的順序存儲結(jié)構(gòu)
5.3 稀疏矩陣
5.3.1 三元組順序表
5.3.2 十字鏈表
5.4 廣義表
5.4.1 廣義表的定義
5.4.2 廣義表的存儲結(jié)構(gòu)
5.4.3 n元多項式的表示
5.4.4 廣義表的遞歸算法
習(xí)題5
6 樹和森林
6.1 樹的概念
6.1.1 樹的定義
6.1.2 樹的術(shù)語
6.1.3 樹的表示形式
6.1.4 樹的基本操作和抽象數(shù)據(jù)類型
6.2 二叉樹
6.2.1 二叉樹的定義
6.2.2 二叉樹的性質(zhì)
6.2.3 二叉樹的基本操作和抽象數(shù)據(jù)類型
6.3 二叉樹的存儲結(jié)構(gòu)
6.3.1 數(shù)組表示法
6.3.2 鏈表表示法
6.3.3 二叉樹的二叉鏈表類聲明
6.4 遍歷二叉樹
6.4.1 前序遍歷
6.4.2 中序遍歷
6.4.3 后序遍歷
6.4.4 層序遍歷
6.5 線索二叉樹
6.5.1 線索二又樹的定義
6.5.2 線索二叉樹的類定義
6.5.3 中序線索二叉樹
6.6 二叉樹的應(yīng)用
6.6.1 堆
6.6.2 哈夫曼樹
6.7 樹和森林
6.7.1 樹的存儲結(jié)構(gòu)
6.7.2 樹、森林和二叉樹的轉(zhuǎn)換
6.7.3 樹的遍歷
6.7.4 森林的遍歷
6.8 等價類及其表示
6.8.1 等價關(guān)系與等價類
6.8.2 并查集
習(xí)題6
7 圖
7.1 圖的基本概念
7.1.1 圖的定義
7.1.2 圖的術(shù)語
7.1.3 圖的基本操作和抽象數(shù)據(jù)類型
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.3.3 連通分量
7.4 最小生成樹
7.4.1 克魯斯卡爾算法
7.4.2 普里姆算法
7.5 最短路徑
7.5.1 弧上權(quán)值為非負情形的單源點最短路徑問題
7.5.2 弧上權(quán)值為任意值的單源點最短路徑問題
7.5.3 所有頂點之間的最短路徑
7.6 活動網(wǎng)絡(luò)
7.6.1 用頂點表示活動的網(wǎng)絡(luò)
7.6.2 用邊表示活動的網(wǎng)絡(luò)(AOE網(wǎng)絡(luò))
習(xí)題7
8 查找
8.1 基本概念
8.2 順序表
8.2.1 順序表的查找
8.2.2 有序表的折半查找
8.3 索引順序表
8.3.1 索引順序表
8.3.2 倒排表
8.4 二叉排序樹
8.4.1 二叉排序樹定義
8.4.2 二叉排序樹上的查找
8.4.3 二叉排序樹的插入
8.4.4 二叉排序樹的刪除
8.4.5 二叉排序樹查找的性能分析
8.5 平衡二叉樹
8.5.1 平衡二叉樹的定義
8.5.2 平衡旋轉(zhuǎn)
8.5.3 平衡二叉樹的插入和刪除
8.6 B-樹
8.6.1 動態(tài)的m路查找樹
8.6.2 B-樹
8.6.3 B-樹的插入
8.6.4 B-樹的刪除
8.6.5 B+樹
8.7 散列表查找
8.7.1 散列表的基本概念
8.7.2 散列函數(shù)
8.7.3 處理溢出的閉散列方法
8.7.4 處理溢出的開散列方法——鏈地址法
8.7.5 散列表分析
習(xí)題8
9 排序
9.1 基礎(chǔ)知識
9.1.1 基本概念
9.1.2 排序表的抽象數(shù)據(jù)類型描述和類定義
9.2 交換排序
9.2.1 冒泡排序
9.2.2 快速排序
9.3 插入排序
9.3.1 直接插入排序
9.3.2 折半插入排序
9.3.3 希爾排序
9.4 選擇排序
9.4.1 直接選擇排序
9.4.2 錦標賽排序
9.4.3 堆排序
9.5 歸并排序
9.5.1 歸并
9.5.2 兩路歸并排序
9.5.3 遞歸的歸并排序
9.6 基數(shù)排序
9.6.1 多關(guān)鍵字排序
9.6.2 鏈式基數(shù)排序
9.7 各種排序方法的選擇和使用
習(xí)題9
主要參考文獻
章節(jié)摘錄
插圖:1.2 數(shù)據(jù)結(jié)構(gòu)的基本概念計算機科學(xué)是一門研究信息表示和處理的科學(xué),人們是用程序來處理信息的。信息的表示和組織直接關(guān)系到處理信息的程序的效率。由于許多系統(tǒng)軟件和應(yīng)用軟件的程序規(guī)模很大,結(jié)構(gòu)又相當復(fù)雜,因而必須對程序設(shè)計方法進行系統(tǒng)的研究。這不僅涉及到研究程序結(jié)構(gòu)和算法,同時也涉及到研究程序加工的對象。用計算機解題,首先應(yīng)從具體問題抽象出一個適當?shù)臄?shù)學(xué)模型,然后才能設(shè)計算法和編制程序。而構(gòu)建數(shù)學(xué)模型的過程就是分析和概要設(shè)計的過程,要從對問題的分析中提取操作的對象,并找出這些操作對象之間的關(guān)系,然后用數(shù)學(xué)的語言加以描述。例如,許多工程中的數(shù)值計算問題采用的數(shù)學(xué)模型是線性方程組或微分方程。但更多的非數(shù)值計算問題是難以用數(shù)學(xué)方程來描述的。1.2.1 兩個簡單的數(shù)據(jù)結(jié)構(gòu)實例為了獲得對數(shù)據(jù)結(jié)構(gòu)的感性認識,我們先來看兩個簡單的例子?!纠?-1】人事登記表。在任何一個單位,人事登記表是人事部門關(guān)于職工信息的必不可少的表格。例如,某個單位人事部門的工作人員想要查找當年退休的人員,或要查找基本工資在800元以下的人員,如果該單位有幾千名職工,那么由人工來查找顯然是很費時的;但如果在計算機中有一個關(guān)于職工信息的登記表,由有關(guān)的檢索系統(tǒng)來查找,那是很方便的。表1-1所示就是一張簡單的人事登記表。
編輯推薦
《數(shù)據(jù)結(jié)構(gòu)(C++實現(xiàn))》為科學(xué)出版社出版發(fā)行。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載