图的深度优先遍历--数据结构做得

【数据结构与算法】图的遍历(深度优先遍历DFS算法) 1.1深度优先遍历 深度优先遍历(depth first search),也有称为深度优先搜索简称DFS。它的主要思想就是例如找钥匙一样。例如:我们的一把车钥匙被搞丢了但是可以确定的是它一定就在家里的某个位置,所以我们需要从房间开始寻找,可是我们是该在房间某一处寻找还是将一整个房间搜索完之后再找其他房间的地方呢?在深度优先遍历意思就是将一个房间的所有地方搜索完之后再进行其他房间的搜索,直至找到车钥匙为止。 假设你现在需要完成一个任务,要知道你在如下迷宫中,从顶点A开始要走遍所有图中的顶点并作上标记,注. 阅读详情
#include<iostream>
#include<malloc.h>
#include<queue>
using namespace std;

#define maxNum 100          //定义邻接矩阵的最大定点数
int visited[maxNum];        //通过visited数组来标记这个顶点是否被访问过,0表示未被访问,1表示被访问

//图的邻接矩阵表示结构
typedef struct
{
    char v[maxNum];         //图的顶点信息
    int e[maxNum][maxNum];  //图的顶点信息
    int vNum;               //顶点个数
    int eNum;               //边的个数
} graph;

void dfs(graph *g,int i)
{
    cout<<"顶点"<<i<<"已经被访问"<<endl;
    visited[i]=1;          //标记顶点i被访问
    if(i==g->vNum)
    {
        return;
    }
    for(int j=1; j<=g->vNum; j++)
    {
        if(visited[j]==0&&g->e[i][j]==1)
        {
            visited[j]=1;
            dfs(g,j);//下面不需要恢复现场,遍历一次就可以了
        }
    }
}

void DFS(graph *g)
{
    int i;
    for(i=1; i<=g->vNum; i++)             //初始化visited数组,表示一开始所有顶点都未被访问过
        visited[i]=0;
    //广度优先搜索
    for(i=1; i<=g->vNum; i++)             //对每个顶点进行广度优先搜索
    {
        if(visited[i]==0)                 //如果这个顶点未被访问过,则从i顶点出发进行广度优先遍历
            dfs(g,i);
    }
}
void createGraph(graph *g)                //创建图g
{
    cout<<"请输入顶点个数vNum:";
    cin>>g->vNum;
    cout<<"请输入边的个数eNum:";
    cin>>g->eNum;
    int i,j;

    for(i=1; i<=g->vNum; i++)             //初始画图g
        for(j=1; j<=g->vNum; j++)
            g->e[i][j]=0;

    //输入边的情况
    cout<<"请输入每条边边的头和尾"<<endl;
    for(int k=1; k<=g->eNum; k++)         //初始化边的相连
    {
        cin>>i>>j;
        g->e[i][j]=1;
        g->e[j][i]=1;
    }
}

int main()
{
    graph *g;
    g=(graph*)malloc(sizeof(graph));
    createGraph(g);
    DFS(g);
    return 0;
}

仿照前面广度优先遍历做得,纯手改,初窥门径

大话数据结构-图的深度优先遍历和广度优先遍历 数据结构中图的深度优先遍历、广度优先遍历定义,邻接矩阵、邻接表、逆邻接表、十字链表、邻接多重表和边集数组的深度优先遍历实现和广度优先遍历实现。 阅读详情

相关推荐

educoder数据结构与算法 图 第2关:实现图的深度优先遍历

任务描述 本关任务:实现 graph.cpp 里的函数int Graph_DepthFirst(Graph*g, int start, Edge* tree)。 注意遵守约定:编号大的先进栈。 相关知识 图 2 给出了对图 1 的无向图的存储结构图:每个顶点的名称由一个字符串描述,所有字符串的起始地址组织为一个数组,数组的起始地址为vetex;顶点的相邻关系保存在相邻矩阵中,其起始地址为adj,adj[i*n+j]的值为 1 表示i号顶点到j号顶点有边,为 0 表示无边,其中n是顶点个数,i和

qq_54008392的博客 1万+

超详细C语言版数据结构:图的深度优先遍历(推荐收藏)

文章目录一、邻接矩阵存储图的深度优先遍历过程分析二、结果分析三、C语言编程实现图的深度优先遍历四、图的遍历及其应用 一、邻接矩阵存储图的深度优先遍历过程分析 对图1这样的无向图,要写成邻接矩阵,则就是下面的式子: 一般要计算这样的问题,画成表格来处理是相当方便的事情,实际中计算机处理问题,也根本不知道所谓矩阵是什么,所以画成表格很容易帮助我们完成后面的编程任务。在我们前面介绍的内容中,有不少是借助着表格完成计算任务的,如Huffman树。 为了记录那些顶点是已经走过的,还要设计一个表来标记已经走过的顶

