《数据结构与算法》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:王立柱编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111434979
  • 页数:253 页
图书介绍:本书共分13章。内容包括:从C到C++、String类、向量类模板Vector、链表类模板和适配器、二叉树、堆、树、图、二叉搜索树、平衡二叉搜索树、B树、散列、排序和性能分析。第1章,既为了系统复习C++,又为了使本书适用于只学过C语言的读者。从第2章到第4章(String类、向量类模板Vector、链表类模板和适配器),主要是为了奠定在自定义STL框架下描述数据结构的基础。

第1章 从C到C++ 1

1.1 从数组到顺序表 1

1.1.1 数组的局限性 1

1.1.2 顺序表的声明 2

1.1.3 顺序表的实现 4

1.1.4 删除顺序表的重复数据 7

1.1.5 数据抽象 8

1.2 C语言的局限性 10

1.3 C++基础知识 13

1.3.1 变量和const常量 13

1.3.2 输入/输出 13

1.3.3 内联函数 16

1.3.4 运算符重载 17

1.3.5 函数重载 18

1.3.6 引用型 19

1.3.7 构造函数 25

1.3.8 提取符和插入符重载 25

1.3.9 默认参数 27

1.3.1 0 new和delete运算符 28

1.4 C++顺序表类 28

1.4.1 从C顺序表到C++顺序表类 28

1.4.2 顺序表类的实现 32

1.4.3 复制构造函数 33

1.4.4 复制赋值运算符重载 34

1.4.5 下标运算符重载 35

1.4.6 构造函数与初始化 36

1.4.7 new和delete运算符与构造和析构 36

1.4.8 类定义 37

1.5 函数模板和类模板 37

1.5.1 函数模板 37

1.5.2 顺序表类模板 40

1.6 继承和多态性 41

1.6.1 构造函数的参数初始化表 41

1.6.2 继承 43

1.6.3 受保护成员 45

1.6.4 多态性和虚函数 46

1.6.5 虚析构函数 49

1.6.6 纯虚函数和抽象类 50

习题 52

第2章 String类 55

2.1 String类的声明 55

2.2 String类的实现 57

2.2.1 构造和析构 57

2.2.2 成员赋值运算符 59

2.2.3 成员转换 60

2.2.4 串连接 61

2.2.5 关系运算 64

2.2.6 求子串 65

2.2.7 子串插入 67

2.2.8 子串删除 69

2.2.9 下标运算符 71

2.2.1 0字符查找 71

2.2.1 1输入/输出 71

2.3 模式匹配 73

2.4 深入讨论 74

2.4.1 转换赋值运算符函数的替代 74

2.4.2 成员函数“类串+C串”的替代 75

2.4.3 explicit修饰符 75

习题 76

第3章 向量类模板Vector 78

3.1 Vector定义 78

3.2 通用算法和迭代器 81

3.3 Vector的插入和删除函数 84

3.4 求素数 85

3.5 函数对象 86

3.6 深入讨论——函数模板实例化中的问题 88

习题 88

第4章 链表类模板和适配器 90

4.1 链表类模板List 90

4.2 适配器 97

4.2.1 链栈 97

4.2.2 链队列 98

4.2.3 优先级链队列 98

习题 99

第5章 二叉树 100

5.1 二叉树的基本概念 100

5.2 二叉树的性质 101

5.3 二叉树的存储结构 102

5.3.1 二叉树顺序存储结构 102

5.3.2 二叉树链式存储结构 103

5.4 二叉树层次遍历 105

5.4.1 层次遍历 105

5.4.2 把二叉树的顺序存储转化为链式存储 108

5.4.3 垂直输出二叉树 108

5.5 二叉树前序遍历 111

5.5.1 前序遍历递归算法 111

5.5.2 前序遍历非递归算法 112

5.5.3 快速排序 112

5.5.4 集合的幂集 114

5.6 二叉树中序遍历 116

5.6.1 中序遍历递归算法 116

5.6.2 中序遍历非递归算法 117

5.6.3 汉诺塔递归算法 117

5.7 二叉树后序遍历 119

5.7.1 后序遍历递归算法 119

5.7.2 后序遍历非递归算法 119

5.7.3 求二叉树的深度以及二叉链表的复制和删除 120

5.7.4 把二叉树的顺序存储转化为链式存储的递归算法 121

5.7.5 由前序和中序序列建立二叉链表 122

习题 123

第6章 堆 124

6.1 小根堆Heap类 124

6.2 堆排序 129

6.3 哈夫曼树 131

6.3.1 哈夫曼树的定义 131

6.3.2 建立哈夫曼树 132

6.3.3 哈夫曼编码 133

习题 134

第7章 树 135

7.1 树的基本概念和存储 135

7.2 Tree类 138

7.3 树的遍历 141

7.4 八皇后 144

习题 147

第8章 图 148

8.1 图的基本概念 148

8.2 Graph类 151

8.3 图的遍历 160

8.3.1 广度优先遍历 160

8.3.2 深度优先遍历 162

8.4 最小生成树 163

8.4.1 普里姆算法 164

8.4.2 克鲁斯卡尔算法 170

8.5 最短路径 173

8.5.1 求单源最短路径的迪克斯特拉算法 173

8.5.2 所有顶点对之间的最短带权路径 179

8.5.3 一顶点对之间的最短带权路径 183

8.6 拓扑序列 186

8.7 关键路径 189

8.8 迷宫求解 194

习题 197

第9章 二叉搜索树 198

9.1 类型声明与实现 198

9.2 中序迭代器 203

9.3 频率统计 206

9.4 中序线索二叉树 207

习题 208

第10章 平衡二叉搜索树 209

10.1 动态平衡方法 209

10.2 平衡二叉搜索树类型 213

习题 216

第11章 B树 217

11.1 线性索引 217

11.2 静态m路搜索树 218

11.3 B树 219

11.4 B+树 223

习题 224

第12章 散列 225

12.1 散列表 225

12.2 散列函数 226

12.2.1 平方取中法 226

12.2.2 除留余数法 227

12.2.3 折叠法 227

12.2.4 数字分析法 228

12.3 分离链接法 228

12.4 开放定址法 230

12.4.1 线性探查法 231

12.4.2 平方探查法 231

12.4.3 双散列函数探查法 231

习题 231

第13章 排序和性能分析 232

13.1 性能分析 232

13.1.1 时间复杂性分析 232

13.1.2 空间复杂性分析 233

13.2 插入排序 234

13.2.1 直接插入排序 234

13.2.2 折半插入排序 235

13.2.3 希尔排序 237

13.3 交换排序 238

13.3.1 起泡排序 238

13.3.2 快速排序 239

13.4 选择排序 240

13.4.1 直接选择排序 240

13.4.2 堆排序 241

13.4.3 锦标赛排序 242

13.5 归并排序 246

13.5.1 归并 246

13.5.2 迭代归并排序 247

13.6 基数排序 248

13.7 外排序 249

13.7.1 外排序的基本过程 250

13.7.2 k路归并 251

习题 253