数据结构---图的邻接表(创建、打印、深度优先遍历,广度优先遍历C语言)

图论之邻接表 本文介绍了图的邻接表存储方法,使用邻接表存储图要稍微复杂一些,但能够提高空间利用率。本文给出了两种实现方法,一种是链式前向星,另一种是链表实现,链式前向星是利用数组来模拟链表,并且在最后给出了邻接表的一种打印方法。 阅读详情
AI摘要

本文详细介绍了邻接表作为稀疏图存储结构的优势,通过结合顺序存储和链式存储,有效减少存储空间浪费。阐述了邻接表的构建过程,包括顶点表和边表的实现,并提供了创建图、打印边表、深度优先遍历和广度优先遍历的代码示例。

当一个图为稀疏图时,使用邻接矩阵会浪费大量存储空间。

邻接表法结合了顺序存储和链式存储方法,减少了不必要的浪费。

参照博文:https://blog.youkuaiyun.com/qq_39630587/article/details/77409869

邻接表

1)对图G的每个顶点vi建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对于有向图则是以顶点vi为尾的弧)。这个单链表就称为顶点vi的边表(对于有向图则称为出边表)。

2)边表的头指针和顶点的数据信息采用顺序存储(称为顶点表)

3)邻接表中存在两种结点:顶点表结点和边表结点

4)顶点表结点由顶点域(data)和指向第一条邻接边的指针(firstarc)构成

5)边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边的指针域(nextarc)构成

无向图的邻接表表示

头结点和表结点的表示

有向图的邻接表表示

代码如下:

#include <stdio.h>
#include <malloc.h>
#define  MaxVertices 100
typedef int VertexType;  

/***********边表**********/
typedef struct EdgeNode
{
	int adjvex;      //该边所指向结点的位置
	struct EdgeNode *next;   //该边所指向下一个结点的指针
}EdgeNode;

/*********顶点表*********/
typedef struct 
{
	int vertex;     //顶点的信息
	EdgeNode *edgenext;  //指向第一条边的指针
}VertexNode,AdjList[MaxVertices];

/*********图结构********/
typedef struct
{
	AdjList adjlist;
	int nodeNum;  //顶点数
	int edgeNum;  //边数
}ALGraph;

/*********创建图********/
void create_Graph(ALGraph *G)
{
	int i, j;
	int vi, vj;     //相连接的两个顶点序号
	EdgeNode *s;    //边表结点

	printf("请输入顶点数和边数(以空格隔开)");
	scanf_s("%d%d", &G->nodeNum, &G->edgeNum);

	printf("建立顶点表:\n");
	for (i = 0; i < G->nodeNum; i++)
	{
		//getchar();
		printf("请输入第%d个顶点的信息:", i + 1);
		scanf_s("%d", &G->adjlist[i].vertex);
		G->adjlist[i].edgenext = NULL;
	}

	printf("\n打印顶点下标及顶点数据:\n");
	for (i = 0; i < G->nodeNum; i++)
		printf("顶点下标:%d  顶点数据:%d\n ", i,G->adjlist[i]);

	printf("\n建立边表:\n");
	for (i = 0; i < G->edgeNum; i++)
	{
		printf("请输入相连接的两个顶点下标:");
		scanf_s("%d%d",&vi,&vj );
		s = malloc(sizeof(EdgeNode));
		s->adjvex = vj;    //边所指向结点的位置
		s->next = G->adjlist[vi].edgenext;
		G->adjlist[vi].edgenext = s;

		//输入(0 1)在1中也把0编入
		s = malloc(sizeof(EdgeNode));
		s->adjvex = vi;    //边所指向结点的位置
		s->next = G->adjlist[vj].edgenext;
		G->adjlist[vj].edgenext = s;
	}
}

/***********打印边表*********/
void print_Graph(ALGraph *G)
{
	int i, j;
	for (i = 0; i < G->nodeNum; i++)
	{
		printf("%d->",i);
		while (1)
		{
			if (G->adjlist[i].edgenext == NULL)
			{
				printf("^");
				break;
			}
			printf("%d->", G->adjlist[i].edgenext->adjvex);
			G->adjlist[i].edgenext = G->adjlist[i].edgenext->next;
		}
		printf("\n");

	}
}

/**************深度优先遍历**************/
int visit[maxSize];
void DFS(ALGraph G,int v)
{
	EdgeNode *p;
	if (v<0 || v>=G.nodeNum)
		return;
	else
	{
		visit[v] = 1;     //已经访问标记
		printf("%d ", G.adjlist[v].vertex);
		p = G.adjlist[v].edgenext;   //p指向顶点v的第一条边
		while (p != NULL)
		{
			if (visit[p->adjvex] != 1)
				DFS(G,p->adjvex);
			p = p->next;
		}
	}
}
void DFSTravel(ALGraph G)
{
	int v;
	printf("深度优先遍历顺序为:");
	for (v = 0; v < G.nodeNum; v++)
		visit[v] = 0;
	for (v = 0; v < G.nodeNum; v++)                         
	{
		if (!visit[v])
			DFS(G, v);
	}
}

