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

  • 购买积分:10 如何计算积分?
  • 作  者:陈倩诒,邓红卫主编;肖增良,许建国,王自全等副主编
  • 出 版 社:武汉:华中科技大学出版社
  • 出版年份:2013
  • ISBN:9787560983387
  • 页数:241 页
图书介绍:本书详细讨论了线性表、栈、队列、串、数组、树和二叉树、图等常用数据结构及其应用,并对查找和排序的各种实现方法进行了阐述和比较,涵盖了数据结构的全部经典内容。

第1章 绪论 1

1.1 引言 1

1.2 常用术语和基本概念 1

1.3 算法与算法分析 4

1.3.1 算法的重要特性 4

1.3.2 算法设计的基本要求 4

1.3.3 算法的描述方法 5

1.3.4 算法分析 5

小结 6

习题1 7

第2章 线性表 8

2.1 线性表的逻辑结构 8

2.1.1 线性表的定义 8

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

2.2 线性表的顺序存储及实现 10

2.2.1 顺序表 10

2.2.2 顺序表的基本操作 11

2.3 线性表的链式存储及实现 14

2.3.1 单链表 15

2.3.2 单链表的基本运算 16

2.4 顺序表和链表的比较 22

2.4.1 顺序存储结构的优、缺点 22

2.4.2 存储结构的选取 23

2.5 线性表的其他表示形式 24

2.5.1 单循环链表 24

2.5.2 双向链表 25

2.5.3 静态链表 26

2.6 单链表应用举例 27

2.6.1 单链表倒置 27

2.6.2 重复节点的删除 28

2.6.3 单链表的合并 28

2.6.4 一元多项式的表示及相加 29

小结 31

习题2 32

第3章 栈和队列 34

3.1 栈 34

3.1.1 栈的定义及基本操作 34

3.1.2 栈的顺序存储 35

3.1.3 栈的链式存储 37

3.1.4 顺序栈和链栈的比较 39

3.2 队列 39

3.2.1 队列的定义及基本操作 39

3.2.2 队列的顺序存储及基本操作 40

3.2.3 队列的链式存储及基本操作 45

3.3 栈的应用举例 47

3.3.1 栈与递归 47

3.3.2 栈与数制转换 49

3.3.3 栈与迷宫问题 50

3.3.4 栈与表达式求值 54

3.4 队列应用举例 56

3.4.1 键盘输入循环缓冲区问题 56

3.4.2 舞伴配对问题 57

3.4.3 杨辉三角问题 59

小结 61

习题3 61

第4章 串 64

4.1 串及其类型定义 64

4.1.1 串及其相关术语 64

4.1.2 串的抽象数据类型 65

4.2 串的定长顺序存储 66

4.2.1 串的定长顺序存储结构 66

4.2.2 定长顺序串的基本操作 67

4.2.3 模式匹配 68

4.3 串的堆存储结构 74

4.3.1 堆存储结构 74

4.3.2 堆结构上的基本操作 74

4.4 串的链式存储结构 76

4.5 串的应用举例 77

4.5.1 文本编辑 77

4.5.2 恺撒密码 78

小结 79

习题4 79

第5章 数组与广义表 81

5.1 数组及其操作 81

5.1.1 数组的定义 81

5.1.2 数组的顺序表示及实现 82

5.2 特殊矩阵的压缩存储 85

5.2.1 对称矩阵 85

5.2.2 三角矩阵 86

5.2.3 对角矩阵 87

5.3 稀疏矩阵 88

5.3.1 稀疏矩阵的三元组存储 89

5.3.2 稀疏矩阵的十字链表存储 94

5.4 广义表 97

5.4.1 广义表的定义 97

5.4.2 广义表的存储结构 98

5.4.3 广义表的基本操作 100

小结 103

习题5 103

第6章 树与二叉树 105

6.1 树 105

6.1.1 树的逻辑结构 105

6.1.2 树的存储结构 109

6.2 二叉树定义与性质 111

6.2.1 二叉树的基本概念 111

6.2.2 二叉树的主要性质 112

6.3 二叉树的存储与基本操作实现 113

6.3.1 二叉树的存储 113

6.3.2 二叉树的基本操作与实现 117

6.4 二叉树的遍历 119

6.4.1 二叉树的遍历方法及算法实现 119

6.4.2 从遍历序列推导二叉树 124

6.5 线索二叉树 125

6.5.1 线索二叉树的定义及结构 125

6.5.2 线索二叉树的基本操作及算法实现 127

6.6 树、森林与二叉树的转换 132

6.6.1 树转换为二叉树 132

6.6.2 森林转换为二叉树 133

6.6.3 二叉树转换为树或森林 133

6.7 二叉树遍历算法的应用 134

6.7.1 查找数据元素 134

6.7.2 显示二叉树 134

6.7.3 统计叶子节点数目 135

6.7.4 求二叉树深度 135

6.7.5 创建二叉树 136

6.8 最优二叉树——哈夫曼树 136

6.8.1 哈夫曼树的基本概念 136

6.8.2 哈夫曼树的构造算法 138

6.8.3 哈夫曼编码 140

小结 143

习题6 143

第7章 图 147

7.1 图的逻辑结构 147

7.1.1 图的定义和基本术语 147

7.1.2 图的抽象数据类型 151

7.2 图的存储结构 152

7.2.1 邻接矩阵 152

7.2.2 邻接表 154

7.2.3 十字链表 157

7.2.4 图的存储结构的比较 159

7.3 图的遍历 159

7.3.1 深度优先搜索 160

7.3.2 广度优先搜索 161

7.4 图与最小生成树 163

7.4.1 生成树和生成森林 163

7.4.2 最小生成树 165

7.4.3 Prim算法生成最小生成树 165

7.4.4 Kruskal算法生成最小生成树 168

7.5 AOV网与拓扑排序 170

7.5.1 有向无环图 170

7.5.2 AOV网 171

7.5.3 拓扑排序 172

7.6 AOE网与关键路径 175

7.6.1 AOE网 175

7.6.2 关键路径 176

7.7 图与最短路径 180

7.7.1 从一个源点到其余各顶点的最短路径 181

7.7.2 任意一对顶点之间的最短路径 183

小结 186

习题7 186

第8章 查找 190

8.1 静态查找表 190

8.1.1 顺序表查找 190

8.1.2 有序表查找 191

8.1.3 静态树表的查找 192

8.1.4 索引顺序表的查找 193

8.2 动态查找表 194

8.2.1 二叉排序树和平衡二叉树 195

8.2.2 B树和B+树 201

8.3 哈希表 205

8.3.1 什么是哈希表 205

8.3.2 哈希函数的构造方法 206

8.3.3 处理冲突的方法 207

8.3.4 哈希表的查找及性能分析 209

小结 210

习题8 210

第9章 内部排序 213

9.1 排序的基本概念 213

9.2 插入排序 214

9.2.1 直接插入排序 215

9.2.2 折半插入排序 216

9.2.3 二路插入排序 217

9.2.4 表插入排序 219

9.2.5 希尔排序 219

9.3 交换排序 221

9.3.1 冒泡排序 221

9.3.2 快速排序 224

9.4 选择排序 227

9.4.1 简单选择排序 227

9.4.2 树形选择排序 228

9.4.3 堆排序 229

9.5 归并排序 233

9.6 基数排序 235

9.6.1 多关键字排序 235

9.6.2 链式基数排序 236

9.7 各种内部排序方法的比较 237

小结 238

习题9 239

参考文献 241