北邮数据结构实验第二次实验图

上传人:微*** 文档编号:113300593 上传时间:2022-06-25 格式:DOCX 页数:8 大小:165.17KB
收藏 版权申诉 举报 下载
北邮数据结构实验第二次实验图_第1页
第1页 / 共8页
北邮数据结构实验第二次实验图_第2页
第2页 / 共8页
北邮数据结构实验第二次实验图_第3页
第3页 / 共8页
资源描述:

《北邮数据结构实验第二次实验图》由会员分享,可在线阅读,更多相关《北邮数据结构实验第二次实验图(8页珍藏版)》请在装配图网上搜索。

1、数据结构实验报告1.实验要求(1)实验目的通过选择下面5个题目之一进行实现,掌握如下内容:掌握图基本操作的实现方法了解最小生成树的思想和相关概念了解最短路径的思想和相关概念学习使用图解决实际问题的能力(2)实验内容根据图的抽象数据类型的定义,使用邻接矩阵或邻接表实现一个图。图的基本功能:1、图的建立2、图的销毁3、深度优先遍历图4、广度优先遍历图5、使用普里姆算法生成最小生成树6、使用克鲁斯卡尔算法生成最小生成树7、求指定顶点到其他各顶点的最短路径8、其他:比如连通性判断等自定义操作编写测试main()函数测试图的正确性2.程序分析存储结构图:(1)带权值的无向图V096V1 2V2(2)带权

2、值的有向图V0V1 2V2关键算法分析(1)深度优先遍历int visitedMAXSIZE尸false;templatevoid MGraph:DFS(int v) coutvertexv;visitedv=true;for(int j=0;jvNum;j+)if(arcvj=1&!visitedj) DFS(j);时间复杂度:O(n2)(2)广度优先遍历int queueMAXSIZE;int f=0,r=0;coutvertexv;visitv=true;queue+r=v;while(f!=r)v=queue+f;for(int j=0;jvNum;j+) if(arcvj=1&!vi

3、sitj)coutvertexj;visitj=true;queue+r=j; 时间复杂度:O (n2)(3)普利姆算法int adjvexMAXSIZE;int lowcostMAXSIZE;int MAX=10000;templateint mininum(MGraph G,int a口) int min=MAX;int k=0;for(int i=0;i;i+) if(ai!=0&aimin)romV=i;Ek.endV=j;Ek.weight=ij; k+;for(i=0;i;i+) for(j=i+1;jEj.weight) VEdge t=Ei;Ei=Ej; Ej=t; const

4、 int MAX_VERTEXT=20;template void MGraph: Kruskal(VEdge E,int n,int e) int vsetMAX_VERTEXT;for(int i=0;in;i+) vseti=i;romV,n=Ej.endV;int sn1=vsetm;程序运行结果(1)流程图:初始化带权值的无向图深度优先遍历,广度优先遍历!用普利姆算法求最小生成树I用克鲁斯卡尔算法求最小生成树初始化带权值的有向图用Floyd算法求任意两点间最短路径,并判断连通性删除图(2)本程序所用的图带权值的无向图V0 9V12V2带权值的有向图/ V0V1 2V2(3)程序结果4

5、.总结(1)遇到的问题:私有数据访问权的问题,在编程时应该注意(2)心得体会:通过这次实验,我掌握了图基本操作的实现方法,了解最小生成树的思想 和相关概念,了解最短路径的思想和相关概念等等。(3)改进:可以适当对某些步骤进行合并或省略,使程序更加简洁。源代码:#includeusing namespace std;const int MAXSIZE=20;const int MAX_EDGE=20;const int MAX_VALUE=1000;struct VEdgeint fromV;romV=i;Ek.endV=j;Ek.weight=ij;k+;for(i=0;i;i+)for(j=

6、i+1;jEj.weight)VEdge t=Ei;Ei=Ej;Ej=t;const int MAX_VERTEXT=20;templatevoid MGraph: Kruskal(VEdge E,int n,int e)int vsetMAX_VERTEXT;for(int i=0;in;i+) vseti=i;romV,n=Ej.endV;int sn1=vsetm;/m 所属的集合int sn2=vsetn;/n 所属的集合if(sn1!=sn2)coutVmVnendl;k+;for(int i=0;in;i+)if(vseti=sn2)/ 集合编号为sn2 的全部改为 sn1vset

7、i=sn1;j+;/ 求最短路径/ 连通性判断int distMAXSIZEMAXSIZE;int pathMAXSIZEMAXSIZE;templatevoid Floyd(MGraph G)for(int i=0;i;i+)/ 寻找最短路径for(int j=0;j;j+)(distij=ij;if(distij!=MAX_VALUE) pathij=i;elsepathij=-1;for(int k=0;k;k+)for(int i=0;i;i+)for(int j=0;j;j+) if(distik+distkjdistij)/更新迭代数组 Disk叩(distij=distik+di

8、stkj;pathij=k;cout任意两点间的最短路径(以矩阵表示):endl;int l=1;for(int i=0;i;i+)for(int j=0;j;j+)(coutdistij coutendl;l=1;void main()int v,e;cout请输入顶点数(21)和边数(ve;if(v20|v0|e20)cout输入错误!endl;char ch20=a,b,c,d,e,f,g,h,i,j,k,T,m,n,o,p,q,r,s,t; MGraph A(ch,v,e);couts;cout深度优先遍历:endl;(s);coutendl;coutk;cout广度优先遍历:endl;(k);coutendl;cout普利姆算法求最小生成树:endl;(A);cout克鲁斯卡尔算法求最小生成树:endl;VEdge EdgeListMAX_EDGE;GenSortEdge(A,EdgeList);(EdgeList,v,e);/ 初始化带权值的有向图couth;MGraph B(ch,v,e,h);Floyd(B);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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