C++与数据结构(第4版)

C++与数据结构(第4版)
作 者: 高飞
出版社: 电子工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: C C++ C# VC VC++ 程序设计 计算机/网络
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《C++与数据结构(第4版)》作者简介

内容简介

本书是*(网络教育)精品课程的教学成果,也是北京市高等教育精品教材,根据教育部高等学校大学计算机课程教学指导委员会《大学计算机基础课程教学基本要求》中有关理工类专业的计算机基础课程教学要求组织编写而成,内容由浅入深,案例丰富,通俗易懂,实用性强。本书在介绍了C语言的程序设计方法的基础上,采用面向对象的思想和抽象数据类型的概念,用C语言有效地组织和描述了线性表、堆栈、队列、树和图等各种典型的数据结构和相关类的实现,并介绍了每一种数据结构的不同存储方法、典型操作及其应用。全书共11章,包括数据结构的基本概念,数组与指针,函数,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 面向对象的思想 9

1.4.2 面向对象程序设计 9

1.4.3 面向对象的语言 9

1.4.4 面向对象的基本概念 10

1.4.5 面向对象的基本特性 11

1.5 本章小结 13

习题1 13

第2章 C 初步知识 14

2.1 C 语言 14

2.2 数组 14

2.2.1 一维数组 15

2.2.2 二维数组 17

2.2.3 字符数组和字符串 20

2.3 指针 24

2.3.1 指针的概念 24

2.3.2 指针的定义 24

2.3.3 指针的运算 25

2.4 指针和数组 27

2.4.1 指针与数组名 27

2.4.2 指向数组的指针 28

2.4.3 存储指针的数组 31

2.4.4 动态存储 32

2.5 结构 34

2.5.1 结构类型的定义 34

2.5.2 结构变量的说明 35

2.5.3 结构成员的引用 36

2.5.4 结构数组和结构指针 37

2.6 函数 39

2.6.1 函数的声明、定义和调用 40

2.6.2 函数的参数传递 41

2.6.3 带默认参数的函数 42

2.6.4 内置函数 43

2.6.5 函数的重载 44

2.7 本章小结 45

习题2 45

实验训练2 45

第3章 C 类及其对象的封装性 48

3.1 类的声明和对象的定义 48

3.1.1 声明类类型 48

3.1.2 定义对象的方法 50

3.1.3 对象成员的引用 51

3.2 类的成员函数 52

3.2.1 成员函数的访问属性 52

3.2.2 在类外定义成员函数 52

3.2.3 内置成员函数 53

3.2.4 成员函数的存储方式 54

3.3 构造函数和析构函数 55

3.3.1 对象的初始化 55

3.3.2 构造函数的作用 55

3.3.3 带参数的构造函数 57

3.3.4 构造函数的重载 58

3.3.5 拷贝构造函数 58

3.3.6 析构函数 59

3.4 相关特性 61

3.4.1 引用 61

3.4.2 友元 67

3.4.3 运算符重载 70

3.5 本章小结 77

习题3 77

实验训练3 78

第4章 继承性和多态性 81

4.1 继承与派生的概念 81

4.1.1 派生类的声明与构成 81

4.1.2 派生类成员的访问 83

4.2 派生类的构造函数和析构函数 87

4.2.1 简单的派生类的构造函数 87

4.2.2 有子对象的派生类的构造函数 88

4.2.3 多级派生时的构造函数 90

4.2.4 派生类的析构函数 91

4.3 多继承 92

4.3.1 多继承的声明与使用 92

4.3.2 多继承引起的二义性问题 94

4.3.3 虚基类的概念与使用 96

4.4 多态性与虚函数 99

4.4.1 多态的概念 99

4.4.2 虚函数的定义与使用 99

4.4.3 虚析构函数 103

4.4.4 纯虚函数与抽象类 104

4.5 本章小结 107

习题4 107

实验训练4 107

第5章 模板与标准模板库 112

5.1 模板 112

5.1.1 模板的概念 112

5.1.2 函数模板 112

5.1.3 类模板 117

5.2 标准模板库 120

5.3 序列式容器 121

5.3.1 vector容器 121

5.3.2 使用迭代器 123

5.3.3 list容器 124

5.4 关联式容器 125

5.4.1 pair类型 126

5.4.2 map容器 127

5.4.3 set容器 128

5.5 本章小结 130

习题5 131

实验训练5 131

第6章 线性表 133

6.1 线性表的定义 133

6.1.1 线性表的逻辑结构 133

6.1.2 线性表的抽象类定义 134

6.2 线性表的顺序表示和实现 135

6.2.1 线性表的顺序表示 135

6.2.2 顺序表类的定义 135

6.2.3 顺序表类的实现 136

6.3 线性表的链式表示和实现 140

6.3.1 线性表的链式表示 140

6.3.2 抽象链表类的定义 140

6.3.3 抽象链表类各成员函数的实现 142

