无向图深度遍历邻接矩阵报告_第1页
无向图深度遍历邻接矩阵报告_第2页
无向图深度遍历邻接矩阵报告_第3页
无向图深度遍历邻接矩阵报告_第4页
无向图深度遍历邻接矩阵报告_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无向图的深度遍历实验报告系别计算机系班级学号姓名课程名称数据结构实验日期实验名称图的遍历成绩实验目的:1. 掌握图的结构特征, 以及邻接矩阵和邻接表存储结构的特点和实现。2. 掌握在邻接矩阵或邻接表存储结构下图的深度优先和广度优先遍历算法思想及其程序实现。实验条件:计算机一台,visual c+6.0实验内容:1. 问题描述以邻接矩阵或邻接表为存储结构,利用深度优先搜索算法或广度优先搜索算法遍历一个无向图。给出遍历序列,若该图不连通,给出其连通分量的个数和各连通分量的遍历序列。2. 数据结构类型定义采用邻接矩阵为存储结构:typedef struct arcnodeint adj;arcnode;/邻接矩阵元素的定义typedef structvertexdata vertexmax_vertex_num;/为顶点的集合arcnode arcsmax_vertex_nummax_vertex_num;int vexnum,arcnum;/vexnum为顶点数,arcnum为弧数精品资料adjmatrix; /邻接矩阵的定义3. 模块划分(1) 创建一个无向图以邻接矩阵为存储结构:void createudn(adjmatrix *g)(2) 邻接矩阵的定位: int locatevertex(adjmatrix *g,vertexdata v)(3) 深度优先遍历: void depthfirstsearch(adjmatrix g,int v)(4) 无向图的遍历: void traversegraph(adjmatrix g)(5) 主函数:void main()4. 详细设计5. #include 6. #include 7. #include8. #define ok 19. #define error 010. #define false 011. #define true 112. #define max_vertex_num 10013. int visitedmax_vertex_num;14. typedefint adjtype;15. typedef int vertexdata;16. typedef enumdg,dn,udg,udngraphkind;17. typedefstruct arcnode18. adjtype adj;19. arcnode;20. typedef struct21. vertexdata vertexmax_vertex_num;22. arcnode arcsmax_vertex_nummax_vertex_num;23. int vexnum,arcnum;24. adjmatrix;25. intlocatevertex(adjmatrix *g,vertexdata v)26. int j=error,k;27. for(k=0;kvexnum;k+)28. if(g-vertexk=v)29. j=k;break;30. return (j);31. 32.33. int greateudn(adjmatrix *g)34. int i,j,k;35. vertexdata v1,v2;36. printf(输入图的顶点数和弧数:n);37. scanf(%d,%d,&g-vexnum,&g-arcnum);38. getchar();39. for(i=0;ivexnum;i+)40.41. for(j=0;jvexnum;j+)42. g-arcsij.adj=false;43.44. printf(输入图的顶点:n);45. for(i=0;ivexnum;i+)46. scanf(%d,&g-vertexi);47.48.for(k=0;karcnum;k+)49.50.printf(输入一条弧的两个顶点:); 51.scanf(%d,%d,&v1,&v2);52. getchar();53. i=locatevertex(g,v1);54. j=locatevertex(g,v2);55. g-arcsij.adj=1;56. g-arcsji.adj=1;57.58.return(ok);59. 60. 61.62. void depthfirstsearch(adjmatrix g,int v)63. int j;64. printf(%d,g.vertexv);65. printf(n);66. visitedv=true;67. for(j=0;jg.vexnum;j+)68. if(!visitedj&g.arcsvj.adj=1)69. depthfirstsearch(g,j);70. 71. void traversegraph(adjmatrix g)72. int i;73. for(i=0;ig.vexnum;i+) visitedi=false;74. for(i=0;ig.vexnum;i+)75. if(!visitedi)depthfirstsearch(g,i);76. 77.78. intmain()79. int i,j;80. adjmatrix g;81. greateudn(&g);82. printf( 此无向图的深度遍历为:);83. traversegraph(g);84. printf( 输出邻接矩阵n);85. for(i=0;ig.vexnum;i+)86.95. 测试数据及结果第一组测试:输入数据:顶点:1,2预测结果:输出结点数据:1,2输出邻接矩阵0 11 0实际结果:87.for(j=0;jg.vexnum;j+)88.89.printf(%d ,g.arcsij.adj);90.91.printf(n);92.return 0;93.94.第二组测试:输入数据:顶点:0,1,2,3,4预测结果:输出结点数据:0,1,2,3,4输出邻接矩阵0 1 1 1 01 0 0 1 01 0 0 1 11 1 1 0 10 0 1 1 0实际结果:第三组测试:输入数据:顶点:0,1,2,3,4 5 6预测结果:输出结点数据:0123456输出邻接矩阵0 1 1 1 1 0 01 0 1 0 0 0 01 1 0 0 0 0 01 1 1 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论