數據結構教程(Python語言描述)(第2版·微課視頻版)
李春葆 主編;蔣林,李筱馳 副主編
商品描述
"本書系統地介紹各種常用的數據結構以及查找和排序的各種算法,闡述各種數據結構的邏輯關系、存儲表示及基本運算,並採用Python語言描述數據組織和算法實現。所有算法的程序均在Python 3.7中調試通過。 全書既註重原理又註重實踐,配有大量圖表和示例,內容豐富,概念講解清楚,表達嚴謹,邏輯性強,語言精練,可讀性好。書中提供了豐富的練習題、上機實驗題和在線編程題,配套的《數據結構教程(Python語言描述)(第2版)學習與上機實驗指導》詳細地給出本書練習題的解題思路和參考答案、在線編程題代碼和實驗報告格式示例。 本書可作為高等學校電腦及相關專業“數據結構”課程教材,也可作為從事電腦軟件開發和工程應用人員的參考書。 "
作者簡介
李春葆,武漢大學計算機學院教授。主要研究方向為數據挖掘和算法設計,先後主持和參加多個大型研究項目。主要為本科生講授數據結構(15年以上)和軟件工程等課程,為研究生講授軟件開發新技術、數據倉庫與數據挖掘等課程,並出版十多部精品著作。
目錄大綱
目錄
掃一掃
源碼下載
第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.3Python簡介/
1.3.1Python的標準數據類型/
1.3.2列表的復制/
1.3.3輸入/輸出和文件操作/
1.3.4Python程序設計/
1.3.5Python中變量的作用域和垃圾回收/
1.4算法分析/
1.4.1算法的設計目標/
1.4.2算法的時間性能分析/
1.4.3算法的存儲空間分析/
1.5數據結構的目標/
1.6練習題/
1.7上機實驗題/
1.8LeetCode在線編程題/
第2章線性表/
2.1線性表的定義/
2.1.1什麽是線性表/
2.1.2線性表的抽象數據類型描述/
2.2線性表的順序存儲結構/
2.2.1順序表/
2.2.2線性表的基本運算算法在順序表中的實現/
2.2.3順序表的應用算法設計示例/
2.3線性表的鏈式存儲結構/
2.3.1鏈表/
2.3.2單鏈表/
2.3.3單鏈表的應用算法設計示例/
2.3.4雙鏈表/
2.3.5雙鏈表的應用算法設計示例/
2.3.6循環鏈表/
2.4順序表和鏈表的比較/
2.5線性表的應用——兩個多項式相加/
2.5.1問題描述/
2.5.2問題求解/
2.6練習題/
2.7上機實驗題/
2.7.1基礎實驗題/
2.7.2應用實驗題/
2.8LeetCode在線編程題/
第3章棧和隊列/
3.1棧/
3.1.1棧的定義/
3.1.2棧的順序存儲結構及其基本運算算法的實現/
3.1.3順序棧的應用算法設計示例/
3.1.4棧的鏈式存儲結構及其基本運算算法的實現/
3.1.5鏈棧的應用算法設計示例/
3.1.6棧的綜合應用/
3.2隊列/
3.2.1隊列的定義/
3.2.2隊列的順序存儲結構及其基本運算算法的實現/
3.2.3循環隊列的應用算法設計示例/
3.2.4隊列的鏈式存儲結構及其基本運算算法的實現/
3.2.5鏈隊的應用算法設計示例/
3.2.6Python中的雙端隊列/
3.2.7隊列的綜合應用/
3.2.8優先隊列/
3.3練習題/
3.4上機實驗題/
3.4.1基礎實驗題/
3.4.2應用實驗題/
3.5LeetCode在線編程題/
第4章串和數組/
4.1串/
4.1.1串的基本概念/
4.1.2串的存儲結構/
4.1.3串的模式匹配/
4.2數組/
4.2.1數組的基本概念/
4.2.2特殊矩陣的壓縮存儲/
4.2.3稀疏矩陣/
4.3練習題/
4.4上機實驗題/
4.4.1基礎實驗題/
4.4.2應用實驗題/
4.5LeetCode在線編程題/
第5章遞歸/
5.1什麽是遞歸/
5.1.1遞歸的定義/
5.1.2何時使用遞歸/
5.1.3遞歸模型/
5.1.4遞歸與數學歸納法/
5.1.5遞歸的執行過程/
5.1.6Python中遞歸函數的參數/
5.1.7遞歸算法的時空分析/
5.2遞歸算法的設計/
5.2.1遞歸算法設計的步驟/
5.2.2基於遞歸數據結構的遞歸算法設計/
5.2.3基於歸納方法的遞歸算法設計/
5.3練習題/
5.4上機實驗題/
5.4.1基礎實驗題/
5.4.2應用實驗題/
5.5LeetCode在線編程題/
第6章樹和二叉樹/
6.1樹/
6.1.1樹的定義/
6.1.2樹的邏輯結構表示方法/
6.1.3樹的基本術語/
6.1.4樹的性質/
6.1.5樹的基本運算/
6.1.6樹的存儲結構/
6.2二叉樹/
6.2.1二叉樹的概念/
6.2.2二叉樹的性質/
6.2.3二叉樹的存儲結構/
6.2.4二叉樹的遞歸算法設計/
6.2.5二叉樹的基本運算算法及其實現/
6.3二叉樹的先序、中序和後序遍歷/
6.3.1二叉樹遍歷的概念/
6.3.2先序、中序和後序遍歷的遞歸算法/
6.3.3遞歸遍歷算法的應用/
6.4二叉樹的層次遍歷/
6.4.1層次遍歷的過程/
6.4.2層次遍歷算法的設計/
6.4.3層次遍歷算法的應用/
6.5二叉樹的構造/
6.5.1由先序/中序序列或後序/中序序列構造二叉樹/
*6.5.2序列化和反序列化/
6.6線索二叉樹/
6.6.1線索二叉樹的定義/
6.6.2線索化二叉樹/
6.6.3遍歷線索二叉樹/
6.7哈夫曼樹/
6.7.1哈夫曼樹的定義/
6.7.2哈夫曼樹的構造算法/
6.7.3哈夫曼編碼/
6.8二叉樹與樹、森林之間的轉換/
6.8.1樹到二叉樹的轉換及還原/
6.8.2森林到二叉樹的轉換及還原/
*6.9並查集/
6.9.1並查集的定義/
6.9.2並查集的實現/
6.10練習題/
6.11上機實驗題/
6.11.1基礎實驗題/
6.11.2應用實驗題/
6.12LeetCode在線編程題/
第7章圖/
7.1圖的基本概念/
7.1.1圖的定義/
7.1.2圖的基本術語/
7.2圖的存儲結構/
7.2.1鄰接矩陣/
7.2.2鄰接表/
7.3圖的遍歷/
7.3.1圖遍歷的概念/
7.3.2深度優先遍歷/
7.3.3廣度優先遍歷/
7.3.4非連通圖的遍歷/
7.4圖遍歷算法的應用/
7.4.1深度優先遍歷算法的應用/
7.4.2廣度優先遍歷算法的應用/
7.5生成樹和最小生成樹/
7.5.1生成樹和最小生成樹的概念/
7.5.2Prim算法/
7.5.3Kruskal算法/
7.6最短路徑/
7.6.1最短路徑的概念/
7.6.2Dijkstra算法/
7.6.3Floyd算法/
7.7拓撲排序/
7.7.1什麽是拓撲排序/
7.7.2拓撲排序算法的設計/
7.8AOE網和關鍵路徑/
7.9練習題/
7.10上機實驗題/
7.10.1基礎實驗題/
7.10.2應用實驗題/
7.11LeetCode在線編程題/
第8章查找/
8.1查找的基本概念/
8.2線性表的查找/
8.2.1順序查找/
8.2.2折半查找/
8.2.3索引存儲結構和分塊查找/
8.3樹表的查找/
8.3.1二叉排序樹/
8.3.2平衡二叉樹/
8.3.3B樹/
8.3.4B+樹/
8.4哈希表的查找/
8.4.1哈希表的基本概念/
8.4.2哈希函數的構造方法/
8.4.3哈希沖突的解決方法/
8.4.4哈希表的查找及性能分析/
8.5練習題/
8.6上機實驗題/
8.6.1基礎實驗題/
8.6.2應用實驗題/
8.7LeetCode在線編程題/
第9章排序/
9.1排序的基本概念/
9.2插入排序/
9.2.1直接插入排序/
9.2.2折半插入排序/
9.2.3希爾排序/
9.3交換排序/
9.3.1冒泡排序/
9.3.2快速排序/
9.4選擇排序/
9.4.1簡單選擇排序/
9.4.2堆排序/
9.4.3堆數據結構/
9.5歸並排序/
9.5.1自底向上的二路歸並排序/
9.5.2自頂向下的二路歸並排序/
9.6基數排序/
9.7各種內排序方法的比較和選擇/
9.8外排序/
9.8.1生成初始歸並段的方法/
9.8.2多路歸並方法/
9.9練習題/
9.10上機實驗題/
9.10.1基礎實驗題/
9.10.2應用實驗題/
9.11LeetCode在線編程題/
參考文獻/