《C++与数据结构 第3版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:高飞,薛艳明主编;白霞,聂青副主编
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121256837
  • 页数:297 页
图书介绍:本书是国家级(网络教育)精品课程的教学成果,也是北京市高等教育精品教材,根据教育部计算机基础课程教学指导委员会《计算机基础课程教学基本要求》中,有关理工类专业“算法基础与程序设计”课程要求组织编写。内容由浅入深,案例丰富,通俗易懂,实用性强。在全书共10章,包括数据结构的基本概念,数组与指针,C++编程基础,STL简介,线性表,堆栈与队列,树与二叉树,图,查找与散列结构,排序等。本书各章配有习题和实验训练题,方便实践教学,并为任课教师提供电子课件和示例源代码。

第1章 数据结构的基本概念 1

1.1 数据结构的概念和术语 1

1.2 抽象数据类型 3

1.2.1 数据类型 3

1.2.2 数据抽象与抽象数据类型 4

1.3 算法和算法分析 5

1.3.1 算法 5

1.3.2 算法设计的要求 5

1.3.3 算法效率的度量 6

1.4 面向对象概述 8

1.4.1 面向对象的思想 8

1.4.2 面向对象的基本概念 9

1.4.3 面向对象的基本特性 10

1.4.4 面向对象程序设计 12

1.4.5 面向对象的语言 12

1.5 本章小结 13

习题1 13

第2章 数组与指针 14

2.1 数组 14

2.1.1 一维数组 14

2.1.2 多维数组 17

2.1.3 字符数组和字符串 21

2.2 指针 24

2.2.1 指针的概念 24

2.2.2 指针变量定义 25

2.2.3 指针运算 25

2.3 指针与数组 27

2.3.1 指向数组的指针 27

2.3.2 指向字符串的指针 31

2.3.3 指针数组和指向指针的指针 31

2.4 指针与函数 34

2.4.1 指向函数的指针 34

2.4.2 返回指针值的函数 36

2.5 本章小结 36

习题2 37

实验训练2 37

第3章 C++编程基础 39

3.1 C++语言简介 39

3.2 类 39

3.2.1 访问控制 40

3.2.2 成员函数 42

3.2.3 构造函数与析构函数 44

3.2.4 动态存储 50

3.3 丰富的特性 53

3.3.1 引用 53

3.3.2 友元 59

3.3.3 重载 63

3.4 代码重用机制 67

3.4.1 继承 67

3.4.2 多态 72

3.4.3 模板 76

3.5 本章小结 81

习题3 81

实验训练3 82

第4章 STL标准模板库 89

4.1 STL简介 89

4.2 序列式容器 90

4.2.1 vector容器 90

4.2.2 使用迭代器 92

4.2.3 list容器 93

4.3 关联式容器 95

4.3.1 pair类型 95

4.3.2 map容器 97

4.3.3 set容器 98

4.4 本章小结 100

习题4 101

实验训练4 101

第5章 线性表 103

5.1 线性表的定义 103

5.1.1 线性表的逻辑结构 103

5.1.2 线性表的抽象类定义 104

5.2 线性表的顺序表示和实现 105

5.2.1 线性表的顺序表示 105

5.2.2 顺序表类的定义 105

5.2.3 顺序表类的实现 106

5.3 线性表的链式表示和实现 110

5.3.1 线性表的链式表示 110

5.3.2 抽象链表类的定义 110

5.3.3 抽象链表类各成员函数的实现 112

5.4 单链表 113

5.4.1 单链表的结构 113

5.4.2 单链表类的定义 113

5.4.3 单链表的常用成员函数的实现 114

5.4.4 单链表举例——一元多项式加法 117

5.5 循环链表 120

5.5.1 循环链表的定义 120

5.5.2 循环链表类的定义 120

5.5.3 循环链表常用函数的实现 121

5.5.4 循环链表举例——约瑟夫问题 124

5.6 双向链表 125

5.6.1 双向链表的定义 125

5.6.2 双向链表类的定义 126

5.6.3 双向链表的常用成员函数的实现 127

5.7 本章小结 130

习题5 131

实验训练5 131

第6章 堆栈、队列和递归 133

6.1 堆栈的概念及其运算 133

