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

  • 购买积分:12 如何计算积分?
  • 作  者:高飞,薛艳明,聂青等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121136146
  • 页数:347 页
图书介绍:本书是国家网络精品课程的教学成果,全书分为C++程序设计基础和数据结构——面向对象方法与C++描述两篇,内容包括C++简单程序设计,函数,C++类及其对象的封装性,数组与指针,友元、重载和引用,继承与派生,多态性与虚函数,模板,数据结构基本概念,线性表,堆栈与队列,树与二叉树,图,查找与散列结构,排序共15章。本书各章节配有实验例题和题目,方便实践教学,并为任课老师提供电子课件。

上篇C++程序设计基础 1

第1章C++语言概述 1

1.1 C++语言简介 1

1.2最简单的C++程序 1

1.3 C++语言的基本组成 4

1.3.1基本字符集 4

1.3.2词法记号 4

1.3.3语句 4

1.3.4标准函数库 5

1.3.5简单C++++程序结构 5

1.4 C++程序的基本结构 7

1.5 C++程序设计的编写与实现 8

习题1 9

实验训练1 9

第2章 数据类型与运算规则 10

2.1数据类型 10

2.2常量与变量 11

2.2.1常量 11

2.2.2变量 13

2.3 C++的运算规则与表达式 14

2.3.1 C++的运算规则 14

2.3.2算术运算符与算术表达式 16

2.3.3自增、自减运算 16

2.3.4赋值运算符和赋值表达式 17

2.3.5组合赋值运算符与组合赋值表达式 17

2.3.6关系运算符与关系表达式 18

2.3.7逻辑运算符与逻辑表达式 19

2.3.8条件运算符与条件表达式 20

2.4其他运算 20

2.4.1位运算 20

2.4.2逗号运算符 22

2.4.3“…”和“→”运算符 22

2.4.4“()”和“[]”运算符 22

2.4.5“*”和“&”运算符 22

2.4.6 (pe)运算符 22

2.5混合运算及数据类型转换 23

习题2 23

实验训练2 24

第3章 数组与指针 25

3.1数组 25

3.1.1一维数组 25

3.1.2多维数组 28

3.1.3字符数组和字符串 31

3.2指针 34

3.2.1指针的概念 34

3.2.2指针变量定义 34

32.3指针运算 35

3.3指针与数组 36

3.3.1指向数组的指针 36

3.3.2指向字符串的指针 39

3.3.3指针数组和指向指针的指针 40

3.4指针与函数 42

3.4.1指向函数的指针 42

3.4.2返回指针值的函数 44

习题3 45

实验训练3 45

第4章 函数 46

4.1函数的声明和调用 46

4.1.1函数的声明 46

4.1.2函数的调用 47

4.2函数间的参数传递 48

4.2.1值传递 49

4.2.2函数参数为指针类型 49

4.3带默认参数的函数 50

4.4变量的存储属性 51

4.4.1动态存储方式与静态存储方式 51

4.4.2局部变量的存储属性 51

4.4.3全局变量的存储属性 54

习题4 56

实验训练4 56

第5章 结构类型及其他构造类型 57

5.1结构类型 57

5.1.1结构类型的概念与定义 57

5.1.2结构变量的说明 58

5.1.3引用结构中的成员 59

5.1.4结构的初始化 60

5.2结构数组 61

5.3结构指针 64

5.4在函数之间传递结构 67

5.4.1向函数传递结构的成员 67

5.4.2向函数传递整个结构 67

5.4.3向函数传递结构的地址 69

5.5联合类型 70

5.6枚举类型 72

5.6.1枚举的概念 72

5.6.2枚举运算 72

习题5 73

实验训练5 74

第6章C++类及其对象的封装性 75

6.1面向对象的基本概念与基本特征 75

6.1.1面向对象的基本概念 75

6.1.2面向对象的基本特征 77

6.2类的声明和对象的定义 78

6.2.1类和对象的关系 78

6.2.2声明类类型 78

