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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(数据结构08图的基本操作.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构08图的基本操作.docx

1、数据结构08图的基本操作附录 实验报告参考规范数据结构实验报告院系_ 专业 _网络工程_姓名_林桢曦_ 学号_106052010235_ 电话_ _级 _班 _年_月_日1实验题目 图的基本操作2需求分析 编写图基本操作函数,建立图的邻接表,邻接矩阵。邻接表表示的图的递归深度优先遍历,邻接矩阵表示的图的递归深度优先遍历,邻接表表示的图的广度优先遍历,邻接矩阵表示的图的广度优先遍历。并调用上述函数实现相关操作。3概要设计(1) 为了实现上述程序功能,需要定义一个简化的线性表抽象数据类型:ADT Graph 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集 数据关系R:R=VRVR=|v,

2、wV且P(v,w),表示从v到w的弧, 谓词P(v,w)定义了弧的意义或信息 基本操作: Create_Graph(LGraph lg,MGraph mg) 操作前提:lg是一个邻接表表示的图,mg是一个邻接矩阵表示的图 操作结果:建立图的邻接表,邻接矩阵 LDFS(LGraph g,int i) 操作前提:g是一个已初始化的邻接表表示的图 操作结果:对图g进行递归深度优先遍历 MDFS(MGraph g,int i,int vn) 操作前提:g是一个已初始化的邻接矩阵表示的图 操作结果:对图进行递归深度优先遍历 LBFS(LGraph g,int s,int n) 操作前提:g是一个已初始化

3、的邻接表表示的图 操作结果:对图进行递归深度优先遍历 MBFS(MGraph g,int s,int n) 操作前提:g是一个已初始化的邻接矩阵表示的图 操作结果:对图进行递归深度优先遍历(2) 本程序包含6个函数: 主函数main() 建立图的邻接表,邻接矩阵函数Create_Graph() 邻接表表示的图的递归深度优先遍历函数LDFS() 邻接矩阵表示的图的递归深度优先遍历函数MDFS() 邻接表表示的图的广度优先遍历LBFS() 邻接矩阵表示的图的广度优先遍历MBFS()各函数间调用关系如下:主函数调用其他函数(3) 主函数的伪码main()定义变量LGraph lg;MGraph mg

4、;int n,i;令n=Create_Graph(lg,mg);For循环(i=0;in;i+)visitedi=0;printf(n邻接表表示的图的递归深度优先遍历n);调用LDFS(lg,0);getch();For循环(i=0;in;i+)visitedi=0;printf(n邻接矩阵表示的图的递归深度优先遍历n);调用MDFS(mg,0,n);getch();printf(n邻接表表示的图的广度优先遍历n);调用LBFS(lg,0,n);getch();printf(n邻接矩阵表示的图的广度优先遍历n);调用MBFS(mg,0,n); 4详细设计(1) 类型定义typedef stru

5、ct node int vno;struct node *next;EdgeNode;typedef EdgeNode *LGraphMAX;typedef int MGraphMAXMAX;基本操作的伪码算法1.建立图的邻接表,邻接矩阵Create_Graph(LGraph lg,MGraph mg) 定义变量int vn,en,k,i,j;EdgeNode *p;While循环(1)vn=en=0;printf(输入图的顶点数1-10n);调用fflush(stdin);scanf(%d,&vn);如果(vn10)continue;printf(输入图的边数0-%dn,vn*(vn-1)/

6、2);scanf(%d,&en);如果(en=0&en=vn*(vn-1)/2)break;For循环(k=0;kvn;k+)lgk=NULL;For循环(k=0;kvn;k+)For循环(i=0;ivn;i+)mgki=0;For循环(k=0;ken;)i=j=-1;printf(输入一对相连的两条边1-%d的顶点:,vn);scanf(%d%d,&i,&j);如果(i1|jvn|jvn)printf(输入错误,边范围为1-%dn,vn);继续;k+;i-;j-;p=(EdgeNode *)malloc(sizeof(EdgeNode);p-vno=j;p-next=lgi;lgi=p;p=

7、(EdgeNode *)malloc(sizeof(EdgeNode);p-vno=i;p-next=lgj;lgj=p;mgij=mgji=1;返回 vn;2.递归深度优先遍历输出图的邻接表 LDFS(LGraph g,int i)定义变量EdgeNode *t;printf(%4d,i+1);visitedi=1;t=gi;While循环(t!=NULL)如果(visitedt-vno=0)调用LDFS(g,t-vno);t=t-next;3.递归深度优先遍历输出图的邻接矩阵 MDFS(MGraph g,int i,int vn)定义变量int j;printf(%4d,i+1);visi

8、tedi=1;For循环(j=0;jvn;j+)如果(gij=1&visitedj=0)调用MDFS(g,j,vn);4.图的广度优先遍历输出图的邻接表LBFS(LGraph g,int s,int n)定义变量int i,v,w,head,tail;EdgeNode *t;For循环(i=0;in;i+)visitedi=0;head=tail=0;输出(%4d,s+1);visiteds=1;queuetail=s;While循环(headnext)w=t-vno;如果(visitedw=0)输出(%4d,w+1);visitedw=1;queuetail+=w;5.图的广度优先遍历输出图

9、的邻接矩阵MBFS(MGraph g,int s,int n)定义变量int i,j,v,head,tail;For循环(i=0;in;i+)visitedi=0;head=tail=0;输出(%4d,s+1);visiteds=1;queuetail+=s;While循环(headtail)v=queuehead+;For循环(j=0;jn;j+)如果(gvj=1&visitedj=0)输出(%4d,j+1);visitedj=1;queuetail+=j;5调试分析调试中遇到分号在中文输入情况下输入,调试不通过,还有空指针问题。(略)6使用说明按要求输入图的顶点数,在输入图的边数,接着输入

10、相连两条边的顶点,输入范围屏幕有显示,最后屏幕显示四种遍历结果。7测试结果8. 参考文献数据结构9附录源程序文件如下:#include stdio.h#include stdlib.h#include conio.h#define MAX 10typedef struct node int vno;struct node *next;EdgeNode;typedef EdgeNode *LGraphMAX;typedef int MGraphMAXMAX;int visitedMAX;int queueMAX;int Create_Graph(LGraph lg,MGraph mg)int v

11、n,en,k,i,j;EdgeNode *p;while(1)vn=en=0;printf(输入图的顶点数1-10n);fflush(stdin);scanf(%d,&vn);if(vn10)continue;printf(输入图的边数0-%dn,vn*(vn-1)/2);scanf(%d,&en);if(en=0&en=vn*(vn-1)/2)break;for(k=0;kvn;k+)lgk=NULL;for(k=0;kvn;k+)for(i=0;ivn;i+)mgki=0;for(k=0;ken;)i=j=-1;printf(输入一对相连的两条边1-%d的顶点:,vn);scanf(%d%

12、d,&i,&j);if(i1|jvn|jvn)printf(输入错误,边范围为1-%dn,vn);continue;k+;i-;j-;p=(EdgeNode *)malloc(sizeof(EdgeNode);p-vno=j;p-next=lgi;lgi=p;p=(EdgeNode *)malloc(sizeof(EdgeNode);p-vno=i;p-next=lgj;lgj=p;mgij=mgji=1;return vn;void LDFS(LGraph g,int i)EdgeNode *t;printf(%4d,i+1);visitedi=1;t=gi;while(t!=NULL)if

13、(visitedt-vno=0)LDFS(g,t-vno);t=t-next;void MDFS(MGraph g,int i,int vn)int j;printf(%4d,i+1);visitedi=1;for(j=0;jvn;j+)if(gij=1&visitedj=0)MDFS(g,j,vn);void LBFS(LGraph g,int s,int n)int i,v,w,head,tail;EdgeNode *t;for(i=0;in;i+)visitedi=0;head=tail=0;printf(%4d,s+1);visiteds=1;queuetail=s;while(hea

14、dnext)w=t-vno;if(visitedw=0)printf(%4d,w+1);visitedw=1;queuetail+=w;void MBFS(MGraph g,int s,int n)int i,j,v,head,tail;for(i=0;in;i+)visitedi=0;head=tail=0;printf(%4d,s+1);visiteds=1;queuetail+=s;while(headtail)v=queuehead+;for(j=0;jn;j+)if(gvj=1&visitedj=0)printf(%4d,j+1);visitedj=1;queuetail+=j;vo

15、id main()LGraph lg;MGraph mg;int n,i;n=Create_Graph(lg,mg);for(i=0;in;i+)visitedi=0;printf(n邻接表表示的图的递归深度优先遍历n);LDFS(lg,0);getch();for(i=0;in;i+)visitedi=0;printf(n邻接矩阵表示的图的递归深度优先遍历n);MDFS(mg,0,n);getch();printf(n邻接表表示的图的广度优先遍历n);LBFS(lg,0,n);getch();printf(n邻接矩阵表示的图的广度优先遍历n);MBFS(mg,0,n); 注意事项: 每位同学必须完成实验任务,并提交实验报告。杜绝抄袭和拷贝,一经发现该次实验雷同报告均以零分计。 请将实验报告以电子文档提交, “网络工程”专业请发送到fjsdwlgc信箱中,“电子信息”专业请发送到fjsddzxx 信箱中,请附上程序清单.C源程序文件、和实验报告WORD文档两部分,以打包压缩文件形式提交,每次实验为一个文件夹的打包压缩文件,文件夹名统一为*?.rar或*?.zip,其中*为你的学号(全部号码),为你中文姓名,?分别为01,02,0311表示第几次实验。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1