第11周项目3-图遍历算法实现(广度优先BFS)
来源:互联网 发布:中国网络发展的历史 编辑:程序博客网 时间:2024/05/22 11:49
- /*
- *Copyright(c)2017,烟台大学计算机学院
- *All right reserved.
- *文件名:sk.cpp btree.h btree.cpp
- *作者:盛凯
- *完成日期:2017年12月14日
- *版本号:v1.0
- *
- *问题描述:图遍历算法实现
- *输入描述:无
- *程序输出:见运行结果
- sk.cpp:
- #include <stdio.h>
#include <malloc.h>
#include "graph.h"
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");
}
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;
} - 程序运行结果如图所示:
- 反思总结:
广度优先占用内存较多但是速度较快。
阅读全文
0 0
- 第11周项目3-图遍历算法实现(广度优先BFS)
- 第十二周项目3--图遍历算法实现--实现广度优先遍历——BFS
- 第十二周项目三 图遍历算法实现——广度优先(BFS)遍历
- 【第十一周项目3】图遍历算法实现(2)广度优先遍历(BFS)
- 第12周项目三广度优先遍历算法实现
- 第十二周 项目3 图遍历算法实现-广度优先遍历
- 第十一周项目3 — 图遍历算法实现 (2) 广度优先遍历
- 广度优先遍历BFS的图算法
- 如何实现广度优先遍历(BFS)
- 如何实现广度优先遍历(BFS) .
- 【算法导论】图的广度优先搜索遍历(BFS)
- BFS广度优先遍历算法
- 第11周项目3-图遍历算法实现(深度优先DFS)
- 第12周项目3-(2)图遍历算法实现、图的广度遍历
- 图的广度优先遍历(BFS)
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
- 图的遍历之BFS广度优先遍历C++实现
- quartz定时任务时间设置
- 数据库拆分案例
- eclipse编译svn下载的程序代码 错误解决方法
- 30分钟内学完 Git
- SQL---计算两个日期之间的时间差
- 第11周项目3-图遍历算法实现(广度优先BFS)
- 欢迎使用CSDN-markdown编辑器
- Java Executor并发框架 RejectedExecutionHandler
- Spring Framework Reference 5.0.2 源码学习记录 使用p-namespace和c-namespace
- 清除浮动
- Source Insight函数调用关系显示设置
- 数据结构实验之栈与队列八:栈的基本操作
- Handler、Loop、MessageQueue
- 用C打印100到200之间的素数