数据结构图的操作.docx

上传人:lao****ou 文档编号:435310 上传时间:2023-11-13 格式:DOCX 页数:15 大小:88.85KB
下载 相关 举报
数据结构图的操作.docx_第1页
第1页 / 共15页
数据结构图的操作.docx_第2页
第2页 / 共15页
数据结构图的操作.docx_第3页
第3页 / 共15页
数据结构图的操作.docx_第4页
第4页 / 共15页
数据结构图的操作.docx_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构图的操作.docx》由会员分享,可在线阅读,更多相关《数据结构图的操作.docx(15页珍藏版)》请在第一文库网上搜索。

1、实验7:图的操作算法一、实验目的1 .熟悉各种图的存储结构。2 .掌握图的各种搜索路径的遍历方法。二、实验内容1设计一个有向图和一个无向图,任选一种存储结构,完成有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。算法:#inc1ude#inc1ude#inc1ude#inc1ude#defineMAXV10#defineINF980708usingnamespacestd;typedefintInfoType;邻接矩阵typedefstruct(intno;InfoTypeinfo;JVertexType;顶点类型typedefstruct(intedgesMAXVMAXV

2、;intnze;VertexTypevesMAXV;MatGraph;完整的图邻接矩阵类型邻接表typedefstructANode(intadjve;structANode*nextarc;intweight;ArCNOde;边结点类型typedefstructVnodeInfoTypeinfo;ArcNode*firstarc;VNode;邻接表的头结点类型typedefstruct(VNodeadj1istMAXV;intn,e;AdjGraph;完整的图邻接表类型typedefstruct(InfoTypedataMAXV;intfront,rear;SqQueue;队列初始化队列vo

3、idInitQUeUe(SqQUeUe*&q)(q=(SqQueue*)ma11oc(sizeof(SqQueue);q-front=q-rear=-1;)判断队列是否为空boo1QueueEmptyfSqQueue*q)(return(q-front=q-rear);)进队列boo1eQueue(SqQueue*&q,InfoTypee)(if(q-rear=MAXV)returnfa1se;q-rear+;q-dataq-rear=e;returntrue;)出队列boo1deQueue(SqQueue*&q,InfoType&e)(if(q-front=q-rear)returnfa1s

4、e;q-front=(q-front+1)%MAXV;e=q-dataq-front;returntrue;)创建邻接表voidCreateAdj(AdjGraph*&GJntAMAXVMAXVJntnjnte)(intij;ArcNode*p;G=(AdjGraph*)ma11oc(sizeof(AdjGraph);for(i=0;iadj1isti.firstarc=NU11;for(i=0;i=OJ-)if(Aij!=O&Ai0!=INF)p=(ArcNode*)ma11oc(sizeof(ArcNode);p-adjvex=j;p-nextarc=G-adjIisti.firstarc

5、;G-adj1isti.firstarc=p;)G-n=n;G-e=e;)输出邻接表voidDispAdj(AdjGraph*G)(COUt“邻接表存储:end1;inti;ArcNode*p;for(i=0;in;i+)(p=G-adj1isti.firstarc;printf(%3dzi);printf(%3d-,J);whi1e(p!=NU11)(printf(%3d-,p-adjvex);p=p-nextarc;)coutAend1;)/DFS深度优先遍历intvisitedMAXV=0;voidDFSfAdjGraph*G,intv)(ArcNode*p;visitedv=1;cou

6、tadj1istv.firstarc;whi1e(p!=NU11)(if(visitedp-adjvex=O)DFS(G,p-adjvex);p=p-nextarc;)/BFS广度优先遍历voidBFS(AdjGraph*GJntv)(intWjjArcNode*p;SqQueue*qu;InitQueue(qu);intvisited1MAXV;for(inti=0;in;i+)visited1i=O;printf(%2d,v);visited1v=1;enQueue(qu,v);whi1e(!QueueEmpty(qu)(deQueue(quzw);p=G-adj1istw.firstar

7、c;whi1e(p!=NU11)(if(visited1p-adjvex=O)(printf(%2d,p-adjvex);visited1p-adjvex=1;eQueue(qu,p-adjvex);p=p-nextarc;)coutend1;)销毁邻接表voidDestroyAdj(AdjGraph*&G)(inti;ArcNode*pre,*p;for(i=0;in;i+)(pre=G-adj1isti.firstarc;if(pre!=NU11)(p=pre-nextarc;whi1e(p!=NU11)(free(pre);pre=p;p=p-nextarc;free(pre);)fre

8、e(G);)创建邻接矩阵voidCreatMat(MatGraph*&GJntnjnte)(intij1jj1znum1,num2;G=(MatGraph*)ma11oc(sizeof(MatGraph);邻接矩阵初始化for(i=0;in;i+)(for(j=0;jedgesij=O;)顶点信息COUt请输入顶点编号end1;for(i=0;iG-vexsi.no;边信息for(i=0;ie;i+)(COUt”请输入起始端点编号和终止端点编号*i1j1;for(j=0;jvexsj.no=i1)num1=j;if(G-vexsj.no=j1)num2=j;)G-edgesnum1num2=1

9、;)G-n=n;G-e=e;)输出邻接矩阵voidDispMat(MatGraph*G)(cout”邻接矩阵存储:end1;couttt;for(inti=0;in;i+)coutvexsi.not;coutend1;for(inti=0;in;i+)(couttvexsi.not;for(intj=O;jn;j+)coutedgesijt;coutend1;)intmain()(intnze,v1;MatGraph*G;AdjGraph*p;COUt请输入顶点个数n;COUt请输入边的个数e;CreatMat(G,nze);DispMat(G);CreateAdj(p,G-edges,nze

10、);DispAdj(p);COUtv;DFS(pzv);coutend1;COUtv1;BFS(p,v1);COUt销毁图IE-2-3-1:13运行结果:请输入顶点个数3输入边的个数1输入顶点编号12345请输入起始端点编号和终止端点编号13请输入起始端点编号和终止端点编号14请输入起始端点编号和终止端点编号12请输入起始端点编号和终止端点编号43请输入起始端点编号和终止端点编号2 4请输入起始端点编号和终止端点编号3 5请输入起始端点编号和终止端点编号5 2邻接矩阵存储:2-3-请输入初始点:1请输入初始点:1, -S TJTJ-IJnJTJ LLLLL 13 4 2 It t: - - -

11、 S /(mlIi-J深 1o 1 2 3 4 S接O.1:2:3:4:F4存在问题:无2.求两点之间最短路径。算法设计:求两点之间最短路径。#inc1ude#inc1ude#inc1ude#inc1ude#defineINF32767#defineMAXVIOOusingnamespacestd;typedefcharInfoType;以下定义邻接矩阵类型typedefstructintno;顶点编号InfoTypeinfo;顶点其他信息VertexType;typedefstruct顶点类型intedgesMAXVMAXV;邻接矩阵数组intnze;顶点数,边数VertexTypevexsMAXV;存放顶点信息MatGraph;完整的图邻接矩阵类型voidCreateMat(MatGraph&g,intAMAXVMAXVJntnjnte)仓IJ建图的邻接矩阵inti,j;g.n=n;g.e=e;for(i=0;ig,n;i+)for(j=O;jg.n;j+)g.edgesij=Aij;voidDispMat(MatGraphg)输出邻接矩阵ginti,j;for(i=0;ig,n;i+)for(j=O;jg,n;j+)if(g.edgesij!=INF)printf(%4d,g.edgesi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服