图的遍历动态演示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图的遍历动态演示程序
摘要:图是一种复杂的数据结构,具有较高的学习难度。本文讲述了对图的动态演示程序的操作和程序的具体实现过程,使得我们对图的认识更深刻,学习更容易。本软件以Visual Studio 2008作为开发工具,使用邻接表法,用MFC类库实现了对图的可视化创建和图的遍历的动态演示。本文首先讲解了图的遍历动态演示程序的实现框架和设计思路,然后深入讲解了对图中结点和弧的创建、插入和删除,最后着重讲解了图的深度优先遍历和广度优先遍历动态演示的具体实现。
关键词:图; 遍历; 动态演示
The dynamic demonstrative program of traverse graph Abstract:Graph is a complex data structure, which is hard to learn. This thesis tells people the manipulate of the dynamic demonstrate of traverse graph and the specific realization progress of the program. This study give us a deeper understanding of graph, as well as make it easier to learn it. This software realizes the visual creation of graph and the dynamic demonstration of traverse graph by using adjacent table, MFC library and Visual Studio 2008. This thesis firstly explains the realization of the dynamic demonstrate of traverse graph program, the go into the depth of the creation, insertion, deleting of node and arc, at last explains emphatically the actual realization of the Depth-First traverse of graph and the Breadth-First traverse of graph.
Key Words:graph, traverse, dynamic demonstrative
目录
1 引言 (1)
1.1 开发背景 (1)
1.2 开发的目的以及意义 (1)
2 需求分析 (1)
2.1 功能概述 (1)
2.2 功能需求分析 (2)
2.2.1 结点的操作 (2)
2.2.2 弧的操作 (2)
2.2.3 自动生成图的支持 (2)
2.2.4 支持图的销毁 (3)
2.2.5 图的遍历类型 (3)
2.2.6 图的存储结构 (3)
2.2.7 图的遍历代码 (3)
2.2.8 支持图的遍历次序显示和中间辅助队列的进出队情况显示 (3)
2.2.9 支持对遍历速度的设置 (3)
2.2.10 支持暂停和单步 (3)
2.2.11 支持对图的实现代码的查看和运行 (4)
2.2.12 支持对版本和帮助的显示 (4)
3 总体设计 (4)
3.1 程序框架的搭建 (4)
3.1.1 工程项目的创建 (4)
3.1.2 窗口的显示 (4)
3.2 菜单的制作 (6)
3.2.1 创建图 (6)
3.2.2 设置演示速度 (8)
3.2.3 查看源代码的实现 (8)
3.2.4 运行此程序菜单的实现 (9)
3.2.5 打开此文件菜单和帮助菜单的实现 (10)
3.2.5 版本菜单的实现 (10)
3.2.6 退出菜单功能的实现 (10)
3.3图的创建和遍历核心算法的设计与实现 (10)
3.3.1 算法的设计 (10)
3.3.2 核心算法的实现 (16)
4 测试与总结 (28)
谢辞 (29)
参考文献 (30)
1 引言
在纷繁复杂的社会生活中,很多东西都涉及到图的应用问题。最早的图的应用可以追溯到18世纪伟大的数学家欧拉用图解决了著名的哥尼斯堡桥问题。目前,图的应用已经渗透到诸如电子线路分析、寻找最短路径、工程计划分析、人工智能、信息检索等领域。而图的遍历是运用图解决问题必须掌握的知识。
1.1 开发背景
社会生活中很多问题都涉及到“图”的知识,这些问题一般都比较复杂,比较难以解决,要解决这些问题,对“图”的学习是必须的。但目前对于“图”知识的讲解用得最多的是ppt演示,而ppt只能演示已经设计好的“图”,灵活性差,而且这些ppt的制作过程都比较繁琐。因此,设计一个能创建动态图,并且可以演示其遍历的软件非常重要。本次毕业设计我用MFC开发一个图的遍历动态演示程序,希望能让初学者能够更好、更容易地掌握图的知识。
1.2 开发的目的以及意义
为了让初学者更轻松地掌握“图”的知识,有必要进行本次毕业设计。本次的毕业设计是将书本上所学的理论知识与实际相结合,是对所学知识的一种检查,是对动手能力的一种锻炼,同时也是从学习走向真正开发的一个过渡,希望通过本次的毕业设计使自己在程序的开发和设计上有新的认识并能有所提高。
2 需求分析
2.1 功能概述
首先是对图类型的选择,图的类型分为有向图和无向图。其次是图的创建和销毁。图的创建包括对图结点和弧的添加、插入和删除,其中添加和插入可以和成一个功能,都是增加数据信息。这些功能的实现还必须在图形界面上显示出来,且用户能够方便