《数据结构与算法 C语言版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:郭龙源,胡虚怀,何光明著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302220626
  • 页数:388 页
图书介绍:本书采用类C语言描述,系统地介绍了各种数据结构和排序、查找算法。

第1章 绪论 1

1.1 学习数据结构与算法的意义 1

1.1.1 学习数据结构的意义 1

1.1.2 学习算法的意义 2

1.2 数据结构 3

1.2.1 数据结构概述 3

1.2.2 基本概念和相关术语 3

1.3 抽象数据类型 5

1.4 算法 6

1.4.1 算法概述 6

1.4.2 算法与数据结构之间的关系 7

1.4.3 算法的度量 8

1.5 算法分析 9

1.5.1 数学基础 9

1.5.2 所需分析的问题 10

1.5.3 运行时间的计算 11

1.5.4 检验你的分析 13

小结 15

自测题答案 16

编程项目 17

第2章 线性表 18

2.1 线性表的定义 18

2.1.1 线性表概述 18

2.1.2 线性表的抽象数据类型 19

2.1.3 线性表的相关操作 20

2.2 线性表的顺序存储结构 22

2.2.1 线性表的顺序存储结构 22

2.2.2 相关操作的实现 23

2.2.3 顺序存储结构的分析 29

2.3 线性表的链式存储结构 29

2.3.1 线性链表与相关操作实现 29

2.3.2 双向链表与相关操作实现 38

2.3.3 循环链表与其相关操作实现 41

2.3.4 链式存储结构分析 42

2.4 线性表的应用 43

2.4.1 一元多项式的抽象数据类型 43

2.4.2 多项式的顺序表实现 43

小结 46

自测题答案 47

编程项目 48

第3章 栈和队列 49

3.1 栈 49

3.1.1 栈概述 49

3.1.2 栈的实现 50

3.1.3 栈的实现方式的比较 54

3.2 栈的应用 55

3.2.1 平衡符号 55

3.2.2 表达式求值 57

3.2.3 函数调用 61

3.2.4 递归与栈 62

3.3 队列 67

3.3.1 队列概述 67

3.3.2 队列的实现 69

3.3.3 队列实现方法比较 74

3.4 队列的应用 75

3.4.1 排列问题 75

3.4.2 非排列问题 76

小结 77

自测题答案 78

编程项目 79

第4章 串 80

4.1 串的定义 80

4.1.1 串 80

4.1.2 串的抽象数据类型 81

4.2 串的存储实现 82

4.2.1 串的顺序存储结构 82

4.2.2 串的链式存储结构 85

4.3 串的模式匹配 86

4.3.1 简单模式匹配算法 86

4.3.2 KMP算法 88

4.3.3 其他模式匹配算法 92

小结 94

自测题答案 95

编程项目 96

第5章 数组及广义表 97

5.1 数组的定义 97

5.1.1 数组的基本概念 97

5.1.2 数组的抽象数据类型 98

5.2 数组的顺序存储 99

5.2.1 数组的顺序存储方式 99

5.2.2 数组的顺序存储的基本操作 100

5.3 矩阵的压缩存储 102

5.3.1 特殊矩阵 102

5.3.2 稀疏矩阵 105

5.4 广义表 113

5.4.1 广义表的定义 113

5.4.2 广义表的存储 114

5.4.3 广义表的基本操作 116

小结 120

自测题答案 121

编程项目 123

第6章 树和二叉树 124

6.1 树的定义与基本操作 124

6.1.1 树的定义与相关术语 124

6.1.2 树的抽象数据类型 126

6.2 二叉树 127

6.2.1 二叉树的定义与基本操作 127

6.2.2 二叉树的性质 129

6.2.3 二叉树的存储结构 131

6.2.4 二叉树的遍历 133

6.2.5 线索化二叉树 138

6.3 树和森林 142

6.3.1 树的存储结构 142

6.3.2 森林、树、二叉树的相互转化 145

6.3.3 树和森林的遍历 146

6.4 哈夫曼树与哈夫曼编码 147

6.4.1 哈夫曼树 148

6.4.2 哈夫曼编码 151

小结 154

自测题答案 156

编程项目 158

第7章 图 159

7.1 图的定义 159

7.1.1 图的定义和相关术语 159

7.1.2 图的抽象数据类型 163

7.2 图的存储方式 164

7.2.1 数组表示法 165

7.2.2 邻接表法 167

7.2.3 十字链表法 169

7.2.4 邻接多重表 171

7.3 图的遍历 173

7.3.1 深度优先遍历 173

7.3.2 广度优先遍历 175

7.4 图的连通性 178

7.4.1 无向图的连通性 178

7.4.2 有向图的连通性 181

7.5 最小生成树 182

7.5.1 基本概念 182

7.5.2 Prim算法 183

7.5.3 Kruskal算法 185

7.6 最短路径 187

7.6.1 从某个顶点到其余各顶点的最短路径 187

7.6.2 所有点对最短路径 190

7.7 有向无环图的应用 193

7.7.1 拓扑排序 193

7.7.2 求解关键路径 197

小结 202

自测题答案 203

编程项目 207

第8章 查找 208

8.1 线性表上的查找 208

8.1.1 顺序表上的查找 208

8.1.2 有序表上的查找 209

8.1.3 索引顺序表上的查找 213

8.1.4 线性表上的查找算法比较 215

8.2 树上的查找 216

8.2.1 二叉排序树 216

8.2.2 平衡二叉树 224

8.2.3 B-树 231

8.3 哈希表 239

8.3.1 哈希表概述 239

8.3.2 哈希函数的构造 240

8.3.3 冲突的解决方法 243

8.3.4 哈希表的查找分析 249

小结 250

自测题答案 252

编程项目 255

第9章 排序 256

9.1 插入排序 256

9.1.1 直接插入排序 257

9.1.2 折半插入排序 258

9.1.3 2路插入排序 259

9.1.4 希尔排序 261

9.2 交换排序 264

9.2.1 冒泡排序 264

9.2.2 快速排序 265

9.3 选择排序 269

9.3.1 直接选择排序 269

9.3.2 树形选择排序 271

9.3.3 堆排序 272

9.4 归并排序 276

9.5 基数排序 279

9.6 各种内部排序方法比较 281

9.7 外部排序 284

9.7.1 选择外部排序的理由 284

9.7.2 简单外部排序算法 285

9.7.3 多路合并排序 287

9.7.4 替换-选择排序 287

小结 290

自测题答案 291

编程项目 294

附录 各章编程项目参考答案 295

参考文献 388