第一部分 基本数据结构 3
第1章 数组 3
1.1 容器类和迭代程序 3
目录 3
1.2 处理简单数据类型数组 4
1.2.1 添加元素 6
1.2.2 读取元素 6
1.2.5 查找数组的大小 7
1.2.6 使用数组管理器 7
1.2.4 查找元素 7
1.2.3 删除元素 7
1.2.7 使用迭代类列出元素 11
1.3 处理对象数组 13
1.3.1 被管理的类 13
1.3.2 Mix-In类 13
1.3.3 面向对象的数组管理器 14
1.3.4 对象数组管理器的使用方法 16
1.3.5 列出对象数组管理器的元素值 20
1.4 让类变得通用 21
1.4.1 模板的声明 22
1.5 小结 24
1.4.2 使用模板 24
第2章 向量 25
2.1 处理简单数据类型的向量 25
2.2 管理对象的向量 29
2.3 小结 33
第3章 链表 34
3.1 基本链表操作 34
3.2 单链表 35
3.2.1 链表的Mix-In类 35
3.2.2 单链表的节点类 37
3.2.3 链表管理器 38
3.2.4 使用链表管理器 43
3.3 双向链表 47
3.3.1 双向链表的节点 48
3.3.2 双向链表的链表管理器 49
3.3.3 实现多个迭代类 54
3.4 小结 57
第4章 堆栈和队列 58
4.1 堆栈 58
4.1.1 堆栈的用途 58
4.1.2 使用数组实现堆栈 61
4.1.3 使用链表实现堆栈 64
4.2 队列 66
4.2.1 队列的使用 67
4.2.2 使用数组实现队列 67
4.2.3 使用链表实现队列 69
4.3 小结 71
第二部分 树 75
第5章 二叉树 75
5.1 二叉树的结构 75
5.2 应用程序 78
5.4 树管理器类 79
5.3 修改Mix-In类 79
5.5 插入节点 80
5.6 查找节点 82
5.7 删除节点 83
5.8 树的遍历 87
5.8.1 遍历的类型 87
5.8.2 堆栈在树的遍历中的作用 88
5.8.3 编写和执行中序遍历 88
5.8.4 编写和执行先序遍历 91
5.9 使用比较函数 95
5.10 小结 97
第6章 AVL树 98
6.1 AVL树的操作 98
6.1.1 平衡因子 98
6.1.2 在修改AVL树时保持平衡 99
6.1.3 添加/删除节点后的新平衡因子 102
6.1.4 计算右旋转后的新平衡因子 102
6.1.5 计算左旋转后的新平衡因子 106
6.2 AVL树类 107
6.3 在AVL树中添加节点 110
6.4 从AVL树中删除节点 114
6.5 小结 117
第7章 B树 118
7.1 B树的概念 118
7.2 树的节点类 120
7.3 B树类 122
7.4 查找元素 122
7.5 插入元素 126
7.5.1 将元素插入到一个具有空间的节点 128
7.5.2 在一个满节点中插入元素 130
7.6 删除元素 132
7.6.1 从叶子节点中删除一个元素并留下足够的元素 136
7.6.2 从叶子节点中删除一个元素而且剩余的元素数量不足 137
7.6.3 从非叶子节点中删除元素 140
7.7 小结 141
第8章 二叉堆和优先级队列 143
8.1 二叉堆的特征 143
8.2 优先级队列类的声明 145
8.3 向量存储类 146
8.4 在优先级队列中插入元素 151
8.5 从优先级队列中删除元素 153
8.6 使用二叉堆排序 157
8.7 小结 159
第三部分 排序、访问和查找 163
第9章 排序和查找 163
9.1 已知内容 164
9.2 排序内容 164
9.3 测量排序算法的效率 165
9.4 排序例程的结构示例 166
9.5 冒泡排序 166
9.6 选择排序 169
9.7 插入排序 171
9.7.1 新数组的插入排序 171
9.7.2 现有数组的插入排序 172
9.8 希尔排序 173
9.9 快速排序 175
9.9.1 递归方式的快速排序 175
9.9.2 非递归的快速排序 178
9.10 归并排序 180
9.11 基数排序 183
9.12 二分法查找 186
9.13 小结 188
10.1 哈希表的概念 189
第10章 哈希表 189
10.1.1 冲突解决技术 190
10.1.2 创建哈希函数 191
10.1.3 哈希表的迭代 191
10.2 使用相邻元素解决冲突 191
10.2.1 添加元素 193
10.2.2 查找元素 194
10.2.3 列出元素 195
10.3 使用链表处理冲突 196
10.3.1 添加元素 197
10.3.2 查找元素 199
10.3.4 列出元素 200
10.3.3 删除元素 200
10.4 小结 202
第11章 字典 203
11.1 关联 203
11.2 Dictionary类 204
11.3 列出字典的内容 215
11.4 小结 217
12.1.1 Customer类 221
12.1 实体类 221
第12章 音像店 221
第四部分 应用示例 221
12.1.2 商品项目的层次结构 227
12.1.3 项目拷贝的层次结构 235
12.2 实用程序类 240
12.2.1 字符串 240
12.2.2 日期 243
12.2.3 菜单 247
12.3 数据结构的选择 249
12.3.1 向量类的改进 251
12.4 在应用程序类内部操作数据结构 256
12.4.1 管理用户界面 256
12.3.2 二叉树类的改进 256
12.4.2 文件I/O 258
12.4.3 添加对象 262
12.4.4 租用和归还拷贝 265
12.5 程序应该提供的其他功能 267
12.6 小结 267
第13章 小镇药房 269
13.1 实体类 269
13.1.1 Drug类 269
13.1.2 Customer类 273
13.1.3 Script类 276
13.1.4 有关删除操作的说明 281
13.2 选择用于文件访问的数据结构 282
13.3 应用程序类 296
13.3.1 程序的启动和终止运行 296
13.3.2 Run函数 298
13.3.3 构建索引 298
13.3.4 药物管理 301
13.3.5 管理患者 304
附录 模板 304
13.3.6 管理处方 306
13.4 小结 312