第1篇C++语言与面向对象程序设计
第1章C++简介
1.1C++历史
1.2C++语言特点
1.3本篇的组织结构
第2章熟悉C++
2.1环境
2.2第一个示例程序
2.2.1注释
2.2.2#include语句与预处理
2.2.3main函数
2.2.4从main中返回
2.2.5终端输出输人
2.3第二个示例程序
2.3.1数据类型
2.3.2常量
2.3.3变量
2.3.4表达式与操作符
2.3.5类型转换
2.3.6语句
[习题]
第3章进一步熟悉C++
3.1更多的变量类型
3.1.1指针类型
3.1.2引用类型
3.1.3枚举类型
3.1.4数组类型
3.1.5用typedef定义自己的变量类型
3.2函数
3.2.1函数的参数与返回值
3.2.2内联函数
3.2.3递归函数
3.2.4作用域
3.2.5函数重载
3.2.6函数指针
3.3类与对象
3.3.1类与对象
3.3.2成员变量和成员函数
3.3.3访问权限
3.3.4构造函数与析构函数
3.3.5常量成员变量和函数
3.3.6静态成员变量和函数
3.3.7友元
3.3.8this指针
3.4结构.联合和位域
3.4.1结构
3.4.2联合
3.4.3位域
3.4.4指针与结构
[习题]
第4章类与继承
4.1单继承
4.1.1成员访问控制方式
4.1.2一个继承的示例
4.1.3构造函数和析构函数
4.1.4虚函数
4.1.5抽象类与纯虚函数
4.1.6虚析构函数
4.2多继承
4.2.1多继承中的构造函数与析构函数
4.2.2歧义性
4.2.3虚基类
4.2.4多继承的应用
[习题]
第5章C++高级应用
5.1模板
5.1.1函数模板
5.1.2类模板
5.1.3模板的应用
5.2I/O流
5.2.1标准I/0流
5.2.2文件I/0
5.2.3字符串I/0流
5.2.4重载操作符'>'
5.3堆管理
5.3.1动态空间申请与释放
5.3.2重载new和delete
5.3.3异常处理
5.4操作符重载
5.4.1双目运算符重载
5.4.2单目运算符重载
5.4.3引用在运算符重载中的应用
5.5异常
5.5.1异常处理
5.5.2异常发生之后
5.5.3嵌套异常
5.5.4处理未捕捉到的异常
[习题]
第2篇数据结构
第6章基本概念
6.1什么是数据结构
6.2抽象数据类型及面向对象概念
6.2.1数据类型
6.2.2抽象与抽象数据类型
6.3数据结构的抽象层次
6.4算法定义
6.5性能分析与度量
6.5.1评价算法的标准
6.5.2算法效率的后期测量
6.5.3算法的事前估计
6.5.4大0表示法
[习题]
第7章数组
7.1数组的概念
7.1.1数组的概念与数组抽象数据类型
7.1.2数组元素的定位
7.2顺序表
7.2.1顺序表的概念和定义
7.2.2顺序表的顺序搜索
7.2.3顺序表的插入和删除
7.3稀疏矩阵
7.3.1稀疏矩阵的概念
7.3.2稀疏矩阵的压缩存储表示
7.4字符串
7.4.1字符串的概念及其抽象数据类型
7.4.2字符串的运算
7.4.3字符串的模式匹配
[习题]
第8章链表
8.1单链表
8.1.l单链表的概念
8.1.2单链表的类定义
8.1.3单链表的插入与删除
8.1.4带表头结点的单链表
8.1.5单链表的类模板
8.1.6单链表的游标类
8.1.7静态链表
8.2循环链表
8.3双向链表
8.3.1双向链表的概念
8.3.2带表头结点的双向循环链表
8.3.3双向循环链表的搜索.插入和删除算法
8.4稀疏矩阵
[习题]
第9章栈和队列
9.1栈
9.1.1栈的定义
9.1.2栈的顺序方式实现(顺序栈)
9.1.3栈的链接方式实现(链式栈)
9.2队列
9.2.1队列的抽象数据类型
9.2.2队列的数组表示(循环队列)
9.2.3队列的链接存储表示(链式队列)
9.3优先级队列
9.3.1优先级队列的定义
9.3.2优先级队列的存储表示和实现
[习题]
第10章递归
10.1递归的概念
10.2递归过程与递归工作栈
10.3广义表
10.3.1广义表的概念
10.3.2广义表的表示及操作
10.3.3广义表存储结构的实现
10.3.4广义表的访问算法
10.3.5广义表的递归算法
[习题]
第11章树与森林
11.1树和森林的概念
11.1.1树的定义与术语
11.1.2树的抽象数据类型
11.2二叉树
11.2.1二叉树的定义与性质
11.2.2二叉树的类定义
11.3二叉树的表示
11.3.1数组表示
11.3.2链接表示
11.4二叉树遍历
11.4.1遍历二叉树的递归算法
11.4.2二叉树遍历的游标类
11.5线索化二叉树
11.5.1线索
11.5.2中序线索化二叉树
11.5.3前序与后序的线索化二叉树
11.6堆
11.6.1堆的定义
11.6.2堆的建立
11.6.3堆的插入与删除
11.7树与森林
11.7.1树的存储表示
11.7.2森林与二叉树的转换
11.7.3树的遍历
11.7.4森林的遍历
11.8二叉树的计数
11.9霍夫曼树
11.9.1路径长度
11.9.2霍夫曼树
11.9.3霍夫曼编码
[习题]
第12章集合与搜索
12.1集合及其表示
12.1.1集合基本概念
12.1.2以集合为基础的抽象数据类型
12.1.3用位向量实现集合抽象数据类型
12.1.4用有序链表实现集合的抽象数据类型
12.2等价类和并查集
12.2.1等价关系与等价类
12.2.2并查集
12.3静态搜索表
12.3.1搜索的概念
12.3.2静态搜索结构
12.3.3顺序搜索
12.3.4基于有序顺序表的折半搜索
12.4二叉搜索树
12.4.1二叉搜索树的定义
12.4.2二叉搜索树上的搜索
12.4.3二叉搜索树的插入
12.4.4二叉搜索树的删除
12.4.5二叉搜索树的性能分析
[习题]
第13章图
13.1图的基本概念
13.2图的存储表示
13.2.1邻接矩阵
13.2.2邻接表
13.2.3邻接多重表
13.3图的遍历与连通性
13.3.1深度优先搜索
13.3.2广度优先搜索
13.3.3连通分量
13.3.4重连通分量
13.4最小生成树
13.4.1克鲁斯卡尔算法
13.4.2普里姆算法
13.5最短路径
13.5.1边上权值非负情形的单源最短路径问题
13.5.2边上权值为任意值的单源最短路径问题
13.5.3所有顶点之间的最短路径
13.6活动网络
13.6.1用顶点表示活动的网络(AOV网络)
13.6.2用边表示活动的网络(AOE网络)
[习题]
第14章排序
14.1概述
14.2插入排序
14.2.1直接插入排序
14.2.2折半插入排序
14.2.3链表插入排序
14.2.4希尔排序
14.3交换排序
14.3.1起泡排序
14.3.2快速排序
14.4选择排序
14.4.1直接选择排序
14.4.2锦标赛排序
14.4.3堆排序
14.5归并排序
14.5.1归并
14.5.2迭代的归并排序算法
14.5.3递归的表归并排序
14.6基数排序
14.6.1多关键码排序
14.6.2链式基数排序
14.7磁盘排序
14.7.1磁盘排序的基本过程
14.7.2k路平衡归并
14.7.3初始归并段的生成
14.7.4最佳归并树
[习题]
第15章索引与散列
15.1静态索引结构
15.1.1线性索引
15.1.2倒排表
15.1.3m路静态搜索树
15.24AVL树
15.2.1AVL树的定义
15.2.2平衡化旋转
15.2.3AVL树的插入和删除
15.2.4AVL树的高度
15.3B_树与B+树
15.3.1动态的m路搜索树
15.3.2B_树
15.3.3B_树的插入
15.3.4B_树的删除
15.3.5B+树
15.4散列
15.4.1词典的抽象数据类型
15.4.2散列表与散列方法
15.4.3散列函数
15.4.4处理溢出的闭散列方法
15.4.5处理溢出的开散列方法——链地址法
15.4.6散列表分析
[习题]
第3篇软件工程方法
第16章软件工程基本概念
16.1软件的概念.特点和分类
16.1.1软件的概念与特点
16.1.2软件的分类
16.2软件的发展和软件危机
16.3软件工程过程和软件生存期
16.3.1软件工程过程
16.3.2软件生存期
16.4软件生存期模型
16.4.1瀑布模型
16.4.2进化模型
16.4.3螺旋模型
16.4.4喷泉模型
16.4.5智能模型
16.5软件工程的基本目标
16.5.1软件工程的定义
16.5.2软件工程项目的基本目标
[习题]
第17章系统分析
17.1基于计算机的系统
17.2计算机系统工程
17.2.1硬件和硬件工程
17.2.2软件和软件工程
17.2.3人与人类工程
17.2.4数据库和数据库工程
17.3系统需求识别
17.4可行性研究
17.5系统结构的模型化
17.5.1结构图
17.5.2系统结构的规格说明定义
17.5.3系统定义与评审
[习题]
第18章面向过程的软件需求分析
18.1软件需求分析的任务和过程
18.1.1软件需求分析的任务
18.1.2需求分析的过程
18.1.3软件需求分析的原则
18.2符号表示
18.2.1数据流图中的基本符号
18.2.2数据流与加工之间的关系
18.2.3分层的数据流图
18.3构造数据流模型
18.3.1构造数据流模型的步骤
18.3.2数据流图画法
18.4数据词典
18.4.1词条描述
18.4.2数据结构的描述
18.4.3加工逻辑说明
18.5系统行为描述
18.5.1状态迁移图
18.5.2时序图
18.5.3Petri网
18.6数据及数据库需求
18.6.1有关数据库的基本概念
18.6.2E—R方法和实体模型
18.6.3数据结构的规范化
18.6.4数据库分析的过程
[习题]
第四章原型化方法
19.1为什么使用原型化方法
19.2软件原型的分类
19.3快速原型开发模型
19.3.1原型生存期
19.3.2软件开发过程
19.4原型开发技术
19.4.1可执行规格说明
19.4.2基于脚本的设计
19.4.3自动程序设计
19.4.4专用语言
19.4.5简化假设
19.5软件复用技术
19.5.1软件复用概述
19.5.2软件复用技术
[习题]
第20章面向过程的软件设计方法
20.1软件设计的目标和任务
20.1.1软件设计在开发阶段中的重要性
20.1.2软件设计任务
20.2软件设计基础
20.2.1自顶向下.逐步细化
20.2.2软件结构
20.2.3程序结构
20.2.4数据结构
20.2.5模块化
20.2.6抽象化
20.2.7信息隐蔽
20.3模块设计
20.3.1模块
20.3.2模块独立性
20.3.3锅台性
20.3.4内聚性
20.4数据设计及文件设计
20.4.1数据设计的原则
20.4.2在设计程序结构时数据结构的选择方法
20.4.3文件设计
20.5结构化设计方法
20.5.1典型的系统结构形式
20.5.2变换分析
20.5.3事务分析
20.5.4软件模块结构的改进
[习题]
第21章用户界面设计
21.1用户界面应具备的特性
21.1.1可使用性
21.1.2灵活性
21.1.3复杂性和可靠性
21.2用户界面设计的任务分析
21.2.1用户特性分析
21.2.2用户工作分析
21.2.3用户模型和观点
21.3用户界面任务和工作设计
21.3.1任务分配
21.3.2工作方式和工作设计
21.4界面设计的基本类型
21.4.1界面设计类型
21.4.2菜单界面的设计
21.4.3图像
21.4.4对话
21.4.5问题描述语言POL
21.4.6窗口
21.5数据输人界面设计
21.5.1数据输入的规则
21.5.2输入表格设计
21.5.3其他数据输入的方法
21.6数据显示界面设计
21.6.1数据显示的规则
21.6.2字符数据的显示
21.6.3图形显示
21.6.4报告
21.7控制界面的设计
21.7.1用控制对话选择操作命令
21.7.2用菜单界面进行控制
21.7.3用功能键定义操作命令
21.7.4用图标表示对象或命令
21.7.5直接操纵
21.7.6用窗口划分屏幕
21.7.7命令语言
21,7.8自然语言
[习题]
第22章面向对象技术
22.1面向对象的概念
22.2面向对象方法的开发过程
22.2.1应用生存期
22.2.2类生存期
22.2.3应用开发过程
22.2.4系统体系结构
[习题]
第23章面向对象分析与模型化
23.1面向对象分析
23.1.1论域分析
23.1.2应用分析
23.2对象模型技术
23.2.1对象模型
23.2.2动态模型
23.2.3功能模型
23.2.4基于三个模型的分析过程
23.3Coad与Yourdon的00A方法
23.3.1面向对象的分析的考虑
23.3.2标识对象和类
23.3.3标识结构
23.3.4标识属性
23.3.5标识服务
23.3.6标识主题
[习题]
第24章面向对象设计
24.1高层设计
24.1.1高层设计模型
24.1.2高层设计的规则
24.2Coad与Youdon面向对象设计方法
24.2.1问题论域部分的设计
24.2.2用户界面部分的设计
24.2.3任务管理部分的设计
24.2.4数据管理部分的设计
24.2.5程序设计语言的影响
24.3类的设计
24.3.1类设计的目标
24.3.2类设计的方针
24.3.3通过复用设计类
24.3.4计数器类设计的实例
[习题]