数据结构课程设计图的存储与遍历.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计图的存储与遍历

中南大学 题 目学生姓名 指导教师 学 院 专业班级 完成时间 课程设计目的 1.1掌握图的邻接表存贮结构。 1.2掌握队列的基本运算实现。 1.3掌握图的邻接表的算法实现。 1.4掌握图的广度优先搜索周游算法实现。 1.5掌握图的深度优先搜索周游算法实现 第二章 设计内容和要求 对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度、深度优先搜索周游。 第三章 运行环境 Turber c/c++集成实验与学习环境 第四章 课程设计分析 我的是先通过顶点边构造出图,用邻接表存储,然后用FS或BFS进行遍历 图4.1 设计过程的结构图 通过自己对图的存储与遍历的算法了解和实践,进一步加深了图的邻接表存储,其特点有: 1.存储表示,不惟一,各边表结点的链接次序取决于建立邻接表的算法和边的输入次序;空间复杂度S(n,e)?,S(n,e)=O(n+e)。稀疏图用邻接表表示比用邻接矩阵表示节省存储空间; 2.求顶点的度,无向图:顶点vi的度则是第i个边表中的结点个数; 3.判定?(Vi,Vj)或Vi,Vj是否是图的一条边?;在邻接表表示中,需扫描第i个边表最坏情况下要耗费O(n)时间?; 4.求边的数目,与e的大小无关 只要对每个边表的结点个数计数即可求得e,所耗费的时间,是O(e+n)。当e≤n2时,采用邻接表表示更节省空间。 至于两种遍历,在计算机科学中,经常会遇到图的遍历问题。解决这一问题的经典算法就是所谓深度优先搜索和广度优先搜索,理论证明两套算法的性能是等效的。遍历图的过程实质是通过边或弧找邻接点的过程,因此广度优先搜索遍历图的时间复杂度和深度优先搜索遍历相同,两者不同之处在于对顶点访问的顺序不同而已. 第五章 算法(数据结构)描述 实现图的存储和遍历其思路总体分二个大步骤: 1.1图的存储 采用邻接表对图进行存储,并输出存储结果,为实现邻接表的建立附设连个指向图相关边的指针*p,*q.再用for(k=1;k=e;k++)同时*p,*q移动,给每条边分配内存,再利用函数print(g,n)将建立好的邻接表输出。 1.2图的遍历 图的遍历是指从某个顶点出发,沿着某条搜索路径对图中所有的顶点进行访问且仅访问一次的过程。 1.2.1? 深度优先搜索(DFS) 深度优先搜索类似于树的前序遍历,也是一遇到顶点就进行访问。其特点是尽可能先对纵深方向进行搜索,因此很容易用递归算法实现。如果将遍历过程中走过的边连接起来,即可得到深度优先遍历生成树。 深度优先搜索遍历图的算法:首先访问指定的起始顶点v0,从v0出发,访问v0的一个未被访问过的邻接顶点w1,再从w1出发,访问w1的一个未被访问过的顶点w2,然后从w2出发,访问w2的一个未被访问过的邻接顶点w3。依次类推,直到一个所有邻接顶点都被访问过为止。 1.2.2? 广度优先搜索(BFS) 广度优先搜索类似于树的按层次遍历。首先访问指定的起始点v0,从v0出发,访问v0的所有未被访问过的邻接顶点w1,w2,… wk,然后再依次从w1,w2,… wk出发,访问它们的所有未被访问过的邻接顶点,依次类推,直到图中所有未被访问过的邻接顶点都被访问过为止。 广度优先遍历的特点是尽可能进行横向搜索,即最先访问的顶点其邻接点也被先访问。因此,借助一个队列来保存已被访问过的顶点序列。访问一个顶点vi时(出队),同时将vi相邻的其余结点入队。每个顶点只能入队一次。 图是一种数据结构,加上一组基本操作,就构成了抽象数据类型.图的抽象数据类型定义如下: ADT Graph { 数据对象 V: V是具有相同特性的数据元素的集合,称为顶点集. 数据关系 R: R = {VR} VR = {v,w|v,w属于集合V且P(v,w),v,w表示从v到w的弧,谓词P(v,w)定义了弧v,w的意义或信息 } 基本操作 P: CreateGraph(G,V,VR); 初始条件:V是图的顶点集,VR是图中弧的集合. 操作结果:按V和VR的定义构造图G. DFSTraverse(G,Visit()); 初始条件:图G存在,Visit是顶点的应用函数. 操作结果:对图进行深度优先遍历.在遍历过程中对每个顶点调用函数Visit一次且仅一次.一旦vis

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档