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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图的遍历过程演示要点Word文档下载推荐.docx

1、首先由于程序中要有对图的数据信息的创建,定义一个全局变量 Max,表示最多建立的结点数。设计实现主要功能的函数有:创建图的数据信息的函数 CreateMGraph();深度优先遍历递归函数DFSM();广度优先遍历递归 BFSM;深度优先遍历 DFSTraverseM();广度优先遍历 BFSTraverseM();然后在 main()函数中使用一个 switch()语句实现对各个子函数的调用。抽象数据类型队列的定义如下:ADT Queue数据对象:D=ai| ai ElemSet,i=1,2,3,n,n0 数据关系:R1=| ai-1,ai D,i=1,2,3,,n约定其中 a1 端为队列头

2、,an 端为队列尾。基本操作:InitQueue(&Q)操作结果:构造一个空队列 Q。DestroyQueue(&初始条件:队列 Q 已存在。队列 Q 被销毁,不再存在。ClearQueue(&将 Q 清为空队列。QueueEmpty(Q)若 Q 为空队列,则返回 TRUE,否则 FALSE。QueueLength(Q)返回 Q 的元素个数,即队列的长度。GetHead(Q,&e)Q 为非空队列。用 e 返回 Q 的对头元素。EnQueue(&Q,e)插入元素 e 为 Q 的新的队尾元素。DeQueue(&Q,&删除 Q 的对头元素,并用 e 返回其值。QueueTraverse(Q,visi

3、t()Q 已存在且非空。从对头到对尾,依次对 Q 的每个数据元素调用函数 visit()。一旦 visit()失败,则操作失败。详细设计#include/*头文件*/ #include#define Max 10#define FALSE 0#define TRUE 1 #define Error printf #define QueueSize 30 typedef structchar vexsMax;int edgesMaxMax; int n,e;MGraph;/*以邻接矩阵作为图的存储结构*/int visitedMax;/*将 visitedMax定义为全局变量并分配最大空间*/

4、main()MGraph *G,a; char ch1; int i,j,ch2; G=&a;ch1=y;/*设置控制语句标志*/ while(ch1=|ch1=Y)/*菜单栏*/printf(n);tt+图的遍历过程演示+ntt+选择菜单+nV / 25tt+ntt+创建图的数据请按:1+ntt+深度优先搜索请按:2+ntt+广度优先搜索请按:3+ntt+退出搜索请按:0+n printf(ntt 请选择菜单号(0-3): scanf(%d,&ch2);getchar(); switch(ch2)case 1:CreateMGraph(G);/*选 1 创建一个新的图矩阵*/ break;c

5、ase 2:DFSTraverseM(G);/*选 2 进入深度优先搜索*/ break;case 3:BFSTraverseM(G);/*选 3 进入广度优先搜索*/ break;case 0:/*选 0 结束搜索,退出程序*/ ch1=nbreak; default:system(clsntt 输入有误! break;if(ch2=1|ch2=2|ch2=3) printf(nntt/*控制格式*/typedef structint front;int rear; int count;int dataQueueSize;CirQueue;/*定义队列的数据结构*/ void InitQue

6、ue(CirQueue *Q)Q-front=Q-rear=0;count=0;int QueueEmpty(CirQueue *Q)return Q-count=QueueSize;/*返回队列的最大长度*/int QueueFull(CirQueue *Q)count=QueueSize;void EnQueue(CirQueue *Q,int x)if(QueueFull(Q)/*队列满则出错*/Error(Queue overflowelsecount+;/*否则 count+,将 x 进队*/ Q-dataQ-rear=x;rear=(Q-rear+1)%QueueSize;int

7、DeQueue(CirQueue *Q)int temp;/*定义整型的变量*/if(QueueEmpty(Q)/*若为真则出错*/Queue underflowelse/*为假则 count-,将队员出队*/temp=Q-front;/*用 temp 返回其值*/ Q-count-;front=(Q-front+1)%QueueSize; return temp;/*返回出队元素值*/void CreateMGraph(MGraph *G)int i,j,k;/*定义整型变量*/char ch1,ch2;/*定义字符型变量*/n 请 输 入 顶 点 数 , 边 数 ( 格 式 :3,4):%

8、d,%d(G-n),&e);/*输入图的顶点数和边数*/for(i=0;in;i+)n 请 输 入 第 %d 个 顶 点 序 号 ,i+1);%cvexsi);/*输入顶点的序号*/for(j=0;jj+)edgesij=0;/*初始化矩阵*/for(k=0;kvexsi;i+);VI / 25ch2!vexsj;j+);edgesij=1;/*有边则赋值为 1*/void DFSM(MGraph *G,int i)int j;%c ,G-vexsi);visitedi=TRUE;/*标记 visitedi*/*依次优先搜索访问 visitedi的每个邻接点*/ for(j=0;/*若 vis

9、itedi的一个有效邻接点 visitedj未被访问过,则从 visitedj出发进行递归调*/ if(G-edgesij=1&!visitedj)DFSM(G,j);void DFSTraverseM(MGraph *G)int i;n深度优先遍历序列: for(i=0;visitedi=FALSE;/*访问标志数组初始化*/if(!visitedi)/*对尚未访问的顶点调用 DFSM*/DFSM(G,i);void BFSM(MGraph *G,int k)int i,j;CirQueue Q;/*定义一个队列 Q,初始化队列为空*/VII / 25Q);vexsk);/*访问初始点,并将

10、其标记已访问过*/ visitedk=TRUE;Q,k);/*将以访问过的初始点序号 k 入队*/while(!QueueEmpty(&Q)/*队列非空进行循环处理*/i=DeQueue(&/*将队首元素出队*/j+)/*依次搜索 vexsk的每一个可能的邻接点*/if(G-edgesij=1 & visitedj)visitedj=TRUE;/*标记 vexsj已访问过*/Q,j);/*顶点序号 j 入队*/void BFSTraverseM(MGraph *G)n广度优先遍历序列:visitedi)/*对尚未访问的顶点调用 BFSM*/BFSM(G,i);7)各个模块之间的调用关系如下:X / 25用户登录图信息的录进入菜单选择退出程序广度优先修改图的深度优先

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

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