图的广度优先搜索
来源:互联网 发布:汽车轮毂数据大全 编辑:程序博客网 时间:2024/06/08 04:50
#include <iostream>#include<stdio.h>#include<stdlib.h>using namespace std;#include<queue>#define MAXSIZE 100int visited[MAXSIZE];typedef struct node{ int adjvex; struct node *next;}EdgeNode;typedef struct vnode{ int vertex; EdgeNode *firstedge;}VertexNode;void CreateAdjlist(VertexNode g[],int e,int n){ EdgeNode *p; int i,j,k; printf("Input data of vetex(0~n-1);\n"); for(i=0;i<n;i++) { g[i].vertex=i; g[i].firstedge=NULL; } for(k=1;k<=e;k++) { printf("Input edge of(i,j):"); scanf("%d%d",&i,&j); p=(EdgeNode*)malloc(sizeof(EdgeNode)); p->adjvex=j; p->next=g[i].firstedge; g[i].firstedge=p; p=(EdgeNode*)malloc(sizeof(EdgeNode)); p->adjvex=i; p->next=g[j].firstedge; g[j].firstedge=p; }}void BFS(VertexNode g[], queue<int> Q,int i){ int x; EdgeNode *p; printf("%4d",g[i].vertex); visited[i]=1; Q.push(i); while(!Q.empty()) { x=Q.front(); p=g[x].firstedge; Q.pop(); while(p!=NULL) { if(!visited[p->adjvex]) { printf("%4d",g[p->adjvex].vertex); visited[p->adjvex]=1; Q.push(p->adjvex); } p=p->next; } }}void AdlistPrint(VertexNode g[],int n){ int i; EdgeNode *p; for(i=0;i<n;i++) { p=g[i].firstedge; printf("%d:",g[i].vertex); while (p!=NULL) { printf("%d->",p->adjvex); p=p->next; } printf("NULL\n"); }}int main(){ queue<int> Q; VertexNode g[MAXSIZE]; CreateAdjlist(g,6,5);//构造图 AdlistPrint(g,5); BFS(g,Q,0);//广度遍历 return 0;}
学习了图的存储(邻接矩阵、邻接表、十字链表存储),图的遍历(广度、深度),对图总算不再是两眼一摸黑,虽然还不知道图这种结构一般运用在什么地方,相信功夫不会白费,接下来还得继续数据结构的学习之路
阅读全文
0 0
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的 广度优先 搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的广度优先搜索
- 图的深度优先搜索和广度优先搜索模板
- 图的深度优先搜索与广度优先搜索
- 图的广度优先搜索和深度优先搜索
- 图的深度优先搜索与广度优先搜索
- 【C++数据结构与算法】学习随笔一
- spring-aop-@Aspect详细用法
- 改变CSS世界纵横规则的writing-mode属性
- Spring的事务管理
- Cookie、Token、Redis混合使用
- 图的广度优先搜索
- saltstack常用信息
- jsf怎么用js获取id
- 变量的解构赋值
- 1043: 最大值
- leetcode --88. Merge Sorted Array
- Spring 环绕增强
- laravel 编辑验证 图片上传 PHP+mysql
- 算法之 统计集合元素相加为给定值的组合数(高效版)