首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

图论基础及深度优先遍历(DFS)、广度优先遍历(BFS)

其中顺序存储结构包括:邻接矩阵和边集数组。链式存储结构包括:邻接表、链式前向星、十字链表和邻接多重表。 接下来我们来介绍两种常用的图存储结构:邻接矩阵与邻接表。...2.1 邻接矩阵 邻接矩阵(Adjacency Matrix):使用一个二维矩阵来存储顶点之间的邻接关系。...2.1.2 添加/删除边 直接修改邻接矩阵指定的边的值即可,如果是无向图,因此需要同时更新两个方向的边。 2.1.3 添加顶点 在邻接矩阵的尾部添加一行一列,并全部填充为 0。...'E'], 'E': ['F'], 'C': ['F'] } def dfs(graph, start): visited, stack = [], [..., 'F'] 4.2 邻接矩阵 我们通过邻接矩阵表示该图:它将每个节点的存储在列表中,并将节点之间边的关系存储在二维列表中。

12110

【数据结构与算法】图遍历算法 ( 深度优先搜索 DFS | 深度优先搜索和广度优先搜索 | 深度优先搜索基本思想 | 深度优先搜索算法步骤 | 深度优先搜索理论示例 )

: 深度优先搜索 DFS 广度优先搜索 BFS 2、深度优先搜索基本思想 " 深度优先搜索 " 英文名称是 Depth First Search , 简称 DFS ; DFS 基本思想 : 访问第一个邻接结点...邻接表 中排列在首位 0 索引的节点 , 或者 与 邻接矩阵 中 元素位置 有关 , 没有其它意义 ; 在下面的 邻接矩阵 中 , 查找 C 的第一个 邻接结点 , 从 C 的那一排 第 2 排开始查找..., 或者 与 邻接矩阵 中 元素位置 有关 , 没有其它意义 ; 在下面的 邻接矩阵 中 , 查找 C 的第二个 邻接结点 , 从 C 的那一排 第 2 排开始查找 , 第二个为 1 的元素就是 对应..., 转到步骤 ③ 执行 ; 查找 结点 C 的 第三个 邻接节点 ; 邻接结点选择 : 这里的 第一个邻接节点 选择 , 是在内存数据 邻接表 中排列在首位 0 索引的节点 , 或者 与 邻接矩阵 中...元素位置 有关 , 没有其它意义 ; 在下面的 邻接矩阵 中 , 查找 C 的第三个 邻接结点 , 从 C 的那一排 第 2 排开始查找 , 第三个为 1 的元素就是 对应 第三个 邻接结点 ; C

2.4K20

C++】C 语言C++ 语言的关系 ( C 语言发展 | C 语言缺陷 | C 语言 + 面向对象 + 高级语言特性 | C++ 语言增加内容 | C 语言C++ 语言应用场景 )

一、C 语言发展 C 语言 被开发之前 并 没有经过 缜密 的 设计 , 而是在 使用过程中 逐渐完善的 ; C 语言发展经过如下阶段 : 初始阶段 : 1972年至1978年 , C语言 初步形成 ,...C99 , C11 , C17 等标准 , 以满足新的编程需求 ; 二、C 语言缺陷 C 语言有如下缺陷 : C 语言 没有经历过 缜密的 设计过程 , 都是根据需求逐渐完善的 , 出现了很多缺陷和漏洞...2、C 语言C++ 语言关系 C 语言C++ 语言 并 不是 竞争关系 ; C++ 语言 是 以 C 语言为基础 的 加强版本编程语言 , 可以看作是更好的 C 语言 , 在 C++ 语言...中 , 可以使用 C 语言语法 , 对 C 语言完全兼容 ; C++ 语言 包含 C 语言 , 在 C++ 代码中可以使用 C 语言的语法 , 但是在 C 语言中不能使用 C++ 的语法 ; 3、C++...语言应用场景 C 语言C++ 语言的应用场景 : C语言 应用场景 : 系统软件、操作系统、编译器等 底层系统级应用 ; C++ 语言 应用场景 : 大型应用程序、游戏 等更 高级的应用 ; 在不同的

22220

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

图的遍历方法一般有两种,第一种是深度优先遍历(Depth First Search),也有称为深度优先搜索,简称为DFS。...下面只给出邻接矩阵和邻接表存储方式时的图的深度优先遍历的算法代码,没有给出整体可供测试运行的代码,其实只需要再写一个创建图的函数就可以进行整体测试了,可以参考《邻接矩阵创建图》和《邻接表创建图》 一、如果我们使用的是邻接矩阵的方式...visited[j])             DFS(MG, j);/* 对为访问的邻接顶点递归调用 */ } /* 邻接矩阵的深度遍历操作 */ void DFSTraverse(MGraph MG...visited[i])             DFS(MG, i);/* 对未访问过的顶点调用DFS,若是连通图,只会执行一次*/ } 遍历结果为: A B C D E F G H I (上图所示的图结构...visited[i])             DFS(GL, i);/* 对未访问过的顶点调用DFS,若是连通图,只会执行一次*/ } 遍历结果为:A F G H E D I C B (上图所示的图结构

1.7K60

PAT 1021 Deepest Root (25分) 从测试点3超时到满分再到代码优化

visit[j]) dfs(j); } } // 用于求得 以每个节点作为根节点,能得到的最大高度 // deepest保存这个结果,注意这个引用传值,相当于c语言中的指针...树 是稀疏图,用邻接矩阵去存太浪费空间了。...maxheight_roots; // 最大高度 int maxheight; // 用于求得 以每个节点作为根节点,能得到的最大高度 // deepest保存这个结果,注意这个引用传值,相当于c语言中的指针...,在这幅图中就是说要么是A,要么是C,同时可以看到,假如起点是B,我们在DFS的时候E点的DFS深度也会是最长路径,也就是说我们选出了最起码一侧的所有最长路的端点。... temp_roots; // 最大高度 int maxheight; // 用于求得 以每个节点作为根节点,能得到的最大高度 // deepest保存这个结果,注意这个引用传值,相当于c语言中的指针

80730

C语言C语言入门知识

一、主函数 C语言的主函数是main()函数,有且仅有一个。 例如: int main() { return 0; } 是一个标准的C语言主函数。...二、输入、输出函数 C语言中的输出函数为printf,输入函数为scanf,使用前需要引用头文件#include 。...(2)C语言中的常见单位(从小到大): bit(比特)<byte(字节)<KB<MB<GB<TB<PB<..... 1byte = 8bit 1KB = 1024byte 1MB = 1024KB...四、变量和常量 4.1 变量的使用 C语言中常量是不变的值,变量是可变的值 创建变量的使用: int age = 10; char ch = 'w'; float weight = 45.5f...4.3 常量 C语言中的常量分为字面常量,const修饰的常变量,#define 定义的标识符常量,枚举常量。 (1)字面常量:100,'w',3.14等。

8410
领券