《数据结构 C++语言描述》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:朱战立编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2004
  • ISBN:7040141493
  • 页数:292 页
图书介绍:本书为普通高等教育“十五”国家级规划教材。全书系统地介绍了各种类型的数据结构和查找、排序的各种方法。对于每一种类型的数据结构,都详细阐述了基本概念、各种不同的存储结构和不同存储结构上一些主要操作的实现算法,并给出了许多设计实例以帮助读者理解。另外,书中还介绍了递归算法的设计方法。全书采用C++语言作为算法描述语言。为方便学习,附录中还给出了部分典型习题解答。本书既可作为大专院校计算机等专业的教材,也可作为从事计算机应用的工程技术人员的自学参考书。书中所有程序全部运行通过,所有程序源代码及示例相关文档均可从高等教育出版社网站上下载。

第0章 C++程序设计基础 1

0.1 程序的结构 1

0.2 函数 2

0.2.1 函数参数 3

0.2.2 函数的返回值 5

0.2.3 重载 6

0.3 类 7

0.3.1 访问权限 9

0.3.2 构造函数和析构函数 9

0.3.3 运算符重载 9

0.3.5 分辨符 10

0.3.4 友元 10

0.3.6 内联函数 11

0.3.7 默认值 11

0.3.8 派生类和继承性 11

0.3.9 多态性和虚函数 13

0.3.10 纯虚函数和抽象类 15

0.3.11 结构体 15

0.3.12 对象 15

0.4 通用化的软件设计 15

0.4.1 抽象数据类型 16

0.4.2 模板 16

0.5 动态申请和动态释放内存 17

习题 18

1.1 数据结构的基本概念 20

第1章 绪论 20

1.2 抽象数据类型和软件构造方法 23

1.3 算法及其时间复杂度 24

1.3.1 算法 24

1.3.2 算法设计目标 26

1.3.3 算法时间效率的度量 26

1.4 算法书写规范 30

习题 31

2.1 线性表抽象数据类型 33

2.1.1 线性表的定义 33

第2章 线性表 33

2.1.2 线性表抽象数据类型 34

2.2 顺序表类 35

2.2.1 顺序表的存储结构 35

2.2.2 顺序表类定义 36

2.2.3 顺序表类实现 36

2.2.4 顺序表类方法的效率分析 39

2.2.5 顺序表类应用举例 40

2.3 单链表类 42

2.3.1 单链表的结构 42

2.3.2 单链表的动态内存分配方法 45

2.3.3 结点类的定义和实现 45

2.3.4 单链表类的定义和实现 46

2.3.6 单链表应用举例 50

2.3.5 单链表操作的效率分析 50

2.4 循环单链表 51

2.5 双向链表 52

2.6 静态链表 53

2.7 设计举例 54

2.7.1 顺序表设计举例 54

2.7.2 单链表设计举例 55

习题 59

第3章 堆栈和队列 62

3.1 堆栈 62

3.1.1 堆栈的基本概念 62

3.1.3 顺序堆栈类 64

3.1.2 堆栈抽象数据类型 64

3.1.4 链式堆栈类 66

3.2 堆栈应用 69

3.2.1 括号匹配问题 69

3.2.2 表达式计算问题 71

3.3 队列 75

3.3.1 队列的基本概念 75

3.3.2 队列抽象数据类型 76

3.3.3 顺序队列 76

3.3.4 顺序循环队列类 78

3.3.5 链式队列类 79

3.3.6 队列的应用 82

3.4 优先级队列 83

3.4.1 顺序优先级队列类 84

3.4.2 优先级队列的应用 86

习题 87

第4章 串 90

4.1 串的基本概念、抽象数据类型和C++语言的串函数 90

4.1.1 串的基本概念 90

4.1.2 串的抽象数据类型 91

4.1.3 C++语言的串函数 92

4.2 串的存储结构 94

4.2.1 串的顺序存储结构 94

4.2.2 串的链式存储结构 95

4.3 顺序串类 96

4.3.1 顺序串类的定义 96

4.3.2 构造函数和析构函数 97

4.3.3 插入、删除和取子串成员函数 98

4.3.4 常用操作符重载 99

4.3.5 逻辑操作符重载 101

4.3.6 顺序串类的测试 102

