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