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

  • 购买积分:12 如何计算积分?
  • 作  者:沈华,文志诚,杨晓艳,张明武编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111511427
  • 页数:344 页
图书介绍:本书用深入浅出的语言从普通高校学生的学习需求出发,介绍了数据结构的相关知识。本书分为六个部分,从基础知识、线性数据结构、非线性数据结构、数据结构中的重要运算、多维数据结构及大数据数据结构等内容。本书适合作为高等院校计算机及相关专业数据结构课程的教材,也可作为技术人员的自学教材。

第一部分 概论部分 3

第1章 数据结构 3

1.1 什么是数据 3

1.2 什么是数据结构 3

1.2.1 数据的逻辑结构 3

1.2.2 数据的存储结构 6

1.2.3 数据的运算 8

1.3 什么是数据类型 9

1.4 什么是抽象数据类型 9

1.5 知识点小结 10

习题 10

第2章 算法 11

2.1 什么是算法 11

2.2 算法的描述 11

2.3 算法的性能分析 12

2.3.1 时间复杂度 13

2.3.2 渐近符号 13

2.3.3 空间复杂度 15

2.3.4 复杂度分析举例 15

2.4 算法的性能度量 18

2.4.1 性能度量的方法 18

2.4.2 生成测试数据 19

2.5 知识点小结 19

习题 19

第二部分 线性部分 22

第3章 线性表 22

3.1 线性表抽象数据类型 22

3.1.1 线性表的逻辑结构 22

3.1.2 线性表的基本运算 22

3.1.3 线性表的ADT描述 23

3.2 线性表的应用——两个一元多项式相加 24

3.2.1 问题描述与分析 24

3.2.2 问题求解 25

3.3 线性表的实现 26

3.3.1 顺序表 26

3.3.2 单链表 41

3.3.3 静态单链表 52

3.3.4 一元多项式相加问题的求解实现 56

3.4 线性表的其他实现及应用场景分析 69

3.4.1 双(向)链表 69

3.4.2 循环单(向)链表 71

3.4.3 循环双(向)链表 74

3.5 知识点小结 75

习题 75

第4章 栈 77

4.1 栈抽象数据类型 77

4.1.1 栈的逻辑结构 77

4.1.2 栈的基本运算 78

4.1.3 栈的ADT描述 78

4.2 栈的应用——表达式求解 79

4.2.1 问题描述与分析 79

4.2.2 问题求解 79

4.3 栈的实现 85

4.3.1 顺序栈 85

4.3.2 链栈 88

4.3.3 在表达式求解问题上的性能分析与比较 91

4.4 顺序栈的一种有趣实现——两个方向生长的栈 91

4.5 栈与递归的天然联系 92

4.6 知识点小结 93

习题 93

第5章 队列 95

5.1 队列抽象数据类型 95

5.1.1 队列的逻辑结构 95

5.1.2 队列的基本运算 95

5.1.3 队列的ADT描述 96

5.2 队列的应用——模拟舞伴配对问题 96

5.2.1 问题描述与分析 96

5.2.2 问题求解 97

5.3 队列的实现 97

5.3.1 顺序队列 97

5.3.2 循环队列 101

5.3.3 链队列 107

5.4 双端队列及队列应用场景举例 110

5.4.1 双端队列 110

5.4.2 队列应用场景举例 111

5.5 知识点小结 111

习题 112

第6章 串 113

6.1 串抽象数据类型 113

6.1.1 串的逻辑结构 113

6.1.2 串的基本运算 113

6.1.3 串的ADT描述 114

6.2 串的实现 114

6.2.1 串的顺序存储表示 114

6.2.2 串的堆分配存储表示 118

6.2.3 串的块链存储表示 120

6.3 串的模式匹配 124

6.3.1 朴素的模式匹配算法 124

6.3.2 KMP算法 128

6.4 知识点小结 133

习题 133

第7章 数组及广义表 134

7.1 数组的类型定义 134

7.1.1 数组的定义 134

7.1.2 数组的性质 134

7.1.3 数组的基本运算 134

7.2 多维数组的线性存储方法 135

7.3 特殊矩阵的压缩存储 138

7.3.1 特殊形状矩阵的压缩存储 138

7.3.2 随机稀疏矩阵的压缩存储及其运算 142

7.4 广义表 154

7.4.1 广义表的基本概念 154

7.4.2 广义表的性质 155

7.4.3 广义表的基本运算 155