4.4 串的模式匹配算法 103

4.4.1 Brute-Force算法 103

4.4.2 KMP算法 105

4.4.3 Brute-Force算法和KMP算法的运行效率比较 110

习题 112

第5章 数组 114

5.1 数组的基本概念 114

5.1.1 数组的定义 114

5.1.3 数组抽象数据类型 115

5.1.2 数组的实现机制 115

5.2 动态数组类 116

5.3 特殊矩阵 119

5.3.1 特殊矩阵的压缩存储 120

5.3.2 n阶对称矩阵顺序表类 121

5.4 稀疏矩阵 124

5.4.1 稀疏矩阵的压缩存储 124

5.4.2 三元组顺序表类 124

5.4.3 三元组链表 130

习题 131

第6章 递归算法 133

6.1 递归的概念 133

6.2 递归算法的执行过程 135

6.3 递归算法的设计方法 137

6.4 递归过程和运行时栈 140

6.5 递归算法的效率分析 141

6.6 递归算法到非递归算法的转换 143

6.7 设计举例 146

6.7.1 一般递归函数设计举例 146

6.7.2 回溯法及其设计举例 149

习题 154

第7章 树和二叉树 156

7.1 树 156

7.1.1 树的定义 156

7.1.2 树的表示方法 158

7.1.4 树的存储结构 159

7.1.3 树的抽象数据类型 159

7.2.1 二叉树的定义 162

7.2 二叉树 162

7.2.2 二叉树抽象数据类型 163

7.2.3 二叉树的性质 163

7.2.4 二叉树的存储结构 164

7.3 以结点类为基础的二叉树设计 166

7.3.1 二叉树的结点类 167

7.3.2 二叉树的遍历 168

7.3.3 二叉树遍历的应用 170

7.3.4 应用举例 172

7.3.5 非递归的二叉树遍历算法 174

7.4 二叉树类 175

7.5.1 二叉树遍历游标类 178

7.5 二叉树的分步遍历 178

7.5.2 二叉树中序遍历游标类 179

7.5.3 二叉树层序遍历游标类 183

7.6 线索二叉树 185

7.7 哈夫曼树 187

7.7.1 哈夫曼树的基本概念 187

7.7.2 哈夫曼编码问题 189

7.7.3 哈夫曼编码的软件设计 190

7.8 树与二叉树的转换 195

7.9 树的遍历 196

习题 197

8.1.1 图的基本概念 199

第8章 图 199

8.1 图的基本概念和抽象数据类型 199

8.1.2 图的抽象数据类型 202

8.2 图的存储结构 202

8.2.1 图的邻接矩阵存储结构 202

8.2.2 图的邻接表存储结构 204

8.3 邻接矩阵图类 204

8.4 图的遍历 210

8.4.1 图的深度和广度优先遍历算法 210

8.4.2 图的深度和广度优先遍历函数实现 211

8.5 最小生成树 214

8.5.1 最小生成树的基本概念 214

8.5.2 普里姆算法 215

8.5.3 克鲁斯卡尔算法 219

8.6 最短路径 220

8.6.1 最短路径的基本概念 220

8.6.2 从一个顶点到其余各顶点的最短路径 221

8.6.3 每对顶点之间的最短路径 225

习题 226

第9章 排序 228

9.1 排序的基本概念 228

9.2 插入排序 230

9.2.1 直接插入排序 230

9.2.2 希尔排序 233

9.3.1 直接选择排序 234

9.3 选择排序 234

9.3.2 堆排序 236

9.4 交换排序 240

9.4.1 冒泡排序 240

9.4.2 快速排序 242

9.5 归并排序 244

9.6 基数排序 247

9.7 性能比较 249

习题 250

第10章 查找 252

10.1 查找的基本概念 252

10.2.1 顺序表 253

10.2 静态查找表 253

10.2.2 有序顺序表 254

10.2.3 索引顺序表 256

10.3 动态查找表 259

10.3.1 二叉排序树 259

10.3.2 B-树 267

10.4 哈希表 271

10.4.1 哈希表的基本概念 271

10.4.2 哈希函数构造方法 273

10.4.3 哈希冲突解决方法 274

10.4.4 哈希表类 276

习题 280

附录 部分典型习题解答 281

参考文献 292