/***************广度优先遍历*************/
int visitBFS[maxSize];
void BFS(ALGraph G,int v)
{
	EdgeNode *p;
	int que[maxSize], front = 0, rear = 0;   //队列定义的简单写法
	int j;
	printf("%d ", G.adjlist[v].vertex);
	visitBFS[v] = 1;
	rear = (rear + 1) % maxSize;     //当前顶点v进入队列
	que[rear] = v;
	while (front!=rear)     //队空时遍历完成
	{
		front = (front + 1) % maxSize;     //顶点出队
		j = que[front];
		p = G.adjlist[j].edgenext;    //p指向出队顶点j的第一条边
		while (p != NULL)
		{
			if (visitBFS[p->adjvex] == 0)
			{
				printf("%d", p->adjvex);
				visitBFS[p->adjvex] = 1;
				rear = (rear + 1) % maxSize;   //该顶点进队
				que[rear] = p->adjvex;
			}
			p = p->next;
		}
	}
}

void BFSTravel(ALGraph G)
{
	int i;
	printf("\n广度优先遍历顺序为:");
	for (i = 0; i < G.nodeNum; i++)
	{
		if (visitBFS[i] == 0)
			BFS(G, i);
	}
}

void main()
{
	ALGraph *G = malloc(sizeof(ALGraph));
	create_Graph(G);
	print_Graph(G);
        DFSTravel(G);
	system("pause");
}

 

运行示例

无向图如下所示:

 

 

【数据结构与算法】图——邻接表与邻接矩阵 邻接表与邻接矩阵 阅读详情

相关推荐

图的邻接表存储法:高效节省空间的图表示方法

在图论中,图是一种常见的数据结构,用于表示各种实际问题中的关系。图的存储方法有多种,其中邻接表存储法是一种常用且高效的表示方法。本文将详细介绍图的邻接表存储法及其实现原理,同时分析其优缺点,并提供实际应用示例,以帮助读者深入了解和应用这一图表示方法。// 定义图的边结构// 与边相连的当前此顶点的索引Edge* next;// 指向下一个邻接边的指针} Edge;// 定义图的顶点结构// 顶点数据// 指向第一个邻接边的指针} Vertex;// 定义图的邻接表结构。

m0_68805093的博客 2391

图的存储结构——邻接表

图的存储结构之邻接表一、邻接表表示法无向图的邻接表有向图的邻接表有向图的逆邻接表二、图的邻接表存储表示 一、邻接表表示法 回忆在线性表时,顺序存储结构就存在预先分配内存可能造成存储空间浪费的问题,于是引出了链式存储结构,同样的,我们可以考虑对边或弧使用链式存储方式来避免空间浪费问题 邻接表是图的一种链式存储结构。 由两部分组成:表头结点表和边表。 邻接表中每个单链表的第一个结点存放有关顶点的信...

ker的博客 5万+

数据结构(C语言)图的基本操作及应用

图的基本操作及应用 用邻接表法创建无向图 以邻接表形式打印无向图 深度遍历无向图并打印 利用队列知识实现广度遍历无向图并打印 取各顶点在表中序号 头文件及数据 头文件定义及所需数据 #include <iostream> using namespace std; #define MAX 100 //最大顶点数 图存储结构 边结点的存储结构 typedef st...

qq_44629708的博客 2482

图:邻接表法创建图

邻接表法创建图

qq_46785243的博客 3717

数据结构(廿六) -- C语言版 -- 图 - 图的遍历 -- 邻接表 - 深度/广度优先遍历/搜索(DFS、BFS)

图是一种非线性的数据结构,图的遍历指的是:从图中的某一顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点都被访问且仅被访问一次。根据遍历路径的不同,通常有两种遍历图的方法:深度优先遍历(Depth First Search)和广度优先遍历(Breadth First Search)。它们对无向图和有向图都适用,图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。

青椒*^_^*凤爪爪的博客 5687

虚拟零售智能客服架构设计:如何用大模型实现多轮对话与精准推荐?

