- 博客(0)
- 资源 (22)
- 收藏
- 关注
数据结构算法与应用-C 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 抽象数据类型 189
6.2 公式化描述 190
6.3 链表描述 194
6.4 应用 197
6.4.1 火车车厢重排 197
6.4.2 电路布线 201
6.4.3 识别图元 204
6.4.4 工厂仿真 206
6.5 参考及推荐读物 217
第7章 跳表和散列 218
7.1 字典 218
7.2 线性表描述 219
7.3 跳表描述 222
7.3.1 理想情况 222
7.3.2 插入和删除 223
7.3.3 级的分配 224
7.3.4 类SkipNode 224
7.3.5 类SkipList 225
7.3.6 复杂性 229
7.4 散列表描述 229
7.4.1 理想散列 229
7.4.2 线性开型寻址散列 230
7.4.3 链表散列 234
7.5 应用——文本压缩 238
7.5.1 LZW压缩 239
7.5.2 LZW压缩的实现 239
7.5.3 LZW解压缩 243
7.5.4 LZW解压缩的实现 243
7.6 参考及推荐读物 247
第8章 二叉树和其他树 248
8.1 树 248
8.2 二叉树 251
8.3 二叉树的特性 252
8.4 二叉树描述 253
8.4.1 公式化描述 253
8.4.2 链表描述 254
8.5 二叉树常用操作 256
8.6 二叉树遍历 256
8.7 抽象数据类型BinaryTree 259
8.8 类BinaryTree 260
8.9 抽象数据类型及类的扩充 263
8.9.1 输出 263
8.9.2 删除 264
8.9.3 计算高度 264
8.9.4 统计节点数 265
8.10 应用 265
8.10.1 设置信号放大器 265
8.10.2 在线等价类 268
8.11 参考及推荐读物 275
第9章 优先队列 276
9.1 引言 276
9.2 线性表 277
9.3 堆 278
9.3.1 定义 278
9.3.2 最大堆的插入 279
9.3.3 最大堆的删除 279
9.3.4 最大堆的初始化 280
9.3.5 类MaxHeap 281
9.4 左高树 285
9.4.1 高度与宽度优先的最大及最小
左高树 285
9.4.2 最大HBLT的插入 287
9.4.3 最大HBLT的删除 287
9.4.4 合并两棵最大HBLT 287
9.4.5 初始化最大HBLT 289
9.4.6 类MaxHBLT 289
9.5 应用 293
9.5.1 堆排序 293
9.5.2 机器调度 294
9.5.3 霍夫曼编码 297
9.6 参考及推荐读物 302
第10章 竞?303
10.1 引言 303
10.2 抽象数据类型WinnerTree 306
10.3 类WinnerTree 307
10.3.1 定义 307
10.3.2 类定义 307
10.3.3 构造函数、析构函数及Winner
函数 308
10.3.4 初始化赢者树 308
10.3.5 重新组织比赛 310
10.4 输者树 311
10.5 应用 312
10.5.1 用最先匹配法求解箱子装载
问题 312
10.5.2 用相邻匹配法求解箱子装载
问题 316
第11章 搜索树 319
11.1 二叉搜索树 320
11.1.1 基本概念 320
11.1.2 抽象数据类型BSTree和
IndexedBSTree 321
11.1.3 类BSTree 322
11.1.4 搜索 322
11.1.5 插入 323
11.1.6 删除 324
11.1.7 类DBSTree 326
11.1.8 二叉搜索树的高度 327
11.2 AVL树 328
11.2.1 基本概念 328
11.2.2 AVL树的高度 328
11.2.3 AVL树的描述 329
11.2.4 AVL搜索树的搜索 329
11.2.5 AVL搜索树的插入 329
11.2.6 AVL搜索树的删除 332
11.3 红-黑树 334
11.3.1 基本概念 334
11.3.2 红-黑树的描述 336
11.3.3 红-黑树的搜索 336
11.3.4 红-黑树的插入 336
11.3.5 红-黑树的删除 339
11.3.6 实现细节的考虑及复杂性分析 343
11.4 B-树 344
11.4.1 索引顺序访问方法 344
11.4.2 m 叉搜索树 345
11.4.3 m 序B-树 346
11.4.4 B-树的高度 347
11.4.5 B-树的搜索 348
11.4.6 B-树的插入 348
11.4.7 B-树的删除 350
11.4.8 节点结构 353
11.5 应用 354
11.5.1 直方图 354
11.5.2 用最优匹配法求解箱子装载
问题 357
11.5.3 交叉分布 359
11.6 参考及推荐读物 363
第12章 图 365
12.1 基本概念 365
12.2 应用 366
12.3 特性 368
12.4 抽象数据类型Graph和Digraph 370
12.5 无向图和有向图的描述 371
12.5.1 邻接矩阵 371
12.5.2 邻接压缩表 373
12.5.3 邻接链表 374
12.6 网络描述 375
12.7 类定义 376
12.7.1 不同的类 376
12.7.2 邻接矩阵类 377
12.7.3 扩充Chain类 380
12.7.4 类LinkedBase 381
12.7.5 链接类 382
12.8 图的遍历 386
12.8.1 基本概念 386
12.8.2 邻接矩阵的遍历函数 387
12.8.3 邻接链表的遍历函数 388
12.9 语言特性 389
12.9.1 虚函数和多态性 389
12.9.2 纯虚函数和抽象类 391
12.9.3 虚基类 391
12.9.4 抽象类和抽象数据类型 393
12.10 图的搜索算法 394
12.10.1 宽度优先搜索 394
12.10.2 类Network 395
12.10.3 BFS的实现 395
12.10.4 BFS的复杂性分析 396
12.10.5 深度优先搜索 397
12.11 应用 399
12.11.1 寻找路径 399
12.11.2 连通图及其构件 400
12.11.3 生成树 402
第三部分 算法设计方法
第13章 贪婪算法 405
13.1 最优化问题 405
13.2 算法思想 406
13.3 应用 409
13.3.1 货箱装船 409
13.3.2 0/1背包问题 410
13.3.3 拓扑排序 412
13.3.4 二分覆盖 415
13.3.5 单源最短路径 421
13.3.6 最小耗费生成树 424
13.4 参考及推荐读物 433
第14章 分而治之算法 434
14.1 算法思想 434
14.2 应用 440
14.2.1 残缺棋盘 440
14.2.2 归并排序 443
14.2.3 快速排序 447
14.2.4 选择 452
14.2.5 距离最近的点对 454
14.3 解递归方程 462
14.4 复杂性的下限 463
14.4.1 最小最大问题的下限 464
14.4.2 排序算法的下限 465
第15章 动态规划 467
15.1 算法思想 467
15.2 应用 469
15.2.1 0/1背包问题 469
15.2.2 图像压缩 471
15.2.3 矩阵乘法链 476
15.2.4 最短路径 480
15.2.5 网络的无交叉子集 483
15.2.6 元件折叠 486
15.3 参考及推荐读物 491
第16章 回溯 492
16.1 算法思想 492
16.2 应用 496
16.2.1 货箱装船 496
16.2.2 0/1背包问题 503
16.2.3 最大完备子图 506
16.2.4 旅行商问题 508
16.2.5 电路板排列 510
第17章 分枝定界 516
17.1 算法思想 516
17.2 应用 519
17.2.1 货箱装船 519
17.2.2 0/1背包问题 526
17.2.3 最大完备子图 528
17.2.4 旅行商问题 529
17.2.5 电路板排列 532
2010-11-19
数据库课程设计_图书管理系统
目 录
第1章 应用背景与需求说明…………………………………………………5
1.1 背景…………………………………………………………………5
1.2 数据需求……………………………………………………………5
1.3 事务需求……………………………………………………………5
1.4 系统开发平台………………………………………………………6
1.5 网络拓扑结构………………………………………………………6
第2章 解决方案………………………………………………………………7
2.1 E-R模型设计………………………………………………………7
2.1.1 实体列表……………………………………………………7
2.1.2 系统的E-R模型……………………………………………8
2.2 设计数据库…………………………………………………………8
2.2.1 创建数据库…………………………………………………8
2.2.2 创建数据表…………………………………………………8
2.2.3 连接数据库…………………………………………………9
2.3主窗体设计…………………………………………………………10
2.3.1 设计登录界面………………………………………………10
2.3.2 添加数据组件………………………………………………10
2.3.3 生成数据集…………………………………………………11
2.3.4 设计代码……………………………………………………11
2.4读者信息……………………………………………………………12
2.4.1 设计显示界面………………………………………………12
2.4.2 添加数据组件………………………………………………12
2.4.3 功能实现……………………………………………………12
2.5显示报表……………………………………………………………12
2.5.1 添加读者信息报表…………………………………………13
2.5.2 添加借阅情况表……………………………………………13
2.6综合查询的实现……………………………………………………14
2.6.1 添加数据组件………………………………………………14
2.6.2 窗体功能实现………………………………………………14
第3章 系统实现………………………………………………………………15
3.1开发环境……………………………………………………………15
3.2系统流程图…………………………………………………………15
3.3程序调试情况………………………………………………………16
3.4功能显示……………………………………………………………16
3.5结论…………………………………………………………………20
第4章 结束语…………………………………………………………………20
参考文献 ………………………………………………………………………21
附录:源代码清单 ……………………………………………………………21
2009-12-31
基于VC,SQL SERVER学生信息管理系统
学生管理系统使用说明书
配置源程序
配置ODBC
运行本实例需要配置用户DSN,在ODBC数据源管理器中配置用户DSN连接指定的SQL Server数据库。关键操作步骤如下:
(1)单击“开始”按钮,选择“程序”→“管理工具”→“数据源(ODBC)”命令,打开“ODBC数据源管理器”对话框,打开“用户DSN”选项卡。
(2)单击“添加”按钮,打开“创建新数据源”对话框,选择安装数据源的驱动程序,这里选择“SQL Server”。
(3)单击“完成”按钮,打开“创建到SQL Server的新数据源”对话框,在“名称”文本框中设置数据源名称为“mystudentsys”,在“描述”文本框设置数据源描述为“配置SQL Server数据库DSN”,在“服务器”下拉列表框中选择连接的数据库所在服务器为“(local)”。
(4)单击“下一步”按钮,选择“使用用户输入登录ID和密码的SQL Server验证”单选框,在“登录ID”文本框中输入SQL Server用户登录ID,这里为“sa”,在“密码”文本框中输入SQL Server用户登录密码。
(5)单击“下一步”按钮,选择“更改默认的数据库为”复选框,并在其下拉列表框中选择连接的数据库名称,这里选择“tb_student”,单击“下一步”按钮。
(6)单击“完成”按钮,打开“ODBC Microsoft SQL Server安装”对话框,显示新创建的ODBC数据源配置信息。
(7)单击“测试数据源”按钮测试数据库连接是否成功,如果测试成功,单击“确定”按钮,完成数据源配置。
附加SQL Server 2000数据库
(1)将database文件夹中的两个文件拷贝到SQL Server 2000安装路径下的Data文件夹中。
(2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。
(3)将弹出“附加数据库”对话框,在该对话框中单击“ ”按钮,选择所要附加数据库的.mdf文件,单击“确定”按钮,即可完成数据库的附加操作。
使用说明
系统介绍
随着各大院校的扩招,学生数量不断增加,学生管理成为学校管理中的重中之重。传统的学生管理方法,就学生的个人的自然情况出发,对其进行管理,但是,这种方法不但效率低,而且还要耗费大量的人力,已经不能满足各大院校的学生管理要求。
提高学生管理的管理水平,优化资源,尽可能地降低学校的管理成本,成为学生管理的新课题。学生管理系统是从学生管理的现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理中数据信息量大,修改不方便,对一系列数据进行统计与分析花费时间长等问题,帮助学生管理人员有效管理学生信息,成为高校管理中必不可少的管理工具。
本系统主要实现了以下功能:
学生信息录入
学生成绩录入
程序等级设置
学生违规处理
学生成绩排行
学生信息查询
学生成绩查询、打印
操作注意事项
(1)本系统管理员用户名为:tsoft,密码为:111。
(2)实例执行文件位置:\08\学生管理系统\源程序\Debug\mystudentsys.exe
操作流程
运行本系统,请按照以下流程操作:
(1)在“基础信息管理”中的“科室信息管理”、“科目信息管理”、“教师信息管理”、“班级信息管理”、“班级科目设置”及“考试类别设置”中对基础信息进行添加。
(2)在“学生信息管理”中的“学生信息管理”、“学生成绩录入”、“成绩等级设置”、“学生违规处理”中对学生信息进行添加。
(3)通过“查询管理”中的“学生基础信息查询”、“学生成绩报表”、“学生违规查询”中可以对学生信息、成绩及违规记录进行查询。
(4)通过“系统管理”中的“用户管理”可以添加、修改及删除操作用户。
2009-12-29
高质量C/C++编程指南
不适合作为c和c++入门教程和初学者,主要针对那些对编程有所掌握的学习,它作为c和c++的进阶教程,是一本非常好的参考资料,看完本书不仅让你避免编程中漏洞,还可以让你对编程艺术有更深的理解
2009-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人