Print Adjacency List for a Directed Graph in Java2025 年 3 月 28 日 | 阅读 4 分钟 邻接列表是图论中表示图的一种基本方法。在有向图中,每个顶点都跟踪它拥有出边的其他顶点。特别是对于稀疏图,这种形式在空间和时间复杂度方面都非常经济。本文解释了如何创建和显示有向图的邻接列表。 邻接列表表示一个有向图的邻接列表是列表或数组的集合。此集合中的每个索引代表一个顶点,并且该索引处的每个列表包含可以直接从该顶点到达的顶点。例如,如果顶点“v”有边指向顶点“w”和“x”,则“v”的邻接列表将包含“w”和“x”。 实现有向图邻接列表的步骤1.选择数据结构 我们将使用 HashMap 来存储邻接列表,其中
为了表示顶点到顶点的边列表,我们将使用 ArrayList,它允许高效地添加边。 2.类设计 我们将定义一个 Graph 类来表示有向图。该类将包含用于
3.添加顶点和边 添加顶点时,我们将初始化邻接列表中的一个空边列表。添加边时,我们将目标顶点附加到源顶点关联的列表中。 4.打印邻接列表 通过遍历 map 并显示每个顶点及其连接顶点列表来打印邻接列表。 让我们在 Java 程序中实现上述步骤。 文件名: Graph.java 输出 Vertex 1: 2 3 Vertex 2: 3 Vertex 3: 4 Vertex 4: 1 解释邻接列表是一种表示有向图的简单方法,其中每个元素都包含通过有向边连接到它的元素列表。为了表示上述 Java 图数据结构,我们可以使用 HashMap,其中 map 的键持有图的每个顶点,并且 map 中每个键的值持有图的每个顶点所指向的邻居列表或数组。 为此,我们设计了一个 Graph 类,它允许添加顶点、添加有向边以及打印邻接列表。邻接列表使用 hashmap 存储,其中实际的键是 ArrayList 邻居的值,这对于存储稀疏图很有效。 它还涉及创建可用的顶点以及边,然后遍历 map 来打印邻接列表。顶点插入、边插入和边删除都以 O(1) 的恒定时间运行,而列表打印需要 O(V + E) 的时间,其中 V 是顶点数,E 是边数。 复杂度分析时间复杂度添加顶点的时间复杂度为 O(1),因为它只涉及 HashMap 中的插入。添加边平均需要 O(1) 时间,因为向 ArrayList 添加元素需要恒定时间。 打印需要 O(V + E) 的时间来打印列表。每当打印顶点时,该过程将需要 V,而打印边需要 E,因为我们将遍历所有边。 空间复杂度空间复杂度为 O(V + E),因为我们存储了每个顶点及其连接的边列表。 结论邻接列表非常适合表示图,特别是稀疏图,如上述示例所示。在本文中,我们学习了如何使用 Java 语言中的邻接列表构建有向图。我们告诉您如何添加顶点和边以及如何打印邻接列表。这种结构对于任何基于节点遍历的图算法都很有用,例如深度优先搜索 (DFS) 或广度优先搜索 (BFS)。 下一个主题Java 中的字符数组 |
在 Java 中,可以使用 Java Collections Framework 提供的各种技术将数组转换为集合。Collections Framework 提供了一组接口和类来操作对象集合。要将数组转换为集,...
阅读9分钟
Java 是一种强大的面向对象编程语言,为开发人员提供了广泛的工具和功能来构建健壮且可扩展的应用程序。使 Java 脱颖而出的特性之一是它对泛型的支持。泛型允许开发人员编写泛型类和...
阅读 4 分钟
Java 中的 main() 方法是程序执行的入口点。Java 应用程序通过 JVM 调用此预定义的、具有签名 public static void main(String[] args) 的方法来启动执行。程序员经常想知道 Java 程序是否可以有多个 main() 方法……
5 分钟阅读
绳索的最小成本是计算机科学和竞争性编程中的一个经典问题。它基于合并绳索以最小化总成本的概念。想象一下,你有几根不同长度的绳索,需要将它们合并成一根...
阅读 8 分钟
在本节中,我们将学习什么是“strobogrammatic numbers”,并创建 Java 程序来检查给定的数字是否为 strobogrammatic numbers。Strobogrammatic numbers 的 Java 程序经常出现在 Java 编码面试和学术中。Strobogrammatic numbers,一个有趣的数学……
阅读 4 分钟
在这里,将使用 java.lang 包中的 Runtime 类。因为每个 Java 程序都有一个 Runtime 类的实例,所以这个类允许 Java 应用程序改变其执行环境。让我们看看 Runtime 类的 exec() 方法,看看任务可能如何...
阅读 4 分钟
数组是 Java 中的一种线性数据结构。它允许我们存储相同数据类型的多个值。它们在 Java 中用作对象。对于基本数据类型,如 int 或 char,原始值存储在内存位置....
阅读 8 分钟
文档对象模型(DOM)是万维网联盟(W3C)的认可。它解释了一个接口,该接口使程序能够访问和修改 XML 文档的样式、结构和内容。支持 DOM 的 XML 解析器实现了此接口……
阅读 6 分钟
在 Java 中处理多线程应用程序时,有效管理线程优先级至关重要。为线程设置优先级可以帮助我们控制操作系统如何调度线程进行执行。Java 提供了一个名为 setPriority() 的方法来设置线程的优先级,允许我们...
阅读9分钟
在 Java 中,String 是一个使用广泛的类,它表示字符序列。Java 中的 String 是不可变的,这意味着一旦创建了 String 对象,它的值就不能被改变。要了解更多 Java String 任何修改都会导致创建新的 String 对象……
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India