7.4.4 广义表的存储结构 156

7.5 知识点小结 159

习题 159

第三部分 非线性部分 162

第8章 树与森林 162

8.1 认识树 162

8.1.1 (根)树的定义 162

8.1.2 基本术语 163

8.1.3 树的基本运算 164

8.2 树的实现 167

8.2.1 需要解决的关键问题 167

8.2.2 关键问题的求解思路 167

8.2.3 树的存储结构 167

8.2.4 存储方案的比较分析 178

8.3 树的创建 178

8.3.1 问题描述与分析 178

8.3.2 问题求解 179

8.4 树的遍历 180

8.4.1 问题描述与分析 180

8.4.2 问题求解 180

8.5 树的应用 181

8.5.1 并查集 181

8.5.2 等价类 182

8.5.3 决策树 184

8.6 森林 184

8.7 知识点小结 185

习题 185

第9章 二叉树 186

9.1 认识二叉树 186

9.1.1 二叉树的定义 186

9.1.2 二叉树的基本运算 187

9.1.3 二叉树的性质 189

9.2 二叉树的实现 194

9.2.1 需要解决的关键问题 194

9.2.2 关键问题的求解思路 195

9.2.3 二叉树的存储结构 195

9.2.4 方案的比较分析 203

9.3 二叉树的创建 203

9.3.1 问题描述与分析 203

9.3.2 问题求解 203

9.4 二叉树的遍历 204

9.4.1 问题描述与分析 204

9.4.2 问题求解 208

9.4.3 二叉树遍历应用举例 211

9.5 线索二叉树 215

9.5.1 线索二叉树的应用需求 215

9.5.2 二叉树的线索化 217

9.5.3 线索二叉树上的运算 219

9.6 二叉树的应用 227

9.6.1 哈夫曼树及其应用 227

9.6.2 二叉排序树及其应用 233

9.6.3 平衡二叉树 236

9.7 树、森林与二叉树的关系 241

9.7.1 树、森林与二叉树的相互转换 241

9.7.2 树、森林与二叉树在遍历运算上的关系 244

9.8 知识点小结 244

习题 245

第10章 图 246

10.1 认识图 246

10.1.1 图的定义 246

10.1.2 基本术语 246

10.1.3 图的基本运算 252

10.2 图的实现 253

10.2.1 需要解决的关键问题 253

10.2.2 关键问题的求解思路 253

10.2.3 图的存储结构 254

10.2.4 存储方案的比较分析 261

10.3 图的创建 262

10.3.1 问题描述与分析 262

10.3.2 问题求解 262

10.4 图的遍历 264

10.4.1 问题描述与分析 264

10.4.2 深度优先搜索遍历 265

10.4.3 广度优先搜索遍历 272

10.4.4 图遍历的应用 277

10.5 生成树 277

10.5.1 连通图的生成树 277

10.5.2 连通网的最小生成树 278

10.6 最短路径 280

10.6.1 单源最短路径 281

10.6.2 每对顶点间的最短路径 284

10.6.3 最短路径应用举例 288

10.7 有向无环图及其应用 288

10.7.1 AOV网与拓扑排序 288

10.7.2 AOE网与关键路径 290

10.8 知识点小结 293

习题 293

第四部分 重要运算部分 296

第11章 查找 296

11.1 查找的基本概念 296

11.2 静态查找 297

11.2.1 顺序查找 297

11.2.2 二分查找 299

11.2.3 分块查找 303

11.3 动态查找 304

11.4 散列技术 312

11.4.1 散列表的概念 312

11.4.2 散列函数的构造方法 312

11.4.3 处理冲突的方法 312

11.4.4 散列表的查找 315

11.4.5 散列表的应用 317

11.5 知识点小结 318

习题 318

第12章 排序 319

12.1 排序的基本概念 319

12.2 插入排序 321

12.2.1 直接插入排序 321

12.2.2 希尔排序 324

12.3 交换排序 325

12.3.1 冒泡排序 325

12.3.2 快速排序 327

12.4 选择排序 330

12.4.1 直接选择排序 330

12.4.2 树形选择排序 332

12.4.3 堆排序 333

12.5 归并排序 338

12.5.1 (内部)归并排序 338

12.5.2 外部归并排序 339

12.6 分配排序 339

12.6.1 箱排序 339

12.6.2 基数排序 339

12.7 各种(内部)排序方法的比较 341

12.8 知识点小结 342

习题 342

参考文献 344