作 者:李春葆,李筱馳 編
定 價:69.8
出 版 社:清華大學出版社
出版日期:2020年09月01日
頁 數:504
裝 幀:平裝
ISBN:9787302551348
"為了方便教師教學和學生學習,本書提供了全面而豐富的教學資源,配套教學資源包的內容如下:① 教學PPT:提供超過1500頁的精美PPT課件,僅供任課教師教學中使用。② 源程序代碼:所有源代碼按章組織,例如ch2文件夾存放第2章的源代碼,其中SqList子文件夾存放順序表類SqListClass.Java文件和相關示例源代碼文件,如ch2\\SqList\\ Exam2_3.java為例2.3的源代碼。③ 數據結構課程教學大綱:包含48課時和64課時參考教學內容安排。④ 練習題參考答案等
●第1章緒論
1.1什麼是數據結構
1.1.1數據結構的定義
1.1.2數據的邏輯結構
1.1.3數據的存儲結構
1.1.4數據的運算
1.1.5數據結構和數據類型
1.2算法及其描述
1.2.1什麼是算法
1.2.2算法描述
1.3算法分析
1.3.1算法設計的要求
1.3.2算法的時間性能分析
1.3.3算法的存儲空間分析
1.4數據結構的目標
1.5練習題
1.5.1問答題
1.5.2算法分析題
1.6實驗題
1.6.1上機實驗題
1.6.2在線編程題
第2章線性表
2.1線性表的定義
2.1.1什麼是線性表
2.1.2線性表的抽像數據類型描述
2.2線性表的順序存儲結構
2.2.1線性表的順序存儲結構——順序表
2.2.2線性表的基本運算算法在順序表中的實現
2.2.3順序表的應用算法設計示例
2.2.4順序表容器——ArrayList
2.3線性表的鏈式存儲結構
2.3.1線性表的鏈式存儲結構——鏈表
2.3.2單鏈表
2.3.3單鏈表的應用算法設計示例
2.3.4雙鏈表
2.3.5雙鏈表的應用算法設計示例
2.3.6循環鏈表
2.3.7鏈表容器——LinkedList
2.4順序表和鏈表的比較
2.5線性表的應用
2.5.1求解兩個多項式相加問題的描述
2.5.2采用順序存儲結構求解
2.5.3采用鏈式存儲結構求解
2.6練習題
2.6.1問答題
2.6.2算法設計題
2.7實驗題
2.7.1上機實驗題
2.7.2在線編程題
第3章棧和隊列
3.1棧
3.1.1棧的定義
3.1.2棧的順序存儲結構及其基本運算算法的實現
3.1.3順序棧的應用算法設計示例
3.1.4棧的鏈式存儲結構及其基本運算算法的實現
3.1.5鏈棧的應用算法設計示例
3.1.6Java中的棧容器——StackE
3.1.7棧的綜合應用
3.2隊列
3.2.1隊列的定義
3.2.2隊列的順序存儲結構及其基本運算算法的實現
3.2.3循環隊列的應用算法設計示例
3.2.4隊列的鏈式存儲結構及其基本運算算法的實現
3.2.5鏈隊的應用算法設計示例
3.2.6Java中的隊列接口——QueueE
3.2.7隊列的綜合應用
*3.2.8雙端隊列
3.2.9優先隊列
3.3練習題
3.3.1問答題
3.3.2算法設計題
3.4實驗題
3.4.1上機實驗題
3.4.2在線編程題
第4章串
4.1串的基本概念
4.1.1什麼是串
4.1.2串的抽像數據類型
4.2串的存儲結構
4.2.1串的順序存儲結構——順序串
4.2.2串的鏈式存儲結構——鏈串
4.3Java中的字符串
4.3.1String
4.3.2StringBuffer
4.4串的模式匹配
4.4.1BruteForce算法
4.4.2KMP算法
4.5練習題
4.5.1問答題
4.5.2算法設計題
4.6實驗題
4.6.1上機實驗題
4.6.2在線編程題
第5章遞歸
5.1什麼是遞歸
5.1.1遞歸的定義
5.1.2何時使用遞歸
5.1.3遞歸模型
5.1.4遞歸與數學歸納法
5.1.5遞歸的執行過程
5.1.6遞歸算法的時空分析
5.2遞歸算法的設計
5.2.1遞歸算法設計的步驟
5.2.2基於遞歸數據結構的遞歸算法設計
5.2.3基於歸納方法的遞歸算法設計
5.3練習題
5.3.1問答題
5.3.2算法設計題
5.4實驗題
5.4.1上機實驗題
5.4.2在線編程題
第6章數組和稀疏矩陣
6.1數組
6.1.1數組的基本概念
6.1.2數組的存儲結構
6.1.3Java中的數組
6.1.4數組的應用
6.2特殊矩陣的壓縮存儲
6.3稀疏矩陣
6.3.1稀疏矩組表示
6.3.2稀疏矩陣的十字鏈表表示
6.4練習題
6.4.1問答題
6.4.2算法設計題
6.5實驗題
6.5.1上機實驗題
6.5.2在線編程題
第7章樹和二叉樹
7.1樹
7.1.1樹的定義
7.1.2樹的邏輯結構表示方法
7.1.3樹的基本術語
7.1.4樹的性質
7.1.5樹的基本運算
7.1.6樹的存儲結構
7.2二叉樹
7.2.1二叉樹的概念
7.2.2二叉樹的性質
7.2.3二叉樹的存儲結構
7.2.4二叉樹的遞歸算法設計
7.2.5二叉樹的基本運算及其實現
7.3二叉樹的先序、中序和後序遍歷
7.3.1二叉樹遍歷的概念
7.3.2先序、中序和後序遍歷遞歸算法
7.3.3遞歸遍歷算法的應用
*7.3.4先序、中序和後序遍歷非遞歸算法
7.4二叉樹的層次遍歷
7.4.1層次遍歷過程
7.4.2層次遍歷算法設計
7.4.3層次遍歷算法的應用
7.5二叉樹的構造
7.5.1由先序/中序序列或後序/中序序列構造二叉樹
*7.5.2序列化和反序列化
7.6線索二叉樹
7.6.1線索二叉樹的定義
7.6.2線索化二叉樹
7.6.3遍歷線索二叉樹
7.7哈夫曼樹
7.7.1哈夫曼樹的定義
7.7.2哈夫曼樹的構造算法
7.7.3哈夫曼編碼
7.8二叉樹與樹、森林之間的轉換
7.8.1樹到二叉樹的轉換及還原
7.8.2森林到二叉樹的轉換及還原
*7.9樹算法設計和並查集
7.9.1樹算法設計
7.9.2並查集
7.10練習題
7.10.1問答題
7.10.2算法設計題
7.11實驗題
7.11.1上機實驗題
7.11.2在線編程題
第8章圖
8.1圖的基本概念
8.1.1圖的定義
8.1.2圖的基本術語
8.2圖的存儲結構
8.2.1鄰接矩陣
8.2.2鄰接表
8.3圖的遍歷
8.3.1圖遍歷的概念
8.3.2深度優先遍歷
8.3.3廣度優先遍歷
8.3.4非連通圖的遍歷
8.3.5圖遍歷算法的應用
*8.3.6求有向圖中強連通分量的Tarjan算法
8.4生成樹和最小生成樹
8.4.1生成樹和最小生成樹的概念
8.4.2普裡姆算法
8.4.3Kruskal算法
8.5最短路徑
8.5.1最短路徑的概念
8.5.2Dijkstra算法
8.5.3Floyd算法
8.6拓撲排序
8.6.1什麼是拓撲排序
8.6.2拓撲排序算法設計
*8.6.3逆拓撲序列和非遞歸深度優先遍歷
8.7AOE網與關鍵路徑
8.7.1什麼是AOE網和關鍵路徑
8.7.2求AOE網中關鍵路徑的算法
8.8練習題
8.8.1問答題
8.8.2算法設計題
8.9實驗題
8.9.1上機實驗題
8.9.2在線編程題
第9章查找
9.1查找的基本概念
9.2線性表的查找
9.2.1順序查找
9.2.2折半查找
9.2.3索引存儲結構和分塊查找
9.3樹表的查找
9.3.1二叉排序樹
9.3.2平衡二叉樹
*9.3.3Java中的TreeMap和TreeSet集合
9.3.4B-樹
9.3.5B+樹
9.4哈希表的查找
9.4.1哈希表的基本概念
9.4.2哈希函數的構造方法
9.4.3哈希衝突的解決方法
9.4.4哈希表的查找及性能分析
*9.4.5Java中的HashMap和HashSet集合
9.5練習題
9.5.1問答題
9.5.2算法設計題
9.6實驗題
9.6.1上機實驗題
9.6.2在線編程題
第10章排序
10.1排序的基本概念
10.2插入排序
10.2.1直接插入排序
10.2.2折半插入排序
10.2.3希爾排序
10.3交換排序
10.3.1冒泡排序
10.3.2快速排序
10.4選擇排序
10.4.1簡單選擇排序
10.4.2堆排序
10.4.3堆數據結構
10.5歸並排序
10.5.1自底向上的二路歸並排序
10.5.2自頂向下的二路歸並排序
10.6基數排序
10.7各種內排序方法的比較和選擇
10.8外排序
10.8.1生成初始歸並段的方法
10.8.2多路歸並方法
10.9練習題
10.9.1問答題
10.9.2算法設計題
10.10實驗題
10.10.1上機實驗題
10.10.2在線編程題
參考文獻
《數據結構教程(Java語言描述)/高等學校數據結構課程繫列教材》繫統地介紹了各種常用的數據結構以及查找和排序的各種算法,闡述了各種數據結構的邏輯關繫、存儲表示及基本運算,並采用Java語言描述數據組織和算法實現,所有算法的程序均在Java1.8中調試通過。
全書既注重原理又注重實踐,配有大量圖表和示例,內容豐富,概念講解清楚,表達嚴謹,邏輯性強,語言精練,可讀性好。書中提供了豐富的練習題、實驗題和在線編程題,配套的《數據結構教程(Java)學習與實驗指導》詳細給出了該書練習題的解題思路和參考答案,以及在線編程題的AC代碼。
李春葆,李筱馳 編
李春葆,武漢大學計算機學院教授。主要研究方向為數據挖掘和算法設計,先後主持和參加多個大型研究項目。主要為本科生講授數據結構(15年以上)和軟件工程等課程,為研究生講授軟件開發新技術、數據倉庫與數據挖掘等課程,並出版十多部精品著作。