6.2 抽象堆栈类的定义 134

6.3 堆栈的定义及其实现 135

6.3.1 顺序栈的定义 135

6.3.2 顺序栈类的定义及典型成员函数的实现 135

6.3.3 多栈共享空间问题 138

6.3.4 链栈的定义 139

6.3.5 链式栈类的定义及典型成员函数的实现 140

6.4 堆栈的应用举例 143

6.4.1 数制转换 143

6.4.2 一个趣味游戏——迷宫问题 144

6.5 队列的概念及其运算 147

6.6 抽象队列类的定义 148

6.7 队列的定义及其实现 148

6.7.1 队列的顺序存储结构 148

6.7.2 循环队列的定义 150

6.7.3 顺序循环队列类的定义及常用成员函数的实现 150

6.7.4 链式队列的定义 153

6.7.5 链式队列类的定义及常用成员函数的实现 153

6.7.6 链式队列的应用举例 156

6.7.7 优先级队列的定义 157

6.7.8 优先级队列类的定义及常用成员函数的实现 158

6.8 递归 161

6.8.1 递归的概念 161

6.8.2 递归的应用 162

6.8.3 递归在计算机中的实现 163

6.8.4 递归问题的非递归算法 165

6.9 本章小结 168

习题6 168

实验训练6 169

第7章 树与二叉树 171

7.1 树、二叉树和森林的基本概念 171

7.1.1 树 171

7.1.2 二叉树 173

7.1.3 树与森林的存储结构 177

7.2 二叉树的抽象类和树的类 181

7.2.1 二叉树的抽象类 181

7.2.2 树的类 186

7.3 二叉树的遍历和树的遍历 192

7.3.1 二叉树的遍历 192

7.3.2 树的遍历 195

7.4 二叉排序树 198

7.5 二叉树的计数 203

7.6 哈夫曼树及其应用 204

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

7.6.2 哈夫曼编码 205

7.7 本章小结 206

习题7 206

实验训练7 208

第8章 图 209

8.1 图的基本概念 209

8.1.1 图的定义 209

8.1.2 图的术语 210

8.1.3 图的基本操作 212

8.1.4 图的存储表示 213

8.2 图的抽象类 217

8.2.1 图的邻接矩阵类 217

8.2.2 图的邻接表类 222

8.3 图的遍历 228

8.3.1 深度优先搜索DFS 228

8.3.2 广度(或宽度)优先搜索BFS 229

8.4 图的连通性与最小生成树 230

8.4.1 无向图的连通分量和生成树 230

8.4.2 最小生成树 231

8.4.3 关节点和重连通分量 235

8.5 最短路径 237

8.5.1 图结点的可达性 238

8.5.2 从某个源点到其余各顶点的最短路径 239

8.5.3 每一对顶点之间的最短路径 241

8.6 活动网络 243

8.6.1 用顶点表示活动的网络(AOV网络) 243

8.6.2 用边表示活动的网络(AOE网络) 244

8.7 本章小结 246

习题8 246

实验训练8 248

第9章 查找与散列结构 250

9.1 基本概念 250

9.2 静态查找表 251

9.2.1 顺序表的查找 251

9.2.2 有序表的查找 253

9.2.3 索引顺序表的查找 255

9.3 动态查找表 256

9.4 Hash表及其查找 258

9.4.1 Hash表 258

9.4.2 Hash函数的构造方法 259

9.4.3 处理冲突的方法 262

9.4.4 Hash表的查找及其分析 264

9.5 本章小结 266

习题9 266

实验训练9 267

第10章 排序 269

10.1 排序的基本概念 269

10.2 插入排序 271

10.2.1 直接插入排序 271

10.2.2 其他插入排序 273

10.2.3 希尔排序 276

10.3 快速排序 277

10.4 选择排序 280

10.4.1 简单选择排序 280

10.4.2 锦标赛排序 281

10.4.3 堆排序 284

10.5 归并排序 289

10.5.1 归并 289

10.5.2 迭代的归并排序算法 290

10.6 基数排序 291

10.6.1 多关键字排序 291

10.6.2 链式基数排序 292

10.7 本章小结 294

习题10 295

实验训练10 295

参考文献 297