王曉東編著的《數據結構(C++語言版)》以ACM和IEEE/CSComputing Curricula2005課程體系,以及教育部計算機科學與技術教學指導委員會發布的“高等學校計算機科學與技術本科專業規范”中制定的關于數據結構和算法設計與分析的知識結構和體系為依據,以基本數據結構和抽象數據類型為知識單元編寫而成。全書共分12章,涵蓋cc2005課程體系中有關算法與數據結構的知識結構和體系的重要內容,包括數據結構與算法概論,線性表,棧,隊列,集合,排序與選擇,樹,二叉搜索樹,堆與優先隊列,散列,并查集,圖與相關算法。全書采用面向對象的C++語言作為描述語言,內容豐富,敘述簡明,理論與實踐并重,每章設計有應用舉例和數據結構與算法實驗題,并為任課教師免費提供電子課件和課程實驗用數據。《數據結構(C++語言版)》可作為高等學校計算機、電子信息、信息與計算科學、信息管理與信息系統等專業數據結構課程教材,也適合工程技術人員和自學者學習參考。
王曉東編著的《數據結構(C++語言版)》是在國家精品課程“算法與數據結構”的建設過程中,以ACM和IEEE/CS ComputingCurricula2005課程體系及教育部計算機科學與技術教學指導委員會發布的“高等學校計算機科學與技術本科專業規范”中關于算法與數據結構的知識結構和體系為依據編寫而成。全書共分12章,具體內容包括數據結構與算法概論、線性表、排序與選擇、二叉搜索樹、并查集等。該書可供各大專院校作為教材使用,也可供從事相關工作的人員作為參考用書使用。
前言第1章 數據結構與算法概論 1.1 算法及其復雜性的概念 1.1.1 算法與程序 1.1.2 算法復雜性的概念 1.1.3 算法復雜性的漸近性態 1.2 數據結 前言第1章 數據結構與算法概論 1.1 算法及其復雜性的概念 1.1.1 算法與程序 1.1.2 算法復雜性的概念 1.1.3 算法復雜性的漸近性態 1.2 數據結構與抽象數據類型 1.3 用C++描述數據結構與算法 1.3.1 指針和引用 1.3.2 函數與參數傳遞 1.3.3 C++的類 1.3.4 類的對象 1.3.5 模板 1.3.6 動態存儲分配 1.4 遞歸 1.5 應用舉例 習題1 實驗1 實驗題1.1 實系數復變多項式問題 實驗題1.2 平面幾何問題 實驗題1.3 m進制數問題第2章 線性表 2.1 表的基本概念 2.2 用數組實現表 2.3 用指針實現表 2.4 用間接尋址方法實現表 2.5 用游標實現表 2.6 循環鏈表 2.7 雙鏈表 2.8 表的搜索游標 2.9 應用舉例 習題2 實驗2 實驗題2.1 實系數一元多項式問題 實驗題2.2 Josephus排列問題1 實驗題2.3 向量分類問題 實驗題2.4 條形圖輪廓問題 實驗題2.5 Josephus排列問題2第3章 棧 3.1 棧的基本概念 3.2 用數組實現棧 3.3 用指針實現棧 3.4 應用舉例 習題3 實驗3 實驗題3.1 車皮編序問題 實驗題3.2 單柱Hanoi塔問題 實驗題3.3 多棧模擬問題 實驗題3.4 親兄弟問題第4章 隊列 4.1 隊列的基本概念 4.2 用指針實現隊列 4.3 用循環數組實現隊列 4.4 應用舉例 習題4 實驗4 實驗題4.1 組隊列問題 實驗題4.2 雙棧隊列問題 實驗題4.3 猴子分桃問題 實驗題4.4 逆序表問題第5章 集合 5.1 集合的基本概念 5.2 抽象數據類型集合 5.3 用位向量實現集合 5.4 用鏈表實現集合 5.5 應用舉例 習題5 實驗5 實驗題5.1 半數集問題第6章 排序與選擇 6.1 簡單排序算法 6.1.1 冒泡排序算法 6.1.2 插入排序算法 6.1.3 選擇排序算法 6.1.4 簡單排序算法的計算復雜性 6.2 快速排序算法 6.2.1 算法基本思想及實現 6.2.2 算法性能分析 6.2.3 隨機快速排序算法 6.3 合并排序算法 6.3.1 算法基本思想及實現 6.3.2 消除遞歸 6.3.3 自然合并排序算法 6.4 線性時間排序算法 6.4.1 計數排序算法 6.4.2 桶排序算法 6.5 中位數與第k小元素 6.5.1 平均情況下的線性時間選擇算法 6.5.2 最壞情況下的線性時間選擇算法 6.6 應用舉例 習題6 實驗6 實驗題6.1 交換排序問題 實驗題6.2 DNA排序問題 實驗題6.3 輸油管道問題 實驗題6.4 最優服務次序問題第7章 樹 7.1 樹的定義 7.2 樹的遍歷 7.3 樹的表示法 7.3.1 父結點數組表示法 7.3.2 兒子鏈表表示法 7.3.3 左兒子右兄弟表示法 7.4 二叉樹的基本概念 7.5 二叉樹的運算 7.6 二叉樹的實現 7.6.1 二叉樹的順序存儲結構 7.6.2 二叉樹的結點度表示法 7.6.3 用指針實現二叉樹 7.7 線索二叉樹 7.8 應用舉例 習題7 實驗7 實驗題7.1 層序列表問題 實驗題7.2 最近公共祖先問題 實驗題7.3 子樹問題- 實驗題7.4 同構二叉樹問題 實驗題7.5 后序中序遍歷問題第8章 二叉搜索樹 8.1 有序集與二叉搜索樹 8.1.1 抽象數據類型字典 8.1.2 用數組實現字典 8.1.3 二叉搜索樹的基本概念 8.2 實現二叉搜索樹 8.3 平衡的二叉搜索樹AVL樹 8.3.1 AVL樹的定義和性質 8.3.2 旋轉變換 8.3.3 AVL樹的插入與重平衡運算 8.3.4 AVL樹的刪除與重平衡運算 8.4 應用舉例 習題8 實驗8 實驗題8.1 裝箱問題 實驗題8.2 電路板連線問題 實驗題8.3 辭典問題第9章 堆與優先隊列 9.1 優先隊列的基本概念 9.2 用字典實現優先隊列 9.3 優先級樹和堆 9.4 用數組實現堆 9.5 可并優先隊列 9.5.1 左偏樹的定義 9.5.2 用左偏樹實現可并優先隊列 9.6 應用舉例 習題9 實驗9 實驗題9.1 區間相交問題 實驗題9.2 整數字典問題 實驗題9.3 最小權語言問題 實驗題9.4 二叉搜索堆問題 實驗題9.5 區間覆蓋問題第10章 散列 10.1 抽象數據類型符號表 10.2 開散列 10.3 閉散列 10.4 散列函數的效率 10.5 重新散列 10.6 應用舉例 習題10 實驗10 實驗題10.1 偽隨機排列問題 實驗題10.2 字符串散列問題 實驗題10.3 英文文本分析問題 實驗題10.4 最長模式串問題第11章 并查集 11.1 并查集的基本概念 11.2 用父結點數組實現并查集 11.3 應用舉例 習題11 實驗11 實驗題11.1 二進制方程問題 實驗題11.2 網絡連通問題 實驗題11.3 朋友問題 實驗題11.4 等價類劃分問題第12章 圖 12.1 圖的基本概念 12.2 抽象數據類型圖 12.3 圖的表示法 12.3.1 鄰接矩陣表示法 12.3.2 鄰接表表示法 12.3.3 緊縮鄰接表 12.4 用鄰接矩陣實現圖 12.4.1 用鄰接矩陣實現賦權有向圖 12.4.2 用鄰接矩陣實現賦權無向圖 12.4.3 用鄰接矩陣實現有向圖 12.4.4 用鄰接矩陣實現無向圖 12.5 用鄰接表實現圖 12.5.1 鄰接表基類 12.5.2 用鄰接表實現有向圖 12.5.3 用鄰接表實現無向圖 12.5.4 用鄰接表實現賦權有向圖 12.5.5 用鄰接表實現賦權無向圖 12.6 圖的遍歷 12.6.1 圖的搜索游標 12.6.2 廣度優先搜索 12.6.3 深度優先搜索 12.7 最短路徑算法 12.7.1 單源最短路徑算法 12.7.2 Bellman-Ford最短路徑算法 12.7.3 所有頂點對之間的最短路徑算法 12.8 最小支撐樹 12.8.1 最小支撐樹性質 12.8.2 最小支撐樹的Prim算法 12.8.3 最小支撐樹的Kruskal算法 12.9 圖匹配算法 12.10 應用舉例 習題12 實驗12 實驗題12.1 圖的二著色問題 實驗題12.2 賦權有向圖中心問題 實驗題12.3 最長簡單路徑問題 實驗題12.4 計算機網絡問題 實驗題12.5 差分約束問題 實驗題12.6 有截止時間的工作排序問題 實驗題12.7 無向圖的連通分支問題參考文獻