#include <iostream>
using namespace std; const int verMax=;
const int queMax=; // >=9皆可 struct node//声明图形顶点结构
{
int vertex;
struct node *next;
}; typedef struct node *graph;
struct node head[verMax];//声明顶点结构数组
int que[queMax];
int front=-;
int rear=-;
int visit[verMax];//查找记录//队列的存入 int enque(int v)
{
if(rear>=queMax)//队列已满
return -;
else
{
rear++;//对了尾端指针后移
que[rear]=v;//将值存入队列中
return ;
}
}
//队列的取出
int deque()
{
if(front==rear)//队列已空
return -;
else
{
front++;
return que[front];
}
}
//广度优先搜索法
void BFS(int v)
{
graph point;
enque(v);//存入队列
visit[v]=;//已查找
cout<<"["<<v<<"]==>";
while(front!=rear)
{
v=deque();
point=head[v].next;
while(point!=NULL)//读入邻接列表所有顶点
{
if(visit[point->vertex]==)
{
enque(point->vertex);//存入队列
visit[point->vertex]=;//已查找过的顶点
cout<<"["<<point->vertex<<"]==>";
}
point=point->next;
}
}
}
//建立邻接顶点至邻接列表内
void create_graph(int v1,int v2)
{
graph point,New;
New=(graph)malloc(sizeof(struct node));
if(New!=NULL)
{
New->vertex=v2;//邻近顶点
New->next=NULL;
point=&(head[v1]);
while(point->next!=NULL)
point=point->next;
point->next=New;//串连在列表尾端
}
}
//输出邻接列表内数据
void print_graph(struct node *head)
{
graph point;
point=head->next;//设置point为首节点
while(point!=NULL)
{
cout<<"["<<point->vertex<<"] ";
point=point->next;
}
cout<<endl;
}
//主程序
void main()
{
int node[][]={
{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},
{,},{,},{,},{,},{,},{,},{,},{,},{,},{,}};
int i;
for(i=;i<verMax;i++)
{
head[i].vertex=i;
head[i].next=NULL;
}
for(i=;i<verMax;i++)
visit[i]=; for(i=;i<;i++)
create_graph(node[i][],node[i][]); cout<<"======Graph======"<<endl;
for(i=;i<verMax;i++)
{
cout<<"Vertex["<<i<<"]: ";
print_graph(&head[i]);
}
//广度优先搜索
cout<<"Bradth-First-Search:"<<endl<<"&BEGIN==>";
BFS();
cout<<"END&"<<endl;
}

c++ 广度优先搜索的更多相关文章

  1. 图的广度优先搜索(BFS)

    把以前写过的图的广度优先搜索分享给大家(C语言版) #include<stdio.h> #include<stdlib.h> #define MAX_VERTEX_NUM 20 ...

  2. 广度优先搜索(BFS)

    定义 维基百科:https://en.wikipedia.org/wiki/Breadth-first_search 给定图G=(V,E)和一个可识别的源结点s,广度优先搜索对图G中的边进行系统性的探 ...

  3. 总结A*,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较

    广度优先搜索(BFS) 1.将头结点放入队列Q中 2.while Q!=空 u出队 遍历u的邻接表中的每个节点v 将v插入队列中 当使用无向图的邻接表时,复杂度为O(V^2) 当使用有向图的邻接表时, ...

  4. ACM题目————图的广度优先搜索

    题目描述 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接 点的邻接点.如此进行下去,直到所有的结点都访问为止.在该题中,假定所有的结 ...

  5. SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  6. HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  8. HDU 1242 Rescue (BFS(广度优先搜索))

    Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  9. SDUT2142数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜 ...

  10. 广度优先搜索BFS

    广度优先搜索可以形成一个广度优先搜索树 算法时间为O(V+E),两重循环 输入:图g,起点start(int) 需要的数据结构:队列Q.color数组(存放每个顶点的颜色) 算法过程: 1. 预处理: ...

随机推荐

  1. 01.swoole学习笔记--TCP服务器

    1.安装swoole扩展 2.网络调试助手进行调试 <?php //创建服务器 $host='192.168.10.31'; $port=; //$model='SWOOLE_PROCESS'; ...

  2. 021、MySQL变量的使用,在MySQL中创建存储过程,并添加变量

    #编写一个存储过程 CREATE PROCEDURE ShowDate ( ) BEGIN #变量定义 ); #变量赋值 set m_str1 = '曾经沧海难为水'; #输出当前时间 SELECT ...

  3. How To Configure NFS Client on CentOS 8 / RHEL 8

    https://computingforgeeks.com/configure-nfs-client-on-centos-rhel/

  4. Linux每日练习-批量删除用户,非脚本运行方式 20200225

  5. 032-PHP中关于数组排序的usort()函数

    <?php function re($a, $b) { return ($a < $b) ? 1 : -1; } $x = array(1, 3, 2, 5, 9); usort($x, ...

  6. Angular 学习1

    AngularJS 表达式 AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字.运 ...

  7. 干货分享:反思Essay写作指南

    在众多Essay写作类型中,有一种较为难写的一种类型——反思写作(Reflective Writing),提前熟悉这类写作风格的要求,并且养成反思性写作的习惯,非常有必要!本文小编就给大家说说什么是反 ...

  8. Python MySQL Order By

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  9. Docker 容器shell

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...

  10. mysql 手动把字段设置为null

    在根据经纬度计算距离的时候,发现有的视频点距离我当前位置的距离计算出来的为0,有的距离计算出来是几千公里,仔细看下数据库,发现了问题所在 计算出来几千公里的视屏点的经纬度是空不是null,然后我们手动 ...