數(shù)據(jù)結(jié)構

出版時間:2008-12  出版社:科學出版社  作者:王曉東  頁數(shù):278  字數(shù):403000  

前言

  隨著世界經(jīng)濟的多元化發(fā)展,以計算機為基礎的信息技術迅速擴展到各個領域,社會和人類對信息的依賴迅速增長,計算機技術和基于計算機的應用技術已經(jīng)成為信息社會的重要基礎設施。人們已明顯意識到計算(computing)所覆蓋的領域在不斷迅速擴展。高等教育中計算機學科的培養(yǎng)目標、教學計劃和課程設置也隨著領域的變化在不斷地調(diào)整、鞏固和完善?! ∮嬎銠C科學是一種創(chuàng)造性思維活動,其教育必須面向設計?!皵?shù)據(jù)結(jié)構”正是一門面向設計,且處于計算機學科核心地位的技術基礎和主干必修課,是計算學科的9個主科目之一。它不僅是計算機科學教育后續(xù)課程的理論基礎,而且還廣泛地用于新興的技術和研究領域。軟件工程專業(yè)的學生更要注重抽象,以及抽象描述下的構造思想和方法。現(xiàn)代計算技術的迅速更新與不斷深入要求計算機科學與技術專業(yè)人才應該具有4種基本專業(yè)能力,即計算思維能力、數(shù)據(jù)結(jié)構與算法設計能力、程序設計和實現(xiàn)能力,以及計算機軟硬件系統(tǒng)的認知、分析、設計與應用能力?!皵?shù)據(jù)結(jié)構”作為整個計算學科本科教育的核心課程,著重于培養(yǎng)學生的數(shù)據(jù)結(jié)構與算法設計能力、程序設計和實現(xiàn)能力。通過對數(shù)據(jù)結(jié)構設計方法的系統(tǒng)學習與研究,理解和掌握設計和應用數(shù)據(jù)結(jié)構的主要方法,培養(yǎng)對算法的計算復雜性進行正確分析的能力,為獨立地設計算法和對給定算法進行復雜性分析奠定堅實的理論基礎。這些能力對從事計算機系統(tǒng)結(jié)構、系統(tǒng)軟件和應用軟件研究與開發(fā)的科學工作者是非常重要和必不可少的。

內(nèi)容概要

王曉東編著的《數(shù)據(jù)結(jié)構(C++語言版)》以ACM和IEEE/CS
Computing Curricula
2005課程體系,以及教育部計算機科學與技術教學指導委員會發(fā)布的“高等學校計算機科學與技術本科專業(yè)規(guī)范”中制定的關于數(shù)據(jù)結(jié)構和算法設計與分析的知識結(jié)構和體系為依據(jù),以基本數(shù)據(jù)結(jié)構和抽象數(shù)據(jù)類型為知識單元編寫而成。全書共分12章,涵蓋cc2005課程體系中有關算法與數(shù)據(jù)結(jié)構的知識結(jié)構和體系的重要內(nèi)容,包括數(shù)據(jù)結(jié)構與算法概論,線性表,棧,隊列,集合,排序與選擇,樹,二叉搜索樹,堆與優(yōu)先隊列,散列,并查集,圖與相關算法。
全書采用面向?qū)ο蟮腃++語言作為描述語言,內(nèi)容豐富,敘述簡明,理論與實踐并重,每章設計有應用舉例和數(shù)據(jù)結(jié)構與算法實驗題,并為任課教師免費提供電子課件和課程實驗用數(shù)據(jù)。
《數(shù)據(jù)結(jié)構(C++語言版)》可作為高等學校計算機、電子信息、信息與計算科學、信息管理與信息系統(tǒng)等專業(yè)數(shù)據(jù)結(jié)構課程教材,也適合工程技術人員和自學者學習參考。

書籍目錄

