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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图及其应用实验六.docx

1、图及其应用实验六图及其应用实验六 实验 六 图及其应用 1.目的要求:(1)通过完成本实验,掌握图的两种基本的存储结构(邻接矩阵、邻接表),以及图的基本算法实现(建立、遍历),并能运用图结构分析解决一些实际问题。(2)本实验训练的要点是:图的两种基本存储结构,及各种操作的算法实现(建立、遍历、图的典型应用)。2.实验内容:(1)建立无向图和有向图的邻接矩阵存储,计算顶点的度,并输出图的基本信息。(2)建立有向图的邻接表存储表示,并根据存储计算顶点的出度和入度,然后输出图的基本信息。(3)编写完整的程序实现 AOV网的拓扑排序。(4)编程求 AOE 网的关键路径。(5)编程实现单源点最短路径的

2、Dijkstra算法。三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)(1)建立无向图和有向图的邻接矩阵存储,计算顶点的度,并输出图的基本信息。程序代码:头文件:#include#include#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW-1 typedef int Status;#define INIFINITY 1000#define MAX_VERTEX_NUM 20 typedef enumDG,DN,UDG,UDN GraphKind;typedef ch

3、ar VertexType;typedef struct VertexType vexsMAX_VERTEX_NUM;/顶点向量 int arcsMAX_VERTEX_NUMMAX_VERTEX_NUM;/邻接矩阵 int vexnum,arcnum;/顶点数和弧的数目 GraphKind kind;/图的种类 MGraph;int LovateVex(MGraph G,VertexType v);Status CreateUDN(MGraph&G);Status CreateDN(MGraph&G);Status CreateUDG(MGraph&G);Status CreateDG(MGr

4、aph&G);Status CreateGraph(MGraph&G);void PrintGraph(MGraph G);void GraphDegree(MGraph G);主函数:#include 1.h int main()MGraph G;CreateGraph(G);/创建图 PrintGraph(G);/输出图 GraphDegree(G);/计算图中顶点的度,并输出 printf(“n”);return 0;功能函数:int LovateVex(MGraph G,VertexType v)for(int i=0;G.vexsi!=v;i+);return i;Status Cr

5、eateUDN(MGraph&G)int i,j,k;VertexType v1,v2;int w;printf(输入图的顶点数和边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);printf(输入图的顶点信息:n);for(i=0;iG.vexnum;i+)scanf(“%c”,&G.vexsi);for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsij=INIFINITY;printf(输入边的信息 v1,v2,wn);for(k=0;kG.arcnum;k+)scanf(“%c%c%c”,&v1,&v2,&w);i

6、=LovateVex(G,v1);j=LovateVex(G,v2);G.arcsij=w;G.arcsji=G.arcsij;/for k return OK;Status CreateDN(MGraph&G)int i,j,k;VertexType v1,v2;int w;printf(输入图的顶点数和边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);printf(输入图的顶点信息:n);for(i=0;iG.vexnum;i+)scanf(“%c”,&G.vexsi);for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.a

