数据结构课程设计报告《图的遍历》

数据结构课程设计报告《图的遍历》

ID:38700884

大小:72.50 KB

页数:16页

时间:2019-06-17

数据结构课程设计报告《图的遍历》_第1页
数据结构课程设计报告《图的遍历》_第2页
数据结构课程设计报告《图的遍历》_第3页
数据结构课程设计报告《图的遍历》_第4页
数据结构课程设计报告《图的遍历》_第5页
资源描述:

《数据结构课程设计报告《图的遍历》》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构课程设计报告班级:姓名:学号:16目录一,设计任务----------------------------------------3二、设计时间----------------------------------------3三、设计内容----------------------------------------31、需要分析----------------------------------------32、概要设计----------------------------------------33、详细设计-------

2、---------------------------------44、测试与分析--------------------------------------9四、设计总结-----------------------------------------10源程序清单--------------------------------------1116一.设计任务:我选课程设计是自选题目《图的遍历》。要求:设计一个程序,实现图的广度,深度优先遍历。二、设计时间2009年12月28日三、设计内容1、需求分析本题目需要解决的问题是将一幅已知图

3、,对图进行遍历,并完成:(1)输出它的邻接矩阵;(2)根据人工选择进行深度优先搜索(Depth_FirstSearch)和广度优先搜索(Breadth_FirstSearch),将搜索结果放入一队列中;(3)将队列中的搜索结果输出。2、概要设计:(1)抽象数据的类型定义数据对象:V是图具有相同特性的数据元素的集合,称为定顶点集数据关系:RR={VR}VR={/v,w∈v且p(v,w)}基本操作:CreateGraph(&G,V,VR)初始条件:V是图的顶点集,VR是图中弧的集合操作结果:按V和VR的定义构造图G基本操作:DFS

4、Traverse(G,Visit())BFSTraverse(G,Visit())(2)主程序的流程以及各程序模块之间的调用关系:16CreateGraph算法打印邻接矩阵初始化成功选择如何遍历开  始深度优先遍历广度优先遍历结  束           NYDB3、详细设计:(1)定义图typedef struct{ intV[M]; intR[M][M]; intvexnum;}Graph;16(2)创建图voidcreatgraph(Graph*g,intn){ inti,j,r1,r2; g->vexnum=n; /*顶点用i表

5、示*/ for(i=1;i<=n;i++) {   g->V[i]=i; } /*初始化R*/ for(i=1;i<=n;i++)  for(j=1;j<=n;j++)   {     g->R[i][j]=0;   } /*输入R*/ printf("PleaseinputR(0,0END):"); scanf("%d,%d",&r1,&r2); while(r1!=0&&r2!=0)  {   g->R[r1][r2]=1;   g->R[r2][r1]=1;   scanf("%d,%d",&r1,&r2);  }}(3)全局

6、变量:访问标志数组voidprintgraph(Graph*g){inti,j;for(i=1;i<=g->vexnum;i++){for(j=1;j<=g->vexnum;j++)  {    printf("%2d",g->R[i][j]);  }  printf("");  }}(4)访问顶点intvisited[M];16voidvisitvex(Graph*g,intvex){printf("%d",g->V[vex]);}(5)获取第一个未被访问的邻接节点intfirstadjvex(Graph*g,intvex){in

7、tw,i;for(i=1;i<=g->vexnum;i++) {  if(g->R[vex][i]==1&&visited[i]==0)   {     w=i;     break;   }  else   {     w=0;   } } returnw;}/*获取下一个未被访问的邻接节点(深度遍历)*/intnextadjvex(Graph*g,intvex,intw){ intt; t=firstadjvex(g,w); returnt;}(6)深度递归遍历 voiddfs(Graph*g,int vex)  {   int w

8、;   visited[vex]=1;   visitvex(g,vex);   for(w=firstadjvex(g,vex);w>0;w=nextadjvex(g,vex,w))     if(!vi

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

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

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