《数据结构 C/C++版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:熊回香编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787512100824
  • 页数:416 页
图书介绍:本书第l章为绪论,介绍数据结构的基本概念、算法分析的方法及与算法描述有关的C语言知识;第2章为线性表;第3章为堆栈和队列;第4章为串;第5章为数组和广义表;第6章为树形结构;第7章为图;第8章为查找,介绍各种查找算法的算法思想及其实现过程;第9章为排序;第10章为文件,介绍各类文件的组织结构及其操作;附录A中介绍了一个用C 描述的顺序表类。

第1章 绪论 1

1.1 数据结构的产生和发展 1

1.1.1 数据结构的产生 1

1.1.2 数据结构的发展 2

1.2 数据结构的研究对象 2

1.3 基本概念和术语 4

1.4 数据结构与算法的关系 8

1.5 算法与算法分析 9

1.5.1 算法 9

1.5.2 算法的描述方法 10

1.5.3 算法设计目标 11

1.5.4 算法效率的度量 12

1.6 与算法描述有关的C++知识 15

1.6.1 C++的输入和输出 15

1.6.2 函数 16

1.6.3 类和对象 18

1.6.4 变量的引用类型 22

1.6.5 运算符重载 23

1.6.6 数据类型相关说明 24

1.6.7 两个相关的头文件 24

本章小结 27

习题一 27

第2章 线性表 30

2.1 线性表的基本概念 30

2.1.1 线性表的定义 30

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

2.2 线性表的顺序存储和基本操作 35

2.2.1 线性表的顺序存储——顺序表 35

2.2.2 顺序表的基本操作 37

2.2.3 顺序表基本操作的算法分析 41

2.3 线性表的链式存储和基本操作 42

2.3.1 链式存储的概念 42

2.3.2 单链表 43

2.3.3 单链表的基本操作 44

2.3.4 单链表基本操作的算法分析 50

2.3.5 双向链表 51

2.3.6 循环链表 54

2.4 顺序表和链表的综合比较 56

2.5 静态链表 57

2.6 线性表算法设计举例 59

2.6.1 顺序表算法设计举例 59

2.6.2 单链表算法设计举例 61

本章小结 65

习题二 66

第3章 堆栈与队列 69

3.1 堆栈 69

3.1.1 堆栈的基本概念 69

3.1.2 堆栈的顺序存储和基本操作 71

3.1.3 堆栈的链式存储和基本操作 77

3.2 堆栈的应用举例 81

3.3 队列 88

3.3.1 队列的基本概念 88

3.3.2 队列的顺序存储和基本操作 89

3.3.3 队列的链式存储和基本操作 96

3.3.4 其他队列 100

3.4 队列的应用举例 101

本章小结 109

习题三 110

第4章 串 113

4.1 串的基本概念 113

4.1.1 串的定义 113

4.1.2 串的抽象数据类型 115

4.2 串的顺序存储和基本操作 116

4.2.1 串的顺序存储——顺序串 116

4.2.2 顺序串的基本操作 117

4.3 串的链式存储和基本操作 124

4.3.1 串的链式存储——链式串 124

4.3.2 链式串的基本操作 125

4.4 串的模式匹配算法 132

4.4.1 Brute-Force算法 132

4.4.2 KMP算法 133

4.5 串的应用举例 137

本章小结 144

习题四 145

第5章 数组和广义表 147

5.1 数组的基本概念 148

5.1.1 数组的定义 148

5.1.2 数组的抽象数据类型 148

5.2 数组的存储结构 149

5.2.1 一维数组的存储 149

5.2.2 多维数组的存储 149

5.3 数组的顺序存储表示和基本操作 151

5.3.1 数组的顺序存储表示 151

5.3.2 数组的基本操作 151

5.3.3 数组的应用举例 154

5.4 矩阵的压缩存储 157

5.4.1 特殊矩阵的压缩存储 157

5.4.2 稀疏矩阵的压缩存储 159

5.5 广义表 173

5.5.1 广义表的基本概念 173

5.5.2 广义表的存储结构 175

5.5.3 广义表的基本操作 177

本章小结 184

习题五 184

第6章 树和二叉树 187

6.1 树 188

6.1.1 树的基本概念 188