前言
第1章 數(shù)據(jù)結(jié)構與算法概論
1.1 算法及其復雜性的概念
1.1.1 算法與程序
1.1.2 算法復雜性的概念
1.1.3 算法復雜性的漸近性態(tài)
1.2 數(shù)據(jù)結(jié)構與抽象數(shù)據(jù)類型
1.3 用C++描述數(shù)據(jù)結(jié)構與算法
1.3.1 指針和引用
1.3.2 函數(shù)與參數(shù)傳遞
1.3.3 C++的類
1.3.4 類的對象
1.3.5 模板
1.3.6 動態(tài)存儲分配
1.4 遞歸
1.5 應用舉例
習題1
實驗1
實驗題1.1 實系數(shù)復變多項式問題
實驗題1.2 平面幾何問題
實驗題1.3 m進制數(shù)問題
第2章 線性表
2.1 表的基本概念
2.2 用數(shù)組實現(xiàn)表
2.3 用指針實現(xiàn)表
2.4 用間接尋址方法實現(xiàn)表
2.5 用游標實現(xiàn)表
2.6 循環(huán)鏈表
2.7 雙鏈表
2.8 表的搜索游標
2.9 應用舉例
習題2
實驗2
實驗題2.1 實系數(shù)一元多項式問題
實驗題2.2 Josephus排列問題1
實驗題2.3 向量分類問題
實驗題2.4 條形圖輪廓問題
實驗題2.5 Josephus排列問題2
第3章 棧
3.1 棧的基本概念
3.2 用數(shù)組實現(xiàn)棧
3.3 用指針實現(xiàn)棧
3.4 應用舉例
習題3
實驗3
實驗題3.1 車皮編序問題
實驗題3.2 單柱Hanoi塔問題
實驗題3.3 多棧模擬問題
實驗題3.4 親兄弟問題
第4章 隊列
4.1 隊列的基本概念
4.2 用指針實現(xiàn)隊列
4.3 用循環(huán)數(shù)組實現(xiàn)隊列
4.4 應用舉例
習題4
實驗4
實驗題4.1 組隊列問題
實驗題4.2 雙棧隊列問題
實驗題4.3 猴子分桃問題
實驗題4.4 逆序表問題
第5章 集合
5.1 集合的基本概念
5.2 抽象數(shù)據(jù)類型集合
5.3 用位向量實現(xiàn)集合
5.4 用鏈表實現(xiàn)集合
5.5 應用舉例
習題5
實驗5
實驗題5.1 半數(shù)集問題
第6章 排序與選擇
6.1 簡單排序算法
6.1.1 冒泡排序算法
6.1.2 插入排序算法
6.1.3 選擇排序算法
6.1.4 簡單排序算法的計算復雜性
6.2 快速排序算法
6.2.1 算法基本思想及實現(xiàn)
6.2.2 算法性能分析
6.2.3 隨機快速排序算法
6.3 合并排序算法
6.3.1 算法基本思想及實現(xiàn)
6.3.2 消除遞歸
6.3.3 自然合并排序算法
6.4 線性時間排序算法
6.4.1 計數(shù)排序算法
6.4.2 桶排序算法
6.5 中位數(shù)與第k小元素
6.5.1 平均情況下的線性時間選擇算法
6.5.2 最壞情況下的線性時間選擇算法
6.6 應用舉例
習題6
實驗6
實驗題6.1 交換排序問題
實驗題6.2 DNA排序問題
實驗題6.3 輸油管道問題
實驗題6.4 最優(yōu)服務次序問題
第7章 樹
7.1 樹的定義
7.2 樹的遍歷
7.3 樹的表示法
7.3.1 父結(jié)點數(shù)組表示法
7.3.2 兒子鏈表表示法
7.3.3 左兒子右兄弟表示法
7.4 二叉樹的基本概念
7.5 二叉樹的運算
7.6 二叉樹的實現(xiàn)
7.6.1 二叉樹的順序存儲結(jié)構
7.6.2 二叉樹的結(jié)點度表示法
7.6.3 用指針實現(xiàn)二叉樹
7.7 線索二叉樹
7.8 應用舉例
習題7
實驗7
實驗題7.1 層序列表問題
實驗題7.2 最近公共祖先問題
實驗題7.3 子樹問題-
實驗題7.4 同構二叉樹問題
實驗題7.5 后序中序遍歷問題
第8章 二叉搜索樹
8.1 有序集與二叉搜索樹
8.1.1 抽象數(shù)據(jù)類型字典
8.1.2 用數(shù)組實現(xiàn)字典
8.1.3 二叉搜索樹的基本概念
8.2 實現(xiàn)二叉搜索樹
8.3 平衡的二叉搜索樹AVL樹
8.3.1 AVL樹的定義和性質(zhì)
8.3.2 旋轉(zhuǎn)變換
8.3.3 AVL樹的插入與重平衡運算
8.3.4 AVL樹的刪除與重平衡運算
8.4 應用舉例
習題8
實驗8
實驗題8.1 裝箱問題
實驗題8.2 電路板連線問題
實驗題8.3 辭典問題
第9章 堆與優(yōu)先隊列
9.1 優(yōu)先隊列的基本概念
9.2 用字典實現(xiàn)優(yōu)先隊列
9.3 優(yōu)先級樹和堆
9.4 用數(shù)組實現(xiàn)堆
9.5 可并優(yōu)先隊列
9.5.1 左偏樹的定義
9.5.2 用左偏樹實現(xiàn)可并優(yōu)先隊列
9.6 應用舉例
習題9
實驗9
實驗題9.1 區(qū)間相交問題
實驗題9.2 整數(shù)字典問題
實驗題9.3 最小權語言問題
實驗題9.4 二叉搜索堆問題
實驗題9.5 區(qū)間覆蓋問題
第10章 散列
10.1 抽象數(shù)據(jù)類型符號表
10.2 開散列
10.3 閉散列
10.4 散列函數(shù)的效率
10.5 重新散列
10.6 應用舉例
習題10
實驗10
實驗題10.1 偽隨機排列問題
實驗題10.2 字符串散列問題
實驗題10.3 英文文本分析問題
實驗題10.4 最長模式串問題
第11章 并查集
11.1 并查集的基本概念
11.2 用父結(jié)點數(shù)組實現(xiàn)并查集
11.3 應用舉例
習題11
實驗11
實驗題11.1 二進制方程問題
實驗題11.2 網(wǎng)絡連通問題
實驗題11.3 朋友問題
實驗題11.4 等價類劃分問題
第12章 圖
12.1 圖的基本概念
12.2 抽象數(shù)據(jù)類型圖
12.3 圖的表示法
12.3.1 鄰接矩陣表示法
12.3.2 鄰接表表示法
12.3.3 緊縮鄰接表
12.4 用鄰接矩陣實現(xiàn)圖
12.4.1 用鄰接矩陣實現(xiàn)賦權有向圖
12.4.2 用鄰接矩陣實現(xiàn)賦權無向圖
12.4.3 用鄰接矩陣實現(xiàn)有向圖
12.4.4 用鄰接矩陣實現(xiàn)無向圖
12.5 用鄰接表實現(xiàn)圖
12.5.1 鄰接表基類
12.5.2 用鄰接表實現(xiàn)有向圖
12.5.3 用鄰接表實現(xiàn)無向圖
12.5.4 用鄰接表實現(xiàn)賦權有向圖
12.5.5 用鄰接表實現(xiàn)賦權無向圖
12.6 圖的遍歷
12.6.1 圖的搜索游標
12.6.2 廣度優(yōu)先搜索
12.6.3 深度優(yōu)先搜索
12.7 最短路徑算法
12.7.1 單源最短路徑算法
12.7.2 Bellman-Ford最短路徑算法
12.7.3 所有頂點對之間的最短路徑算法
12.8 最小支撐樹
12.8.1 最小支撐樹性質(zhì)
12.8.2 最小支撐樹的Prim算法
12.8.3 最小支撐樹的Kruskal算法
12.9 圖匹配算法
12.10 應用舉例
習題12
實驗12
實驗題12.1 圖的二著色問題
實驗題12.2 賦權有向圖中心問題
實驗題12.3 最長簡單路徑問題
實驗題12.4 計算機網(wǎng)絡問題
實驗題12.5 差分約束問題
實驗題12.6 有截止時間的工作排序問題
實驗題12.7 無向圖的連通分支問題
參考文獻

