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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图的设计作业.docx

1、图的设计作业课程设计题目和内容一.图的基本操作的实现1)自选存储结构,输入含n个顶点(用字符表示顶点)和e条边的图G;(2)求每个顶点的度,输出结果;(3)指定任意顶点x为初始顶点,对图G作DFS遍历,输出DFS顶点序列(提示:使用一个栈实现DFS);(4)指定任意顶点x为初始顶点,对图G作BFS遍历,输出BFS顶点序列(提示:使用一个队列实现BFS);(5)输入顶点x,查找图G:若存在含x的顶点,则删除该结点及与之相关连的边,并作DFS遍历(执行操作3);否则输出信息“无x”;(6)判断图G是否是连通图,输出信息“YES”/“NO”;(7)如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生成

2、图G的邻接表,即复制图G,然再执行操作(2);反之亦然。二.程序中所采用的数据结构及存储结构的说明1邻接矩阵:适用于图中边或弧的数目比较多的情况,压缩存储方式结构。邻接矩阵是表示顶点之间相邻关系的矩阵。若图有n个顶点,则邻接矩阵是一个n*n阶的方阵,结构唯一。邻接矩阵A的元素规定为:用邻接矩阵存储网时只需要将矩阵中的1换为相应的权值,将0用一个不可能存在的权值代替即可。当图用邻接矩阵表示后图的某些操作的实现是很方便的,如求某一顶点vi的第一邻接点,只需在第i行找到第1个非零元即可。若求某一顶点vi的度,对于无向图来说,只须统计第i行的非零元个数或第i列的非零元个数(无向图的邻接矩阵是对称的);

3、当图中顶点数确定,插入一条边(vi,vj)只须将矩阵中第i行j列和第j行i列的元素分别改为1或相应的权值;插入一条弧i,vj只须将矩阵中第i行j列的元素改为1或相应的权值即可。2邻接表:一种链式存储结构在邻接表中对图的每个顶点建立一个单链表,第i个单链表中包含第i个顶点的所有邻接点,每一个单链表包含两种结点,头结点和表结点。在图的邻接表中,可以比较方便地查找一个顶点的边(出边)或邻接点(出边邻接点),这只要首先从表头向量中取出对应的表头指针,然后从表头指针出发进行查找即可。邻接表则是以一数组(结构体数组)的元素作为头指针,后面链接和它相邻的结点.3邻接矩阵表示法与邻接表表示法的比较:1)邻接矩

4、阵是唯一的,邻接表不唯一;2)存储稀疏图用邻接表,存储稠密图用邻接矩阵;3)求无向图顶点的度都容易,求有向图顶点的度邻接矩阵较方便;4)判断是否是图中的边,邻接矩阵容易,邻接表最坏时间为O(n);5)求边数e,邻接矩阵耗时为O(n2),与e无关,邻接表的耗时三.算法的设计思想1邻接矩阵存储图的基本思路:图用邻接矩阵表示后图的某些操作的实现是很方便的,如求某一顶点vi的第一邻接点,只需在第i行找到第1个非零元即可。若求某一顶点vi的度,对于无向图来说,只须统计第i行的非零元个数或第i列的非零元个数(无向图的邻接矩阵是对称的);对于有向图来说,第i行的非零元个数为该顶点的出度,第i列的非零元个数为

5、该顶点的入度,两者相加为该顶点的度。当图中顶点数确定,插入一条边(vi,vj)只须将矩阵中第i行j列和第j行i列的元素分别改为1或相应的权值;插入一条弧i,vj只须将矩阵中第i行j列的元素改为1或相应的权值即可。2邻接表存储图的基本思路:若无向图中有n个顶点e条边,则邻接表需要n个头结点和2e个表结点。在边稀疏的情况下,采用邻接表比采用邻接矩阵节省存储空间。在无向图的邻接表中,顶点vi的度恰好为第i个链表中的表结点数。若有向图中有n个顶点e条弧,则邻接表需要n个头结点和e个表结点。在有向图的邻接表中,第i个链表中的结点数为顶点vi的出度。为求顶点vi的入度,需要遍历整个邻接表,在所有链表中其邻

6、接点域的值为i的结点个数为顶点vi的入度。在邻接表中,容易找到任意一顶点的第一邻接点和下一个邻接点,但要判断任意两个顶点vi和vj之间是否有边相连,则须搜索第i或j个链表,因此,不及邻接矩阵方便。3深度优先遍历图的基本思路是:(1)访问图中的指定起始点v0;(2)从v0出发,访问一个与v0邻接的顶点w1后,再从w1出发,访问与w1邻接的且未访问的顶点w2。然后从w2出发,重复上述过程,直到找不到未被访问的顶点为止。(3)回退到尚有未被访问过的邻接点的顶点,从该顶点出发,重复上面的步骤,直到所有被访问过的顶点的邻接点都已访问为止。4xx优先遍历是图的实现思路是:(1)访问图中的指定起始点v0;(

7、2)从v0出发,依次访问v0的未被访问的邻接点w1,w2,w3,wn。然后依次访问w1,w2,w3,wn的未被访问的邻接点。(3)重复上面的第二步,直到所有顶点的邻接点都已访问为止。四.程序清单#include#include#define NULL 0#define maxsize 10typedef struct nodeint data;struct node *next;dnode;typedef structint vex;dnode *first;Node;typedef structNode arrymaxsize;int num;graph;int visitmaxsize;g

8、raph creat()/创建邻接表graph a;dnode *p;int i,x,y,e;printf(输入顶点数和边数(以空格分割):);scanf(%d%d,&a.num,&e);for(i=1;i=a.num;i+)a.arryi.first=NULL;a.arryi.vex=i;for(i=1;idata=y;p-next=a.arryx.first;a.arryx.first=p;p=(dnode*)malloc(sizeof(dnode);p-data=x;p-next=a.arryy.first ;a.arryy.first=p;return a;void copy(grap

9、h b,int vmaxsize)/邻接矩阵与邻接表转换int i,j;dnode *p;for(i=1;i=b.num;i+)for(j=1;j=b.num;j+)vij=0;for(i=1;idata=1;p=p-next ;for(i=1;i=b.num;i+)for(j=1;j=b.num;j+)printf(%d,vij);printf(n);void vexdu(graph a)/求度数dnode *p;int i,count;for(i=1;inext ;printf(%d的度数:%dn,a.arryi.vex,count);void clr()int i;for(i=1;ida

10、ta)dfs(a,p-data );p=p-next;void find1(graph a)int v;clr();printf(输入开始搜索节点:);scanf(%d,&v);dfs(a,v);printf(n);void find2(graph a)int x,i;dnode *p,*q;clr();printf(输入要查找删除的点:scanf(%d,&x);for(i=1;ia.num)printf(没找到!n);return;);elseprintf(找到!n);q=p=a.arryi.first ;a.arryi.vex=0;if(p-data=x)p=p-next;elsewhil

11、e(p)if(p-data=x)q-next=p-next;break;q=p;p=p-next;dfs(a,x);printf(n);void find3(graph a)int i;clr();dfs(a,1);for(i=1;ia.num;i+)if(visiti=0)printf(此图不是连通的。n);return ;printf(此图不是连通的。n);return;void find4(graph a)int vmaxsizemaxsize;copy(a,v);void main()graph h;h=creat();vexdu(h);find1(h);find2(h);find3(h);find4(h);五.运行结果

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

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