想象一下,当你在一个电商平台购物时,遇到了一个能像你的专属导购一样,不仅能听懂你模糊的需求(“我想买一件适合夏天去海边玩,又能兼顾日常通勤的裙子”),还能记得你之前提到的尺码偏好和预算,甚至在你犹豫时,主动推荐几款符合你风格且正好有促销活动的商品——这不再是科幻电影中的场景,而是基于大语言模型(LLM)技术的新一代虚拟零售智能客服能够提供的体验。这一层是我们架构设计的重点,会在后续章节详细展开。如基于CRF、RNN的模型,或基于规则的状态更新,通常需要大量标注的对话状态数据,且对新领域、新槽位的适应性差。

Java大师兄的博客 1589

数据结构-图的邻接表的定义与实现

邻接表是一种基于链表的存储方式,它将每个顶点的所有邻接点存储在一个链表中。具体来说,邻接表由一个顶点数组和一个边链表组成,顶点数组中的每个元素表示一个顶点,边链表中的每个结点表示一条边。// 邻接表中的边结构体int to;// 目标节点int weight;// 权重// 邻接表中的节点结构体int val;// 节点的值// 邻居节点// 图的邻接表结构体// 节点集合i < n;return 0;

m0_61789994的博客 6028

【ESP32开发】——开发环境搭建(VSCode+PlatformIO)

本章内容主要介绍ESP32的开发环境搭建(基于VSCode+PlatformIO)的流程与相应的注意事项,避免开发ESP32止于环境搭建!在项目的维护过程中,可以更好地管理和更新代码、调试问题,并且能够快速适应和采用新的功能、库或硬件平台。:VSCode 的代码提示和自动补全功能,以及 PlatformIO 的管理工具,都能帮助你编写规范、格式良好且易于阅读的代码。:Arduino 框架是一种简单、易用的嵌入式开发框架,适用于快速原型开发和小型项目。需要选择对应自己开发的开发板型号。

m0_61934621的博客 8415

数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

数据结构——无向图创建邻接表以及深度遍历、广度遍历一、邻接表概念二、创建邻接表 一、邻接表概念 在无向图中,顶点存储在顶点表中,以一个顶点为标记,指向边链表,两者组合在一起,称为 邻接表 对无向图的每个顶点vi建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对于有向图则是以顶点vi为尾的弧)。这个单链表就称为顶点vi的边表(对于有向图则称为出边表) 边表的头指针和顶点的数据信息采用顺序存储(称为顶点表) 邻接表中存在两种结点:顶点表结点和边表结点 顶点表结点由顶点域(data)和指向第一条

正弦定理的博客 1万+

最优控制理论 二+、哈密尔顿函数法的补充

本章基于变分法所推出的哈密尔顿函数法,2、讨论了积分方程约束的转化、控制+状态等式约束的一阶必要条件。3、控制分段连续、状态存在内点约束等情况下的角点条件,给出了协态变量和哈密尔顿函数在内点处不连续的表达式。...

MSysの优快云 9394

Windows下QT5.15.2安装MQTT模块全攻略(附分支选择避坑指南)

本文详细介绍了在Windows环境下为QT5.15.2安装MQTT模块的完整流程,包括环境准备、源码获取、编译配置及项目集成等关键步骤。特别针对分支选择、依赖项处理和常见错误提供了实用解决方案,帮助开发者高效完成MQTT模块的安装与调试,适用于物联网开发场景。

weixin_29224589的博客 466

邻接表—广度优先遍历

深度优先遍历和广度优先遍历的参考知识点:https://blog.youkuaiyun.com/a2217018103/article/details/90678830 下面是使用邻接表做出的广度优先遍历案例: #include<stdlib.h> #include<stdio.h> #include<malloc.h> #include<string.h> //图的邻接表类型定义 typedef char VertexType[4]; typedef char Info

wh1236666的博客 6372

机房电脑的“还原”秘密:如何应对重启即清零的困境

机房电脑重启后自动还原是常见的现象,这主要依靠硬件还原卡或软件还原系统(如冰点还原)实现。这类技术会定期将系统盘恢复初始状态,但通常不保护非系统盘。要高效使用公共电脑,建议:1)将个人文件存储在D/E盘;2)使用绿色便携软件;3)必要时可尝试通过热键临时关闭还原功能;4)养成云端备份习惯。掌握这些技巧既能遵守机房规定,又能保证学习资料安全,培养良好的数字资产管理能力。

一位主要以学校学生信息技术,社会工作生活讲解科普拓展的博主 1453

2023王道C语言督学营(图的邻接表-深度及广度优先遍历)

数据结构

m0_51195865的博客 2560

vscode中使用PlatformIO创建工程加载慢

解决使用VSCODE+PlatformIO中,第一次新建工程一直加载的问题

Reasally的博客 4975

【拼多多笔试题汇总】2024-03-24-拼多多春招笔试题

