代码样板-深度优先搜索-邻接矩阵-无向图-无权值

C语言实现基于邻接表的完全无向图生成,图的深度优先搜索与广度优先搜索 采用邻接表作为数据结构,创建了完全无向图,创建了测试用有向图,实现了图的广度与深度优先搜索 阅读详情
#include<iostream>
using namespace std;
const int N = 1000;
int n,g[N][N];//n 记住顶点的数量 ; g[N][N]矩阵的元素自动自动初始化为0; 
bool visited[N];  //记住已经访问过的顶点 
void dfs(int x){
	cout<<x<<" ";
	visited[x]=true;   //x号顶点访问过了 
	for (int i=1;i<=n;i++)
		if (g[x][i]==1&&!visited[i])
			dfs(i);   //找到新的,未访问过的顶点 
}
int main(){
	//用邻接矩阵存储无向图
	int e; 
	cin>>n>>e;//n 是顶点的数量,e是边的数量 
	for (int i=0;i<e;i++){  //读入e条边 
		int x, y;
		cin>>x>>y;   //x,y是一条边的两个顶点 
		g[x][y]=g[y][x]=1;   //无向图 
	}
	//深搜
	for (int i=1;i<=n;i++)   //注:图可能是非连通图,可能存在孤岛 
		if (!visited[i]) dfs(i); //注:这里的第一个元素编号为1,存入visited[1],以此类推
	
	return 0;
}

最基础的算法,如果要应用需添加条件


R6-2 邻接矩阵存储图的深度优先遍历

试实现邻接矩阵存储图的深度优先遍历。

函数接口定义:

void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );

其中MGraph是邻接矩阵存储的图,定义如下:

typedef struct GNode *PtrToGNode;
struct GNode{
    int Nv;  /* 顶点数 */
    int Ne;  /* 边数   */
    WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */
};
typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */

函数DFS应从第V个顶点出发递归地深度优先遍历图Graph,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按序号递增的顺序。题目保证V是图中的合法顶点。

裁判测试程序样例:

#include <stdio.h> typedef enum {false, true} bool; #define MaxVertexNum 10 /* 最大顶点数设为10 */ #define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/ typedef int Vertex; /* 用顶点下标表示顶点,为整型 */ typedef int WeightType; /* 边的权值设为整型 */ typedef struct GNode *PtrToGNode; struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */ }; typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */ bool Visited[MaxVertexNum]; /* 顶点的访问标记 */ MGraph CreateGraph(); /* 创建图并且将Visited初始化为false;裁判实现,细节不表 */ void Visit( Vertex V ) { printf(" %d", V); } void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ); int main() { MGraph G; Vertex V; G = CreateGraph(); scanf("%d", &V); printf("DFS from %d:", V); DFS(G, V, Visit); return 0; } /* 你的代码将被嵌在这里 */

输入样例:给定图如下

5

输出样例:

DFS from 5: 5 1 3 0 2 4 6

 

void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) )
{
    Visit(V);
    Visited[V]=true;
    for(int i=0;i<Graph->Nv;i++)
    {
        if(Graph->G[V][i]==1&&Visited[i]==false)
        {
            DFS(Graph,i,Visit);
        }
    }
}

 

 

实验4 无向图的深度优先搜索 实验4 无向图的深度优先搜索 【实验内容】 设无向图G有n个点e条边,写一算法建立无向图G的邻接表,并按照深度优先搜索输出顶点。 【实验目的】 1、了解图的定义、特点,区分无向图和有向图的概念; 2、了解图的数据结构和搜索方法; 3、掌握无向图的邻接矩阵、邻接表的表示方法; 4、写出无向图的深度优先搜索程序。 【实验步骤与要求】 1、了解图的定义、特点,区分无向图和有向图的概念; 2、了解图的数据结构和搜索方法; 3、掌握无向图的邻接矩阵、邻接表的表示方法; 4、写出无向图的深度优先搜索程序。 阅读详情

相关推荐

从零开始:Ubuntu 24.04 LTS + Win11双系统安装教程

本文将简单直白介绍如何从零开始在同一台电脑上安装 Ubuntu 24.04 LTS 和 Windows 11,你可以在需要进行专业开发或运维工作时,轻松切换到 Ubuntu,享受其带来的高效与自由;而在日常学习生活和娱乐休闲时,依然可以无缝使用熟悉的 Windows 环境。

萑澈的博客 8108

分别以邻接矩阵和邻接表的方式建立无向网(带权无向图)

