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

  • 购买积分:11 如何计算积分?
  • 作  者:彭娟,杨勇主编;袁开友等副主编
  • 出 版 社:重庆:重庆大学出版社
  • 出版年份:2017
  • ISBN:9787568903974
  • 页数:274 页
图书介绍:本书以C语言为基础讲解数据结构与算法。全书共11章,全面介绍了开发中常用的数据结构,包括线性表(顺序表、单链表、双链表、循环链表)、栈和队列、串、数组和广义表、树、图,详细讲解了各种数据结构的实现及常用操作,以及多种查找算法、内部排序算法的原理和实现,简要介绍了文件的相关知识,最后通过一个综合项目对书中介绍的知识进行整合应用,帮助读者了解实际项目开发的流程。本书对每种数据结构和算法的剖析都遵循由浅入深的原则,并配以实用的案例和图示,适合具有C语言基础的数据结构初学者,实用性强。

第1章 绪论 1

1.1 引言 1

1.2 基本概念和术语 4

1.3 算法的概念及其特性 6

1.3.1 算法的定义 6

1.3.2 算法的组成要素 7

1.3.3 算法的基本性质 8

1.4 算法设计的要求 8

1.5 算法的描述方法 9

1.6 算法分析和评价 11

1.6.1 算法的时间复杂度 12

1.6.2 算法的空间复杂度 14

本章小结 15

习题 15

第2章 线性表 19

2.1 线性表的概念与基本操作 19

2.2 顺序表 20

2.2.1 顺序表的概念 21

2.2.2 顺序表基本操作及实现 21

2.3 单链表 28

2.3.1 单链表的概念 28

2.3.2 单链表基本操作及实现 29

2.4 循环链表 34

2.4.1 循环链表的概念 34

2.4.2 循环链表基本操作及实现 34

2.5 双链表 37

2.5.1 双链表的概念 37

2.5.2 双链表基本操作及实现 37

本章小结 42

习题 42

第3章 栈和队列 44

3.1 栈 44

3.1.1 栈的概念及基本操作 44

3.1.2 顺序栈 45

3.1.3 链栈 49

3.1.4 递归和栈 53

3.2 队列 55

3.2.1 队列概念及基本操作 55

3.2.2 顺序队列 56

3.2.3 循环队列 59

3.2.4 链式队列 61

本章小结 65

习题 66

第4章 串 69

4.1 串的概念和基本操作 69

4.2 串的表示与实现 70

4.2.1 顺序定长存储及实现 70

4.2.2 串的堆存储及实现 72

4.2.3 串的链式存储及实现 74

4.3 串的模式匹配算法 76

4.3.1 Brute-Force模式匹配算法 77

4.3.2 KMP模式匹配算法 78

本章小结 81

习题 81

第5章 数组与广义表 83

5.1 数组 83

5.1.1 数组的概念 83

5.1.2 数组的存储 83

5.1.3 矩阵的压缩 86

5.2 广义表 97

5.2.1 广义表的定义 97

5.2.2 广义表的特性 98

5.2.3 广义表的存储结构 99

本章小结 100

习题 101

第6章 树和二叉树 102

6.1 树 103

6.1.1 树的概念及基本术语 103

6.1.2 树的逻辑表示方法 104

6.1.3 树的存储结构 104

6.2 二叉树 106

6.2.1 二叉树的概念 106

6.2.2 二叉树的性质 107

6.2.3 二叉树存储结构 109

6.2.4 二叉树的遍历 110

6.3 线索二叉树 113

6.3.1 线索二叉树的概念 113

6.3.2 线索化二叉树 113

6.3.3 遍历线索化二叉树 116

6.4 哈夫曼树 117

6.4.1 哈夫曼树概述 117

6.4.2 哈夫曼树的构造算法 117

6.4.3 哈夫曼编码 119

6.5 树、森林和二叉树 120

6.5.1 二叉树与树、森林之间的转换 120

6.5.2 树、森林的遍历 122

本章小结 124

习题 125

第7章 图 128

7.1 图的概念及基本术语 129

7.2 图的存储结构 130

7.2.1 邻接矩阵表示法 131

7.2.2 邻接表表示法 132

7.3 图的遍历 133

7.3.1 深度优先搜索法 134

7.3.2 广度优先搜索法 136

7.4 图的应用 139

7.4.1 最小生成树 139

7.4.2 最短路径 144

7.4.3 AOV网与拓扑排序 148

7.4.4 AOE网与关键路径 152

本章小结 156

习题 157

第8章 查找 159

8.1 查找的概念及基本术语 159

8.2 线性表查找 160

8.2.1 顺序查找 160

8.2.2 二分查找 162

8.2.3 分块查找 164

8.2.4 顺序表三种查找方法的比较 169

8.3 树表的查找 169

8.4 哈希表的查找 176

本章小结 181

习题 182

第9章 排序 184

9.1 排序的概念及基本术语 184

9.2 插入排序 185

9.2.1 直接插入排序 185

9.2.2 二分插入排序 188

9.2.3 希尔排序 191

9.3 交换排序 193

9.3.1 冒泡排序 193

9.3.2 快速排序 195

9.4 选择排序 197

9.4.1 直接选择排序 197

9.4.2 堆排序 199

9.5 归并排序 201

9.6 基数排序 203

9.7 各种内排序方法的比较和选择 207

本章小结 208

习题 209

第10章 常用算法及其应用 212

10.1 分治算法 212

10.1.1 分治算法概述 212

10.1.2 分治算法的基本步骤 213

10.1.3 分治算法应用实例 213

10.2 动态规划算法 214

10.2.1 动态规划算法概述 214

10.2.2 动态规划算法的基本步骤 215

10.2.3 动态规划算法应用实例 216

10.3 贪心算法 219

10.3.1 贪心算法概述 219

10.3.2 贪心算法的基本步骤 220

10.3.3 贪心算法应用实例 221

10.4 回溯算法 222

10.4.1 回溯算法概述 222

10.4.2 回溯算法的基本步骤及程序模式 223

10.4.3 回溯算法应用实例 224

10.5 分支界限算法 226

10.5.1 分支界限算法概述 226

10.5.2 分支界限算法的基本步骤 227

10.5.3 分支界限算法应用实例 227

本章小结 230

习题 231

附录A应用实践 232

实践1顺序表的建立与基本操作 232

实践2单链表的建立与基本操作 233

实践3顺序栈的建立与基本操作 233

实践4顺序队列的建立与基本操作 233

实践5线性表查找 234

实践6内排序 234

附录B各章习题参考答案 236

附录C应用实践参考代码 257

实践1顺序表的建立与基本操作 257

实践2单链表的建立与基本操作 260

实践3顺序栈的建立与基本操作 263

实践4顺序队列的建立与基本操作 265

实践5线性表查找 268

实践6内排序 270

参考文献 274