出版時間:2012-1 出版社:清華大學(xué)出版社 作者:熊岳山
內(nèi)容概要
數(shù)據(jù)結(jié)構(gòu)是計算機科學(xué)與技術(shù)、網(wǎng)絡(luò)工程、軟件工程、信息安全等專業(yè)的重要基礎(chǔ)課,是這些專業(yè)的核心課程之一,是一門集技術(shù)性、理論性和實踐性于一體的課程。本書重點介紹抽象數(shù)據(jù)類型、基本數(shù)據(jù)結(jié)構(gòu)、算法性能評價、c++語言描述數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)的應(yīng)用等內(nèi)容,進一步使讀者理解數(shù)據(jù)抽象與面向?qū)ο缶幊虒崿F(xiàn)的關(guān)系,提高使用計算機解決實際問題的能力。
本書內(nèi)容包括基本數(shù)據(jù)類型、抽象數(shù)據(jù)類型、算法效率分析、順序表、鏈表、樹和二叉樹、圖、多維數(shù)組等內(nèi)容。本書結(jié)構(gòu)合理,內(nèi)容豐富,算法理論分析詳細(xì),數(shù)據(jù)結(jié)構(gòu)的算法描述豐富,用c++語言編寫的算法代碼都已調(diào)試通過,便于自學(xué)??勺鳛楦叩仍盒S嬎銠C科學(xué)與技術(shù)、網(wǎng)絡(luò)工程、軟件工程、信息安全等專業(yè)、軍事院校的基礎(chǔ)合訓(xùn)專業(yè)和其他相關(guān)專業(yè)的教材和參考書,也可供從事計算機軟件開發(fā)的科技工作者參考。
書籍目錄
《數(shù)據(jù)結(jié)構(gòu)(c++描述)》
第1章 數(shù)據(jù)結(jié)構(gòu)概述
1.1 基本概念
1.1.1 數(shù)據(jù)、數(shù)據(jù)元素和數(shù)據(jù)對象
1.1.2 數(shù)據(jù)結(jié)構(gòu)
1.2 數(shù)據(jù)結(jié)構(gòu)的分類
1.3 抽象數(shù)據(jù)類型
1.3.1 兩種軟件設(shè)計方法
1.3.2 數(shù)據(jù)類型
1.3.3 抽象數(shù)據(jù)類型
1.4 算法和算法分析
1.4.1 算法的概念
1.4.2 算法分析
習(xí)題
第2章 順序表
2.1 線性表
2.1.1 線性表的抽象數(shù)據(jù)類型表示
2.1.2 線性表的類表示
2.2 數(shù)組
2.2.1 數(shù)組的抽象數(shù)據(jù)類型
2.2.2 數(shù)組元素的插入和刪除
2.2.3 數(shù)組的應(yīng)用
2.3 棧
2.3.1 棧的抽象數(shù)據(jù)類型及其實現(xiàn)
2.3.2 棧的應(yīng)用
2.4 隊列
2.4.1 隊列的抽象數(shù)據(jù)類型及其實現(xiàn)
2.4.2 優(yōu)先級隊列
2.4.3 隊列的應(yīng)用——離散事件驅(qū)動模擬
習(xí)題
第3章 鏈表
3.1 動態(tài)數(shù)據(jù)結(jié)構(gòu)
3.2 單鏈表
3.2.1 基本概念
3.2.2 單鏈表結(jié)點類
3.2.3 單鏈表類
3.2.4 棧的單鏈表實現(xiàn)
3.2.5 鏈?zhǔn)疥犃?br />3.2.6 鏈表的應(yīng)用舉例
3.3 循環(huán)鏈表
3.4 雙鏈表
習(xí)題
第4章 排序
4.1 基本概念
4.2 插入排序
4.2.1 直接插入排序
4.2.2 折半插入排序
4.2.3 shell排序
4.3 選擇排序
4.3.1 直接選擇排序
4.3.2 樹形選擇排序
4.4 交換排序
4.4.1 冒泡排序
4.4.2 快速排序
4.5 分配排序
4.5.1 基本思想
4.5.2 基數(shù)排序
4.6 歸并排序
4.7 外部排序
4.7.1 二路合并排序
4.7.2 多路替代選擇合并排序
4.7.3 最佳合并排序
4.8 排序算法的時間下界
習(xí)題
第5章 查找
5.1 基本概念
5.2 順序查找
5.3 折半查找
5.4 分塊查找
5.5 字符串的模式匹配
5.5.1 樸素的模式匹配算法
5.5.2 kmp匹配算法
5.5.3 算法效率分析
5.6 散列查找
5.6.1 概述
5.6.2 散列函數(shù)
5.6.3 沖突的處理
5.6.4 散列查找的效率
習(xí)題
第6章 樹和二叉樹
6.1 樹的概念
6.2 二叉樹
6.2.1 二叉樹的概念
6.2.2 二叉樹的性質(zhì)
6.2.3 二叉樹的存儲方式
6.2.4 樹(樹林)與二叉樹的相互轉(zhuǎn)換
6.3 樹(樹林)、二叉樹的遍歷
6.3.1 樹(樹林)的遍歷
6.3.2 二叉樹的遍歷
6.4 抽象數(shù)據(jù)類型binarytree以及類binarytree
6.4.1 抽象數(shù)據(jù)類型binarytree
6.4.2 一個完整包含類binarytreenode和類binarytree實現(xiàn)的例子
6.5 二叉樹的遍歷算法
6.5.1 非遞歸(使用棧)的遍歷算法
6.5.2 線索化二叉樹的遍歷,
習(xí)題
第7章 樹形結(jié)構(gòu)的應(yīng)用
7.1 二叉排序稠
7.1.1 二叉排序樹與類binarystree
7.1.2 二叉排序樹的檢索、插入和刪除運算
7.1.3 等概率查找對應(yīng)的最佳二叉排序樹
7.2.平衡的二叉排序樹
7.2.1 平衡的二叉排序樹與類avltree
7.2.2 平衡二叉排序樹的插入和刪除
7.2.3 類avltree與avl樹高度
7.3 b—樹、b+—樹
7.4 2—3樹
7.5 紅黑樹
7.6 huffman最優(yōu)二叉樹
7.6.1 huffman最優(yōu)二叉樹概述
7.6.2 樹編碼
7.7 堆排序
7.8 判定樹
7.9 等價類和并查集
7.9.1 等價類
7.9.2 并查集
7.10 鍵樹
習(xí)題
第8章 圖
8.1 基本概念
8.2 圖的存儲表示
8.2.1 相鄰矩陣表示圖
8.2.2 圖的鄰接表表示
8.2.3 鄰接多重表
8.3 構(gòu)造graph類
8.3.1 基于鄰接表表示的graph類
8.3.2 graph類的實現(xiàn)
8.4 圖的遍歷
8.4.1 深度優(yōu)先遍歷
8.4.2 廣度優(yōu)先遍歷
8.5 最小代價生成樹
8.6 單源最短路徑問題——dijkstra算法
8.7 每一對頂點間的最短路徑問題
8.8 有向無回路圖
8.8.1 dag圖和aov、aoe網(wǎng)
8.8.2 aov網(wǎng)的拓?fù)渑判?br />8.8.3 aoe網(wǎng)的關(guān)鍵路徑
習(xí)題
第9章 多維數(shù)組
9.1 多維數(shù)組的順序存儲
9.2 特殊矩陣的順序存儲
9.3 稀疏矩陣的存儲
9.4 抽象數(shù)據(jù)類型稀疏矩陣與class sparsematrix
習(xí)題
附錄 nodelib.h
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁:插圖:4.5 分配排序4.5.1 基本思想為了幫助理解分配排序的基本思想,先看一個具體問題。有一堆卡片,記載了從1981年1月1日至2000年12月30日之間每天的工作摘要;每張卡片上標(biāo)明了日期(年、月、日),并記載了當(dāng)日的工作內(nèi)容摘要?,F(xiàn)在的問題是,為了查找卡片方便,需要對這一堆卡片進行排序,按年月日的先后順序?qū)⑦@些卡片有序地存放起來,這樣,當(dāng)需要了解某一天的工作概況時,可以非常方便地查找到所需要的卡片。解決這個問題有兩種具體方法。(1)先將所有卡片按年份分成大組,第一大組中是1981年的卡片,第二大組中是1982年的卡片,最后一個大組中是2000年的卡片;然后對分在同一大組中的所有卡片按月份分成小組,每一大組中的第一小組是1月份的卡片,第二小組是2月份的卡片,第十二小組是12月份的卡片;再對每一小組中的卡片按日期由小到大的順序進行排序;最后,將所有排序后的各組卡片依次收集起來,最上面的是第一大組中第一小組的卡片,緊接著是第一大組中第二小組的卡片,以此類推,最下面的卡片是最后一個大組中的第十二組卡片。(2)先將所有卡片按日期分成31個組,第一組中是日期為1號的卡片,第二組中是日期為2號的卡片.第三十一組是日期為31號的卡片,然后將所有卡片依次收集起來,第一組在最上面,第三十一組在最下面;對收集起來的全部卡片,再按月份依次分到12個組內(nèi),每組內(nèi)的卡片保持在本次收集起來后未分組前的相對先后關(guān)系,第一組是1月份的卡片,第二組是2月份的卡片,最后一組是12月份的卡片,然后又將所有卡片依次收集起來,第一組在最上面,第十二組在最下面;最后,將所有卡片按年份分到20個組,同樣地,每組內(nèi)的卡片保持在本次收集起來后未分組前的相對先后關(guān)系,第一組是1981年的卡片,第二組是1982年的卡片,第二十組是2000年的卡片,然后將所有卡片收集起來,第一組在最上面,緊接著是第二小組的卡片,最下面是第二十組卡片。顯然,這兩種方法都涉及一個先分配后收集的過程。
編輯推薦
《數(shù)據(jù)結(jié)構(gòu)(C++描述)》是重點大學(xué)計算機專業(yè)系列教材之一。
圖書封面
評論、評分、閱讀與下載
數(shù)據(jù)結(jié)構(gòu) PDF格式下載