分别以邻接矩阵和邻接表的方式建立无向网(带权无向图)

Kuzma66的博客 6508

Frida三层次钩子快速逆向VMP+OLLVM加固APK

VMP(虚拟机保护)和OLLVM(控制流平坦化)是Android应用常见的双重混淆技术,其核心原理是将Java逻辑虚拟化、Native代码控制流打散,从而阻断传统静态分析与简单Hook。但任何混淆都必须在CPU上执行,因此必然暴露JNI注册行为、ABI参数传递规律及系统调用痕迹。基于此,Frida可通过跨层联动——从JNI_OnLoad捕获Native库加载、在VMP解释器入口截获字节码上下文、于关键系统调用(如read/gettimeofday)反向追踪数据流——构建可观测、可复现的动态分析链。该方法无需

weixin_30888413的博客 1001

邻接矩阵的深度优先遍历(DFS)

邻接矩阵的深度优先遍历(DFS)

MJ985464的博客 1010

SpringBoot+VUE3实战:如何用WebSocket搞定网页端语音通话(避坑指南)

本文详细介绍了如何使用SpringBoot和VUE3结合WebSocket技术实现网页端语音通话功能。从环境配置、WebSocket服务端实现到前端音频处理,提供了完整的开发指南和避坑建议,帮助开发者快速构建稳定高效的实时语音通信系统。

weixin_29021195的博客 221

T型三电平逆变器中点电位平衡详解

T型三电平逆变器(T-type Three-Level Inverter)是一种高效的多电平拓扑,相比传统NPC(Neutral Point Clamped)三电平逆变器,具有更低的开关损耗、更高效率和更简单的结构,尤其适用于中功率应用(如光伏逆变器、风电变换器和工业驱动)。(T-type Three-Level Inverter)中的应用已成为当前中高压功率变换领域(如光伏逆变器、储能PCS、电动汽车充电桩、风电并网和工业驱动)的热门方案。针对 T型逆变器,类似 NPC 的零序注入法适用。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 544

无向图的深度优先搜索

【实验内容】设无向图G有n个点e条边,写一算法建立无向图G的邻接表,并按照深度优先搜索输出顶点。

Chen_dSir的博客 5029

【ArcGIS Pro微课1000例】0022:基于DEM进行流域分析生成流域图

填洼Fill,在进行水文分析后续操作前,首先要对DEM进行填洼,创建无凹陷点的DEM。在ArcGIS中使用的是八方向流量建模(D8算法),工具位于水文分析下的【流向】。填洼需要使用水文分析工具下的【填洼】。确定输入与输出即可。

智慧空间实验室 2750

图(三)

图的遍历 DFS(深度优先搜索) 时间复杂性:采用邻接矩阵存储结构时,查找所有顶点的邻接点所需时间为O(|V|2); 而采用邻接表时,找邻接点所需时间为O(|E|)。因此,DFS的时间复杂度为O(|V|+|E|) 。 算法思想: 从某个点一直往深处走,走到不能往下走之后,就回退到上一步,直到找到解或把所有点走完。 ...

weixin_43008312的博客 311

我正用AI Agent重构传统GIS 核心功能,说大白话做空间分析

GeoAI-UP项目通过AI Agent技术实现自然语言驱动的空间分析,核心创新包括: 意图识别层:通过LLM理解用户需求,自动拆解为可执行目标 智能任务规划:动态生成分析流程,处理复杂依赖关系 统一算子架构:采用标准化接口封装200+空间分析功能 可视化工作流。

专注GIS软件开发。 495

【tessy】软件环境配置:Keil C51 Keil uVision UVSC (Default)

本文详细说明了tessy软件如何配置【Keil C51 Keil uVision UVSC (Default)】环境,具体操作步骤和注意事项

qq_37282365的博客 600

学习笔记——图结构

图的抽象数据类型 类型名称:图 数据对象集:一个非空的顶点集合和一个边集合,每条边用对应的一对顶点表示。 操作集: (1):构造一个有N个顶点但是没有边的图G; (2):在G中增加新边E (3):从G中删除边E (4):判断是否为空 (5):会使用深度优先遍历 (6):会使用广度优先遍历 储存结构: (1):邻接矩阵:可以理解为二维数组 (2):邻接表:链表的方式来表示 类似于树的孩子链表表示法 图的遍历: (1):深度优先遍历(DFS) 沿着一条路一直深入,到无路可走的时候

