如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
闽江学院电子系实验报告学生姓名:班级:学号:课程:算法与数据结构一、实验题目::图及其应用实验地点:实验楼A210实验目得:.熟练掌握图得两种存储结构(邻接矩阵与邻接表)得表示方法.掌握图得基本运算及应用。加深对图得理解,逐步培养解决实际问题得编程能力实验内容:。采用邻接表或邻接矩阵方式存储图,实现图得深度遍历与广度遍历;、用广度优先搜索方法找出从一顶点到另一顶点边数最少得路径;。图得存储结构得转换。实验环境(使用得软硬件):VisualC++集成开发环境实验步骤及操作1。启动VC++;2、新建工程/Win32ConsoleApplication,选择输入位置:输入工程得名称:tu;按“确定”按钮,选择“AnEmptyProject”,再按“完成”按钮,3。新建文件/C++SourceFile,选中“添加到工程得复选按钮”,输入文件名“1.cpp”,按“确定”按钮,在显示得代码编辑区内输入如下得参考程序:#include〈stdio.h>#include<stdlib。h〉#defineInfinity1000#defineMAX20typedefstruct{intvexnum;//顶点数目intarcnum;//弧数目ﻩcharvexs[MAX];//顶点向量ﻩintarcs[MAX][MAX];//邻接矩阵ﻩcharkind;//图得种类:有向图D,无向图U}MGraph;//图得建立MGraphCreat_MGraph(){MGraphG;inti,j,k,w;charv1,v2;ﻩprintf("请输入图得种类(有向图(D),无向图(U)!\n");scanf("%c",&G。kind);ﻩprintf("请输入顶点数目与弧数目!\n");scanf("%d%d”,&G。vexnum,&G、arcnum);ﻩgetchar();printf("请输入各个顶点(abc)!\n");for(i=0;i〈G。vexnum;i++)ﻩscanf(”%c",&G。vexs[i]);getchar();for(i=0;i<G.vexnum;i++){ﻩfor(j=0;j〈G、vexnum;j++)ﻩG.arcs[i][j]=Infinity;}for(i=0;i〈G。arcnum;i++){printf("请输入第(%d)条弧得起始点与它得权重(ccd)!\n",i+1);ﻩﻩscanf("%c%c%d”,&v1,&v2,&w);ﻩgetchar();j=k=0;while(G、vexs[j]!=v1)j++;//起点ﻩﻩwhile(G。vexs[k]!=v2)k++;//终点ﻩﻩG、arcs[j][k]=w;ﻩif(G、kind=='U')G、arcs[k][j]=w;ﻩ}ﻩreturnG;}intvisited[MAX];//标志数组,显示就是否遍历//递归深度遍历调用函数voidDFS(MGraphG,inti){ﻩintj;visited[i]=1;printf(”%c",G、vexs[i]);ﻩfor(j=0;j<G.vexnum;j++)ﻩif(!visited[j]&&G.arcs[i][j]〈Infinity)ﻩﻩDFS(G,j);}//深度遍历函数voidM_DFSTraverse(MGraphG){ﻩinti;printf(”深度遍历图结果如下:\n");for(i=0;i〈G。vexnum;i++)visited[i]=0;ﻩfor(i=0;i<G。vexnum;i++)ﻩﻩif(!visited[i])ﻩﻩDFS(G,i);printf("\n”);}ﻩﻩ//广度遍历函数voidM_BFSTraverse(MGraphG){inti,j,k,Q[MAX],w;j=k=0;printf("广度遍历图结果如下:\n”);for(i=0;i〈G。vexnum;i++)visited[i]=0;ﻩfor(i=0;i<G、vexnum;i++)ﻩif(!visited[i]){ﻩvisited[i]=1;ﻩprintf(”%c",G。vexs[i]);ﻩﻩQ[k++]=i;ﻩﻩwhile(j!=k){ﻩﻩj++;ﻩfor(w=0;w〈G.vexnum;w++)ﻩﻩif(!visited[w]&&G、arcs[j][w]〈Infinity){ﻩﻩﻩﻩvisited[w]=1;ﻩﻩﻩﻩprintf("%c”,G.vexs[w