全書共8章。第1章介紹了數據結構和算法的基本概念;第2~4章介紹了線性表、堆棧、隊列、串、數組等常用的線性結構;第5、6章介紹了非線性結構、樹形結構和圖狀結構;第7、8章介紹了兩種基本技術:查找和排序的常用算法。附錄A介紹了實訓的相關知識,包括實訓的步驟、實訓報告規范和實訓的環境。本書對每一種數據結構都詳細闡述了基本概念、各種不同的存儲結構以及在不同存儲結構上的主要算法的實現,并給出豐富的典型例題,以幫助讀者理解。
第1章 概論t1
1.1 引言t1
1.1.1 什么是數據結構t1
1.1.2 數據結構研究什么t1
1.2 數據結構的基本概念t3
1.3 算法和算法的分析t4
1.3.1 算法及算法的描述t4
1.3.2 算法設計的要求t4
1.3.3 算法的分析t5
1.4 總結與提高t7
習題t8
第2章 線性表t11
2.1 線性表的定義及運算t11
2.1.1 線性表的定義t11
2.1.2 線性表的基本運算t11
2.2 線性表的順序存儲結構t12
2.2.1 順序表t12
2.2.2 順序表上基本運算的實現t13
2.3 線性表的鏈式存儲結構t16
2.3.1 單鏈表及其基本運算t16
2.3.2 循環鏈表t20
2.4 順序表與鏈表的比較t21
2.5 典型題例t22
2.6 實訓例題t24
2.6.1 實訓例題1:有序順序表的建立及查找t24
2.6.2 實訓例題2:多項式的表示和相加t27
2.7 總結與提高t31
2.7.1 主要知識點t31
2.7.2 提高題例t32
習題t33
實訓習題t35
第3章 堆棧和隊列t36
3.1 堆棧t36
3.1.1 堆棧的定義及基本運算t36
3.1.2 堆棧的順序存儲結構t36
3.1.3 堆棧的鏈式存儲結構t39
3.2 棧典型題例t42
3.3 隊列t43
3.3.1 隊列的定義及運算t43
3.3.2 隊列的順序存儲結構t44
3.3.3 隊列的鏈式存儲結構t46
3.4 隊列典型題例t48
3.5 實訓例題t50
3.5.1 實訓例題1:順序循環隊列的操作t50
3.5.2 實訓例題2:括號配對t52
3.6 總結與提高t56
3.6.1 主要知識點t56
3.6.2 提高題例t56
習題t58
實訓習題t60
第4章 串與數組t62
4.1 串及其基本運算t62
4.1.1 串的基本概念t62
4.1.2 串的基本運算t63
4.2 串的存儲結構t64
4.2.1 串的順序存儲t64
4.2.2 串的堆存儲結構t66
4.2.3 串的鏈式存儲t67
4.3 數組t68
4.3.1 數組的定義t68
4.3.2 一維數組、二維數組和多維數組t69
4.4 典型題例t70
4.5 實訓例題t71
4.5.1 實訓例題1:字符串操作t71
4.5.2 實訓例題2:二維數組t74
4.6 總結與提高t76
4.6.1 主要知識點t76
4.6.2 提高題例t77
習題t79
實訓習題t81
第5章 樹和二叉樹t82
5.1 樹t82
5.1.1 樹的基本概念t82
5.1.2 樹的基本操作t84
5.1.3 樹的存儲結構t85
5.2 二叉樹t88
5.2.1 二叉樹的定義及基本操作t88
5.2.2 二叉樹的性質t89
5.2.3 二叉樹的存儲結構t91
5.3 遍歷二叉樹t93
5.3.1 二叉樹的遍歷方法t93
5.3.2 二叉樹遍歷算法應用典型例題t102
5.4 樹和二叉樹的關系t104
5.4.1 樹轉換為二叉樹t104
5.4.2 樹的遍歷t105
5.5 哈夫曼樹及其應用t106
5.5.1 哈夫曼樹的定義及構造t106
5.5.2 哈夫曼樹的應用t109
5.6 典型題例t111
5.7 實訓例題t113
5.7.1 實訓例題1:根據順序存儲建立二叉鏈表,并對二叉樹進行先序、中序、后序遍歷t113
5.7.2 實訓例題2:設計哈夫曼編碼t116
5.8 總結與提高t121
5.8.1 主要知識點t121
5.8.2 提高題例t122
習題t124
實訓習題t126
第6章 圖t127
6.1 圖的定義和術語t127
6.1.1 圖的定義t127
6.1.2 圖的基本術語t127
6.1.3 圖的基本操作t129
6.2 圖的存儲結構t130
6.2.1 鄰接矩陣t130
6.2.2 鄰接表t132
6.2.3 鄰接矩陣和鄰接表的比較t135
6.3 圖的遍歷t135
6.3.1 連通圖的深度優先搜索t13