数据结构 图的遍历 实验报告.doc

数据结构 图的遍历 实验报告.doc

ID:56773400

大小:47.00 KB

页数:7页

时间:2020-07-08

数据结构 图的遍历 实验报告.doc_第1页
数据结构 图的遍历 实验报告.doc_第2页
数据结构 图的遍历 实验报告.doc_第3页
数据结构 图的遍历 实验报告.doc_第4页
数据结构 图的遍历 实验报告.doc_第5页
资源描述:

《数据结构 图的遍历 实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验项目名称:图的遍历一、实验目的应用所学的知识分析问题、解决问题,学会用建立图并对其进行遍历,提高实际编程能力及程序调试能力。二、实验内容问题描述:建立有向图,并用深度优先搜索和广度优先搜素。输入图中节点的个数和边的个数,能够打印出用邻接表或邻接矩阵表示的图的储存结构。三、实验仪器与设备计算机,Code::Blocks。四、实验原理用邻接表存储一个图,递归方法深度搜索和用队列进行广度搜索,并输出遍历的结果。五、实验程序及结果#defineINFINITY10000/*无穷大*/#defineMAX_V

2、ERTEX_NUM40#defineMAX40#include#include#include#includetypedefstructArCell{intadj;}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedefstruct{charname[20];}infotype;typedefstruct{infotypevexs[MAX_VERTEX_NUM];AdjM

3、atrixarcs;intvexnum,arcnum;}MGraph;intLocateVex(MGraph*G,char*v){intc=-1,i;for(i=0;ivexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;break;}returnc;}MGraph*CreatUDN(MGraph*G)//初始化图,接受用户输入{inti,j,k,w;charv1[20],v2[20];printf("请输入图的顶点数,弧数:");scanf("%d%d

4、",&G->vexnum,&G->arcnum);printf("结点名字:");for(i=0;ivexnum;i++){printf("No.%d:",i+1);scanf("%s",G->vexs[i].name);}for(i=0;ivexnum;i++)for(j=0;jvexnum;j++)G->arcs[i][j].adj=INFINITY;printf("请输入一条边依附的两个顶点和权值:");for(k=0;karcnum;k++){printf

5、("第%d条边:",k+1);printf("起始结点:");scanf("%s",v1);printf("结束结点:");scanf("%s",v2);//printf("边的权值:");//scanf("%d",&w);i=LocateVex(G,v1);j=LocateVex(G,v2);if(i>=0&&j>=0){//G->arcs[i][j].adj=w;G->arcs[j][i]=G->arcs[i][j];}}returnG;}intFirstAdjVex(MGraph*G,intv

6、){inti;if(v<=0&&vvexnum){//v合理for(i=0;ivexnum;i++)if(G->arcs[v][i].adj!=INFINITY)returni;}return-1;}voidVisitFunc(MGraph*G,intv){printf("%s",G->vexs[v].name);}intNextAdjVex(MGraph*G,intv,intw){intk;if(v>=0&&vvexnum&&w>=0&&wvexnum)//v,w合理{

7、for(k=w+1;kvexnum;k++)if(G->arcs[v][k].adj!=INFINITY)returnk;}return-1;}intvisited[MAX];voidDFS(MGraph*G,intv)//从第v个顶点出发递归地深度优先遍历图G{intw;visited[v]=1;VisitFunc(G,v);//访问第v个结点for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))if(!visited[w]){DFS(G,w);pri

8、ntf("%d",G->arcs[v][w]);}}voidDFSTraverse(MGraph*G,char*s)//深度优先遍历{intv,k;for(v=0;vvexnum;v++)visited[v]=0;k=LocateVex(G,s);if(k>=0&&kvexnum){for(v=k;v>=0;v--){if(!visited[v])DFS(G,v);}for(v=k+1;vvexnum;v++)if(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。