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

  • 购买积分:11 如何计算积分?
  • 作  者:苏仕华,刘燕君,刘振安编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111449263
  • 页数:272 页
图书介绍:本书使用模板描述算法,实现参数化类型,使得对算法的描述更接近自然语言和更容易理解。另外,书中还精选了典型例题、实验和习题,并有配套的课程设计,帮助学生进一步加深对算法的理解。同时,为了方便读者考研,本书还专门单列一章考研指导,并给出了一些复习方法、考试技巧以及真题练习和参考答案,指导读者复习并深入掌握相关知识。本书取材新颖、结构合理、概念清楚、语言简洁、通俗易懂、实用性强,重在培养学生对各种基本算法的理解和应用技能,特别适合作为高等院校相关专业的教材,也可以作为培训班教材、自学教材及工程技术人员的参考书。

第1章 数据结构概论 1

1.1 引言 1

1.2 基本概念和常用术语 2

1.3 算法的描述和分析 5

1.3.1 算法描述 5

1.3.2 算法分析 6

实验1 求解鸡兔同笼问题 9

习题1 9

第2章 类和类模板基础 11

2.1 使用类和对象 11

2.1.1 使用对象和指针 11

2.1.2 new和delete运算符 13

2.2 类模板 14

2.3 友元函数和友元类 15

2.4 使用组合 18

2.5 应用实例 21

2.5.1 使用类求解一元二次方程 21

2.5.2 使用类模板和头文件求解一元二次方程 25

2.6 使用模板描述算法的优点和注意事项 27

实验2 多文件编程 28

习题2 28

第3章 线性表 30

3.1 线性表的类型定义 30

3.1.1 线性表的逻辑定义 30

3.1.2 线性表的抽象数据类型 30

3.2 线性表的顺序存储及基本运算 31

3.2.1 线性表的顺序存储 31

3.2.2 顺序表上基本运算的实现 32

3.2.3 顺序表运算应用实例 36

3.2.4 线性顺序表元素为结构的实例 37

3.3 线性表的链式存储结构 39

3.3.1 线性链表 39

3.3.2 单链表上的基本运算 40

3.3.3 单链表上的其他典型运算 46

3.3.4 双向链表 49

3.4 顺序表和链表的比较 53

实验3 实现一元多项式的加法运算 54

习题3 54

第4章 栈和队列 57

4.1 栈 57

4.1.1 栈的定义及抽象数据类型 57

4.1.2 栈的存储表示和实现 58

4.2 栈应用实例 63

4.2.1 圆括号匹配的检验 63

4.2.2 字符串回文的判断 63

4.2.3 数制转换 64

4.2.4 栈与递归 65

4.3 队列 67

4.3.1 抽象数据类型 68

4.3.2 顺序循环队列 68

4.3.3 链队列 73

4.4 栈和队列应用实例——表达式求值 77

4.4.1 中缀表达式到后缀表达式的转换 78

4.4.2 后缀表达式的计算 80

实验4 八皇后问题 82

习题4 82

第5章 字符串 86

5.1 串定义及其运算 86

5.1.1 串的基本概念 86

5.1.2 串的抽象数据类型 86

5.1.3 串的存储结构 87

5.2 串的顺序存储结构 87

5.2.1 顺序串的类型定义和常用算法 87

5.2.2 串基本运算的实现 88

5.2.3 串定位(模式匹配)运算 89

5.2.4 取子串运算(求子串) 90

5.2.5 连接字符串运算 90

5.2.6 演示字符串操作的实例 91

5.3 串的链式存储 91

5.4 串运算应用实例 92

实验5 串模式匹配算法 94

习题5 94

第6章 多维数组和广义表 96

6.1 多维数组和运算 96

6.1.1 数组的抽象数据类型 96

6.1.2 数组的顺序存储 97

6.1.3 矩阵类的定义和运算 97

6.2 矩阵的压缩存储 102

6.2.1 特殊矩阵 103

6.2.2 稀疏矩阵 107

6.3 广义表 110

6.3.1 广义表的定义 111

6.3.2 广义表的运算 111

6.4 运算符重载 112

6.4.1 重载对象的赋值运算符 112

6.4.2 运算符重载的实质 115

实验6 稀疏矩阵的加法运算 116

