《数据结构 第2版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:王震江主编;何英,邱莎,俞锐刚,阿圆副主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302340287
  • 页数:301 页
图书介绍:本书使用C语言作为算法的描述语言。本书可分为6个部分,分别讲述绪论、线性表、树、图、查找与排序、文件。第1章概述数据结构的内容和分析方法,算法评价等。第2~5章讲述线性表、栈和队列、字符串和数组与广义表。第6章讨论树,先讨论一般树,然后是二叉树、线索二叉树、哈夫曼编码、树的应用等问题。第7章讨论图。第8、9章讨论查找算法和排序算法。第10章讨论了文件。

第1章 绪论 1

1.1 数据结构概述 1

1.1.1 引言 1

1.1.2 数据结构有关概念及术语 3

1.1.3 数据类型 6

1.2 算法描述与实现 6

1.2.1 算法的概念与特性 6

1.2.2 算法的设计与实现 8

1.3 算法的评价与分析 11

1.3.1 评价标准 11

1.3.2 算法的时间复杂性 12

1.3.3 算法的空间复杂性 15

本章小结 15

习题1 16

第2章 线性表 20

2.1 线性表的基本概念 21

2.1.1 线性表的定义 21

2.1.2 线性表的存储结构 21

2.1.3 线性表的运算 22

2.2 顺序表 23

2.2.1 顺序存储结构 23

2.2.2 顺序表的运算 24

2.2.3 线性表的遍历 30

2.2.4 顺序存储的物理位置 31

2.2.5 线性表的顺序存储的主要特点 31

2.3 链表 31

2.3.1 单链表的定义与创建 32

2.3.2 单链表的基本运算算法 37

2.3.3 循环单链表 42

2.3.4 双向链表 46

2.4 顺序表和链表的比较 50

2.5 链表的应用 51

本章小结 54

习题2 54

第3章 栈和队列 59

3.1 栈 59

3.1.1 栈的定义及其运算 59

3.1.2 栈的顺序存储结构 60

3.1.3 栈的链表存储结构 62

3.2 栈的应用 64

3.2.1 数制转换 64

3.2.2 算术表达式转换 65

3.2.3 子程序调用 68

3.2.4 递归调用 69

3.2.5 序列进出栈的排列问题 72

3.3 队列 72

3.3.1 队列的定义及运算 72

3.3.2 队列的顺序存储结构 73

3.3.3 队列的链表存储结构 76

3.3.4 队列的应用 78

本章小结 80

习题3 80

第4章 串 85

4.1 串的基本概念 85

4.2 串的存储结构 86

4.2.1 串的顺序存储 86

4.2.2 串的链表存储 87

4.3 串的运算 88

4.3.1 串的基本运算 88

4.3.2 串的简单模式匹配 91

4.3.3 Knuth-Morris-Pratt算法 93

本章小结 97

习题4 97

第5章 数组和广义表 99

5.1 数组的基本概念 99

5.1.1 数组的定义 99

5.1.2 数组的顺序存储结构 100

5.1.3 特殊矩阵的压缩存储 102

5.2 稀疏矩阵 104

5.2.1 三元组表 104

5.2.2 稀疏矩阵的十字链表存储 106

5.3 数组的应用 109

5.3.1 矩阵乘法 109

5.3.2 迷宫问题 110

5.4 广义表 112

5.4.1 广义表的定义 112

5.4.2 广义表的存储结构 114

5.4.3 广义表的运算 115

本章小结 118

习题5 118

第6章 树 123

6.1 树 124

6.1.1 树的定义 124

6.1.2 树的常用术语 124

6.1.3 树的逻辑表示 125

6.1.4 树的性质 126

6.1.5 树的存储结构 127

6.1.6 树的基本运算 130

6.2 二叉树 132

6.2.1 二叉树的定义 132

6.2.2 二叉树的性质 133

6.2.3 二叉树的存储结构 135

6.2.4 二叉树的遍历 136

6.2.5 二叉树的构造 142

6.2.6 二叉树的计数 145

6.3 二叉树的线索化 146

6.3.1 线索二叉树的概念 146

6.3.2 构造中序线索二叉树 148

6.3.3 在中根序线索树上的操作 148

6.4 二叉树、树、森林 150

6.4.1 树与二叉树之间的转换 150

6.4.2 森林与二叉树之间的转换 152

6.5 哈夫曼树 153

6.5.1 哈夫曼树的定义 153

6.5.2 哈夫曼树的应用 155

6.6 其他树 157

6.6.1 二叉排序树 157

6.6.2 平衡树 158

6.6.3 2-3树 159

6.6.4 红黑树 160

6.6.5 二叉表示树 161

6.6.6 判定树 161

本章小结 163

习题6 164

第7章 图 167

7.1 图的定义与基本术语 168

7.1.1 图的定义 168

7.1.2 图的基本术语 168

7.2 图的存储结构 170

7.2.1 邻接矩阵 170

7.2.2 邻接表 172

7.3 图的遍历和图的连通分量 175

7.3.1 深度优先搜索遍历 175

7.3.2 广度优先搜索遍历 177

7.3.3 非连通图的遍历 179

7.4 最小生成树 180

7.4.1 普里姆算法 180

7.4.2 克鲁斯卡尔算法 182

7.5 最短路径 183

7.5.1 从一个源点到其他各点的最短路径 184

7.5.2 任意一对顶点之间的最短路径 186

7.6 有向无环图的应用 188

7.6.1 拓扑排序 188

7.6.2 关键路径 190

本章小结 194

习题7 194

第8章 查找 199

8.1 查找的基本概念 199

8.2 静态查找表 200

8.2.1 顺序查找 200

8.2.2 二分查找 202

8.2.3 索引查找 205

8.2.4 线性表查找方法的比较 207

8.3 动态查找表 207

8.3.1 二叉排序树 208

8.3.2 平衡二叉树 213

8.3.3 2-3树 216

8.3.4 B—树和B+树 217

8.3.5 键树 224

8.4 哈希表及其查找 226

8.4.1 哈希表与哈希函数 227

8.4.2 构造哈希函数的常用方法 228

8.4.3 解决冲突的主要方法 231

8.4.4 哈希表上的运算 236

8.4.5 哈希表的性能分析 238

本章小结 239

习题8 239

第9章 排序 244

9.1 排序的基本概念 244

9.2 插入排序 246

9.2.1 直接插入排序 246

9.2.2 折半插入排序 249

9.2.3 希尔排序 250

9.3 交换排序 252

9.3.1 冒泡排序 252

9.3.2 快速排序 255

9.4 选择排序 259

9.4.1 直接选择排序 259

9.4.2 堆排序 261

9.5 归并排序 266

9.6 基数排序 270

9.6.1 基数排序的概念 270

9.6.2 基数排序的方法 271

9.6.3 基数排序的算法实现 273

9.7 各种内排序算法的性能比较和选择 275

9.8 外排序 276

9.8.1 磁盘排序 278

9.8.2 胜者树和败者树 280

9.8.3 最佳归并树 283

9.8.4 磁带排序 284

本章小结 285

习题9 286

第10章 文件 289

10.1 文件的基本概念 289

10.2 顺序文件 290

10.3 索引文件 291

10.4 索引顺序文件(ISAM和VSAM) 293

10.5 直接存取文件(散列文件) 295

10.6 多关键字文件 296

本章小结 299

习题10 299

参考文献 301