关闭

第十二周项目3-图遍历算法实现

标签: c语言算法计算机
100人阅读 评论(0) 收藏 举报
  1. /*    
  2. Copyright (c)2016,烟台大学计算机与控制工程学院    
  3. All rights reserved.    
  4. 文件名称:第十二周项目3 - 图遍历算法实现.cpp    
  5. 作    者:陈晓琳    
  6. 完成日期:2016年11月17日    
  7. 版 本 号:v1.0    
  8.     
  9. 问题描述: 实现图遍历算法,分别输出如下图结构的深度优先(DFS)遍历序列和广度优先遍历(BFS)序列。     
  10. 输入描述: 若干测试数据。    
  11. 程序    


深度优先遍历(DFS):

源文件代码:

[cpp] view plain copy
  1. #include"head.h"    
  2. extern visited[MAXV];    
  3. void DFS(ALGraph *G, int v)    
  4. {    
  5.     ArcNode *p;    
  6.     int w;    
  7.     visited[v]=1;    
  8.     printf("%d ", v);    
  9.     p=G->adjlist[v].firstarc;    
  10.     while (p!=NULL)    
  11.     {    
  12.         w=p->adjvex;    
  13.         if (visited[w]==0)    
  14.             DFS(G,w);    
  15.         p=p->nextarc;    
  16.     }    
  17. }    
主函数代码:

[cpp] view plain copy
  1. #include"head.h"    
  2. int visited[MAXV];    
  3. int main()    
  4. {    
  5.     int i;    
  6.     ALGraph *G;    
  7.     int A[5][5]=    
  8.     {    
  9.         {0,1,0,1,0},    
  10.         {1,0,1,0,0},    
  11.         {0,1,0,1,1},    
  12.         {1,0,1,0,1},    
  13.         {0,0,1,1,0}    
  14.     };    
  15.     ArrayToList(A[0], 5, G);    
  16.     
  17.     for(i=0; i<MAXV; i++)     
  18.         visited[i]=0;    
  19.     printf(" 由2开始深度遍历:");    
  20.     DFS(G, 2);    
  21.     printf("\n");    
  22.     
  23.     for(i=0; i<MAXV; i++)     
  24.         visited[i]=0;    
  25.     printf(" 由0开始深度遍历:");    
  26.     DFS(G, 0);    
  27.     printf("\n");    
  28.     return 0;    
  29. }    
运行结果:

广度优先遍历(BFS):

源文件代码:

[cpp] view plain copy
  1. #include"head.h"    
  2. extern visited[MAXV];    
  3. void BFS(ALGraph *G, int v)    
  4. {    
  5.     ArcNode *p;    
  6.     int w,i;    
  7.     int queue[MAXV],front=0,rear=0; //定义循环队列    
  8.     int visited[MAXV];     //定义存放节点的访问标志的数组    
  9.     for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化    
  10.     printf("%2d",v);            //输出被访问顶点的编号    
  11.     visited[v]=1;                       //置已访问标记    
  12.     rear=(rear+1)%MAXV;    
  13.     queue[rear]=v;              //v进队    
  14.     while (front!=rear)         //若队列不空时循环    
  15.     {    
  16.         front=(front+1)%MAXV;    
  17.         w=queue[front];             //出队并赋给w    
  18.         p=G->adjlist[w].firstarc;   //找w的第一个的邻接点    
  19.         while (p!=NULL)    
  20.         {    
  21.             if (visited[p->adjvex]==0)    
  22.             {    
  23.                 printf("%2d",p->adjvex); //访问之    
  24.                 visited[p->adjvex]=1;    
  25.                 rear=(rear+1)%MAXV; //该顶点进队    
  26.                 queue[rear]=p->adjvex;    
  27.             }    
  28.             p=p->nextarc;       //找下一个邻接顶点    
  29.         }    
  30.     }    
  31.     printf("\n");    
  32. }    
主函数代码:

[cpp] view plain copy
  1. #include"head.h"    
  2. int visited[MAXV];    
  3.     
  4. int main()    
  5. {    
  6.     ALGraph *G;    
  7.     int A[5][5]=    
  8.     {    
  9.         {0,1,0,1,0},    
  10.         {1,0,1,0,0},    
  11.         {0,1,0,1,1},    
  12.         {1,0,1,0,1},    
  13.         {0,0,1,1,0}    
  14.     };    
  15.     ArrayToList(A[0], 5, G);    
  16.     
  17.     printf(" 由2开始广度遍历:");    
  18.     BFS(G, 2);    
  19.     
  20.     printf(" 由0开始广度遍历:");    
  21.     BFS(G, 0);    
  22.     return 0;    
  23. }    

运行结果:


知识点总结:

DFS和BFS的算法实现。


0
0
查看评论

第十二周--项目3-图遍历算法实现

问题描述及代码: /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第十二周项目3 - 图遍历算法实现.cpp 作 者:刘春彤 完成日期:2016年11月14日 版 本 号:v1.0 问题...
  • lct97
  • lct97
  • 2016-11-14 17:14
  • 101

第十二周项目3-图遍历算法实现

问题: /* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目3.cbp * 作 者:李艺 * 完成日期:2015年11月20日 * 版 本 号:v1.0 * 问题描述:实现图遍历算法,分别输出如下图结...
  • ly201458506115
  • ly201458506115
  • 2015-11-20 08:49
  • 244

第十二周 项目3-图遍历算法实现

/* *Copyright (c)2016,烟台大学计算机学院 *All rights reserved. *文件名称:传写.cpp *作者:李欣 *完成日期:2016年11月24日 *版本号:v1.0 * *问题描述:图遍历算法实现 */   main....
  • zcqdlixin
  • zcqdlixin
  • 2016-11-24 11:05
  • 54

