ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:143KB ,
资源ID:6359111      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6359111.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构 无向图的存储和遍历.doc)为本站会员(hskm5268)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构 无向图的存储和遍历.doc

1、数据结构实验报告实验题目:无向图的存储和遍历实验目的:1、掌握使用 Visual C+6.0 上机调试程序的基本方法;2、掌握图的邻接表存储结构和深度优先遍历的非递归算法。3、提高自己分析问题和解决问题的能力,在实践中理解教材上的理论。实验内容:建立有 10 个顶点的无向图的邻接表存储结构,然后对其进行深度优先遍历,该无向图可以是无向连通图或无向非连通图。一、需求分析1、输入的形式和输入值的范围:根据提示,首先输入图的所有边建立邻接表存储结构,然后输入遍历的起始顶点对图或非连通图的某一连通分量进行遍历。2、输出的形式:输出对该图是连通图或非连通图的判断结果,若是非连通图则输出各连通分量的顶点,

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 C

3、A AF HG HJ IJ IG该图为非连通图,各连通分量中的顶点为 :输入第 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二 概要设计1、邻接表是图的一种顺序存储与链式存储结构结合的存储方法。邻接表表示法类似于树的孩子链表表示法。就是对图 G 中的每个顶点 Vi,将所有邻接于 Vi 的顶点 Vj 链成一个单链表,

4、这个单链表就称为顶点 Vi 的邻接表,再将所有邻接表的表头放到数组中,就构成了图的邻接表,邻接表表示中的两种结点结构如下所示。一种顶点表的结点结构,它由顶点域(vertex)和指向第一条邻接边的指针域(firstedge)构成,另一种是边表(即邻接表)结点,它由邻接点域(adjvex)和指向下一条邻接边的指针域(next)构成。2、无向图的建立输入顶点后,将顶点信息存入顶点表的顶点域。在输入边的信息后,如输入的一条边为 XY,则生成新的边表结点,将其插入到顶点 X 的边表头部,同理,生成新的边表结点,将其插入到顶点 Y 的边表头部。最终完成图的建立。3、图的深度优先遍历设 p 为指向边表结点的

5、指针,首先访问图的指定的起始顶点 V,从 V 出发访问一个与V 邻接的 p 所指的顶点,并将其压入栈中,再从 p 所指定点出发,访问与 p 所指顶点邻接且未被访问的顶点,以后从该顶点出发。重复上述过程,知道找不到存在未访问过的邻接顶点为止。之后执行出栈操作,退回到尚有未访问过的邻接点的顶点,从该顶点出发,重复之前所述的操作,知道所有被访问过的顶点的邻接点都已被访问为止。下图中的深度优先遍历结果为 ABDCEHJIGF,AFCEHGIJDB 等。4、本程序的基本操作和模块:确定顶点所对应的下标的函数:locate(ALGraph /邻接点域struct node *next; /指向下一个邻接点

6、的指针域EdgeNode;typedef struct vnode /顶点表结点char vertex; /顶点域EdgeNode *firstedge; /边表头指针VertexNode;typedef VertexNode AdjList10; /AdjList 是邻接表类型typedef struct /以邻接表方式存储的图类型AdjList adjlist; /邻接表int e; /图的边数ALGraph;2、顺序栈的类型描述typedef struct /存放访问过的结点的栈EdgeNode *pin10; /存放边表结点的指针int top; /栈顶指针SeqStack;(2)每个

7、模块的分析1、主程序模块main()定义数组 visited10,用于记录遍历过程中结点是否已访问过定义邻接表存储结构的图,定义栈while(1)建立图的邻接表存储结构判断图是否连通如果图为连通图则执行以下操作输入图的遍历的起始顶点进行深度优先遍历 如果图为非连通图则执行以下操作确定非连通图连通分量值 for(j=0;j 输入第 1 个连通分量起始顶点:F第 1 个连通分量的遍历结果为:F A C E B输入第 2 个连通分量起始顶点:I第 2 个连通分量的遍历结果为:I G H J输入第 3 个连通分量起始顶点:D第 3 个连通分量的遍历结果为:D是否继续?(是,输入 1;否,输入 0):0

8、谢谢使用!Press any key to continue由上测试结果分析得,该程序功能满足题目要求。3、调试过程中遇到的问题及解决方法本次实验的错误的主要发生在输入边的信息上,对于直接输入字符型的边的信息,出现过很多错误,在参考了 C 程序设计的教材后,对字符串的输入的部分进行了复习,最后修改正确。另外,因为程序修改后,对边或顶点的输入都为字符的形式,忽略了吸收回车,在运行过程中出现了错误,因为以前也犯过这样的错误,所以很快意识到并改正。还有在函数中将输入的顶点转化成字符,以及求非连通图的连通分量时,出现了相应的返回值与实际值相差 1 的情况,这个问题在认真地分析程序后修改正确。4、运行界面五、实验总结本次实验提前作了预习,初次编写的程序由于照搬教材上的程序使运行界面显得很不人性化,在实验课上经过老师的指点后认识到了这个问题,在课下对程序进行了认真的修改,增加了一些函数,使程序更加完善。我在 11 月 17 日完成了本次实验。本次实验中在输入和输出中遇到了一些问题主要是由于 C 语言的部分知识生疏,在参考了 C 语言的教材后,最后修改正确。在本次实验中我对图的邻接表存储结构和深度优先遍历的非递归算法有了更加深刻的认识。提高自己分析问题和解决问题的能力,在实践中理解教材上的理论。我很感谢老师对我的指点。在这次实验中收获了很多。教师评语:实验成绩:指导教师签名:批阅日期:

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报