A 小镇上有个奇特的游戏。游戏开始时,A 先生准备了一排 nnn 个物品。K 小姐和卢小姐则轮流进行操作。首先,K 小姐可以选择移除至多 xxx 个物品。接着,卢小姐也可以选择移除剩余物品中的至多 yyy 个。游戏的目标是,K 小姐想尽量让剩余物品的价值之和最大化,而卢小姐则想将剩余物品的价值之和最小化。假设两人都采取最优策略,请问最后剩余物品的价值之和是多少?第一行包含五个正整数 n,m,k,x,yn, m, k, x, yn,m,k,x,y,分别表示物品的总数、K 小姐最多可移除的物品数、卢小姐最多可移

春秋招笔试突围 1万+

C语言邻接表——广度优先遍历,深度优先遍历

#include<stdio.h> #include<stdlib.h> #define MaxVertices 100 typedef char DataType; //建立边表 typedef struct node { int adjvex; //指向边表结点 struct node *nextarc; //指向下一条边,没有则为NULL int info...

qq_18824403的博客 5849

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 93

【数据结构】之图的遍历(C语言)

文章目录定义深度优先遍历 定义 从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。 深度优先遍历 深度优先遍历(Depth_First_Search),也有称深度优先搜索,简称DFS。 ...

xiangjunyes的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【高阶数据结构】第三弹---图的存储与遍历详解:邻接表构建与邻接矩阵的BFS/DFS实现

图的存储结构:邻接表【边的结构,图的基本结构,图的创建,获取顶点下标,添加边,打印,测试一,测试二】;图的遍历:图的广度优先遍历,图的深度优先遍历~~~

小林熬夜学习编程的博客 2575

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【数据结构】无向图创建邻接表以及深度遍历、广度遍历(C语言版)

100//深度遍历标记数组//广度遍历标记数组// 边链表int Local;// 存放该顶点对应边链表中数据// 边链表节点指针// 顶点表int Vertex;// 存放一条边链表对应的顶点// 指向该顶点对应边链表的头节点// 存放顶点和边,指向顶点表结构体数组int Vnum;// 存放顶点数int Enum;// 存放边数// 边链表对应的顶点表中顶点结构体}MyGraph;

咖喱年糕的博客 5089

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【C语言】图的深度优先遍历&广度优先遍历(算法,代码一步到位)

图的两种遍历,你一定要学会

Jaye513的博客 5959

采用邻接表存储的图的深度优先遍历c语言,以邻接表作为存储结构的图的深度优先遍历和广度优先遍历(c++版)...

一、图的存储用邻接表法存储图,存储结构分为两部分,一部分为存储图的所有顶点的数组,另一部分为挂载在数组的每个元素后面的用来表示顶点的邻接点的链表。1、存储顶点的结构单元为:classvnode{public:stringnodename;boolvisted;//进行图的遍历时用于标记图是否被访问过node*next;vnode(){visted= false;next=NULL;}};链表的结构...

weixin_39531183的博客 3108

数据结构---图的邻接矩阵(创建,打印,深度优先遍历,广度优先遍历,C语言)

  邻接矩阵法   用一维数组图中顶点的信息,用一个二维数组存储图中边的信息(各顶点之间的邻接关系)。存储顶点之间邻接关系的二维数组称为邻接矩阵。      结点数为n的图G=(V,E)的邻接矩阵A是n*n的,将G的顶点编号为v1,v2,......vn。若(vi,vj)∈E,则A[i][j]=1,否则A[i][j]=0。   对于带权图而言,若顶点vi,vj之间有边相连,则邻接矩阵...

小陆同学LLR的博客 4万+

C语言实现数据结构的邻接矩阵----数组生成矩阵、打印、深度优先遍历和广度优先遍历

写在前面 **图的存储结构有两种:**一种是基于二维数组的邻接矩阵表示法。 另一种是基于链表的的邻接表表示法。 在邻接矩阵中,可以如下表示顶点和边连接关系: 说明: 将顶点对应为下标,根据横纵坐标将矩阵中的某一位置值设为1,表示两个顶点向联接。 图示表示的是无向图的邻接矩阵,从中我们可以发现它们的分布关于斜对角线对称。 我们在下面将要讨论的是下图的两种遍历方法(基于矩阵的):   我们已经说明了我们要用到的是邻接矩阵表示法,那么我首先要来构造图: 1.深度优先遍历算法   分析深度优先遍历     从图

weixin_44456608的博客 1739
上一篇: 数据结构---图的邻接矩阵(创建,打印,深度优先遍历,广度优先遍历,C语言)
下一篇: 经典小题目1(斐波拉契数列、杨辉三角形,C语言)
小陆同学LLR
博客等级 码龄10年 213粉丝 44原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值