#include<iostream>
#include<queue>
using namespace std;
const int MAXN = 100;
struct node
{
int v;
struct node *next;
};
typedef struct node *link;
struct Graph
{
int V;
int E;
link *adj;
};
struct Graph *G;
bool visited[MAXN];
void GraphInit(int V, int E)
{
G = (struct Graph *)malloc(sizeof(struct Graph));
G->adj = (link *)malloc(sizeof(link)*(V+1));
G->V = V;
G->E = E;
for(int v=1;v<=V;v++)
{
G->adj[v] = NULL;
}
}
void AddEdge(int u, int v)
{
link e = (link)malloc(sizeof(link));
e->v = v;
e->next = G->adj[u];
G->adj[u] = e;
link p = (link)malloc(sizeof(link));
p->v = u;
p->next = G->adj[v];
G->adj[v] = p;
}
void BFS(int t)
{
queue<int> Q;
Q.push(t);
visited[t] = true;
while( !Q.empty() )
{
int u = Q.front();
Q.pop();
cout << u << " " ;
link p = G->adj[u];/*此处必须是p=G->adj[u].因为添加边时时G->adj[u] = e 所以遍历的时候p=G->adj[u]*/
while(p && visited[p->v]==false)
{
visited[p->v] = true;
Q.push(p->v);
p = p->next;
}
}
}
void GraphBFS()
{
memset( visited, false, sizeof(visited) );
for(int v=1; v<=G->V; v++)
{
if( !visited[v] )
BFS(v);
}
}
int main()
{
int V, E;
cin >> V >> E;
GraphInit(V, E);
int u, v;
for(int i=0; i<E; i++)
{
cin >> u >> v;
AddEdge(u, v);
}
GraphBFS();
return 0;
}相关推荐
树型列表结构宽度调整_css揭秘-结构与布局
自适应内部元素难题我们都知道,如果不给元素指定一个 height,它就会自适应其内容的高度,如果希望 width 也具有类似的行为,应该怎么做呢?解决方案css3 给 width 定义了一些新的关键字,其中最有用的应该就是 min-content 了,这个关键字将解析为这个容器内部最大的不可断行元素的宽度(即最宽的单词、图片或具有固定宽度的盒元素),样式中的固定的 max-width 是为了给旧版...
typedef的用法、struct和typedef struct的区别
原文地址:http://www.blogfshare.com/typedef-and-struct.html 一、typedef的用法 ①:定义一种类型的别名,但不是简单的宏替换。 通常来说,typedef要比#define要好,特别是在有指针的场合: typedef char *pStr1; #define pStr2 char*; pStr1
图的邻接表存储结构
Define typedef struct Anode { int no;//该节点编号 int weight;//该边的信息,如权值 struct Anode *nextarc;//指向下一个节点的指针 }ArcNode;//邻接表边类型 即指向结点的边 typedef struct Vnode { char info;//头结点信息 注意不是结点编号 ArcNode *firs...
南京邮电大学 数据结构(C语言)第2版 mooc版 实验三:图的基本运算及智能交通中的最佳路径选择问题
南京邮电大学 数据结构(C语言)第2版 mooc版 实验3 二叉树的基本操作及哈夫曼编码/译码系统的实现
a上标3下标6算法_数据结构与算法:图形结构
作者:Gofy出处:https://www.cnblogs.com/gaofei200/p/13849762.html图图形结构是一种比树形结构更复杂的非线性结构。在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。因此,图形结构被用于描述各种复杂的数据对象...
刷题模板:单链表+邻接表(数组模拟)+ 图的搜索
刷题模板
图的结构模板及遍历
图的结构模板及遍历
哈工大数据结构实验三:图的邻接表和邻接矩阵DFS与BFS
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #define maxlen 100 typedef struct node* Node; struct node{ int n; Node next; }; typedef struct vnode{ int n; Node firstedge; }*Vnode; typedef.
算法学习记录 8.14 深度优先搜索 宽度优先搜索 树和图的存储
对比 数据结构 空间DFS: stack O(h) 不具最短性BFS: queue O(2^h) 最短路。
1.7图结构
数据元素存在3种关系: 1)先行后续,即一个数据元素有一个直接前驱和一个直接后继,这种组织结构叫线性结构; 2)层次关系,每一层上数据元素可能和下一层中的多个数据元素相关,但只和上一层中的一个数据元素相关,这类组织结构叫树结构; 3)数据元素间是”一对多“或者”多对一“的关系,即任意两个数据元素之间都可以存在关系,这类组织结构叫图结构; 图:由顶点的非空有限集合V(由N>0...
数据结构-C语言代码 day15-图的邻接表
邻接表是图的一种链式存储结构。由一个数组和指针组成,数组储存顶点, 1.头文件及结构体 #include <stdio.h>#include <malloc.h>#define QUEUE_SIZE 10int* visitedPtr;typedef struct Graph{int** connections;int numNodes;} *GraphPtr; 2.初始化图 GraphPtr initGraph(int paraSize, int** paraData)
数据结构 C 邻接表及广度优先遍历
***//***/int i, j;for (i = 0;i ++) {for (j = 0;j ++) {/***/int* nodes;int front;int rear;/***/return;return -1;/***/int column;/***/
优先队列prim算法java_数据结构与算法:图形结构
作者:Gofy出处:https://www.cnblogs.com/gaofei200/p/13849762.html图图形结构是一种比树形结构更复杂的非线性结构。在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。因此,图形结构被用于描述各种复杂的数据对象...
数据结构-18(邻接表及广度优先遍历)
广度优先搜索遍历类似于树的按层次遍历,对于用邻接表做存储结构的图,从某个给定 顶点出发的图的遍历得到的访问结点顶点次序,随建立的邻接表的不同而可能不同。 (2)初始化 (3)判断队列中是否有空间 (4)添加结点 (5)删除结点 (6)构建邻接表 (7)打印 (8)广度优先遍历 (9)测试函数
C语言数据结构_邻接表
邻接表
图的存储与遍历(链式前向星中的DFS与BFS)
图的存储与遍历(链式前向星中的DFS与BFS) 本文转自:传送门 图的存储方式: 1.图的数组(邻接矩阵)存储表示,其中无向图的存储方式为对称矩阵数组,有向图的存储方式为非对称矩阵数组。求最短路径时常常采用数组存储表示各点间的路径。 2.边集方法 边的定义: stuct edge_set{ int u,v; ...
数据结构:无向图邻接表、邻接矩阵创建及其BFS、DFS遍历(C语言)
实验目的: 1.掌握图的定义和构造方法; 2.掌握图的存储及遍历方法及应用。 实验内容: 编程实现: 1、建立一个以邻接表形式存储的图; 2、建立一个以邻接矩阵形式存储的图; 3、以邻接表形式存储的图的深度优先遍历; 4、以邻接表形式存储的图的广度优先遍历; 5、以邻接矩阵形式存储的图的深度优先遍历; 6、以邻接矩阵形式存储的图的广度优先遍历; 学习邻接表时候画的图,如果没有动态视频教程的话,个人觉得看着代码一层一层画图很容易理解 个人比较懒,下面是代码:(注释应该能看懂吧哈哈哈
邻接表及广度优先遍历
。
494




被折叠的 条评论
为什么被折叠?



