书籍详情
算法与高级语言程序设计
作者:高飞,白霞 编
出版社:电子工业出版社
出版时间:2015-01-01
ISBN:9787121247125
定价:¥39.00
购买这本书可以去
内容简介
本书是教育部高等教育司大学计算机课程改革项目“理工类高校计算思维与大学计算机课程研究与教材建设”的成果之一。本书兼顾程序设计语言和算法的学习,在介绍C++语言的程序设计方法的基础上,采用C++程序设计语言描述算法。全书共12章,分为上下篇。上篇讲述高级语言程序设计基础;下篇在介绍算法设计及算法的性能度量后,介绍C++语言描述的典型数据结构和经典算法的设计与分析技术。本书内容由浅入深、循序渐进、案例丰富、通俗易懂、实用性强,可作为高等学校理工类计算机及相关专业学生的教材,也可供从事程序设计的工程人员参考。
作者简介
高飞,女,北京理工大学信息与电子学院,教授,2000年6月至今在北京理工大学信息与电子学院任教师。北京电子学会嵌入式单片机分会委员;航天五院西安分院空间信号处理实验室学术委员会委员;2006??2010年教育部高等学校计算机基础课程指导委员会理工类计算机基础课程教学指导分委员会委员;教育部高等学校教学指导委员会委员会专家工作组专家;全国高等院校计算机基础教育研究会理工专业教学研究会委员。
目录
上篇 高级语言程序设计基础
第1章 C++语言概述 3
1.1 C++语言简介 3
1.2 C++语言的基本组成 4
1.2.1 基本字符集 4
1.2.2 词法记号 4
1.2.3 语句 4
1.2.4 标准函数库 5
1.3 数据类型 5
1.3.1 常量 5
1.3.2 变量 8
1.4 C++的运算规则与表达式 9
1.4.1 C++语言的运算规则 9
1.4.2 算术运算符与算术表达式 10
1.4.3 自增、自减运算 11
1.4.4 赋值运算符和赋值表达式 11
1.4.5 组合赋值运算符与组合赋值表达式 12
1.4.6 关系运算符与关系表达式 13
1.4.7 逻辑运算符与逻辑表达式 13
1.4.8 条件运算符与条件表达式 15
1.5 C++程序的基本结构、编写与实现 15
1.5.1 C++程序的基本结构 15
1.5.2 C++程序的编写与实现 18
小结 19
习题1 20
第2章 函数 21
2.1 函数的声明和调用 21
2.1.1 函数的声明 21
2.1.2 函数的调用 22
2.2 函数间的参数传递 23
2.2.1 值传递 23
2.2.2 函数参数为指针类型 24
2.3 带默认参数的函数 24
2.4 变量的存储属性 25
2.4.1 动态存储方式与静态存储方式 25
2.4.2 局部变量的存储属性 26
2.4.3 全局变量的存储属性 28
小结 30
习题2 30
第3章 数组、指针和结构 32
3.1 数组 32
3.1.1 一维数组 32
3.1.2 多维数组 33
3.1.3 字符数组和字符串 35
3.2 指针 38
3.2.1 指针的概念 38
3.2.2 指针变量定义 39
3.2.3 指针运算 39
3.3 指针与数组 41
3.3.1 指向数组的指针 41
3.3.2 指向字符串的指针 44
3.3.3 指针数组和指向指针的指针 45
3.4 指针与函数 46
3.4.1 指向函数的指针 46
3.4.2 返回指针值的函数 48
3.5 结构类型 49
3.5.1 结构类型的概念与定义 49
3.5.2 结构变量的说明 50
3.5.3 引用结构中的成员 51
3.5.4 结构的初始化 51
3.6 结构数组 51
3.7 结构指针 53
3.8 在函数之间传递结构 54
小结 56
习题3 57
第4章 C++类及其对象的封装性 58
4.1 从结构到类 58
4.1.1 复习结构 58
4.1.2 从结构提高到类 59
4.1.3 对象的创建和使用 63
4.2 类的成员函数 65
4.2.1 成员函数的定义方式 65
4.2.2 成员函数的访问属性 66
4.2.3 成员函数的执行效率 67
4.2.4 成员函数的存储方式 69
4.3 构造函数 71
4.3.1 对象初始化的要求 71
4.3.2 构造函数的形式 72
4.3.3 拷贝构造函数 77
4.4 析构函数 79
4.4.1 析构函数的形式 79
4.4.2 调用顺序 80
4.5 动态存储 81
4.5.1 内存分配与释放 81
4.5.2 避免内存泄漏 83
小结 84
习题4 85
第5章 引用、友元和重载 87
5.1 引用 87
5.1.1 引用的概念与理解 87
5.1.2 在函数通信中大显身手 89
5.2 友元 93
5.2.1 友元的定义 93
5.2.2 友元函数 94
5.2.3 友元成员 95
5.2.4 友元类 97
5.3 重载 99
5.3.1 函数重载 99
5.3.2 运算符重载 103
小结 114
习题5 114
第6章 继承 116
6.1 合成与继承 116
6.2 单继承 118
6.2.1 派生类的声明和构成 118
6.2.2 派生类成员的访问 119
6.2.3 派生类的构造函数和析构函数 126
6.3 多继承 132
6.3.1 声明多继承的方法 132
6.3.2 多继承派生类的构造函数 135
6.3.3 多继承引起的二义性问题 138
6.3.4 虚基类 141
小结 146
习题6 147
第7章 多态 150
7.1 继承呼唤多态 150
7.2 虚函数 151
7.2.1 虚函数的定义与调用 151
7.2.2 虚函数的特例 155
7.2.3 避免虚函数的误用 156
7.3 纯虚函数与抽象类 159
7.3.1 纯虚函数 159
7.3.2 抽象类 160
小结 162
习题7 162
第8章 模板 164
8.1 模板的概念 164
8.2 函数模板 164
8.2.1 函数模板和模板函数 164
8.2.2 函数模板的使用 167
8.2.3 重载模板函数 170
8.3 类模板 170
8.3.1 模板和模板类 170
8.3.2 类模板的派生 173
小结 173
习题8 173
下篇 算法分析与设计
第9章 算法导引 177
9.1 算法基础 177
9.1.1 算法 177
9.1.2 作为技术的算法 178
9.2 算法的设计和性能度量 179
9.2.1 函数的增长 179
9.2.2 标准记号与常用函数 182
小结 185
习题9 186
第10章 基本数据结构 187
10.1 线性表 187
10.1.1 线性表的逻辑结构 187
10.1.2 线性表的顺序表示和实现 187
10.1.3 线性表的链式表示和实现 189
10.2 栈和队列 192
10.2.1 栈 192
10.2.2 队列 195
10.3 哈希表 199
10.3.1 哈希表简介 199
10.3.2 哈希函数的构造方法 201
10.3.3 处理冲突的方法 203
10.3.4 哈希表的查找及其分析 205
10.4 树 206
10.4.1 树、二叉树和森林的基本概念 206
10.4.2 二叉树的遍历和树的遍历 211
10.4.3 二叉树的计数 212
小结 213
习题10 213
第11章 经典设计和分析技术 214
11.1 递归与分治法 214
11.1.1 二分检索问题 214
11.1.2 递归的概念 215
11.1.3 分治法的基本思想 216
11.1.4 分治法的应用 217
11.2 贪心算法 228
11.2.1 活动选择问题 228
11.2.2 贪心算法的基本思想 230
11.2.3 贪心算法的应用 231
11.3 动态规划 234
11.3.1 钢条切割问题 235
11.3.2 动态规划的基本思想 237
11.3.3 动态规划的应用 239
11.4 经典算法蕴涵的计算思维在其他学科的泛化 242
习题11 244
第12章 图的算法 246
12.1 图的基本算法 246
12.1.1 图的表示 246
12.1.2 广度优先搜索 258
12.1.3 深度优先搜索 259
12.1.4 拓扑排序 260
12.2 最小生成树 262
12.2.1 最小生成树的形成 262
12.2.2 Kruskal算法和Prim算法 263
12.3 单源最短路径 269
12.3.1 有向环图的单源最短路径 270
12.3.2 Dijkstra算法 272
12.4 图算法蕴涵的计算思维在其他学科的泛化 274
习题12 275
参考文献 277
第1章 C++语言概述 3
1.1 C++语言简介 3
1.2 C++语言的基本组成 4
1.2.1 基本字符集 4
1.2.2 词法记号 4
1.2.3 语句 4
1.2.4 标准函数库 5
1.3 数据类型 5
1.3.1 常量 5
1.3.2 变量 8
1.4 C++的运算规则与表达式 9
1.4.1 C++语言的运算规则 9
1.4.2 算术运算符与算术表达式 10
1.4.3 自增、自减运算 11
1.4.4 赋值运算符和赋值表达式 11
1.4.5 组合赋值运算符与组合赋值表达式 12
1.4.6 关系运算符与关系表达式 13
1.4.7 逻辑运算符与逻辑表达式 13
1.4.8 条件运算符与条件表达式 15
1.5 C++程序的基本结构、编写与实现 15
1.5.1 C++程序的基本结构 15
1.5.2 C++程序的编写与实现 18
小结 19
习题1 20
第2章 函数 21
2.1 函数的声明和调用 21
2.1.1 函数的声明 21
2.1.2 函数的调用 22
2.2 函数间的参数传递 23
2.2.1 值传递 23
2.2.2 函数参数为指针类型 24
2.3 带默认参数的函数 24
2.4 变量的存储属性 25
2.4.1 动态存储方式与静态存储方式 25
2.4.2 局部变量的存储属性 26
2.4.3 全局变量的存储属性 28
小结 30
习题2 30
第3章 数组、指针和结构 32
3.1 数组 32
3.1.1 一维数组 32
3.1.2 多维数组 33
3.1.3 字符数组和字符串 35
3.2 指针 38
3.2.1 指针的概念 38
3.2.2 指针变量定义 39
3.2.3 指针运算 39
3.3 指针与数组 41
3.3.1 指向数组的指针 41
3.3.2 指向字符串的指针 44
3.3.3 指针数组和指向指针的指针 45
3.4 指针与函数 46
3.4.1 指向函数的指针 46
3.4.2 返回指针值的函数 48
3.5 结构类型 49
3.5.1 结构类型的概念与定义 49
3.5.2 结构变量的说明 50
3.5.3 引用结构中的成员 51
3.5.4 结构的初始化 51
3.6 结构数组 51
3.7 结构指针 53
3.8 在函数之间传递结构 54
小结 56
习题3 57
第4章 C++类及其对象的封装性 58
4.1 从结构到类 58
4.1.1 复习结构 58
4.1.2 从结构提高到类 59
4.1.3 对象的创建和使用 63
4.2 类的成员函数 65
4.2.1 成员函数的定义方式 65
4.2.2 成员函数的访问属性 66
4.2.3 成员函数的执行效率 67
4.2.4 成员函数的存储方式 69
4.3 构造函数 71
4.3.1 对象初始化的要求 71
4.3.2 构造函数的形式 72
4.3.3 拷贝构造函数 77
4.4 析构函数 79
4.4.1 析构函数的形式 79
4.4.2 调用顺序 80
4.5 动态存储 81
4.5.1 内存分配与释放 81
4.5.2 避免内存泄漏 83
小结 84
习题4 85
第5章 引用、友元和重载 87
5.1 引用 87
5.1.1 引用的概念与理解 87
5.1.2 在函数通信中大显身手 89
5.2 友元 93
5.2.1 友元的定义 93
5.2.2 友元函数 94
5.2.3 友元成员 95
5.2.4 友元类 97
5.3 重载 99
5.3.1 函数重载 99
5.3.2 运算符重载 103
小结 114
习题5 114
第6章 继承 116
6.1 合成与继承 116
6.2 单继承 118
6.2.1 派生类的声明和构成 118
6.2.2 派生类成员的访问 119
6.2.3 派生类的构造函数和析构函数 126
6.3 多继承 132
6.3.1 声明多继承的方法 132
6.3.2 多继承派生类的构造函数 135
6.3.3 多继承引起的二义性问题 138
6.3.4 虚基类 141
小结 146
习题6 147
第7章 多态 150
7.1 继承呼唤多态 150
7.2 虚函数 151
7.2.1 虚函数的定义与调用 151
7.2.2 虚函数的特例 155
7.2.3 避免虚函数的误用 156
7.3 纯虚函数与抽象类 159
7.3.1 纯虚函数 159
7.3.2 抽象类 160
小结 162
习题7 162
第8章 模板 164
8.1 模板的概念 164
8.2 函数模板 164
8.2.1 函数模板和模板函数 164
8.2.2 函数模板的使用 167
8.2.3 重载模板函数 170
8.3 类模板 170
8.3.1 模板和模板类 170
8.3.2 类模板的派生 173
小结 173
习题8 173
下篇 算法分析与设计
第9章 算法导引 177
9.1 算法基础 177
9.1.1 算法 177
9.1.2 作为技术的算法 178
9.2 算法的设计和性能度量 179
9.2.1 函数的增长 179
9.2.2 标准记号与常用函数 182
小结 185
习题9 186
第10章 基本数据结构 187
10.1 线性表 187
10.1.1 线性表的逻辑结构 187
10.1.2 线性表的顺序表示和实现 187
10.1.3 线性表的链式表示和实现 189
10.2 栈和队列 192
10.2.1 栈 192
10.2.2 队列 195
10.3 哈希表 199
10.3.1 哈希表简介 199
10.3.2 哈希函数的构造方法 201
10.3.3 处理冲突的方法 203
10.3.4 哈希表的查找及其分析 205
10.4 树 206
10.4.1 树、二叉树和森林的基本概念 206
10.4.2 二叉树的遍历和树的遍历 211
10.4.3 二叉树的计数 212
小结 213
习题10 213
第11章 经典设计和分析技术 214
11.1 递归与分治法 214
11.1.1 二分检索问题 214
11.1.2 递归的概念 215
11.1.3 分治法的基本思想 216
11.1.4 分治法的应用 217
11.2 贪心算法 228
11.2.1 活动选择问题 228
11.2.2 贪心算法的基本思想 230
11.2.3 贪心算法的应用 231
11.3 动态规划 234
11.3.1 钢条切割问题 235
11.3.2 动态规划的基本思想 237
11.3.3 动态规划的应用 239
11.4 经典算法蕴涵的计算思维在其他学科的泛化 242
习题11 244
第12章 图的算法 246
12.1 图的基本算法 246
12.1.1 图的表示 246
12.1.2 广度优先搜索 258
12.1.3 深度优先搜索 259
12.1.4 拓扑排序 260
12.2 最小生成树 262
12.2.1 最小生成树的形成 262
12.2.2 Kruskal算法和Prim算法 263
12.3 单源最短路径 269
12.3.1 有向环图的单源最短路径 270
12.3.2 Dijkstra算法 272
12.4 图算法蕴涵的计算思维在其他学科的泛化 274
习题12 275
参考文献 277
猜您喜欢