章節(jié)摘錄

  第1章 數(shù)據(jù)結(jié)梅與算法概論  1.1 算法及其復雜性的概念  1.1.1 算法與程序  對于計算機科學來說,算法(algorithm)的概念至關重要。例如,在大型軟件系統(tǒng)的開發(fā)中,設計出有效的算法將起決定性的作用?! ∷惴ㄊ怯扇舾蓷l指令組成的有窮序列,且滿足下述幾條性質(zhì): ?。?)輸入:有若干個由外部提供的量作為算法的輸入?! 。?)輸出:算法產(chǎn)生至少一個量作為輸出?! 。?)確定性:組成算法的每條指令是清晰、無歧義的。 ?。?)有限性:算法中每條指令的執(zhí)行次數(shù)有限,執(zhí)行每條指令的時間也是有限的?! 〕绦颍╬rogram)是算法用某種程序設計語言的具體實現(xiàn)。程序可以不滿足算法的性質(zhì)(4)。例如,操作系統(tǒng),它是一個在無限循環(huán)中執(zhí)行的程序,因而不是一個算法。然而可把操作系統(tǒng)的各種任務看成是一些單獨的問題,每一個問題由操作系統(tǒng)中的一個子程序通過特定的算法來實現(xiàn)。該子程序得到輸出結(jié)果后便終止。  1.1.2 算法復雜性的概念  一個算法復雜性的高低體現(xiàn)在運行該算法需要多少計算機資源。所需要的資源越多,算法的復雜性越高。所需要的資源越少,算法的復雜性就越低。最重要的計算機的資源是時間資源和空間資源。因此,算法的復雜性有時間復雜性和空間復雜性之分。對于任意給定的問題,設計出復雜性盡可能低的算法是算法設計追求的重要目標。

編輯推薦

  《國家級精品課程主干教材:數(shù)據(jù)結(jié)構(C++語言版)》是在國家精品課程“算法與數(shù)據(jù)結(jié)構”的建設過程中,以ACM和IEEE/CS Computing Curricula 2005課程體系及教育部計算機科學與技術教學指導委員會發(fā)布的“高等學校計算機科學與技術本科專業(yè)規(guī)范”中關于算法與數(shù)據(jù)結(jié)構的知識結(jié)構和體系為依據(jù)編寫而成。全書共分12章,具體內(nèi)容包括數(shù)據(jù)結(jié)構與算法概論、線性表、排序與選擇、二叉搜索樹、并查集等。該書可供各大專院校作為教材使用,也可供從事相關工作的人員作為參考用書使用。

圖書封面

評論、評分、閱讀與下載


    數(shù)據(jù)結(jié)構 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7