欢迎来到天天文库
浏览记录
ID:33414396
大小:138.50 KB
页数:19页
时间:2019-02-25
《数据结构实验 图的基本操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、浙江大学城市学院实验报告课程名称数据结构实验项目名称实验十三/十四图的基本操作学生姓名专业班级学号实验成绩指导老师(签名)日期2014/06/09一.实验目的和要求1、掌握图的主要存储结构。2、学会对几种常见的图的存储结构进行基本操作。二.实验内容1、图的邻接矩阵定义及实现:建立头文件test13_AdjM.h,在该文件中定义图的邻接矩阵存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时建立一个验证操作实现的主函数文件test13.cpp(以下图为例),编译并调试程序,直到正确运行。01246532、图的邻接表的定义及实现:建
2、立头文件test13_AdjL.h,在该文件中定义图的邻接表存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时在主函数文件test13.cpp中调用这些函数进行验证(以下图为例)。0011223343、填写实验报告,实验报告文件取名为report13.doc。4、上传实验报告文件report13.doc到BB。注:下载p256_GraphMatrix.cpp(邻接矩阵)和p258_GraphAdjoin.cpp(邻接表)源程序,读懂程序完成空缺部分代码。三.函数的功能说明及算法思路(包括每个函数的功能说明,及一些重要函数的算法
3、实现思路)四.实验结果与分析(包括运行结果截图、结果分析等)五.心得体会程序比较难写,但是可以通过之前的一些程序来找到一些规律(记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。)【附录----源程序】256://p-255图的存储结构以数组邻接矩阵表示,构造图的算法。#include#include#include#includetypedefcharVertexType;//顶点的名称为字符constintMaxVertexNum=10;//图的最大顶点数c
4、onstintMaxEdgeNum=100;//边数的最大值typedefintWeightType;//权值的类型constWeightTypeMaxValue=32767;//权值的无穷大表示typedefVertexTypeVexlist[MaxVertexNum];//顶点信息,定点名称typedefWeightTypeAdjMatrix[MaxVertexNum][MaxVertexNum];//邻接矩阵typedefenum{DG,DN,AG,AN}GraphKind;//有向图,有向网,无向图,无向网typedefstruct{Vexlistvexs
5、;//顶点数据元素AdjMatrixarcs;//二维数组作邻接矩阵intvexnum,arcnum;//图的当前顶点数和弧数GraphKindkind;//图的种类标志}MGraph;voidCreateGraph(MGraph&G,GraphKindkd)//采用数组邻接矩阵表示法,构造图G{//构造有向网Ginti,j,k,q;charv,w;G.kind=kd;//图的种类printf("输入要构造的图的顶点数和弧数:");scanf("%d,%d",&G.vexnum,&G.arcnum);getchar();//过滤回车printf("依次输入图的
6、顶点名称ABCD...等等:");for(i=0;i7、8、kd==AN)G.arcs[i][j]=MaxValue;//网,初始值为无穷大elseG.arcs[i][j]=0;//图,初始为0if(kd==DN9、10、kd==AN)printf("按照:尾顶点名->头顶点名,权值输入数据:如A->B,23");els11、eprintf("按照:尾顶点名->头顶点名输入数据:A->B");for(k=0;k12、13、kd==AN)scanf("%c->%c,%d",&v,&w,&q);//输入弧的两个定点及该弧的权重elsescanf("%c->%c",&v,&w);getchar();for(i=0;i14、G.vex
7、
8、kd==AN)G.arcs[i][j]=MaxValue;//网,初始值为无穷大elseG.arcs[i][j]=0;//图,初始为0if(kd==DN
9、
10、kd==AN)printf("按照:尾顶点名->头顶点名,权值输入数据:如A->B,23");els
11、eprintf("按照:尾顶点名->头顶点名输入数据:A->B");for(k=0;k12、13、kd==AN)scanf("%c->%c,%d",&v,&w,&q);//输入弧的两个定点及该弧的权重elsescanf("%c->%c",&v,&w);getchar();for(i=0;i14、G.vex
12、
13、kd==AN)scanf("%c->%c,%d",&v,&w,&q);//输入弧的两个定点及该弧的权重elsescanf("%c->%c",&v,&w);getchar();for(i=0;i14、G.vex
14、G.vex
此文档下载收益归作者所有