6.2.3定义对象的方法 80

6.2.4类和结构体类型的异同 82

6.3类的成员函数 83

6.3.1成员函数的性质 83

6.3.2在类外定义成员函数 83

6.3.3 inne成员函数 84

6.3.4成员函数的存储方式 87

6.4对象成员的引用 88

6.4.1通过对象名和成员运算符访问对象中的成员 88

6.4.2通过指向对象的指针访问对象中的成员 89

6.5构造函数 90

6.5.1对象的初始化 90

6.5.2构造函数的作用 91

6.5.3带参数的构造函数 92

6.5.4用参数初始化表对数据成员初始化 93

6.5.5构造函数的重载 93

6.5.6 使用默认参数的构造函数 95

6.6析构函数 98

6.7动态存储 99

习题6 101

实验训练6 101

第7章 引用、友元和重载 102

7.1引用 102

7.1.1引用的概念 102

7.1.2引用的应用 103

7.1.3引用作为函数参数 104

7.2友元 107

7.2.1友元的定义 107

7.2.2友元函数 107

7.2.3友元成员 108

7.2.4友元类 111

7.3重载 112

7.3.1函数重载 112

7.3.2运算符重载 116

习题7 127

实验训练7 128

第8章 继承与派生 129

8.1继承与派生的概念 129

8.2派生类的声明 130

8.3派生类的构成 130

8.4派生类成员的访问属性 131

8.4.1公有继承 132

8.4.2私有继承 133

8.4.3保护成员和保护继承 135

8.4.4多级派生时的访问属性 138

8.5派生类的构造函数和析构函数 139

8.5.1简单的派生类的构造函数 139

8.5.2有子对象的派生类的构造函数 141

8.5.3多级派生时的构造函数 142

8.5.4派生类的析构函数 144

8.6多继承 144

8.6.1声明多继承的方法 145

8.6.2多继承派生类的构造函数 145

8.6.3多继承的析构函数 146

8.6.4多继承引起的二义性问题 147

8.7虚基类 150

8.7.1虚基类的概念 150

8.7.2虚基类的初始化 151

习题8 153

实验训练8 155

第9章 多态性与虚函数 156

9.1多态性 156

9.1.1多态性的概念 156

9.1.2编译时的多态性 156

9.1.3运行时的多态性 157

9.2虚函数 159

9.2.1虚函数的作用 159

9.2.2虚函数的声明 160

9.2.3虚析构函数 162

9.3纯虚函数与抽象类 163

9.3.1纯虚函数 163

9.3.2抽象类 165

习题9 167

实验训练9 168

第10章 模板 169

10.1模板的概念 169

10.2函数模板 169

10.2.1函数模板和模板函数 169

10.2.2重载模板函数 173

10.3类模板 173

10.3.1类模板和模板类的概念 173

10.3.2类模板的派生 175

习题10 176

实验训练10 176

下篇 数据结构一一面向对象方法与C++描述 177

第11章 数据结构基本概念 177

11.1数据结构的概念和术语 177

11.2抽象数据类型 178

11.2.1数据类型 178

11.2.2数据抽象与抽象数据类型 179

11.3算法和算法分析 179

11.3.1算法 179

11.3.2算法设计的要求 180

11.3.3算法效率的度量 180

11.4数据结构的抽象层次 182

习题11 183

第12章 线性表 184

12.1线性表的定义 184

12.1.1线性表的逻辑结构 184

12.1.2线性表的抽象类定义 184

12.2线性表的顺序表示和实现 185

12.2.1线性表的顺序表示 185

12.2.2 序表类的定义 186

12.2.3顺序表类的实现 187

12.3线性表的链式表示和实现 189

12.3.1线性表的链式表示 189

12.3.2抽象链表类的定义 190

12.3.3抽象链表类各成员函数的实现 191

12.4单链表 192

12.4.1单链表的定义 192

12.4.2单链表类的定义 193

12.4.3单链表的常用成员函数的实现 193

