图的宽度优先搜索(BFS)以及C++队列知识复习
来源:互联网 发布:宽带多重网络怎么回事 编辑:程序博客网 时间:2024/06/13 22:54
图的宽度优先搜索和二叉树的层次遍历很像,是一种按层次往外扩展的遍历。其实很简单,自然要用到一个队列,因为FIFO的性质简直就是为层次遍历而生的。
用一个队列记录正在访问的节点的邻接节点,把当前节点的邻接节点全部放到队列后面,在队列中删除当前访问节点。这样队列中的节点顺序就是层次遍历的顺序了。
void BFS(Graph g,int v,bool *visited){ ENode *w; int u; Queue q; visited[v]=true; cout<<v; q.push(v);//v进入队列 while(!q.empty()) { u=q.front();//u存放队列头元素 q.pop();//删除队列头元素 for(w=g.A[u];w;w=w->NextArc) { if(!visited[w->AdjVex]) { cout<<w->AdjVex; visited[w->AdjVex]=true; q.push(w->AdjVex); } } }}void Traversal_BFS(Graph g){ bool visited[MaxSize]; int n=g.Vertices; for(int i=0;i<n;i++) { visited[i]=false; } for(int i=0;i<n;i++) { if(!visited[i]) BFS(g,i,visited); }}#include<iostream>#include<queue>using namespace std;int main(){ queue<int> que; que.push(1); cout<<"队列第一个元素"<<que.front()<<endl; cout<<"队列大小"<<que.size()<<endl; que.push(2); cout<<"队列尾部元素"<<que.back()<<endl; cout<<"队列大小"<<que.size()<<endl; que.pop(); cout<<"弹出队顶元素后的第一个元素"<<que.front()<<endl; return 0;}
阅读全文
0 0
- 图的宽度优先搜索(BFS)以及C++队列知识复习
- 宽度优先搜索(BFS)
- BFS(宽度优先搜索)
- 宽度优先搜索(BFS)
- 宽度优先搜索 BFS
- 宽度优先搜索BFS
- 宽度优先搜索bfs
- poj 3278(bfs宽度优先搜索)
- 图论(四)宽度优先搜索BFS
- 图的广度优先搜索BFS(C++)
- 广度(宽度)优先搜索:队列
- BFS宽度优先搜索思想
- 广度/宽度优先搜索(BFS)
- 广度/宽度优先搜索(BFS)
- BFS宽度优先搜索算法
- BFS宽度优先搜索思想
- 广度/宽度优先搜索(BFS)
- BFS宽度优先搜索思想
- Django settings.py installd_apps的坑……卧槽
- 基于stream开发java插件
- ADO.NET 数据访问
- 线程间的通信、同步方式与进程间通信方式
- RAM 大全-DRAM, SRAM, SDRAM的关系与区别
- 图的宽度优先搜索(BFS)以及C++队列知识复习
- 如何开发数字货币钱包安装使用教程使用教程图解
- S10泛型算法
- Mybatis 用注解处理CRUD
- 如何做项目
- c# ArrayList
- 软件工程五种典型的开发模型各自特点
- Qt获取本机的IP地址、用户名等相关信息
- 加密解密,数字签名及证书