6.4 单链表 143

6.4.1 单链表的定义 143

6.4.2 单链表类的定义 144

6.4.3 单链表的常用成员函数的实现 144

6.4.4 单链表举例——一元多项式加法 147

6.5 循环链表 150

6.5.1 循环链表的定义 150

6.5.2 循环链表类的定义 150

6.5.3 循环链表常用函数的实现 151

6.5.4 循环链表举例——约瑟夫问题 155

6.6 双向链表 155

6.6.1 双向链表的定义 155

6.6.2 双向链表类的定义 156

6.6.3 双向链表的常用成员函数的实现 157

6.7 本章小结 161

习题6 161

实验训练6 162

第7章 堆栈、队列和递归 169

7.1 堆栈的概念及其运算 169

7.2 抽象堆栈类的定义 170

7.3 堆栈的定义及其实现 170

7.3.1 顺序栈的定义 170

7.3.2 顺序栈类的定义及典型成员函数

的实现 171

7.3.3 多栈共享空间问题 174

7.3.4 链栈的定义 175

7.3.5 链式栈类的定义及典型成员函数

的实现 176

7.4 堆栈的应用举例 179

7.4.1 数制转换 179

7.4.2 迷宫问题 180

7.5 队列的概念及其运算 183

7.6 抽象队列类的定义 184

7.7 队列的定义及其实现 184

7.7.1 队列的顺序存储结构 184

7.7.2 循环队列的定义 186

7.7.3 顺序循环队列类的定义及常用

成员函数的实现 187

7.7.4 链式队列的定义 189

7.7.5 链式队列类的定义及常用成员

函数的实现 190

7.7.6 链式队列的应用举例 193

7.7.7 优先级队列的定义 194

7.7.8 优先级队列类的定义及常用

成员函数的实现 194

7.8 递归 197

7.8.1 递归的概念 197

7.8.2 递归的应用 198

7.8.3 递归在计算机中的实现 199

7.8.4 递归问题的非递归算法 201

7.9 本章小结 204

习题7 204

实验训练7 205

第8章 树与二叉树 212

8.1 树、二叉树和森林的基本概念 212

8.1.1 树 212

8.1.2 二叉树 213

8.1.3 树与森林的存储结构 218

8.2 二叉树的抽象类和树的类 222

8.2.1 二叉树的抽象类 222

8.2.2 树的类 227

8.3 二叉树的遍历和树的遍历 233

8.3.1 二叉树的遍历 233

8.3.2 树的遍历 236

8.4 二叉排序树 239

8.5 二叉树的计数 244

8.6 哈夫曼树及其应用 244

8.6.1 *二叉树 244

8.6.2 哈夫曼编码 246

8.7 本章小结 247

习题8 247

实验训练8 248

第9章 图 253

9.1 图的基本概念 253

9.1.1 图的定义 253

9.1.2 图的术语 254

9.1.3 图的基本操作 256

9.1.4 图的存储表示 256

9.2 图的抽象类 260

9.2.1 图的邻接矩阵类 261

9.2.2 图的邻接表类 265

9.3 图的遍历 271

9.3.1 深度优先搜索 272

9.3.2 广度优先搜索 273

9.4 图的连通性与*小生成树 274

9.4.1 无向图的连通分量和生成树 274

9.4.2 *小生成树 274

9.4.3 关节点和重连通分量 279

9.5 *短路径 281

9.5.1 图结点的可达性 281

9.5.2 从某个源点到其余各顶点的

*短路径 282

9.5.3 每一对顶点之间的*短路径 284

9.6 活动网络 286

9.6.1 AOV网络 286

9.6.2 AOE网络 287

9.7 本章小结 288

习题9 289

实验训练9 290

第10章 查找与散列结构 300

10.1 基本概念 300

10.2 静态查找表 301

10.2.1 顺序表的查找 301

10.2.2 有序表的查找 303

10.2.3 索引顺序表的查找 305

10.3 动态查找表 306

10.4 Hash表及其查找 307

10.4.1 Hash表 307

10.4.2 Hash函数的构造方法 309

10.4.3 处理冲突的方法 312

10.4.4 Hash表的查找及其分析 313

10.5 本章小结 315

习题10 315

实验训练10 316

第11章 排序 324

11.1 排序的基本概念 324

11.2 插入排序 326

11.2.1 直接插入排序 326

11.2.2 其他插入排序 327

11.2.3 希尔排序 330

11.3 快速排序 331

11.4 选择排序 334

11.4.1 简单选择排序 334

11.4.2 锦标赛排序 335

11.4.3 堆排序 338

11.5 归并排序 343

11.5.1 归并 343

11.5.2 迭代的归并排序算法 344

11.6 基数排序 346

11.6.1 多关键字排序 346

11.6.2 链式基数排序 346

11.7 本章小结 348

习题11 349

实验训练11 349

参考文献 354