第十二周项目3-图遍历算法实现
2015-12-07 17:28
471 查看
Copyright (c) 2015,烟台大学计算机学院 All rights reserved,
文件名称:idea.cpp
作者:王阳
完成日期:2015年12月07日
#include"head.h" extern visited[MAXV]; void BFS(ALGraph *G, int v) { ArcNode *p; int w,i; int queue[MAXV],front=0,rear=0; //定义循环队列 int visited[MAXV]; //定义存放节点的访问标志的数组 for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化 printf("%2d",v); //输出被访问顶点的编号 visited[v]=1; //置已访问标记 rear=(rear+1)%MAXV; queue[rear]=v; //v进队 while (front!=rear) //若队列不空时循环 { front=(front+1)%MAXV; w=queue[front]; //出队并赋给w p=G->adjlist[w].firstarc; //找w的第一个的邻接点 while (p!=NULL) { if (visited[p->adjvex]==0) { printf("%2d",p->adjvex); //访问之 visited[p->adjvex]=1; rear=(rear+1)%MAXV; //该顶点进队 queue[rear]=p->adjvex; } p=p->nextarc; //找下一个邻接顶点 } } printf("\n"); }
#include"head.h" int visited[MAXV]; int main() { ALGraph *G; int A[5][5]= { {0,1,0,1,0}, {1,0,1,0,0}, {0,1,0,1,1}, {1,0,1,0,1}, {0,0,1,1,0} }; ArrayToList(A[0], 5, G); printf(" 由2开始广度遍历:"); BFS(G, 2); printf(" 由0开始广度遍历:"); BFS(G, 0); return 0; }
相关文章推荐
- 第十三周项目链接
- C/C++语言中函数参数传递的三种方式
- 用Visual Basic设计手机短信收发程序
- 基于HTML5的WebGL结合Box2DJS物理应用
- jdk配置环境变量
- Java使用HttpURLConnection上传文件
- grep小技巧
- iOS学习网站+书籍分享
- 第15周—项目5 希尔排序
- init()方法调用及扩展
- <2>Android Camera 架构简析1
- mysql导数据及注意事项
- 对加密数据的高效相似性查询(二)
- java之运算符
- slice()方法 和splice 方法的区别。。。
- Qt学习(3)
- 运维人员需要产品观
- linux那些鲜为人知的小秘密
- Android Studio 断点调试和高级调试
- Git-0.99 README 第一部分 基本对象