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

  • 购买积分:11 如何计算积分?
  • 作  者:赵坚,姜梅主编
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2005
  • ISBN:7508430522
  • 页数:287 页
图书介绍:本书介绍各种常用的数据结构。全书共10章,主要内容包括:绪论、线性表、栈和队列、串、数组、树和二叉树、图、排序、查找和文件。本书注重基础,突出重点,内容精炼,通俗易懂,实例丰富,实用性强。书中采用C语言描述算法,清晰简洁,学生易于理解和掌握。为帮助读者深入理解、巩固和深化理论知识,每一章之后配有各种类型的练习题,可供不同层次的读者选用。本书配套有《数据结构(C语言版)学习指导与习题解答》本书所配电子教案及书中程序源代码均可以从中国水利水电出版社网站上下载,网址为:http://www.waterpub.com.cn。本书可作为高等院校应用型本科或专科的教学用书,也可作为信息类相关专业的教学或参考书。

序 1

第1章 绪论 1

本章学习目标 1

1.1 什么是数据结构 1

1.1.1 数据结构示例 1

1.1.2 基本概念和术语 4

1.1.3 数据结构(Data Structure) 5

1.2 算法描述 8

1.2.1 算法 8

1.2.2 算法描述 8

1.3.2 算法效率的度量 9

1.3.1 算法设计的要求 9

1.3 算法分析与评价 9

本章小结 11

习题 12

第2章 线性表 15

本章学习目标 15

2.1 线性表的基本概念 15

2.1.1 线性表的定义 15

2.1.2 线性表的基本运算 16

2.2 线性表的顺序结构及运算实现 17

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

2.2.2 线性表在顺序存储结构下的运算实现 19

2.3.1 链表的存储结构 24

2.3 线性表的链式存储和运算实现 24

2.3.2 单向链表 26

2.3.3 循环链表 32

2.3.4 双向链表 33

2.3.5 循环双链表 36

2.3.6 静态链表 37

2.4 线性表的应用——一元多项式计算 38

2.4.1 一元多项式表示 38

2.4.2 一元多项式相加 38

2.5 顺序表和链表的比较 40

本章小结 41

习题 41

3.1 栈 45

3.1.1 栈的定义和运算 45

第3章 栈和队列 45

本章学习目标 45

3.1.2 栈的顺序存储结构及其基本运算的实现 46

3.1.3 栈的链式存储结构及其基本运算的实现 50

3.2 栈的应用 52

3.2.1 中缀表达式 52

3.2.2 中缀表达式转换为等价的后缀表达式 57

3.2.3 后缀表达式及其求值 58

3.3 栈与递归 59

3.3.1 递归与递归程序的设计 59

3.3.2 递归程序执行过程的分析 60

3.3.3 递归的应用举例 62

3.4.1 队列的定义和运算 65

3.4.2 队列的顺序存储结构及其基本运算的实现 65

3.4 队列 65

3.4.3 队列的链式存储结构及其基本运算的实现 68

3.4.4 队列应用举例 70

本章小结 73

习题 73

4.1 串及其运算 78

4.1.1 串的逻辑结构 78

4.1.2 串的基本运算 78

本章学习目标 78

第4章 串 78

4.2 串的存储结构 80

4.2.1 串的顺序存储结构及其基本运算的实现 80

4.2.2 串的链式存储结构及其基本运算的实现 82

4.2.3 串的堆分配存储结构及其基本运算的实现 85

4.3 串的模式匹配 86

4.3.1 Brute-Force算法 86

4.3.2 KMP算法 88

4.4 串的应用 90

本章小结 91

习题 92

5.1.1 数组的定义 94

5.1 数组 94

本章学习目标 94

第5章 数组和广义表 94

5.1.2 数组的基本操作 95

5.1.3 数组的存储结构 96

5.2 矩阵的压缩存储 98

5.2.1 特殊矩阵的压缩存储方法 98

5.2.2 稀疏矩阵的压缩存储方法 100

5.3 广义表 109

5.3.1 广义表的定义 109

5.3.2 广义表的存储结构 111

5.3.3 广义表的基本操作 112

