数据结构实验报告图存储.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告图的存储   一、实验目的和要求   掌握图的相关概念,包括图,有向图,无向图,完全图,子图,连通图,度,入度,出度,简单回路和环等定义。   重点掌握图的各种存储结构,包括邻接矩阵和邻接表等。   重点掌握图的基本运算,包括创建图,输出图,深度优先遍历,广度优先遍历等。   掌握图的其他运算,包括最小生成树,最短路径,拓扑排序和关键路径等算法。   灵活运用图这种数据结构解决一些综合应用问题。   二、实验内容和方法   (1)实验内容:   1、编写一个程序,实现不带权图和带权图的邻接矩阵与邻接表的相互转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序实现如下功能:   ①建立如图1所示的有向图G的邻接矩阵,并输出;   ②由有向图G的邻接矩阵产生邻接表,并输出;   ③再由②的邻接表产生对应的邻接矩阵,并输出。   图1   2、编写一个程序,实现图的遍历运算,并在此基础上设计一个程序完成如下功能:   ①输出图1所示的有向图G从顶点0开始的深度优先遍历序列;②输出图1所示的有向图G从顶点0开始的深度优先遍历序列;③输出图1所示的有向图G从顶点0开始的广度优先遍历序列。   3、设计一个程序,采用邻接表存储图,并输出图中从指定顶点1出发的所有深度优先遍历序列。   (2)实验方法:   1、综合运用课本所学的知识,用不同的算法实现在不同的程序功能。   2、结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。   3、根据实验内容,编译程序。   三、实验环境:   Windows7,VisualC++   三、实验过程描述   文件中定义了图的邻接矩阵表示类型和邻接表表示类型,该头文件在以下三个实验中都会使用到。其代码如下:   #ifndefGRAPH_H_INCLUDED   #defineGRAPH_H_INCLUDED   typedefintInfoType;   #defineMAXV100//最大顶点个数   #defineINF32767//INF表示无限大   //以下定义邻接矩阵类型   typedefstruct   {   intno;   InfoTypeinfo;   }VertexType;   typedefstruct   {   intedges[MAXV][MAXV];   intn,e;   VertexTypevexs[MAXV];   }MGraph;   //以下定义邻接表类型   typedefstructANode   {   intadjvex;   structANode*nextarc;   InfoTypeinfo;   }ArcNode;   typedefintVertex;   typedefstructVNode   {   Vertexdata;   实验①   源程序。   一、输入如下所示程序;   //文件名:   #include   #include   #include   externvoidMatToList1(MGraph,ALGraph*);externvoidListToMat1(ALGraph*,MGraph);externvoidDispMat1(MGraph);   externvoidDispAdj1(ALGraph*);   intmain()   {   inti,j;   MGraphg,g1;   ALGraph*G;   intA[MAXV][6]={{0,5,INF,7,INF,INF},{INF,0,4,INF,INF,INF},{8,INF,0,INF,INF,9},{INF,INF,5,0,INF,6},{INF,INF,INF,5,0,INF},{3,INF,INF,INF,1,0}};=6;   =10;   for(i=0;i   #include   #include   //不带权图的算法   voidMatToList(MGraphg,ALGraph*G){   inti,j;   ArcNode*p;   G=(ALGraph*)malloc(sizeof(ALGraph));   for(i=0;i=0;j--)   if([i][j]!=0)   {   p=(ArcNode*)malloc(sizeof(ArcNode));p-adjvex=j;   p-nextarc=G-adjlist[i].firstarc;G-adjlist[i].firstarc=p;}   G-n=;   G-e=;   }   voidListToMat(ALGraph*G,MGraphg){   inti,j;   ArcNode*p;   

文档评论(0)

manyu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档