12.4.4单链表举例——一元多项式加法 196

12.5循环链表 198

12.5.1循环链表的定义 198

12.5.2循环链表类的定义 199

12.5.3循环链表常用函数的实现 199

12.5.4循环链表举例——约瑟夫问题 203

12.6双向链表 203

12.6.1双向链表的定义 203

12.6.2双向链表类的定义 204

12.6.3双向链表的常用成员函数的实现 205

习题12 208

实验训练12 209

第13章 堆栈与队列 210

13.1堆栈的概念及其运算 210

13.2抽象堆栈类的定义 210

13.3堆栈的定义及其实现 211

13.3.1顺序栈的定义 211

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

13.3.3多栈共享空间问题 214

13.3.4链栈的定义 215

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

13.4堆栈的应用举例 219

13.4.1数制转换 219

13.4.2一个趣味游戏——迷宫问题 220

13.5队列的概念及其运算 223

13.6 抽象队列类的定义 223

13.7队列的定义及其实现 224

13.7.1队列的顺序存储结构 224

13.7.2循环队列的定义 225

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

13.7.4链式队列的定义 228

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

13.7.6链式队列的应用举例 231

13.7.7优先级队列的定义 232

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

习题13 235

实验训练13 236

第14章 树与二叉树 237

14.1树、二叉树和森林的基本概念 237

14.1.1树 237

14.1.2二叉树 238

14.1.3树与森林的存储结构 243

14.2二叉树的抽象类和树的类 246

14.2.1二叉树的抽象类 246

14.2.2树的类 251

14.3二叉树的遍历和树的遍历 256

14.3.1二叉树的遍历 256

14.3.2树的遍历 260

14.4二叉排序树 262

14.5二叉树的计数 266

14.6哈夫曼树及其应用 267

14.6.1最优二叉树(哈夫曼树) 267

14.6.2哈夫曼编码 268

习题14 269

实验训练14 270

第15章图 271

15.1图的基本概念 271

15.1.1图的定义 271

15.1.2图的术语 272

15.1.3图的基本操作 273

15.1.4图的存储表示 274

15.2图的类的定义 278

15.2.1图的邻接矩阵类 278

15.2.2图的邻接表类 282

15.3图的遍历 288

15.3.1深度优先搜索DFS 288

15.3.2广度(或宽度)优先搜索BFS 289

15.4图的连通性与最小生成树 290

15.4.1无向图的连通分量和生成树 290

15.4.2最小生成树 290

15.4.3关节点和重连通分量 295

15.5最短路径 297

15.5.1图结点的可达性 297

15.5.2从某个源点到其余各顶点的最短路径 298

15.5.3 毎一对对顶点之间的最短路径 299

15.6 活动网络 301

15.6.1用顶点表示活动的网络(AOV网络) 301

15.6.2用边表示活动的网络(AOE网络) 302

习题15 304

实验训练15 305

第16章 查找与散列结构 306

16.1基本概念 306

16.2静态查找表 307

16.2.1顺序表的查找 307

16.2.2有序表的查找 308

16.2.3索引顺序表的查找 310

16.3动态查找表 311

16.4 Hash表及其查找 313

16.4.1 Hash表 313

16.4.2 Hash函数的构造方法 314

16.4.3处理冲突的方法 317

16.4.4 Hash表的查找及其分析 319

习题16 320

实验训练16 321

第17章 排序 322

17.1排序的基本概念 322

17.2插入排序 323

17.2.1直接插入排序 324

17.2.2其他插入排序 325

17.2.3希尔排序 328

17.3快速排序 329

17.4选择排序 332

17.4.1简单选择排序 332

17.4.2锦标赛排序 332

17.4.3堆排序 335

17.5归并排序 340

17.5.1归并 340

17.5.2迭代的归并排序算法 341

17.6基数排序 342

17.6.1多关键字排序 342

17.6.2链式基数排序 343

习题17 345

实验训练17 345

参考文献 346