智慧空间实验室 1万+

【数据结构】图的遍历方法 深度优先遍历和广度优先遍历

图的遍历方法 深度优先遍历和广度优先遍历 接着上次的文章“图的构建(邻接链表法)”,邻接链表法构建图相对来说比较简单,并且遍历起来也相对简单,但是要是动态添加图的节点和图的边,则是实在不方便,不过现在不管那么多,今天的主题是遍历。  - 有另外一种图的构建方法,叫做十字链表法,插入删除比较方便,但是相对来说比较复杂,改天闲着木事的再搞。(其实主要原因是因为三四年前写的代码,现在翻出来了,现成的

sundong_d的专栏 2万+

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

图在数据结构中是很重要的一部分。 通过不同的遍历方法,得到不同的遍历结果。 图的遍历可以分为两种,深度优先遍历和广度优先遍历。 图的表示可是链表也可以是矩阵。 链表:是结点和边的组合 矩阵是二维数组:a[i][j]表示i结点到j结点是否连通 图可分为有向图和无向连通图。 今天介绍无向连通图的两种遍历方法(java实现): 图的定义: //结点,按照有向图完整定义 pu...

qqjjjaa11的专栏 551

图的深度优先遍历

本文要解决的问题: 总结一下图的深度优先遍历算法 简述 图的遍历与前面文章中的二叉树遍历还是存在很大区别的。所谓图的遍历指的是从图中的某一个顶点出发访问图中的其余顶点,并且需要保证每个顶点只被访问一次。由于图比二叉树复杂得多,所以前面二叉树的遍历算法在图中是行不通的。因为对于任意一个顶点来讲,都可能与其余的顶点发生连接。如果不对访问的顶点做一些处理,出发重复访问的几率是很高的。因

Miracle_shen的博客 4507

数据结构之图的深度优先遍历和广度优先遍历

1.图的简单介绍 上图就是一个图(无线图),由顶点和连线组成 图可以分为无向图和有向图(这个又有出度、入度的概念)、网,一般来说图有两种常用的表示方式,邻接矩阵(用二维数组的形式表示)和邻接表(主要是数组+链表的形式表示),图常用的遍历方式有深度优先遍历(DFS)和广度优先遍历(BFS)。 由于等会代码是用邻接矩阵来实现DFS和BFS,这里主要介绍一下邻接矩阵的表示方法:两个顶点相邻,则

poppy一直在的博客 8405

数据结构——详解图的深度优先遍历和广度优先遍历及代码实现

图的深度优先遍历和广度优先遍历: 从本质上来说都是用来访问图中的所有结点的,只是两种访问的方式不同,深度优先遍历用的是堆栈,先进的后出,而广度优先遍历用的是队列的思想。 1.图的深度优先遍历 1.1基本思想: ⑴ 访问顶点v; ⑵ 从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历; ⑶ 重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。 例如我们需要用深度优先遍历下面这个图...

诶你爱我吗的博客 1万+

Wiley:International Journal for Numerical Methods in Biomedical Engineering投稿流程

中间过程省略,这个出版社很人性化,投稿的web UI也很好看。上传word之后,一步步跟着走就行,不用填太多东西。不要最后在最后检查阶段,重新上传word文件,这样会导致,之前针对word的操作全部改变。

Everyday try to become better -Kobe Bryant 2545

数据结构——图的两种遍历【深度优先遍历-广度优先遍历】的区别用法

深度优先遍历-广度优先遍历

QG 1万+

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5806

本体研究综述(转)

(这篇文章是从http://imarine.blog.163.com/中转载过来的,个人觉得对本体的介绍比较全面!)本体综述本体作为一种能在语义和知识层次上描述领域概念的建模工具,其目标是捕获相关领域的知识,确定该领域内共同认可的词汇,通过概念之间的关系来描述概念的语义,提供对该领域知识的共同理解。语义Web(the Semantic Web)是在本体理论基础之上对现有Web所进行的扩展[

zhenshideni611的专栏 1838

图的深度优先遍历(Depth First Search)

14.2.1 深度优先遍历(Depth First Search) 深度优先遍历,从初始访问节点出发,初始访问节点可能有多个邻接节点,深度优先遍历的策略就是首先访问第一个邻接节点,然后再以这个被访问的邻接节点作为初始节点,反问他的第一个邻接节点,可以这样理解: 每次都在访问完当前节点后首先访问当前节点的第一个邻接节点。 我们可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个节点的所有邻接节点进行横向访问 显然深度有限搜索时一个递归的过程 深度优先遍历算法步骤 访问初始节点V,并标记节点V已访问

weixin_52725999的博客 1241

告别仿真报错!手把手教你为Intel MAX10 FPGA定制IBIS模型(附Allegro Skill工具)

本文详细介绍了为Intel MAX10 FPGA定制IBIS模型的完整流程,解决信号完整性仿真中的管脚映射问题。通过Allegro Skill工具自动化处理管脚信息,优化IBIS模型关键段落,提升仿真效率和精度,适用于高速数字电路设计。

weixin_33217202的博客 322

实现图的广度优先遍历(BFS)和深度优先遍历(DFS)

这段代码首先定义了图的数据结构和基本操作,然后实现了BFS和DFS算法。在`main`函数中,创建了一个简单的图,并进行了BFS和DFS遍历。请注意,这个示例代码没有进行错误检查,例如内存分配失败,这在实际应用中是必要的。C语言中实现图的广度优先遍历(BFS)和深度优先遍历(DFS)通常涉及到使用队列和栈数据结构。// 添加从src到dest的边。// 定义图的节点结构。// 创建一个新的节点。// 检查队列是否为空。// 检查栈是否为空。

2303_79540797的博客 1269

智能车图像处理5-入门级分析4 ---环岛的状态机与补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 8228

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 792

数据结构笔记——图的深度优先遍历(DFS)

写在前面:科班出身,应届考研党,愿21考研成功上岸,冲冲冲! 目录 一、树的深度优先遍历 二、图的深度优先遍历 三、算法存在的问题 五、复杂度分析 空间复杂度 时间复杂度 六、深度优先遍历序列 七、深度优先生成树 八、深度优先生成树森林 九、图的遍历与图的连通性 十、总结 一、树的深度优先遍历 void PreOrder(TreeNode *R){ if(R != NULL){ visit(R); while(R还有下一个子树T) .

晓风岚月 4万+

AUTOSAR NvM 实车故障深度剖析:车载存储问题快速定位与工程解决方案

软件配置与代码逻辑无问题时,排查底层驱动与ECU硬件,步骤如下:底层驱动排查:排查Fls/Eep驱动配置,是否适配目标MCU(如TC397、S32K),编程/擦除/读取时序是否合理;检查Fls/Eep驱动错误处理逻辑,是否未处理Flash编程失败、读取错误等异常;验证Flash高速编程模式是否启用,是否能提升写入/读取速度;排查MemIf层配置,是否正确对接NvM与Fls/Eep驱动,是否存在调度延迟。

getusushu的博客 78

【数据结构与算法】递归全流程详细剖析 | 详解图的深度优先遍历

本篇文章属于数据结构与算法系列文章,这篇文章会对算法中的递归进行一个详细的介绍,不仅是概念,而是从运行过程中的每一步进行详细分析。并使用递归的方式来完成数据结构图的深度优先遍历🚀。

大数据小禅的博客 3932

UE5 GAS 学习笔记 1.2游戏标签

这一节对GameplayTag游戏标签进行详细的讲解。

CloudHuCoding 1927

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

图的深度优先遍历(邻接表)

1.深度优先遍历        图的深度优先遍历是从图的某个顶点出发,访问这个顶点,然后从v的没访问过的邻接点出发深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到。而以上是对应连通图而言,对于非连通图,先对它的连通分量进行深度优先遍历,,若图中还有顶点未被访问,则选择图中一个未曾被访问的顶点作为起始点,重复上述过程,直到图中全部顶点被访问。假设从0开始进行未循环深度优先遍历,则顺序是这样...

t_wu的博客 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数据结构--图的遍历(深度优先遍历)

数据结构–图的遍历(深度优先遍历) 深度优先遍历是从图中某个顶点出发,访问此顶点,然后从它未被访问到的邻接点出发深度优先遍历图,直到图中所有和它有路径相通的顶点都被访问到. 邻接矩阵: #include &lt;stdio.h&gt; #define MAXVEX 20 //最大顶点数 #define FINITY 100 //代表 ∞ ty...

ledou2的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

图(深度优先遍历、广度优先遍历)

文章目录一、图的概述1.1 什么是图1.2 图对比线性表和树1.3 图的常见概念二、图的存储方式2.1 邻接矩阵2.2 邻接表三、图的遍历3.1 图的深度优先遍历3.1.1 什么是深度优先遍历3.1.2 深度优先遍历的步骤3.1.3 深度优先遍历代码实现3.2 图的广度优先遍历3.2.1 什么是广度优先遍历3.2.2 广度优先遍历的步骤3.2.3 广度优先遍历代码实现 一、图的概述 1.1 什么是图 图(graph)是一种数据结构,它是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E)。

Ronz 的博客 6469
上一篇: 图的深度优先遍历
下一篇: dfs之记忆化搜索(字符串匹配,位置相对变)
IT开发与架构设计
博客等级 码龄9年 9粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值