- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计(论文)-基于BFS算法的图的遍历设计与实现精选
0摘要本文采用图的邻接矩阵实现了最短路径问题中图的存储;采用队列实现了图的广度优先搜索(BFS),用类的成员函数实现了其各个功能。本C++程序实现了图的最短路径存储及BFS遍历,采用Visual?C++?6.0的控制台工程和MFC工程分别实现了邻接矩阵在桌面上的的显示以及实现对图的广度遍历程序,通过对两种程序的测试结果表明:基于BFS算法的图的遍历算法原理正确,两种程序均能正确求解给定的图的遍历问题。关键词:邻接矩阵;队列;广度优先搜索;控制台工程;MFC图形界面目录1需求分析12算法基本原理12.1邻接矩阵12.2图的遍历——广度优先搜索(BFS)23类设计33.1 类的概述33.2 类的接口设计43.3 类的实现54基于控制台的应用程序94.1 主函数设计94.2 运行结果及分析105基于MFC的应用程序125.1 图形界面设计125.2 程序代码设计145.3 运行结果及分析20结论22参考文献23需求分析(1)图的应用和研究可追溯到18世纪。1736年,被称为图论之父的欧拉解决了哥尼斯堡(Konigsberg)问题,从而奠定了图论这门学科及其应用的基础。(2)图作为一种非线性数据结构,被广泛应用与多个技术领域,诸如系统工程、化学分析、统计力学、遗传学、控制论、人工智能、编译系统等领域,在这些技术领域中把图结构作为解决的数学手段之一。(3)程序测试数据来自姜学军 李筠主编的《数据结构(C语言描述)》中,所选的无向图是 1 算法基本原理2.1 邻接矩阵邻接矩阵是表示节点之间的相邻接关系的矩阵。若G是有n个节点的图,则G的邻接矩阵是如下定义的n X n矩阵。如图所示图G的邻接矩阵如下:210 1 1 11 0 1 01 1 0 11 0 1 043图G G的邻接矩阵2.2图的遍历——广度优先搜索(BFS)例如,有如下无向图作步骤如下:①先输出1(1为起点),将1入队;②1出队,由于1的邻接顶点2和3未被访问过,输出2和3并将2和3入队;③2出队,2的邻接顶点1;④3出队,由于3的邻接顶点1被访问过,而邻接顶点6和7未被访问过,输出6和7并将6和7入队;⑤4出队,由于4的邻接顶点2被访问过,而邻接顶点8未被访问过,输出8并将8入队;⑥最后5,6,7,8出队,由于它们的邻接顶点都被访问过;此时队空,表示搜索已结束。类设计3.1 类的概述本题设计的关键是对图的广度优先搜索算法的设计,由于使用邻接矩阵来存储图,就要将广度优先搜索的算法扩展到矩阵中。首先应设计无向图类Graph然后设计成员变量,用二维数组edge来表示图边的权值,一维数组vertex来表示顶点信息,eNum来表示边的数量,vNum来表示顶点数量,以及在遍历中需要的访问标记数组visited。最后还要设计成员函数实现对邻接矩阵的输出print(),广度优先搜索函数BFS()。考虑到图的初始化比较复杂,需要Graph(int a,int b)输入各个顶点信息,int InitGraph()输入每条边的权值。由于调用BFS()需要用到队列,还需要设计结点类QueueNode和队列类LinkQueue;用data表示结点数据,*next表示结点指针域,使用构造函数QueueNode()对结点进行初始化;用*front和*rear表示队列的前驱和后继,使用void Init_Queue()对队列进行初审,判断队列是否为空:void Init_Queue(),入队类操作:int En_Queue(DataType e),出队列操作:void De_Queue(DataType e)。由于程序比较复杂,Graph类的接口实现放在Graph.h中, QueueNode类和LinkQueue类的接口放在Queue.h中,类的实现和主函数放在main.cpp中。3.2类的接口设计**************************************************************************************//Graph.hGraph类的接口设计using namespace std; const int maxnum=100; //设置邻接矩阵的最大阶数class Graph {private: char vertex[maxnum]; //图的顶点信息 int edge[maxnum][maxnum]; //图的边信息 int vNum; //顶点个数 int eNum; //边的个数 bool visited[maxnum
您可能关注的文档
- 腹透病人健教之营养问题专题课件精选.ppt
- 腰椎爆裂性骨折伴截瘫护理查房精选.ppt
- 脑梗塞护理查房课件精选.ppt
- 腹腔镜胆囊切除术-培训课件精选.ppt
- 腔镜器械的清洁、消毒与保养课件精选.ppt
- 腹透病人肾脏病进展加速护理查房培训课件精选.ppt
- 膀胱全切术后护理_培训课件精选.ppt
- 自动化课程设计报告-位置和转速双闭环控制系统设计精选.docx
- 自动扶梯与人行道自检规程精选.docx
- 脑梗死识别和治疗讲义精选.ppt
- 2024年云阳县公务员考试行测试卷历年真题及答案详解(有一套).docx
- 2024年垫江县公务员考试行测试卷历年真题及答案详解(名师系列).docx
- 2024年巴音郭楞蒙古自治州公务员考试行测试卷历年真题精选答案详解.docx
- 2024年毕节地区公务员考试行测试卷历年真题含答案详解.docx
- 2024年怀化市公务员考试行测真题及一套完整答案详解.docx
- 2023年龙岩市公务员考试行测试卷历年真题及答案详解(名校卷).docx
- 2024年咸宁市公务员考试行测试卷历年真题及完整答案详解.docx
- 2024年云浮市公务员考试行测试卷历年真题带答案详解.docx
- 2024年七台河市公务员考试行测试卷历年真题及答案详解(典优).docx
- 2024年大理州公务员考试行测真题及答案详解(全优).docx
文档评论(0)