习题6 116

第7章 树和二叉树 118

7.1 树的基本概念和术语 118

7.2 二叉树 119

7.2.1 二叉树的定义和性质 119

7.2.2 二叉树的抽象数据类型 121

7.2.3 二叉树的存储结构 121

7.3 二叉树的运算 123

7.3.1 二叉树的生成 123

7.3.2 二叉树的递归遍历及其算法 124

7.3.3 二叉树递归遍历应用实例 127

7.3.4 非递归的按层遍历二叉链表 130

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

7.4 线索二叉树 133

7.4.1 二叉树的线索化 134

7.4.2 线索二叉链表上的运算 135

7.5 树和森林 137

7.5.1 树的存储结构 137

7.5.2 树、森林与二叉树的转换 139

7.5.3 树和森林的遍历 140

7.6 哈夫曼树及其应用 141

7.6.1 最优二叉树(哈夫曼树) 141

7.6.2 哈夫曼算法 143

7.6.3 哈夫曼算法的实现 143

7.6.4 哈夫曼编码 146

实验7 二叉树的遍历与查找算法 148

习题7 149

第8章 图 151

8.1 图的定义和基本术语 151

8.2 图的存储结构 153

8.2.1 邻接矩阵表示法 153

8.2.2 邻接表表示法 156

8.3 图的遍历 160

8.3.1 深度优先搜索 160

8.3.2 广度优先搜索 162

8.4 图的生成树和最小生成树 165

8.4.1 图的生成树 165

8.4.2 最小生成树 166

8.5 最短路径 172

8.6 拓扑排序 177

实验8 实现无向网络的最小生成树的普里姆算法 182

习题8 182

第9章 排序 184

9.1 基本概念 184

9.2 插入排序 185

9.2.1 直接插入排序 185

9.2.2 希尔排序 186

9.3 交换排序 187

9.3.1 冒泡排序 188

9.3.2 快速排序 189

9.4 选择排序 192

9.4.1 使用顺序表结构实现直接选择排序 193

9.4.2 使用链式存储结构实现直接选择排序 194

9.4.3 堆排序 196

9.5 归并排序 199

9.6 分配排序:基数排序 201

9.7 内部排序方法的分析比较 203

实验9 堆排序 204

习题9 204

第10章 查找 207

10.1 基本概念 207

10.2 顺序表的查找 207

10.2.1 顺序查找 208

10.2.2 二分查找 209

10.2.3 分块查找 212

10.2.4 三种查找方法的比较 213

10.3 树表的查找 213

10.3.1 二叉排序树 213

10.3.2 B树 217

10.3.3 B+树 221

10.4 散列表的查找 222

10.4.1 散列表的概念 222

10.4.2 散列函数的构造方法 223

10.4.3 处理冲突的方法 224

10.4.4 散列表查找 226

实验10 二叉排序树 231

习题10 231

第11章 文件 234

11.1 基本概念 234

11.2 顺序文件 235

11.3 索引文件 235

11.4 索引顺序文件 236

11.4.1 ISAM文件 236

11.4.2 VSAM文件 237

11.4.3 散列文件 237

11.5 多关键字文件 237

11.5.1 多重表文件 237

11.5.2 倒排文件 238

实验11 使用文件 239

习题11 240

附录A 考研指导 242

A.1 考纲要求 242

A.1.1 绪论 242

A.1.2 线性表 242

A.1.3 栈、队列和数组 243

A.1.4 树和二叉树 243

A.1.5 图 244

A.1.6 查找 244

A.1.7 排序 245

A.2 知识点、重难点解析 246

A.3 复习方法 247

A.4 考试技巧 248

A.4.1 单项选择题 248

A.4.2 算法设计题 249

A.5 实战真题练习 250

A.5.1 真题练习1 250

A.5.2 真题练习2 252

A.5.3 真题练习3 255

A.5.4 真题练习4 257

A.5.5 真题练习5 259

A.6 真题练习参考答案 261

A.6.1 真题1参考答案 261

A.6.2 真题2参考答案 263

A.6.3 真题3参考答案 264

A.6.4 真题4参考答案 267

A.6.5 真题5参考答案 269

附录B 七位ASCII代码表 271

参考文献 272