weixin_45644790的博客 332

偏最小二乘回归分析原理详解和案例分析实例

偏最小二乘回归分析原理详解背景偏最小二乘回归分析 Partial least squares regression analysis基本思想建模步骤步骤一:分别提取两变量组的第一对成分,并使之相关性达最大步骤二:建立 y1,⋯ ,yp\boldsymbol{y}_{1}, \cdots, \boldsymbol{y}_{p}y1​,⋯,yp​ 对 u1\boldsymbol{u}_{1}u1​ 的回归及 x1,⋯ ,xm\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9976

邻接矩阵存储图的深度优先遍历 邻接表存储图的广度优先遍历 详解

邻接矩阵存储图的深度优先遍历 试实现邻接矩阵存储图的深度优先遍历。 函数接口定义: void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ); 其中MGraph是邻接矩阵存储的图,定义如下: typedef struct GNode PtrToGNode; struct GNode{ int Nv; / 顶点数 / int Ne; / ...

海马有力量的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

图的深度优先遍历和广度优先遍历

邻接矩阵存储图的深度优先遍历 void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ){ Visited[V]=true; //将顶点标记为已访问 Visit(V); //打印顶点V; for(int i=0;i<Graph->Nv;i++){ //从第一个顶点开始循环,直到最后一个顶点 if(Graph->G[

qq_43624553的博客 292

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

图的深度优先搜索

在介绍完图的定义和基本操作之后,我们这里要介绍图的遍历,图的遍历最基本的就是两种方法,就是DFS(Depth-First-Search)和广度优先搜索,这篇博文先介绍深度优先搜索。   深度优先遍历图的方法 从图中某顶点v出发: (1)访问顶点v; (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问; (3)若此时图中尚有顶点未被访问,则从一

拉风小宇的博客 3635

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度优先遍历-无向图

666

weixin_47249161的博客 864

深度优先搜索(DFS)及其matlab代码

深度优先搜索算法的学习~

weixin_42105848的博客 7484

C++无向图的深度优先搜索和广度优先搜索

深度优先搜索 // 无向图的邻接矩阵表示法实现深搜 #include <vector> #include <iostream> using namespace std; #define MAX 5 //节点数量 char node[MAX]; //存储节点的容器 int node_edge[MAX][MAX]; //邻接矩阵 vector<char> dfs; //算法实现的辅助栈 bool visited[MAX]; //记录已经访问过的节点 void InPut()

NINE_world的博客 1110

无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)

一、无向图 1.1 图的相关术语 相邻顶点: 当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并且称这条边依附于这两个顶点。 度: 某个顶点的度就是依附于该顶点的边的个数。 子图: 是一幅图的所有边的子集(包含这些边依附的顶点)组成的图。 路径: 是由边顺序连接的一系列的顶点组成。 环: 是一条至少含有一条边且终点和起点相同的路径。 连通图: 如果图中任意一个顶点都存在一条路径到达另外一个顶点,那么这幅图就称之为连通图。 连通子图: 一个非连通图由若干连通的部分组成,每一个连通的部分都可以称为该图的连

一名小白的博客 3602

无向图的深度优先搜索(最终版)

【实验内容】 设无向图G有n个点e条边,写意算法建立G的邻接多表,并按照深度优先搜索输出顶点,要求该算法时间复杂性为O(n+e),且除邻接多表本身所占空间之外只用O(1)辅助空间。 【参考方法】 邻接表定义: #include #include #define max 30 typedef struct edgenode{ int adjvex; char

许佳佳的博客 5388

无向图的深度优先遍历

描述     简单介绍一下图,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的。例如下图的由五个顶点(编号1、2、3、4、5)和五条边(1-2、1-3、1-5、2-4、3-5)组成     现在从1号顶点开始遍历这个图,遍历是指把图的每一个顶点都访问一次。使用深度有限搜索来遍历这个图将会得到如下结果。     这五个顶点的访问顺序如下图     使用深度优先...

Gerald的博客 4万+

C语言实现无向图并深度优先搜索

/* 创建无向图并深度优先搜索 */ #include #include #include #include const int MAXN = 100; const int inf = 9999999; typedef struct ArcCell { char vexnum[MAXN]; //顶点 int arcnum[MAXN][MAXN];

wodemaoheise的博客 3508

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 171
上一篇: 7-2 堆中的路径
下一篇: 代码样板-广度优先搜索-邻接矩阵-无向图-无权值
「已注销」
博客等级 码龄7年 155粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值