图的邻接表结构的宽度搜索

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
#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;
}


数据结构 - -Graph(C++) 基本概念 #define MaxSize 10 //最大顶点数目 #define INF 10 //边的最大权值 存储结构 邻接矩阵 //邻接矩阵 typedef struct{ int no; //定点编号 char info; //顶点其他信息 }VertexType; //定点类型 typedef struct { int edges[MaxSize][MaxSi... 阅读详情

相关推荐

树型列表结构宽度调整_css揭秘-结构与布局

自适应内部元素难题我们都知道,如果不给元素指定一个 height,它就会自适应其内容的高度,如果希望 width 也具有类似的行为,应该怎么做呢?解决方案css3 给 width 定义了一些新的关键字,其中最有用的应该就是 min-content 了,这个关键字将解析为这个容器内部最大的不可断行元素的宽度(即最宽的单词、片或具有固定宽度的盒元素),样式中的固定的 max-width 是为了给旧版...

weixin_39934869的博客 494

typedef的用法、struct和typedef struct的区别

原文地址:http://www.blogfshare.com/typedef-and-struct.html 一、typedef的用法 ①:定义一种类型的别名,但不是简单的宏替换。 通常来说,typedef要比#define要好,特别是在有指针的场合: typedef   char  *pStr1; #define pStr2  char*; pStr1 

designpc的专栏 875

邻接表存储结构

Define typedef struct Anode { int no;//该节点编号 int weight;//该边的信息,如权值 struct Anode *nextarc;//指向下一个节点的指针 }ArcNode;//邻接表边类型 即指向结点的边 typedef struct Vnode { char info;//头结点信息 注意不是结点编号 ArcNode *firs...

1周是1年的2% 327

南京邮电大学 数据结构(C语言)第2版 mooc版 实验三:的基本运算及智能交通中的最佳路径选择问题

南京邮电大学 数据结构(C语言)第2版 mooc版 实验3 二叉树的基本操作及哈夫曼编码/译码系统的实现

2301_79503048的博客 3316

a上标3下标6算法_数据结构与算法:结构

作者:Gofy出处:https://www.cnblogs.com/gaofei200/p/13849762.html结构是一种比树形结构更复杂的非线性结构。在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。因此,结构被用于描述各种复杂的数据对象...

weixin_39647471的博客 4841

刷题模板:单链表+邻接表(数组模拟)+ 搜索

刷题模板

foolishpeng的博客 131

结构模板及遍历

结构模板及遍历

m0_73530538的博客 308

哈工大数据结构实验三:邻接表和邻接矩阵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.

m0_52972617的博客 582

算法学习记录 8.14 深度优先搜索 宽度优先搜索 树和的存储

对比 数据结构 空间DFS: stack O(h) 不具最短性BFS: queue O(2^h) 最短路。

m0_56837115的博客 170

1.7结构

  数据元素存在3种关系: 1)先行后续,即一个数据元素有一个直接前驱和一个直接后继,这种组织结构叫线性结构; 2)层次关系,每一层上数据元素可能和下一层中的多个数据元素相关,但只和上一层中的一个数据元素相关,这类组织结构叫树结构; 3)数据元素间是”一对多“或者”多对一“的关系,即任意两个数据元素之间都可以存在关系,这类组织结构结构:由顶点的非空有限集合V(由N>0...

weixin_30687811的博客 71

数据结构-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)

yydslty的博客 342

数据结构 C 邻接表及广度优先遍历

***//***/int i, j;for (i = 0;i ++) {for (j = 0;j ++) {/***/int* nodes;int front;int rear;/***/return;return -1;/***/int column;/***/

2301_80870156的博客 633

优先队列prim算法java_数据结构与算法:结构

作者:Gofy出处:https://www.cnblogs.com/gaofei200/p/13849762.html结构是一种比树形结构更复杂的非线性结构。在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。因此,结构被用于描述各种复杂的数据对象...

weixin_39555415的博客 306

数据结构-18(邻接表及广度优先遍历)

广度优先搜索遍历类似于树的按层次遍历,对于用邻接表做存储结构,从某个给定 顶点出发的的遍历得到的访问结点顶点次序,随建立的邻接表的不同而可能不同。 (2)初始化 (3)判断队列中是否有空间 (4)添加结点 (5)删除结点 (6)构建邻接表 (7)打印 (8)广度优先遍历 (9)测试函数

Emissary_的博客 248

C语言数据结构_邻接表

邻接表

qq_61726359的博客 653

的存储与遍历(链式前向星中的DFS与BFS)

的存储与遍历(链式前向星中的DFS与BFS) 本文转自:传送门 的存储方式: 1.的数组(邻接矩阵)存储表示,其中无向的存储方式为对称矩阵数组,有向的存储方式为非对称矩阵数组。求最短路径时常常采用数组存储表示各点间的路径。 2.边集方法 边的定义: stuct edge_set{ int u,v; ...

菜鸡的博客 864

数据结构:无向邻接表、邻接矩阵创建及其BFS、DFS遍历(C语言)

实验目的: 1.掌握的定义和构造方法; 2.掌握的存储及遍历方法及应用。 实验内容: 编程实现: 1、建立一个以邻接表形式存储的; 2、建立一个以邻接矩阵形式存储的; 3、以邻接表形式存储的的深度优先遍历; 4、以邻接表形式存储的的广度优先遍历; 5、以邻接矩阵形式存储的的深度优先遍历; 6、以邻接矩阵形式存储的的广度优先遍历; 学习邻接表时候画的,如果没有动态视频教程的话,个人觉得看着代码一层一层画很容易理解 个人比较懒,下面是代码:(注释应该能看懂吧哈哈哈

weixin_55797565的博客 4496

邻接表及广度优先遍历

m0_64017524的博客 913
上一篇: 无题--奇怪的几天
下一篇: 随笔之纪念我的……
GreenHand
博客等级 码龄16年 35粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值