上传者: panpanxj
|
上传时间: 2020-01-03 11:28:05
|
文件大小: 11.24MB
|
文件类型: rar
数据结构C++描述
目 录
译者序
前言
第一部分 预备知识
第1章 C++程序设计 1
1.1 引言 1
1.2 函数与参数 2
1.2.1 传值参数 2
1.2.2 模板函数 3
1.2.3 引用参数 3
1.2.4 常量引用参数 4
1.2.5 返回值 4
1.2.6 递归函数 5
1.3 动态存储分配 9
1.3.1 操作符new 9
1.3.2 一维数组 9
1.3.3 异常处理 10
1.3.4 操作符delete 10
1.3.5 二维数组 10
1.4 类 13
1.4.1 类Currency 13
1.4.2 使用不同的描述方法 18
1.4.3 操作符重载 20
1.4.4 引发异常 22
1.4.5 友元和保护类成员 23
1.4.6 增加#ifndef, #define和#endif语句 24
1.5 测试与调试 24
1.5.1 什么是测试 24
1.5.2 设计测试数据 26
1.5.3 调试 28
1.6 参考及推荐读物 29
第2章 程序性能 30
2.1 引言 30
2.2 空间复杂性 31
2.2.1 空间复杂性的组成 31
2.2.2 举例 35
2.3 时间复杂性 37
2.3.1 时间复杂性的组成 37
2.3.2 操作计数 37
2.3.3 执行步数 44
2.4 渐进符号(O、 健?、 o) 55
2.4.1 大写O符号 56
2.4.2 椒?58
2.4.3 符号 59
2.4.4 小写o符号 60
2.4.5 特性 60
2.4.6 复杂性分析举例 61
2.5 实际复杂性 66
2.6 性能测量 68
2.6.1 选择实例的大小 69
2.6.2 设计测试数据 69
2.6.3 进行实验 69
2.7 参考及推荐读物 74
第二部分 数据结构
第3章 数据描述 75
3.1 引言 75
3.2 线性表 76
3.3 公式化描述 77
3.3.1 基本概念 77
3.3.2 异常类NoMem 79
3.3.3 操作 79
3.3.4 评价 83
3.4 链表描述 86
3.4.1 类ChainNode 和Chain 86
3.4.2 操作 88
3.4.3 扩充类Chain 91
3.4.4 链表遍历器类 92
3.4.5 循环链表 93
3.4.6 与公式化描述方法的比较 94
3.4.7 双向链表 95
3.4.8 小结 96
3.5 间接寻址 99
3.5.1 基本概念 99
3.5.2 操作 100
3.6 模拟指针 102
3.6.1 SimSpace的操作 103
3.6.2 采用模拟指针的链表 106
3.7 描述方法的比较 110
3.8 应用 111
3.8.1 箱子排序 111
3.8.2 基数排序 116
3.8.3 等价类 117
3.8.4 凸包 122
3.9 参考及推荐读物 127
第4章 数组和矩阵 128
4.1 数组 128
4.1.1 抽象数据类型 128
4.1.2 C++数组 129
4.1.3 行主映射和列主映射 129
4.1.4 类Array1D 131
4.1.5 类Array2D 133
4.2 矩阵 137
4.2.1 定义和操作 137
4.2.2 类Matrix 138
4.3 特殊矩阵 141
4.3.1 定义和应用 141
4.3.2 对角矩阵 143
4.3.3 三对角矩阵 144
4.3.4 三角矩阵 145
4.3.5 对称矩阵 146
4.4 稀疏矩阵 149
4.4.1 基本概念 149
4.4.2 数组描述 149
4.4.3 链表描述 154
第5章 堆栈 161
5.1 抽象数据类型 161
5.2 派生类和继承 162
5.3 公式化描述 163
5.3.1 Stack的效率 164
5.3.2 自定义Stack 164
5.4 链表描述 166
5.5 应用 169
5.5.1 括号匹配 169
5.5.2 汉诺塔 170
5.5.3 火车车厢重排 172
5.5.4 开关盒布线 176
5.5.5 离线等价类问题 178
5.5.6 迷宫老鼠 180
5.6 参考及推荐读物 188
第6章 队列 189
6.1 抽象