当前位置:首页 > 工业技术
数据结构与算法  C++语言描述  第2版
数据结构与算法  C++语言描述  第2版

数据结构与算法 C++语言描述 第2版PDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:陈明编著
  • 出 版 社:北京:北京师范大学出版社
  • 出版年份:2017
  • ISBN:9787303228126
  • 页数:366 页
图书介绍:本书较系统地介绍了各种典型的数据结构,主要包括:线性表、栈和队列、串、数组和广义表、树、图、查找、排序、递归和文件,为了加强对算法的理解,也介绍了算法分析方面的内容。本书叙述选材精炼、概念清楚、注重实用、逻辑性强,各章中所涉及的数据结构与算法都给出了C++语言描述,并都附有大量丰富的习题,便于学生理解与掌握。 本书可作为高等院校计算机专业及相关专业的教材,也可作为计算机应用技术人员的参考书。本书语言精炼、事例丰富、条理清晰、应用性强。可作为高等院校各专业的C程序设计教材,也可作为软件开发人员的参考书。
《数据结构与算法 C++语言描述 第2版》目录

第1章 概述 1

1.1 问题的提出 1

1.2 面向对象程序设计 2

1.2.1 面向对象方法 2

1.2.2 C++语言简介 3

1.3 数据结构的基本术语 4

1.4 抽象数据类型 6

1.4.1 抽象数据类型定义 6

1.4.2 抽象数据类型ADT描述规范 7

1.5 数据结构的组织形式 8

1.6 数据的逻辑结构 10

1.7 数据的存储结构 12

1.8 数据运算 13

1.9 数据的逻辑结构、存储结构及数据运算的关系 14

小结 14

习题1 15

第2章 算法分析基础 16

2.1 算法相关概念 16

2.1.1 算法及其特性 16

2.1.2 算法的描述 17

2.2 算法分析的概念与算法复杂度 17

2.2.1 算法分析的概念 18

2.2.2 算法复杂度 20

2.3 最大连续子序列之和问题 22

2.3.1 简单的O(N3)算法 23

2.3.2 改进的O(N2)算法 24

2.4 静态搜索问题 25

2.4.1 顺序搜索 25

2.4.2 二分搜索 26

小结 28

习题2 28

第3章 线性表 31

3.1 线性表及其抽象数据类型 31

3.1.1 线性表及逻辑结构 31

3.1.2 线性表的抽象数据类型描述 35

3.2 线性表的顺序存储 36

3.2.1 顺序存储 36

3.2.2 顺序表的定义 37

3.2.3 顺序表类的实现 38

3.3 线性表的链式存储 41

3.3.1 线性链表的存储结构 41

3.3.2 线性链表类的定义 43

3.3.3 线性链表类的实现 44

3.3.4 循环链表 48

3.3.5 循环链表类的实现 49

3.3.6 双向链表 50

3.3.7 可利用空间表 52

3.3.8 表遍历器 53

3.4 线性表的顺序存储和链式存储的比较 55

3.5 链式存储结构的应用 56

3.5.1 约瑟夫问题 56

3.5.2 一元多项式求和 57

小结 61

习题3 61

第4章 栈和队列 64

4.1 栈 64

4.1.1 栈的定义 64

4.1.2 栈的顺序存储结构 67

4.1.3 栈的链式存储结构 71

4.1.4 顺序栈和链式栈的比较 73

4.2 栈的应用 74

4.2.1 迷宫问题 74

4.2.2 表达式求值 77

4.2.3 汉诺塔问题 80

4.2.4 数制转换 81

4.2.5 行编辑 82

4.3 队列 83

4.3.1 队列的定义 83

4.3.2 队列的顺序存储 86

4.3.3 队列的链式存储 94

4.3.4 顺序队列与链式队列的比较 97

4.3.5 优先队列 97

4.4 队列的应用 98

4.4.1 解决设备速度不匹配问题 98

4.4.2 舞伴问题 98

4.4.3 火车车厢重排 100

小结 102

习题4 102

第5章 串 105

5.1 C++语言的字符和字符串 106

5.2 串的基本概念 107

5.3 串的存储结构 108

5.3.1 串的顺序存储结构 108

5.3.2 串的链式存储结构 109

5.3.3 串的索引存储结构 111

5.4 串的操作 111

5.4.1 常用的C++字符串函数 111

5.4.2 串的抽象数据类型的描述 113

5.4.3 串的类定义 114

5.4.4 部分成员函数的实现 115

5.5 串的基本运算与实现 117

5.5.1 串插入 117

5.5.2 串删除 119

5.6 模式匹配 120

5.6.1 模式匹配的BF算法 120

5.6.2 模式匹配的KMP算法 122