本章小结 116

习题 117

第6章 树和二叉树 123

本章学习目标 123

6.1 树的逻辑结构和存储结构 123

6.1.1 树型结构实例 123

6.1.2 树的定义和基本运算 124

6.1.3 树的表示 127

6.1.4 树的存储结构 127

6.1.5 树和森林的遍历 130

6.2 二叉树 132

6.2.1 二叉树的定义与性质 132

6.2.2 二叉树的存储结构 135

6.2.3 二叉树的基本运算及实现 137

6.3.1 遍历二叉树 140

6.3 遍历二叉树和线索二叉树 140

6.3.2 线索二叉树 144

6.4 树、森林与二叉树的转换 147

6.5 二叉树的应用 149

6.5.1 二叉排序树 149

6.5.2 路径长度和哈夫曼树 149

6.5.3 构造哈夫曼树 152

本章小结 158

习题 159

7.1 图及其基本运算 166

7.1.1 图的定义 166

本章学习目标 166

第7章 图 166

7.1.2 图的基本术语 167

7.1.3 图的基本运算 169

7.2 图的存储结构 169

7.2.1 邻接矩阵 169

7.2.2 邻接表 171

7.2.3 十字链表 172

7.2.4 邻接多重表 173

7.3 图的遍历 174

7.3.1 深度优先搜索(DFS) 175

7.3.2 广度优先搜索(BFS) 177

7.4 最小生成树 179

7.4.1 克鲁斯卡尔(Kruskal)算法 180

7.4.2 普里姆(Prim)算法 181

7.5 最短路径 184

7.5.1 求一顶点到其余顶点的最短路径 184

7.5.2 每对顶点之间的最短路径 188

7.6 拓扑排序 191

7.7 关键路径 195

本章小结 199

习题 200

第8章 排序 204

本章学习目标 204

8.1 排序的基本概念 204

8.1.1 排序及其分类 204

8.2 插入排序 205

8.1.2 排序算法的效率分析 205

8.2.1 直接插入排序 206

8.2.2 折半插入排序 208

8.2.3 希尔排序 209

8.3 交换排序 211

8.3.1 冒泡排序 211

8.3.2 快速排序 213

8.4 选择排序 217

8.4.1 简单选择排序 217

8.4.2 堆排序 218

8.5 归并排序 223

8.6 基数排序 226

8.7.1 外部排序过程 229

8.7 外部排序 229

8.7.2 多路平衡归并 230

8.7.3 置换一选择排序 231

8.8 各种排序方法的比较 232

本章小结 234

习题 235

第9章 查找 241

本章学习目标 241

9.1 基本概念 241

9.2 顺序表的静态查找 242

9.2.1 简单顺序查找 242

9.2.2 二分查找 243

9.2.3 分块查找 245

9.3.1 二叉排序树 247

9.3 树表的动态查找 247

9.3.2 平衡二叉树 253

9.3.3 B-树 257

9.4 散列表查找 261

9.4.1 什么是散列表 262

9.4.2 散列函数的构造方法 262

9.4.3 冲突的解决方法 264

9.4.4 散列表的查找及性能分析 267

9.4.5 有关散列表的算法 269

本章小结 271

习题 272

10.1.1 文件的基本概念 276

10.1 文件的基本概念 276

第10章 文件 276

本章学习目标 276

10.1.2 文件的逻辑结构 277

10.1.3 文件的物理结构 277

10.1.4 文件的操作 277

10.2 顺序文件 278

10.2.1 存储在顺序存储器上的顺序文件 278

10.2.2 存储在直接存储器上的顺序文件 279

10.3 索引文件 279

10.4.1 索引顺序文件的特点 280

10.4.2 VSAM文件的组织方法 280

10.4 索引顺序文件 280

10.5 散列文件 281

10.5.1 散列文件的组织方式 281

10.5.2 散列文件的操作 281

10.6 多关键字文件 282

10.6.1 多关键字文件概念 282

10.6.2 倒排文件 283

10.6.3 多重表文件 283

10.6.4 多关键字文件和其他文件的区别 284

本章小结 284

习题 284

参考文献 287