第1章數據結構概論11.1數據結構的概念11.1.1數據結構舉例11.1.2數據與數據結構21.1.3數據結構的分類31.1.4數據結構課程的內容41.2數據結構的抽象形式61.2.1數據類型61.2.2數據抽象與抽象數據類型71.3作為ADT的C++類91.3.1麵嚮對象的概念91.3.2C++中的類101.3.3C++中的對象121.3.4C++的輸入輸齣131.3.5C++中的函數141.3.6動態存儲分配171.3.7C++中的繼承181.3.8多態性191.3.9C++的模闆231.4算法定義241.5算法性能分析與度量261.5.1算法的性能標準261.5.2算法的後期測試261.5.3算法的事前估計271.5.4算法的漸進分析321.5.5最壞、最好和平均情況36習題37第2章綫性錶432.1綫性錶432.1.1綫性錶的概念432.1.2綫性錶的類定義442.2順序錶452.2.1順序錶的定義和特點452.2.2順序錶的類定義及其操作452.2.3順序錶的性能分析502.2.4順序錶的應用522.3單鏈錶522.3.1單鏈錶的概念532.3.2單鏈錶的類定義542.3.3單鏈錶中的插入與刪除562.3.4帶附加頭結點的單鏈錶592.3.5單鏈錶的模闆類602.4綫性鏈錶的其他變形662.4.1循環鏈錶662.4.2雙嚮鏈錶692.5單鏈錶的應用:多項式及其運算732.5.1多項式的錶示742.5.2多項式的類定義752.5.3多項式的加法772.5.4多項式的乘法792.6靜態鏈錶80習題83第3章棧和隊列883.1棧883.1.1棧的定義883.1.2順序棧893.1.3鏈式棧923.1.4棧的應用之一——括號匹配943.1.5棧的應用之二——錶達式的計算953.2棧與遞歸1013.2.1遞歸的概念1013.2.2遞歸過程與遞歸工作棧1053.2.3用迴溯法求解迷宮問題1093.3隊列1143.3.1隊列的概念1143.3.2循環隊列1143.3.3鏈式隊列1183.3.4隊列應用舉例:打印二項展開式(a+b)i的係數1203.3.5隊列應用舉例:電路布綫1213.4優先級隊列1243.4.1優先級隊列的概念1243.4.2優先級隊列的存儲錶示和實現1253.5雙端隊列1263.5.1雙端隊列的概念1263.5.2雙端隊列的數組錶示1283.5.3雙端隊列的鏈錶錶示129習題131第4章數組、串與廣義錶1354.1多維數組的概念與存儲1354.1.1多維數組的概念1354.1.2多維數組的存儲錶示1364.2特殊矩陣1384.2.1對稱矩陣的壓縮存儲1384.2.2三對角綫/多對角綫矩陣的壓縮存儲1404.3稀疏矩陣1414.3.1稀疏矩陣及其三元組數組錶示1414.3.2稀疏矩陣的轉置1454.3.3稀疏矩陣的相加和相乘1474.3.4矩陣的正交鏈錶錶示1524.4字符串1534.4.1字符串的概念1534.4.2C++有關字符串的庫函數1544.4.3字符串的實現1564.4.4字符串的自定義類1584.4.5字符串操作的實現1594.4.6字符串的模式匹配1614.4.7字符串的存儲方法1674.5廣義錶1694.5.1廣義錶的定義與性質1694.5.2廣義錶的錶示1704.5.3廣義錶存儲結構的實現1704.5.4廣義錶的遞歸算法1744.5.5三元多項式的錶示181習題183第5章樹1865.1樹的基本概念1865.1.1樹的定義和術語1865.1.2樹的抽象數據類型1885.2二叉樹1895.2.1二叉樹的定義1895.2.2二叉樹的性質1905.2.3二叉樹的抽象數據類型1915.3二叉樹的存儲錶示1925.3.1二叉樹的數組存儲錶示1925.3.2二叉樹的鏈錶存儲錶示1935.4二叉樹遍曆及其應用1985.4.1二叉樹遍曆的遞歸算法1985.4.2二叉樹遍曆的應用2005.4.3二叉樹遍曆的非遞歸算法2035.4.4二叉樹的計數2075.5綫索二叉樹2105.5.1綫索2105.5.2中序綫索二叉樹的建立和遍曆2115.5.3中序綫索二叉樹的插入與刪除2165.5.4前序與後序的綫索化二叉樹2185.6樹與森林2205.6.1樹的存儲錶示2205.6.2森林與二叉樹的轉換2255.6.3樹與二叉樹的轉換2275.7樹與森林的遍曆及其應用2275.7.1樹與森林的深度優先遍曆2275.7.2樹和森林的廣度優先遍曆2305.7.3樹遍曆算法的應用2315.7.4其他基於遍曆序列的幾種存儲錶示2325.8堆2355.8.1最小堆和最大堆2355.8.2堆的建立2365.8.3堆的插入與刪除2385.9Huffman樹及其應用2405.9.1路徑長度2405.9.2Huffman樹2415.9.3Huffman樹的應用:最優判定樹2435.9.4Huffman樹的應用:Huffman編碼244習題246第6章集閤與字典2516.1集閤及其錶示2516.1.1集閤的基本概念2516.1.2用位嚮量實現集閤抽象數據類型2526.1.3用有序鏈錶實現集閤的抽象數據類型2576.2並查集與等價類2626.2.1並查集的定義及其實現2626.2.2並查集的應用:等價類劃分2676.3字典2686.3.1字典的概念2696.3.2字典的綫性錶描述2706.4跳錶2736.4.1跳錶的概念2736.4.2跳錶的類定義2746.4.3跳錶的搜索、插入和刪除2766.5散列2796.5.1散列錶與散列方法2796.5.2散列函數2806.5.3處理衝突的閉散列方法2826.5.4處理衝突的開散列方法2916.5.5散列錶分析293習題294第7章搜索結構2977.1靜態搜索結構2987.1.1靜態搜索錶2987.1.2順序搜索3007.1.3基於有序順序錶的順序搜索和摺半搜索3027.1.4基於有序順序錶的其他搜索方法3077.2二叉搜索樹3087.2.1二叉搜索樹的概念3097.2.2二叉搜索樹上的搜索3107.2.3二叉搜索樹的插入3117.2.4二叉搜索樹的刪除3137.2.5二叉搜索樹的性能分析3147.2.6最優二叉搜索樹3177.3AVL樹3207.3.1AVL樹的概念3217.3.2平衡化鏇轉3217.3.3AVL樹的插入3267.3.4AVL樹的刪除3297.3.5AVL樹的性能分析3337.4伸展樹3347.5紅黑樹3377.5.1紅黑樹的概念和性質3377.5.2紅黑樹的搜索3387.5.3紅黑樹的插入3387.5.4紅黑樹的刪除339習題342第8章圖3468.1圖的基本概念3468.1.1與圖有關的若乾概念3468.1.2圖的抽象數據類型3488.2圖的存儲結構3498.2.1圖的鄰接矩陣錶示3508.2.2圖的鄰接錶錶示3558.2.3圖的鄰接多重錶錶示3618.3圖的遍曆3638.3.1深度優先搜索3648.3.2廣度優先搜索3658.3.3連通分量3668.3.4重連通分量3688.4最小生成樹3708.4.1Kruskal算法3718.4.2Prim算法3738.5最短路徑3758.5.1非負權值的單源最短路徑3768.5.2任意權值的單源最短路徑3798.5.3所有頂點之間的最短路徑3818.6用頂點錶示活動的網絡(AOV網絡)3838.7用邊錶示活動的網絡(AOE網絡)388習題392第9章排序3979.1排序的概念及其算法性能分析3979.1.1排序的概念3979.1.2排序算法的性能評估3989.1.3排序錶的類定義4009.2插入排序4019.2.1直接插入排序4019.2.2摺半插入排序4039.2.3希爾排序4049.3快速排序4059.3.1快速排序的過程4069.3.2快速排序的性能分析4079.3.3快速排序的改進算法4099.3.4三路劃分的快速排序算法4129.4選擇排序4139.4.1直接選擇排序4139.4.2錦標賽排序4149.4.3堆排序4199.5歸並排序4229.5.1歸並4229.5.2歸並排序算法4239.6基於鏈錶的排序算法4259.6.1鏈錶插入排序4259.6.2鏈錶歸並排序4279.6.3鏈錶排序結果的重排4289.7分配排序4319.7.1桶式排序4319.7.2基數排序4329.7.3MSD基數排序4339.7.4LSD基數排序4359.8內部排序算法的分析4379.8.1排序方法的下界4379.8.2各種內部排序方法的比較439習題440第10章文件、外部排序與搜索44410.1主存儲器和外存儲器44410.1.1磁帶44410.1.2磁盤存儲器44610.1.3緩衝區與緩衝池44810.2文件組織44910.2.1文件的概念44910.2.2文件的存儲結構45010.3外排序45910.3.1外排序的基本過程45910.3.2k路平衡歸並與敗者樹46110.3.3初始歸並段的生成(run generation)46610.3.4並行操作的緩衝區處理47010.3.5最佳歸並樹47310.4多級索引結構47510.4.1靜態的ISAM方法47510.4.2動態的m路搜索樹47610.4.3B樹47810.4.4B樹的插入48010.4.5B樹的刪除48210.4.6B+樹48610.4.7VSAM48910.5可擴充散列49010.5.1二叉Trie樹49010.5.2將二叉Trie樹轉換為目錄錶49110.5.3目錄錶擴充與收縮49310.5.4性能分析49410.6Trie樹49410.6.1Trie樹的定義49410.6.2Trie樹的搜索49510.6.3在Trie樹上的插入和刪除496習題497附錄A程序索引500附錄B詞匯索引504參考文獻512
· · · · · · (
收起)