數(shù)據(jù)結(jié)構(gòu)(Java語言版)
定 價(jià):25 元
叢書名:普通高等教育“十一五”國家級(jí)規(guī)劃教材.高職高專計(jì)算機(jī)系列
- 作者:王學(xué)軍 主編
- 出版時(shí)間:2008/8/1
- ISBN:9787115185778
- 出 版 社:人民郵電出版社
- 中圖法分類:H31
- 頁碼:243
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書共分10章,重點(diǎn)介紹3種基本數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用,主要內(nèi)容包括緒論、Java語言基礎(chǔ)知識(shí)、線性表、棧和隊(duì)列、數(shù)組和廣義表、串、樹與二叉樹、圖、查找和排序等。本書采用Java語言描述數(shù)據(jù)結(jié)構(gòu)中的算法,每章配有一定數(shù)量的具有完整程序的實(shí)例,并在最后提供難易適中、與所講理論知識(shí)相配套的習(xí)題,幫助讀者學(xué)習(xí)和理解理論知識(shí)。
本書面向高等職業(yè)院校學(xué)生,語言通俗易懂,每章都由實(shí)例引入,理論和實(shí)踐緊密結(jié)合。全書重點(diǎn)突出基本理論和基本算法的實(shí)現(xiàn)過程,強(qiáng)調(diào)實(shí)踐性和實(shí)用性。另外本書配有電子教案和習(xí)題解答,可從人民郵電出版社的網(wǎng)站(www.ptpress.com.cn)下載。
本書可作為高職高專院校計(jì)算機(jī)及相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程的教材,也可作為各類計(jì)算機(jī)培訓(xùn)班的教材。
教材編寫思路:本書重點(diǎn)培養(yǎng)高職高專院校計(jì)算機(jī)及相關(guān)專業(yè)學(xué)生應(yīng)具備的數(shù)據(jù)結(jié)構(gòu)應(yīng)用能力。理論知識(shí)部分以夠用為主,強(qiáng)調(diào)理論和實(shí)踐緊密結(jié)合,重點(diǎn)突出實(shí)踐和實(shí)用性。每章均由實(shí)例引入,體現(xiàn)了“以就業(yè)為導(dǎo)向”的職業(yè)教育理念;采用“以應(yīng)用實(shí)例鞏固理論知識(shí)”的內(nèi)容編排結(jié)構(gòu),突出了“以技能培養(yǎng)為目標(biāo)”的職業(yè)教育思想。 適用教學(xué)對(duì)象:適合作為高職高專院校計(jì)算機(jī)及相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程的教材。 輔助教學(xué)資源:教學(xué)課件,模擬試卷,習(xí)題答案。
第1章 緒論
1.1 數(shù)據(jù)結(jié)構(gòu)的3種基本結(jié)構(gòu)
1.1.1 線性結(jié)構(gòu)
1.1.2 層次結(jié)構(gòu)
1.1.3 網(wǎng)狀結(jié)構(gòu)
1.2 數(shù)據(jù)結(jié)構(gòu)研究的主要問題
1.3 算法及描述
1.3.1 算法與算法特性
1.3.2 算法表示
1.4 算法效率分析
習(xí)題
第2章 Java語言基礎(chǔ)知識(shí)
2.1 實(shí)例引入
2.2 Java語言概述
2.3 面向?qū)ο蟪绦蛟O(shè)計(jì)簡述 第1章 緒論
1.1 數(shù)據(jù)結(jié)構(gòu)的3種基本結(jié)構(gòu)
1.1.1 線性結(jié)構(gòu)
1.1.2 層次結(jié)構(gòu)
1.1.3 網(wǎng)狀結(jié)構(gòu)
1.2 數(shù)據(jù)結(jié)構(gòu)研究的主要問題
1.3 算法及描述
1.3.1 算法與算法特性
1.3.2 算法表示
1.4 算法效率分析
習(xí)題
第2章 Java語言基礎(chǔ)知識(shí)
2.1 實(shí)例引入
2.2 Java語言概述
2.3 面向?qū)ο蟪绦蛟O(shè)計(jì)簡述
2.3.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念
2.3.2 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征
2.4 Java語言基礎(chǔ)知識(shí)
2.4.1 數(shù)據(jù)類型
2.4.2 運(yùn)算符
2.4.3 流程控制
2.4.4 數(shù)組
2.4.5 類與對(duì)象
2.4.6 類的封裝性
2.4.7 類的繼承性
2.4.8 類的多態(tài)性
2.4.9 抽象類和內(nèi)部類
2.4.10 接口
2.4.11 包
2.4.12 異常處理
2.4.13 Java標(biāo)準(zhǔn)數(shù)據(jù)流
2.5 Java語言中的“指針”實(shí)現(xiàn)
2.6 JDK1.5新增特性
2.6.1 泛型
2.6.2 增強(qiáng)的集合遍歷結(jié)構(gòu)
2.6.3 自動(dòng)裝箱/拆箱
2.6.4 枚舉類型
2.6.5 靜態(tài)import
2.6.6 從終端讀取數(shù)據(jù)
2.6.7 格式化輸出
2.6.8 可變參數(shù)
習(xí)題
第3章 線性表
3.1 實(shí)例引入
3.2 線性表的概述
3.2.1 線性表的概念
3.2.2 線性表的存儲(chǔ)結(jié)構(gòu)及操作
3.3 順序表的基本操作及實(shí)現(xiàn)
3.3.1 順序表的概述
3.3.2 順序表的基本操作及實(shí)現(xiàn)
3.4 鏈表的基本操作及實(shí)現(xiàn)
3.4.1 鏈表
3.4.2 鏈表的分類
3.4.3 單鏈表的基本運(yùn)算及實(shí)現(xiàn)
3.4.4 其他形式的鏈表的相關(guān)運(yùn)算
3.4.5 算法實(shí)例
3.5 線性表的應(yīng)用
3.5.1 順序表的連接
3.5.2 字符串的逆轉(zhuǎn)算法
習(xí)題
第4章 棧和隊(duì)列
4.1 實(shí)例引入
4.2 棧的相關(guān)概述
4.2.1 棧的定義
4.2.2 棧的相關(guān)概念
4.2.3 棧的操作過程
4.2.4 棧的存儲(chǔ)結(jié)構(gòu)
4.3 用數(shù)組實(shí)現(xiàn)順序棧及操作
4.4 用類實(shí)現(xiàn)鏈?zhǔn)綏<跋鄳?yīng)操作
4.5 隊(duì)列的相關(guān)概述
4.5.1 隊(duì)列的定義
4.5.2 隊(duì)列的相關(guān)概念
4.5.3 隊(duì)列的存儲(chǔ)結(jié)構(gòu)
4.6 用數(shù)組實(shí)現(xiàn)順序隊(duì)列及相應(yīng)操作
4.7 用類實(shí)現(xiàn)鏈隊(duì)列及相應(yīng)操作
4.8 棧和隊(duì)列的實(shí)例應(yīng)用
習(xí)題
第5章 數(shù)組和廣義表
5.1 實(shí)例引入
5.2 數(shù)組
5.2.1 數(shù)組的基本概念
5.2.2 一維數(shù)組
5.2.3 二維數(shù)組
5.3 特殊矩陣
5.3.1 對(duì)稱矩陣
5.3.2 三角矩陣
5.3.3 對(duì)角矩陣
5.4 稀疏矩陣
5.5 廣義表
5.5.1 廣義表的概念
5.5.2 廣義表的存儲(chǔ)結(jié)構(gòu)
習(xí)題
第6章 串
6.1 實(shí)例引入
6.2 串的概述
6.3 串的順序存儲(chǔ)結(jié)構(gòu)
6.3.1 通過String類處理串
6.3.2 通過StringBuffer類處理串
6.4 串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
6.4.1 鏈串的實(shí)現(xiàn)
6.4.2 鏈串基本算法
習(xí)題
第7章 樹與二叉樹
7.1 實(shí)例引入
7.2 樹
7.2.1 樹的定義
7.2.2 樹的表示方法
7.2.3 樹的抽象數(shù)據(jù)類型
7.2.4 樹的存儲(chǔ)結(jié)構(gòu)
7.3 二叉樹
7.3.1 二叉樹的定義
7.3.2 二叉樹的性質(zhì)
7.3.3 二叉樹的抽象數(shù)據(jù)類型
7.3.4 二叉樹的存儲(chǔ)結(jié)構(gòu)
7.4 二叉樹的節(jié)點(diǎn)類及二叉樹類
7.4.1 二叉樹節(jié)點(diǎn)類
7.4.2 二叉樹類
7.5 二叉樹的遍歷
7.5.1 二叉樹遍歷算法
7.5.2 二叉樹遍歷算法的實(shí)現(xiàn)
7.5.3 非遞歸的二叉樹遍歷算法
7.5.4 二叉樹遍歷的應(yīng)用
7.6 線索二叉樹
7.6.1 線索二叉樹的定義
7.6.2 線索二叉樹的存儲(chǔ)結(jié)構(gòu)
7.6.3 遍歷線索二叉樹
7.6.4 構(gòu)造中序線索二叉樹
7.7 樹和森林
7.7.1 樹、森林與二叉樹的轉(zhuǎn)換
7.7.2 樹和森林的遍歷
7.8 樹的應(yīng)用
7.8.1 二叉排序樹
7.8.2 哈夫曼樹和哈夫曼編碼
7.8.3 判定樹
習(xí)題
第8章 圖
8.1 實(shí)例引入
8.2 圖的基本概念
8.2.1 圖的定義
8.2.2 圖的相關(guān)概念
8.3 圖的存儲(chǔ)結(jié)構(gòu)
8.3.1 鄰接矩陣
8.3.2 鄰接表
8.4 圖的遍歷
8.4.1 深度優(yōu)先搜索遍歷
8.4.2 廣度優(yōu)先搜索遍歷
8.5 生成樹和最小生成樹
8.5.1 生成樹
8.5.2 Kruskal算法
8.5.3 Prim算法
8.6 最短路徑問題
8.7 拓?fù)渑判?
8.7.1 有向無環(huán)圖
8.7.2 拓?fù)渑判?
8.8 AOE網(wǎng)與關(guān)鍵路徑
8.8.1 AOE網(wǎng)
8.8.2 關(guān)鍵路徑
8.9 綜合示例
習(xí)題
第9章 查找
9.1 實(shí)例引入
9.2 基本概念與術(shù)語
9.2.1 查找的概念
9.2.2 查找方法
9.3 順序查找法
9.4 折半查找法
9.5 二叉排序樹法
9.6 哈希查找法
9.6.1 哈希查找概念
9.6.2 哈希函數(shù)
9.6.3 沖突解決方法
9.7 應(yīng)用實(shí)例
習(xí)題
第10章 排序
10.1 實(shí)例引入
10.2 排序的概念
10.3 排序的分類
10.3.1 按照存儲(chǔ)交換分類
10.3.2 按照內(nèi)部排序的過程分類
10.3.3 按照排序的穩(wěn)定性分類
10.4 插入排序
10.4.1 直接插入排序
10.4.2 希爾排序
10.5 交換排序
10.5.1 冒泡排序
10.5.2 快速排序
10.6 選擇排序
10.6.1 直接選擇排序
10.6.2 堆排序
10.7 其他排序
10.7.1 歸并排序
10.7.2 基數(shù)排序
10.8 排序的工程應(yīng)用舉例
習(xí)題
參考文獻(xiàn)
第1章 緒論
1.4 算法效率分析
【學(xué)習(xí)任務(wù)】了解算法的實(shí)效性分析方法,重點(diǎn)了解時(shí)間復(fù)雜度的計(jì)算方法以及近似表示方法,并掌握通過時(shí)間復(fù)雜度判斷算法優(yōu)劣的方法。
通過前面的分析,每個(gè)算法都可以用多種方式實(shí)現(xiàn),但是實(shí)現(xiàn)算法的效率是不一定相同的。每個(gè)程序執(zhí)行所花費(fèi)的時(shí)間,稱為該程序的時(shí)間復(fù)雜度,如果忽略語句間的執(zhí)行時(shí)間差別,一般用該程序每條語句的執(zhí)行次數(shù)作為該程序的時(shí)問復(fù)雜度進(jìn)行判斷。對(duì)時(shí)間復(fù)雜度的判斷,是斷定某程序(或算法)效率是否高的標(biāo)準(zhǔn)之一。
一個(gè)算法的時(shí)間復(fù)雜度(Time Complexity)是指在計(jì)算機(jī)上運(yùn)行該算法(或程序)所需要的時(shí)間。實(shí)際上,每個(gè)程序員都知道,算法執(zhí)行的時(shí)間和很多因素都有關(guān)系,例如,機(jī)器的性能、算法語言的選取、編譯程序的效率、算法的選擇,以及問題本身的因素(如問題的復(fù)雜程度、問題本身的規(guī)模等)。
在針對(duì)實(shí)際問題時(shí),尤其是考慮規(guī)模比較大的問題時(shí),一般使用漸進(jìn)式表示法來判別算法的時(shí)間復(fù)雜度。為了使程序員更好地掌握算法本身的特性,通常的做法是:在不考慮不確定情況的前提下,以算法中簡單操作重復(fù)執(zhí)行的次數(shù)作為算法的時(shí)間復(fù)雜度的衡量標(biāo)準(zhǔn),即主要考慮問題的規(guī)模,而不考慮某些單個(gè)步驟之間的時(shí)間差異。因此,一個(gè)特定算法的運(yùn)行時(shí)問長短更多地依賴于問題的規(guī)模n,或者說它是問題規(guī)模n的函數(shù)f(n),因此,引入漸進(jìn)時(shí)間復(fù)雜度在數(shù)量上估計(jì)一個(gè)算法的執(zhí)行時(shí)間,也能夠達(dá)到分析算法的目的。算法時(shí)間的度量記做T(n)=O(f(n))
……