數(shù)據(jù)結(jié)構(gòu)(Java語(yǔ)言版)
定 價(jià):25 元
叢書(shū)名:普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材.高職高專計(jì)算機(jī)系列
- 作者:王學(xué)軍 主編
- 出版時(shí)間:2008/8/1
- ISBN:9787115185778
- 出 版 社:人民郵電出版社
- 中圖法分類(lèi):H31
- 頁(yè)碼:243
- 紙張:膠版紙
- 版次:1
- 開(kāi)本:16開(kāi)
本書(shū)共分10章,重點(diǎn)介紹3種基本數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用,主要內(nèi)容包括緒論、Java語(yǔ)言基礎(chǔ)知識(shí)、線性表、棧和隊(duì)列、數(shù)組和廣義表、串、樹(shù)與二叉樹(shù)、圖、查找和排序等。本書(shū)采用Java語(yǔ)言描述數(shù)據(jù)結(jié)構(gòu)中的算法,每章配有一定數(shù)量的具有完整程序的實(shí)例,并在最后提供難易適中、與所講理論知識(shí)相配套的習(xí)題,幫助讀者學(xué)習(xí)和理解理論知識(shí)。
本書(shū)面向高等職業(yè)院校學(xué)生,語(yǔ)言通俗易懂,每章都由實(shí)例引入,理論和實(shí)踐緊密結(jié)合。全書(shū)重點(diǎn)突出基本理論和基本算法的實(shí)現(xiàn)過(guò)程,強(qiáng)調(diào)實(shí)踐性和實(shí)用性。另外本書(shū)配有電子教案和習(xí)題解答,可從人民郵電出版社的網(wǎng)站(www.ptpress.com.cn)下載。
本書(shū)可作為高職高專院校計(jì)算機(jī)及相關(guān)專業(yè)“數(shù)據(jù)結(jié)構(gòu)”課程的教材,也可作為各類(lèi)計(jì)算機(jī)培訓(xùn)班的教材。
教材編寫(xiě)思路:本書(shū)重點(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)研究的主要問(wèn)題
1.3 算法及描述
1.3.1 算法與算法特性
1.3.2 算法表示
1.4 算法效率分析
習(xí)題
第2章 Java語(yǔ)言基礎(chǔ)知識(shí)
2.1 實(shí)例引入
2.2 Java語(yǔ)言概述
2.3 面向?qū)ο蟪绦蛟O(shè)計(jì)簡(jiǎn)述 第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)研究的主要問(wèn)題
1.3 算法及描述
1.3.1 算法與算法特性
1.3.2 算法表示
1.4 算法效率分析
習(xí)題
第2章 Java語(yǔ)言基礎(chǔ)知識(shí)
2.1 實(shí)例引入
2.2 Java語(yǔ)言概述
2.3 面向?qū)ο蟪绦蛟O(shè)計(jì)簡(jiǎn)述
2.3.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念
2.3.2 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征
2.4 Java語(yǔ)言基礎(chǔ)知識(shí)
2.4.1 數(shù)據(jù)類(lèi)型
2.4.2 運(yùn)算符
2.4.3 流程控制
2.4.4 數(shù)組
2.4.5 類(lèi)與對(duì)象
2.4.6 類(lèi)的封裝性
2.4.7 類(lèi)的繼承性
2.4.8 類(lèi)的多態(tài)性
2.4.9 抽象類(lèi)和內(nèi)部類(lèi)
2.4.10 接口
2.4.11 包
2.4.12 異常處理
2.4.13 Java標(biāo)準(zhǔn)數(shù)據(jù)流
2.5 Java語(yǔ)言中的“指針”實(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 枚舉類(lèi)型
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 鏈表的分類(lèi)
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 棧的操作過(guò)程
4.2.4 棧的存儲(chǔ)結(jié)構(gòu)
4.3 用數(shù)組實(shí)現(xiàn)順序棧及操作
4.4 用類(lèi)實(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 用類(lèi)實(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 通過(guò)String類(lèi)處理串
6.3.2 通過(guò)StringBuffer類(lèi)處理串
6.4 串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
6.4.1 鏈串的實(shí)現(xiàn)
6.4.2 鏈串基本算法
習(xí)題
第7章 樹(shù)與二叉樹(shù)
7.1 實(shí)例引入
7.2 樹(shù)
7.2.1 樹(shù)的定義
7.2.2 樹(shù)的表示方法
7.2.3 樹(shù)的抽象數(shù)據(jù)類(lèi)型
7.2.4 樹(shù)的存儲(chǔ)結(jié)構(gòu)
7.3 二叉樹(shù)
7.3.1 二叉樹(shù)的定義
7.3.2 二叉樹(shù)的性質(zhì)
7.3.3 二叉樹(shù)的抽象數(shù)據(jù)類(lèi)型
7.3.4 二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
7.4 二叉樹(shù)的節(jié)點(diǎn)類(lèi)及二叉樹(shù)類(lèi)
7.4.1 二叉樹(shù)節(jié)點(diǎn)類(lèi)
7.4.2 二叉樹(shù)類(lèi)
7.5 二叉樹(shù)的遍歷
7.5.1 二叉樹(shù)遍歷算法
7.5.2 二叉樹(shù)遍歷算法的實(shí)現(xiàn)
7.5.3 非遞歸的二叉樹(shù)遍歷算法
7.5.4 二叉樹(shù)遍歷的應(yīng)用
7.6 線索二叉樹(shù)
7.6.1 線索二叉樹(shù)的定義
7.6.2 線索二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
7.6.3 遍歷線索二叉樹(shù)
7.6.4 構(gòu)造中序線索二叉樹(shù)
7.7 樹(shù)和森林
7.7.1 樹(shù)、森林與二叉樹(shù)的轉(zhuǎn)換
7.7.2 樹(shù)和森林的遍歷
7.8 樹(shù)的應(yīng)用
7.8.1 二叉排序樹(shù)
7.8.2 哈夫曼樹(shù)和哈夫曼編碼
7.8.3 判定樹(shù)
習(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 生成樹(shù)和最小生成樹(shù)
8.5.1 生成樹(shù)
8.5.2 Kruskal算法
8.5.3 Prim算法
8.6 最短路徑問(wèn)題
8.7 拓?fù)渑判?
8.7.1 有向無(wú)環(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ù)語(yǔ)
9.2.1 查找的概念
9.2.2 查找方法
9.3 順序查找法
9.4 折半查找法
9.5 二叉排序樹(shù)法
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 排序的分類(lèi)
10.3.1 按照存儲(chǔ)交換分類(lèi)
10.3.2 按照內(nèi)部排序的過(guò)程分類(lèi)
10.3.3 按照排序的穩(wěn)定性分類(lèi)
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ì)算方法以及近似表示方法,并掌握通過(guò)時(shí)間復(fù)雜度判斷算法優(yōu)劣的方法。
通過(guò)前面的分析,每個(gè)算法都可以用多種方式實(shí)現(xiàn),但是實(shí)現(xiàn)算法的效率是不一定相同的。每個(gè)程序執(zhí)行所花費(fèi)的時(shí)間,稱為該程序的時(shí)間復(fù)雜度,如果忽略語(yǔ)句間的執(zhí)行時(shí)間差別,一般用該程序每條語(yǔ)句的執(zhí)行次數(shù)作為該程序的時(shí)問(wèn)復(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ī)器的性能、算法語(yǔ)言的選取、編譯程序的效率、算法的選擇,以及問(wèn)題本身的因素(如問(wèn)題的復(fù)雜程度、問(wèn)題本身的規(guī)模等)。
在針對(duì)實(shí)際問(wèn)題時(shí),尤其是考慮規(guī)模比較大的問(wèn)題時(shí),一般使用漸進(jìn)式表示法來(lái)判別算法的時(shí)間復(fù)雜度。為了使程序員更好地掌握算法本身的特性,通常的做法是:在不考慮不確定情況的前提下,以算法中簡(jiǎn)單操作重復(fù)執(zhí)行的次數(shù)作為算法的時(shí)間復(fù)雜度的衡量標(biāo)準(zhǔn),即主要考慮問(wèn)題的規(guī)模,而不考慮某些單個(gè)步驟之間的時(shí)間差異。因此,一個(gè)特定算法的運(yùn)行時(shí)問(wèn)長(zhǎng)短更多地依賴于問(wèn)題的規(guī)模n,或者說(shuō)它是問(wèn)題規(guī)模n的函數(shù)f(n),因此,引入漸進(jìn)時(shí)間復(fù)雜度在數(shù)量上估計(jì)一個(gè)算法的執(zhí)行時(shí)間,也能夠達(dá)到分析算法的目的。算法時(shí)間的度量記做T(n)=O(f(n))
……