《数据结构》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:田鲁怀编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2006
  • ISBN:7121027941
  • 页数:379 页
图书介绍:本书共分10章,内容包括:数据结构的概念,几种基本的线性结构(如线性表),栈和队列,串,几种非线性结构(如多维数组和广义表),树,图,常用的数据处理技术(如排序),查找,文件的存储结构和组织方法等。在每一章中都收集了难度各异的习题和例题,全书采用C语言作为算法描述语言,并有详细的注释,书中全部程序均上机在TURBO C 2.0环境下进行了验证并调试通过,同时给出部分程序的运行结果。各章中的“简单应用举例”,既是本章算法的综合应用,也可作为本章实训内容和课程设计的综合练习,全书有很强的实用性和可操作性。

第1章 概论 1

1.1 概述 1

1.2 数据结构的基本概念 4

1.2.1 数据结构的基本术语 4

1.2.2 数据的逻辑结构 6

1.2.3 数据的存储结构 8

1.3 算法性能分析与度量 12

1.3.1 算法和算法的描述方法 12

1.3.2 算法的特性 14

1.3.3 算法设计的要求 14

1.3.4 算法时间复杂度的度量 15

1.3.5 算法存储空间的需求 19

本章小结 20

习题1 20

第2章 线性表 23

2.1 线性表的定义及基本运算 23

2.1.1 线性表的定义 23

2.1.2 线性表的基本运算 24

2.2 线性表的顺序存储结构及其运算 25

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

2.2.2 顺序表的基本运算 26

2.2.3 顺序表上插入和删除运算的时间分析 30

2.2.4 顺序表的优点和缺点 30

2.3 线性表的链接存储结构及其运算 30

2.3.1 单链表 31

2.3.2 单链表上的基本运算 32

2.3.3 单链表上查找、插入和删除运算的时间分析 39

2.3.4 循环链表 39

2.3.5 双向链表 42

2.4 顺序表和链表的比较 45

2.5 线性表的简单应用举例 46

本章小结 61

习题2 62

第3章 栈和队列 65

3.1 栈的基本概念 65

3.2 栈的存储结构 66

3.2.1 栈的顺序存储结构 66

3.2.2 栈的链接存储结构 67

3.2.3 栈的两种存储结构的比较 68

3.2.4 多个顺序栈共享一个数组的存储空间 68

3.3 栈的基本运算 69

3.3.1 顺序存储结构上顺序栈的运算实现 70

3.3.2 链接存储结构上链栈的运算实现 71

3.4 栈的简单应用举例 72

3.4.1 栈在递归过程中的作用 72

3.4.2 简单应用举例 75

3.5 队列的基本概念 80

3.6 队列的存储结构 81

3.6.1 队列的顺序存储结构 81

3.6.2 顺序存储的循环队列 83

3.6.3 队列的链接存储结构 84

3.7 队列的基本运算 85

3.7.1 顺序存储结构上顺序队列的运算实现 85

3.7.2 顺序存储结构上循环队列的运算实现 86

3.7.3 链接存储结构上链队列的运算实现 88

3.8 队列的简单应用举例 90

本章小结 96

习题3 97

第4章 串 99

4.1 串的基本概念 99

4.2 串的存储结构 100

4.2.1 串的顺序存储结构 100

4.2.2 串的链接存储结构 102

4.3 串的基本运算及实现 104

4.3.1 串的基本运算 104

4.3.2 顺序串上基本运算的实现 105

4.3.3 链串上基本运算的实现 107

4.4 串的模式匹配运算 111

4.4.1 BF模式匹配算法 111

4.4.2 BM模式匹配算法 114

4.4.3 KMP模式匹配算法 116

4.5 串的简单应用举例 123

本章小结 130

习题4 130

5.1.1 数组的概念 132

5.1 数组的概念和存储 132

第5章 数组和广义表 132

5.1.2 数组的存储结构 133

5.2 特殊矩阵的压缩存储 136

5.2.1 对称矩阵的压缩存储 136

5.2.2 三角矩阵的压缩存储 137

5.2.3 对角矩阵的压缩存储 138

5.3 稀疏矩阵的压缩存储 140

5.3.1 稀疏矩阵的三元组表示 140

5.3.2 稀疏矩阵的十字链表表示 147

5.3.3 稀疏矩阵的简单应用举例 151

5.4 广义表 156