6.1.2 树的存储结构 193

6.1.3 树的基本操作 197

6.2 二叉树 203

6.2.1 二叉树的基本概念 203

6.2.2 二叉树的存储结构 207

6.2.3 二叉树的遍历 210

6.2.4 二叉树的其他操作 215

6.3 线索二叉树 223

6.3.1 线索二叉树的基本概念 223

6.3.2 线索二叉树的存储结构 224

6.3.3 二叉树的线索化 225

6.3.4 线索二叉树的基本操作 226

6.4 哈夫曼树 230

6.4.1 哈夫曼树的基本概念 230

6.4.2 构造哈夫曼树 232

6.4.3 哈夫曼编码 235

6.5 树、森林与二叉树的转换 238

6.5.1 树与二叉树的转换 238

6.5.2 森林与二叉树的转换 239

6.6 树的应用举例——PATRICIA tree 240

本章小结 244

习题六 244

第7章 图 248

7.1 图的基本概念 249

7.1.1 图的定义 249

7.1.2 图的基本术语 249

7.1.3 图的抽象数据类型 252

7.2 图的存储结构 253

7.2.1 邻接矩阵 254

7.2.2 邻接表 255

7.2.3 十字邻接表 257

7.2.4 邻接多重表 258

7.2.5 边集数组 259

7.3 图的实现 259

7.3.1 邻接矩阵存储结构下图基本操作的实现 260

7.3.2 邻接表存储结构下图基本操作的实现 268

7.4 图的遍历 275

7.4.1 深度优先遍历 276

7.4.2 广度优先遍历 277

7.5 最小生成树 282

7.5.1 最小生成树的概念 282

7.5.2 普里姆算法 283

7.5.3 克鲁斯卡尔算法 288

7.6 最短路径 292

7.6.1 最短路径的概念 292

7.6.2 从一顶点到其余各顶点的最短路径 293

7.6.3 每对顶点之间的最短路径 297

7.7 拓扑排序 302

7.7.1 拓扑排序的概念 302

7.7.2 拓扑排序的算法 303

7.8 关键路径 306

7.8.1 关键路径的概念 306

7.8.2 顶点事件的发生时间 307

7.8.3 求关键路径的算法 308

7.8.4 求关键路径的算法描述 310

本章小结 313

习题七 313

第8章 查找 318

8.1 查找的基本概念 318

8.2 静态查找 320

8.2.1 顺序查找 320

8.2.2 二分查找 321

8.2.3 索引查找 323

8.3 动态查找 326

8.3.1 二叉排序树 326

8.3.2 平衡二叉树 333

8.3.3 B-树和B+树 337

8.4 哈希表查找 345

8.4.1 哈希表查找的基本概念 345

8.4.2 哈希函数构造方法 347

8.4.3 哈希冲突解决方法 349

8.4.4 哈希表的操作 351

8.4.5 哈希表查找的性能分析 359

本章小结 359

习题八 360

第9章 排序 363

9.1 排序的基本概念 363

9.2 插入排序 365

9.2.1 直接插入排序 365

9.2.2 希尔排序 367

9.3 选择排序 369

9.3.1 直接选择排序 369

9.3.2 堆排序 370

9.4 交换排序 375

9.4.1 冒泡排序 375

9.4.2 快速排序 376

9.5 归并排序 380

9.6 基数排序 382

9.7 各种内排序方法的性能比较 384

9.8 外排序 386

9.8.1 外存信息的存取 386

9.8.2 外排序的过程 387

9.8.3 多路平衡归并 388

9.8.4 初始归并段的生成 390

9.8.5 最佳归并树 391

本章小结 393

习题九 393

第10章 文件 397

10.1 文件概述 397

10.1.1 文件的存储介质 397

10.1.2 文件的基本概念 399

10.2 顺序文件 400

10.3 索引文件 402

10.4 ISAM文件 403

10.5 VSAM文件 405

10.6 哈希文件 407

10.7 多关键字文件 408

10.7.1 多重表文件 408

10.7.2 倒排文件 409

10.8 文件的应用举例 409

本章小结 410

习题十 411

附录A 用面向对象的方法(C++的类)描述顺序表类 413

参考文献 416