第十二周 项目3-图遍历算法实现

问题描述及代码: /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:项目3.cbp 作 者:张晓彤 完成日期:2016年11月12日 版 本 号:v1.0 问题描述:实现图遍历算法...
  • zxt17853535692
  • zxt17853535692
  • 2016-11-12 21:50
  • 104

第十二周 项目3-图遍历算法实现(1)

/*   *Copyright(c) 2015, 烟台大学计算机学院   *All rights reserved.   *文件名称:图遍历算法实现.cpp   *作    者:周洁  &#...
  • zj2558562310
  • zj2558562310
  • 2015-11-20 08:40
  • 172

第十二周项目3-图遍历算法实现DFS

问题及代码: /* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:ccc.cpp * 作 者:陈梦雪 * 完成日期:2016年11月23日 * 版 本 号:v1.0 * 问题描述: 实现图遍历算...
  • Parislun
  • Parislun
  • 2016-11-23 11:21
  • 147

【第十二周 项目3-图遍历算法实现】

问题及代码: /*    * Copyright (c)2015级,烟台大学 计算机与控制工程学院    * All rights reserved.    * 文件名称:main.cpp...
  • weixin_35998801
  • weixin_35998801
  • 2016-11-17 10:32
  • 58

第十二周项目3-图遍历算法实现(1)

Copyright (c) 2015,烟台大学计算机学院 All rights reserved, 文件名称:idea.cpp作者:王阳完成日期:2015年12月07日#include"head.h" extern visited[MAXV]; void DFS(ALGra...
  • WangYangW
  • WangYangW
  • 2015-12-07 17:25
  • 105

第十二周 项目3-图遍历算法实现(2)

/*   *Copyright(c) 2015, 烟台大学计算机学院   *All rights reserved.   *文件名称:图遍历算法实现(2).cpp   *作    者:周洁&#...
  • zj2558562310
  • zj2558562310
  • 2015-11-20 08:58
  • 215

第十二周 项目3- 图遍历算法实现

问题及代码: /* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目3.cpp * 作 者:车佳颖 * 完成日期:2016年11月17日 ...
  • YY1562cjy
  • YY1562cjy
  • 2016-11-17 10:55
  • 109
    个人资料
    • 访问:18123次
    • 积分:948
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条