5.4.1 广义表的基本概念 156

5.4.2 广义表的链接存储结构 157

5.4.3 广义表的基本运算 160

5.4.4 广义表的简单应用举例 165

本章小结 166

习题5 167

第6章 树 169

6.1 树的基本概念 169

6.1.1 树的定义 169

6.1.2 树的基本术语 171

6.2 二叉树 173

6.2.1 二叉树的概念 173

6.2.2 二叉树的基本性质 175

6.2.3 二叉树的存储结构 176

6.3.1 二叉树的遍历 179

6.3 二叉树的运算 179

6.3.2 二叉树的建立 184

6.3.3 二叉树的其他运算举例 186

6.4 线索化二叉树 191

6.4.1 线索二叉树的概念 191

6.4.2 二叉树的中序线索化 192

6.4.3 线索二叉树的遍历和插入运算 194

6.5 树和森林 197

6.5.1 树的存储结构 197

6.5.2 树和森林与二叉树的转换 200

6.5.3 树的遍历 204

6.5.4 森林的遍历 205

6.6.1 哈夫曼树的基本概念 206

6.6 哈夫曼树及其应用 206

6.6.2 哈夫曼树的构造及实现 207

6.6.3 哈夫曼编码 210

6.6.4 哈夫曼译码 214

6.6.5 哈夫曼树在编码问题中的完整程序 215

本章小结 217

习题6 218

第7章 图 221

7.1 图的基本概念 221

7.1.1 图的实际背景 221

7.1.2 图的定义 222

7.1.3 图的基本术语 223

7.2.1 邻接矩阵表示法 226

7.2 图的存储结构 226

7.2.2 邻接表表示法 230

7.3 图的遍历 233

7.3.1 连通图的深度优先搜索遍历 234

7.3.2 连通图的广度优先搜索遍历 236

7.3.3 非连通图的遍历 239

7.4 生成树和最小生成树 242

7.4.1 生成树和最小生成树的概念 243

7.4.2 Kruskal算法 244

7.4.3 Prim算法 247

7.5 最短路径 249

7.5.1 最短路径的概念 249

7.5.2 单源最短路径 251

7.5.3 所有项点对之间的最短路径 254

7.6 AOV网和拓扑排序 259

7.6.1 AOV网和拓扑排序 259

7.6.2 拓扑排序算法 260

7.7 AOE网和关键路径 264

7.7.1 AOE网和关键路径的概念 264

7.7.2 关键路径的确定 266

7.8 图的简单应用举例 268

本章小结 276

习题7 277

第8章 排序 280

8.1 排序的基本概念 280

8.2.1 直接插入排序 283

8.2 插入排序 283

8.2.2 希尔排序 285

8.3 交换排序 287

8.3.1 冒泡排序 287

8.3.2 快速排序 290

8.4 选择排序 293

8.4.1 直接选择排序 293

8.4.2 堆排序 294

8.5 归并排序 301

8.5.1 两个相邻有序表的一次归并过程 302

8.5.2 一趟归并排序过程 302

8.5.3 二路归并排序 303

8.6.2 各种内排序方法的比较 304

8.6 各种内排序方法的比较和选择 304

8.6.1 各种内排序方法的总结 304

8.6.3 排序方法的选择 305

8.7 排序的简单应用举例 306

本章小结 310

习题8 311

第9章 查找 314

9.1 查找的基本概念 314

9.2 线性表的查找 315

9.2.1 顺序查找 315

9.2.2 二分查找 316

9.2.3 分块查找 319

9.3.1 二叉排序树 322

9.3 树表的查找 322

9.3.2 平衡的二叉排序树 329

9.3.3 B-树 334

9.4 散列表的查找 341

9.4.1 散列表的概念 341

9.4.2 散列函数的构造方法 343

9.4.3 处理冲突的方法 346

9.4.4 散列表的运算 350

9.4.5 散列表的查找及分析 354

9.5 查找的简单应用程序举例 356

本章小结 361

习题9 362

10.1 文件的基本概念 364

第10章 文件 364

10.2 顺序文件 366

10.3 索引文件 367

10.4 索引顺序文件 369

10.4.1 ISAM文件 369

10.4.2 VSAM文件 372

10.5 散列文件 374

10.6 多关键字文件 375

10.6.1 多重表文件 375

10.6.2 倒排文件 376

本章小结 377

习题10 378

参考文献 379