数据结构 无向的存储和遍历.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、掌握使用Visual C++6.0上机调试程序的基本方法; 掌握图的邻接表存储结构和深度优先遍历的非递归算法。 提高自己分析问题和解决问题的能力,在实践中理解教材上的理论。 ◎实验内容:建立有10个顶点的无向图的邻接表存储结构,然后对其进行深度优先遍历, 该无向图可以是无向连通图或无向非连通图。 一、需求分析 1、输入的形式和输入值的范围:根据提示,首先输入图的所有边建立邻接表存储结构,然后输入遍历的起始顶点对图或非连通图的某一连通分量进行遍历。 2、输出的形式:输出对该图是连通图或非连通图的判断结果,若是非连通图则输出各连通分量的顶点,之后输出队连通图或非连通图的某一连通分量的遍历结果。 3、程序所能达到的功能:输入图的所有边后,建立图的邻接表存储结构,判断该图是连通图或非连通图,最后对图进行遍历。 4、测试数据: 输入10个顶点(空格分隔):A B C D E F G H I J 输入边的信息(格式为x y):AB AC AF CE BD DC HG GI IJ HJ EH 该图为连通图,请输入遍历的起始顶点:A 遍历结果为:A F C D B E H J I G 是否继续?(是,输入1;否,输入0):1 输入10个顶点(空格分隔):A B C D E F G H I J 输入边的信息(格式为xy):AB AC CE CA AF HG HJ IJ IG 该图为非连通图,各连通分量中的顶点为: A F C E B D G I J H 输入第1个连通分量起始顶点:F 第1个连通分量的遍历结果为:F A C E B 输入第2个连通分量起始顶点:I 第2个连通分量的遍历结果为:I G H J 输入第3个连通分量起始顶点:D 第3个连通分量的遍历结果为:D 是否继续?(是,输入1;否,输入0):0 谢谢使用! Press any key to continue 二 概要设计 邻接表是图的一种顺序存储与链式存储结构结合的存储方法。邻接表表示法类似于树的孩子链表表示法。就是对图G中的每个顶点Vi,将所有邻接于Vi的顶点Vj链成一个单链表,这个单链表就称为顶点Vi的邻接表,再将所有邻接表的表头放到数组中,就构成了图的邻接表,邻接表表示中的两种结点结构如下所示。 一种顶点表的结点结构,它由顶点域(vertex)和指向第一条邻接边的指针域(firstedge)构成,另一种是边表(即邻接表)结点,它由邻接点域(adjvex)和指向下一条邻接边的指针域(next)构成。 无向图的建立 输入顶点后,将顶点信息存入顶点表的顶点域。在输入边的信息后,如输入的一条边为XY,则生成新的边表结点,将其插入到顶点X的边表头部,同理,生成新的边表结点,将其插入到顶点Y的边表头部。最终完成图的建立。 图的深度优先遍历 设p为指向边表结点的指针,首先访问图的指定的起始顶点V,从V出发访问一个与V邻接的p所指的顶点,并将其压入栈中,再从p所指定点出发,访问与p所指顶点邻接且未被访问的顶点,以后从该顶点出发。重复上述过程,知道找不到存在未访问过的邻接顶点为止。之后执行出栈操作,退回到尚有未访问过的邻接点的顶点,从该顶点出发,重复之前所述的操作,知道所有被访问过的顶点的邻接点都已被访问为止。 下图中的深度优先遍历结果为ABDCEHJIGF,AFCEHGIJDB等。 4、本程序的基本操作和模块: 确定顶点所对应的下标的函数:locate(ALGraph G,char ch) 建立图的邻接表存储结构的函数:Create(ALGraph G,SeqStack s) 深度优先遍历的函数:DFS(ALGraph G,int v,SeqStack s,int visited[],int tag) 判断图是否连通的函数:Judge(ALGraph G,int visited[],SeqStack s) 确定非连通图连通分量值的函数:Get(ALGraph G,int visited[],SeqStack s) 主函数:main( ) 函数的调用关系如下图所示: 三 详细设计 元素类型、结点类型 邻接表的表示形式描述 typedef struct node //边表结点 { int adjvex; //邻接点域 struct node *next; //指向下一个邻接点的指针域 }EdgeNode; typedef struct vnode //顶点表结点 { char vertex; //顶点域 EdgeNode *firstedge; //边表头指针 }VertexNode; typed

文档评论(0)

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

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

1亿VIP精品文档

相关文档