5.7 串在文本编辑中的应用 126

小结 128

习题5 128

第6章 数组和广义表 129

6.1 C++数组的定义及抽象数据类型表示 129

6.1.1 C++数组的定义 129

6.1.2 数组的抽象数据类型表示 130

6.2 数组的顺序存储结构 131

6.3 矩阵的压缩存储 132

6.3.1 特殊矩阵的压缩存储 133

6.3.2 稀疏矩阵的压缩存储 136

6.4 广义表的概念 142

6.5 广义表的存储结构表示 144

6.6 广义表的运算 146

小结 152

习题6 152

第7章 树 155

7.1 树的相关术语 156

7.1.1 树的定义 156

7.1.2 树的表示形式 157

7.1.3 树的元素 157

7.1.4 树的基本操作 159

7.1.5 一个树的接口 159

7.1.6 树的基本算法 160

7.2 二叉树 161

7.2.1 二叉树的定义 162

7.2.2 二叉树的性质 163

7.2.3 二叉树的接口 166

7.2.4 二叉树的存储结构 166

7.2.5 二叉树的遍历 174

7.2.6 二叉树遍历的应用 176

7.3 线索二叉树 177

7.3.1 线索二叉树的类定义 177

7.3.2 中序线索二叉树 182

7.4 树、森林和二叉树的关系 185

7.4.1 树的存储结构 185

7.4.2 森林与二叉树的转换 187

7.4.3 树和森林的遍历 190

7.5 哈夫曼树及其应用 192

7.5.1 哈夫曼树的定义 192

7.5.2 哈夫曼树的构造 193

7.5.3 哈夫曼树在编码问题中的应用 196

小结 197

习题7 198

第8章 图 200

8.1 图的定义与抽象数据类型 200

8.1.1 图的定义 200

8.1.2 图的抽象数据类型 205

8.2 图的存储结构 206

8.2.1 邻接矩阵表示法 207

8.2.2 邻接表 212

8.2.3 十字链表 219

8.2.4 邻接多重表 220

8.3 图的遍历 221

8.3.1 深度优先搜索 222

8.3.2 广度优先搜索 223

8.3.3 欧拉回路 225

8.4 图的连通性 227

8.4.1 连通分量 227

8.4.2 重连通分量 229

8.5 生成树 229

8.5.1 普里姆(Prim)算法 231

8.5.2 克鲁斯卡尔(Kruskal)算法 234

8.6 最短路径 236

8.6.1 单源最短路径 237

8.6.2 求每一对顶点之间的最短路径 239

8.7 拓扑排序 240

8.8 关键路径 245

小结 250

习题8 251

第9章 查找 253

9.1 基本概念 253

9.2 线性表的查找 254

9.2.1 顺序查找 255

9.2.2 折半查找 256

9.2.3 索引查找 259

9.2.4 分块查找 262

9.3 树表查找 265

9.3.1 二叉查找树 265

9.3.2 平衡二叉树 271

9.3.3 B-树 276

9.4 哈希表的查找 278

9.4.1 哈希表 278

9.4.2 构造哈希表的基本方法 280

9.4.3 解决冲突的方法 282

9.4.4 哈希表的查找方法 284

9.5 各种查找方法的比较 285

小结 286

习题9 286

第10章 排序 289

10.1 基本概念及分类 289

10.2 内部排序 293

10.2.1 插入排序 293

10.2.2 交换排序 297

10.2.3 选择排序 301

10.2.4 归并排序 311

10.2.5 基数排序 314

10.3 内部排序方法比较 318

10.4 外部排序简介 320

小结 320

习题10 320

第11章 递归 324

11.1 递归的定义 324

11.2 常见递归问题 325

11.2.1 汉诺塔问题 325

11.2.2 八皇后问题 327

11.2.3 表达式树 329

11.3 递归的实现 331

11.4 消除递归 334

11.4.1 尾递归和单向递归的消除 335

11.4.2 用栈模拟系统运行时的栈 336

11.5 递归的评估 339

小结 340

习题11 340

第12章 文件 342

12.1 外存储器的介绍 342

12.2 磁盘 343

12.3 有关文件的概念 344

12.3.1 文件及其类别 345

12.3.2 文件的操作 346

12.4 文件的组织 348

12.4.1 顺序文件 348

12.4.2 索引文件 350

12.4.3 散列文件 355

12.4.4 多关键字文件 357

12.5 外部排序 359

12.5.1 外部排序的简单方法 359

12.5.2 两路归并 360

12.5.3 多路归并 363

12.6 文件的索引结构 363

12.6.1 索引向量 364

12.6.2 树形索引结构 364

小结 365

习题12 365

相关图书
作者其它书籍
返回顶部