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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图实验报告.docx

1、图实验报告实验7 二叉树学生姓名:蒋瑶瑶实验日期:2011-12-13实验任务:(1)对图进行深度优先遍历或广度优先遍历; (2)采用prime算法或Kruscal算法求解最小生成树.实验源程序:(1)对图进行深度优先遍历或广度优先遍历;#define MAXV 10000 #define MAX_VERTEX_NUM 40 #define MAX 40 #include #include #include /图的邻接表存储typedef struct ArCell int adj; ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; typedef s

2、truct char name20; infotype; typedef struct infotype vexsMAX_VERTEX_NUM; AdjMatrix arcs; int vexnum,arcnum; MGraph; int LocateVex(MGraph *G,char* v) int c=-1,i; for(i=0;ivexnum;i+) if(strcmp(v,G-vexsi.name)=0) c=i;break; return c; /初始化图,接受用户输入 MGraph * CreatUDN(MGraph *G) int i,j,k,w; char v120,v220

3、; printf(请输入图的顶点数和弧数:); scanf(%d,%d,&G-vexnum,&G-arcnum); printf(请依次输入图的顶点n); for(i=0;ivexnum;i+) printf(G.vexs%d : ,i); scanf(%s,G-vexsi.name); getchar(); for(i=0;ivexnum;i+) /初始化邻接矩阵for(j=0;jvexnum;j+) G-arcsij.adj=MAXV; for(k=0;karcnum;k+) /构造邻接矩阵 printf(第%d条边:n,k+1); printf(起始结点:); scanf(%s,v1);

4、 printf(结束结点:); scanf(%s,v2); printf(边的权值:); scanf(%d,&w); i=LocateVex(G,v1); j=LocateVex(G,v2); / 确定v1和v2在G中位置 if(i=0&j=0) G-arcsij.adj=w; G-arcsji=G-arcsij; /置的对称弧 return G; int FirstAdjVex(MGraph *G,int v) int i; if(v=0 &vvexnum) for(i=0;ivexnum;i+) if(G-arcsvi.adj!=MAXV) return i;break; return -

5、1; void VisitFunc(MGraph *G,int v) printf(%s ,G-vexsv.name); int NextAdjVex(MGraph *G,int v,int w) int k; if(v=0 & vvexnum & w=0 & wvexnum) for( k=w+1;kvexnum;k+) if(G-arcsvk.adj!=MAXV) return k;break; return -1; int visitedMAX; void DFS(MGraph *G,int v)/从第v个顶点出发递归地深度优先遍历图G int w; visitedv=1; VisitF

6、unc(G,v);for(w=FirstAdjVex(G,v);w=0;w=NextAdjVex(G,v,w) if(!visitedw) DFS(G,w); /深度优先遍历 void DFSTraverse(MGraph *G,char *s)int v,k; for(v=0;vvexnum;v+) visitedv=0; k=LocateVex(G,s); if(k=0&kvexnum) for(v=k;v=0;v-) if(!visitedv) DFS(G,v); for(v=k+1;vvexnum;v+) if(!visitedv) DFS(G,v); typedef struct Q

7、Node int data; struct QNode *next;QNode,*Queueptr;typedef struct Queueptr front; Queueptr rear;LinkQueue;int InitQueue (LinkQueue &Q) Q.front=Q.rear=(Queueptr)malloc(sizeof(QNode); if(!Q.front)exit(-1); Q.front-next=NULL; return 1;int EnQueue(LinkQueue &Q,int e) Queueptr p; p=(Queueptr)malloc(sizeof

8、(QNode); if(!p)exit(-1); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return 1;int DeQueue (LinkQueue &Q,int &e) Queueptr p; if(Q.front=Q.rear)return(-1); p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); return 1;int QueueEmpty(LinkQueue Q) if(Q.rear=Q.front) r

9、eturn 1; return 0; int VisitedMAX; void main() MGraph *G,b; char v10; G=CreatUDN(&b); printf(请输入开始遍历的起始结点名称:); scanf(%s,v); printf(n深度优先遍历(输出结点序列):n); DFSTraverse(G,v); printf(n);(2)采用prime算法或Kruscal算法求解最小生成树.#define INFINITY 65535typedef int status;# include # include # include # include string.h#

10、define maxlen 10typedef struct char vexsmaxlenmaxlen;/*顶点信息集合,我们用它来存入顶点名字*/ int vexnum,arcnum;/*顶点数和边数*/ int arcsmaxlenmaxlen;/*邻接矩阵*/graph;/定位输入节点的名称int LocateVex(graph G,char umaxlen)int i;for(i=0;iG.vexnum;+i) if(strcmp(u,G.vexsi)=0) return i; return -1; void prim(graph &g)/*最小生成树*/ int i,j,k,min

11、,w,flag; int lowcostmaxlen;/*权值*/ int closetmaxlen;/*最小生成树结点*/ char vamaxlen,vbmaxlen; g.vexnum=6; g.arcnum=10; printf(请输入顶点名称:n); for(j=0;jg.vexnum;j+) scanf(%s,g.vexsj); for(i=0;ig.vexnum;+i) for(j=0;jg.vexnum;+j)/初始化邻接矩阵 g.arcsij=INFINITY; /任意两个顶点间距离为无穷大。 g.arcs01=6; g.arcs10=6; g.arcs02=1; g.arc

12、s20=1; g.arcs03=5; g.arcs30=5; g.arcs12=5; g.arcs21=5; g.arcs14=3; g.arcs41=3; g.arcs23=5; g.arcs32=5; g.arcs24=6; g.arcs42=6; g.arcs25=4; g.arcs52=4; g.arcs35=2; g.arcs53=2; g.arcs45=6; g.arcs54=6; printf(最小生成树的边为:n); for(i=1;ig.vexnum;i+) lowcosti=g.arcs0i; closeti=1; closet0=0; /初始v1是属于集合U的,即设它是最

13、小生成树中节点的一员 j=1; /V是顶点集合 for(i=1;ig.vexnum;i+) min=lowcostj; k=i; for(j=1;jg.vexnum;j+) if(lowcostjmin&closetj!=0) min=lowcostj; k=j; if(i=1) flag=0; else flag=closetk; closetk=0; printf(%s,%s),g.vexsk,g.vexsflag); for(j=1;jg.vexnum;j+) if(g.arcskjlowcostj&closetj!=0) lowcostj=g.arcskj; closetj=k; void main()graph g;prim(g);printf(n);实验结果截图:(1)对图进行深度优先遍历或广度优先遍历;(2)采用prime算法或Kruscal算法求解最小生成树.

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

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