7、rcsij=INIFINITY;printf(输入边的信息 v1,v2,wn);for(k=0;kG.arcnum;k+)scanf(“%c%c%c”,&v1,&v2,&w);i=LovateVex(G,v1);j=LovateVex(G,v2);G.arcsij=w;/for k return OK;Status CreateUDG(MGraph&G)int i,j,k;VertexType v1,v2;int w;printf(输入图的顶点数和边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);printf(输入图的顶点信息:n);for(i=0;iG.vexn

8、um;i+)scanf(“%c”,&G.vexsi);for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsij=0;printf(输入边的信息 v1,v2n);for(k=0;kG.arcnum;k+)scanf(“%c%c”,&v1,&v2);i=LovateVex(G,v1);j=LovateVex(G,v2);G.arcsij=1;G.arcsji=G.arcsij;/for k return OK;Status CreateDG(MGraph&G)int i,j,k;VertexType v1,v2;int w;printf(输入图的顶点数和

9、边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);printf(输入图的顶点信息:n);for(i=0;iG.vexsi;for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsij=0;printf(输入边的信息 v1,v2n);for(k=0;kG.arcnum;k+)scanf(“%c%c”,&v1,&v2);i=LovateVex(G,v1);j=LovateVex(G,v2);G.arcsij=1;/for k return OK;Status CreateGraph(MGraph&G)int kind;pritn

10、f(输入图的类型:0-DG,1-DN,2-UDG,3-UDN:n);scanf(“%d”,&kind);G.kind=(GraphKind)kind;switch(G.kind)case DG:return CreateDG(G);case DN:return CreateDN(G);case UDG:return CreateUDG(G);case UDN:return CreateUDN(G);default :return ERROR;void PrintGraph(MGraph G)int i,j;printf(图的顶点数和边数:%d%dn,G.vexnum,G.arcnum);pri

11、ntf(图的顶点信息:n);for(i=0;iG.vexnum;i+)printf(“%c”,G.vexsi);printf(图的邻接矩阵:n);for(i=0;iG.vexnum;i+)printf(“n”);for(j=0;jG.vexnum;j+)if(G.arcsij=INIFINITY)printf();else printf(“%c”,G.arcsij);/for i printf(“n”);void GraphDegree(MGraph G)int indegreeMAX_VERTEX_NUM=0,outdegreeMAX_VERTEX_NUM=0;int i;switch(G.

12、kind)case DN:case DG:FindIndegree(G,indegree);for(i=0;iG.vexnum;i+)printf(“%c的出度为%dn”,G.vexsi,outdegreei);FindOutdegree(G,outdegree);for(i=0;iG.vexnum;i+)printf(“%c的出度为%dn”,G.vexsi,outdegreei);break;case UDN:case UDG:FindOutdegree(G,outdegree);for(i=0;iG.vexnum;i+)printf(“%c的度为%dn”,G.vexsi,outdegree

13、i);break;printf(“n”);运行结果:(2)建立有向图的邻接表存储表示,并根据存储计算顶点的出度和入度,然后输出图的基本信息。程序代码部分:头文件:/1.h#include#include#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW-1 typedef int Status;#define INIFINITY 1000#define MAX_VERTEX_NUM 20 typedef enumDG,DN,UDG,UDN GraphKind;typedef char VertexTy

14、pe;typedef int InfoType;typedef struct ArcNode int adjvex;InfoType weight;struct ArcNode*nextarc;ArcNode;typedef struct Vnode VertexType data;ArcNode*firstarc;VNode,AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices;int vexnum,arcnum;GraphKind kind;ALGraph;int LovateVex(ALGraph G,VertexType v)Sta

15、tus CreateUDN(ALGraph&G)Status CreateGraph(ALGraph&G)void PrintGraph(ALGraph G)主函数:#include 1.h int main()ALGraph G;CreateGraph(G);/建立图 PrintGraph(G);/输出图 return 0;功能函数:int LovateVex(ALGraph G,VertexType v)for(int i=0;G.verticesi.data!=v;i+);return i;Status CreateUDN(ALGraph&G)int i,j,k;VertexType v

16、1,v2;InfoType w;ArcNode*p,*q;printf(输入图的顶点数和边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);pritnf(输入图的顶点信息:n);for(i=0;iG.vexnum;i+)scanf(“%d”,&G.verticesi.data);G.verticesi.firstarc=NULL;printf(输入边的信息 v1,v2,weightn);for(k=0;kadjvex=j;p-weight=w;p-nextarc=G.verticesi.firstarc;G.verticesi.firstarc=p;q=(ArcNo

17、de*)malloc(sizeof(ArcNode);q-adjvex=i;q-nextarc=G.verticesj.firstarc;G.verticesj.firstarc=q;return OK;Status CreateGraph(ALGraph&G)int kind;printf(输入图的类型:0-DG,1-DN,2-UDG,3-UDN:n);scanf(“%d”,&kind);G.kind=(GraphKind)kind;switch(G.kind)/case DG:return CreateDG(G);case DN:return CreateDN(G);/case UDG:r

18、eturn CreateUDG(G);case UDN:return CreateUDN(G);default :return ERROR;void PrintGraph(ALGraph G)int i,j;ArcNode*p;printf(输入图的顶点数和边数:n);scanf(“%d%d”,&G.vexnum,&G.arcnum);pritnf(输入图的顶点信息:n);for(i=0;iG.vexnum;i+)scanf(“%d”,&G.verticesi.data);printf(图的邻接表:n);for(i=0;iadjvex;printf(“%d”,G.verticesj.data);p=p-nextarc;/while printf(“n”);/for printf(“n”);运行结果:四.实验结果的分析与评价(该部分如不够填写,请另加附页)1.图的无向和有向,边数和点数决定了存储图的方式。注:实验成绩等级分为(90100分)优,(8089分)良,(70-79 分)中,(6069 分)及格,(59 分)不及格。

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

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