收藏 分享(赏)

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

上传人:精品资料 文档编号:10930105 上传时间:2020-01-21 格式:DOC 页数:14 大小:109KB
下载 相关 举报
北邮数据结构实验 第二次实验 图.doc_第1页
第1页 / 共14页
北邮数据结构实验 第二次实验 图.doc_第2页
第2页 / 共14页
北邮数据结构实验 第二次实验 图.doc_第3页
第3页 / 共14页
北邮数据结构实验 第二次实验 图.doc_第4页
第4页 / 共14页
北邮数据结构实验 第二次实验 图.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

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

2、 6V1 2 V2 (2)带权值的有向图V063 9 4 V1 2 V22.2 关键算法分析(1)深度优先遍历int visitedMAXSIZE=false;templatevoid MGraph:DFS(int v)coutint mininum(MGraph G,int a)int min=MAX;int k=0;for(int i=0;ivoid MGraph: Prim(MGraph G)for(int i=0;iV“void GenSortEdge(MGraph G,VEdge E)/获取 EdgeListint k=0,i,j;for(i=0;iEj.weight)VEdge t

3、=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;iV“void Floyd(MGraph G)for(int i=0;iG.arcNum) coutusing namespace std;const int MAXSIZE=20;const int MAX_EDGE=20;const int MAX_VALUE=1000;struct VEdgeint fromV;/起始顶点int endV;/终止顶点

4、int weight;/边的权值;VEdge EdgeListMAX_EDGE;template class MGraphpublic:MGraph(T a,int n,int e);MGraph(T a,int n,int e,int h);void DFS(int v);void BFS(int v);void Prim(MGraph G);void Kruskal(VEdge E,int n,int e);int vNum,arcNum;int arcsMAXSIZEMAXSIZE;/用于储存权值的数组int arcMAXSIZEMAXSIZE;private:T vertexMAXSI

5、ZE;template /构造带权值的有向图MGraph:MGraph(T a,int n,int e,int h)int i,j,k,l;vNum=n;arcNum=e;for(k=0;kijl;arcsij=l;arcij=1;template /带权值的无向图MGraph:MGraph(T a,int n,int e)int i,j,k,l;vNum=n;arcNum=e;for(k=0;kijl;arcsij=l;arcsji=arcsij;arcij=1;arcji=arcij;/深度广度遍历int visitedMAXSIZE=false;templatevoid MGraph:D

6、FS(int v)coutvoid MGraph:BFS(int v)int queueMAXSIZE;int f=0,r=0;coutint mininum(MGraph G,int a)int min=MAX;int k=0;for(int i=0;ivoid MGraph: Prim(MGraph G)for(int i=0;iV“void GenSortEdge(MGraph G,VEdge E)/获取 EdgeListint k=0,i,j;for(i=0;iEj.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;iV“void Floyd(MGraph G)for(int i=0;iG.arcNum) coutve;if(v20|v20)cout A(ch,v,e);couts;coutk;couth;MGraph B(ch,v,e,h);Floyd(B);

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报