legongju.com
我们一直在努力
2025-01-10 23:24 | 星期五

如何遍历java邻接表

在Java中,邻接表通常用来表示图(Graph)的数据结构

  1. 首先,创建一个邻接表来表示图。这里我们使用HashMap和ArrayList来实现邻接表:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Graph {
    private Map> adjacencyList = new HashMap<>();

    public void addVertex(int vertex) {
        adjacencyList.putIfAbsent(vertex, new ArrayList<>());
    }

    public void addEdge(int source, int destination) {
        adjacencyList.get(source).add(destination);
        adjacencyList.get(destination).add(source);
    }
}
  1. 然后,编写一个方法来遍历邻接表。这里我们使用深度优先搜索(DFS)算法来遍历邻接表:
import java.util.Stack;

public class GraphTraversal {
    public void depthFirstTraversal(Graph graph, int startVertex) {
        Stack stack = new Stack<>();
        boolean[] visited = new boolean[graph.adjacencyList.size()];

        stack.push(startVertex);

        while (!stack.isEmpty()) {
            int currentVertex = stack.pop();

            if (!visited[currentVertex]) {
                System.out.println("Visited vertex: " + currentVertex);
                visited[currentVertex] = true;

                for (int neighbor : graph.adjacencyList.get(currentVertex)) {
                    if (!visited[neighbor]) {
                        stack.push(neighbor);
                    }
                }
            }
        }
    }
}
  1. 最后,在主函数中创建一个图并遍历它的邻接表:
public class Main {
    public static void main(String[] args) {
        Graph graph = new Graph();
        graph.addVertex(0);
        graph.addVertex(1);
        graph.addVertex(2);
        graph.addVertex(3);
        graph.addVertex(4);

        graph.addEdge(0, 1);
        graph.addEdge(0, 2);
        graph.addEdge(1, 3);
        graph.addEdge(2, 4);

        GraphTraversal traversal = new GraphTraversal();
        traversal.depthFirstTraversal(graph, 0);
    }
}

运行上述代码,将会输出以下结果:

Visited vertex: 0
Visited vertex: 1
Visited vertex: 3
Visited vertex: 2
Visited vertex: 4

这个例子展示了如何在Java中使用邻接表表示图,并使用深度优先搜索算法遍历邻接表。你可以根据需要修改这些代码以适应不同类型的图和遍历算法。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/88851.html

相关推荐

  • java程序假死不打印日志怎么办

    java程序假死不打印日志怎么办

    当Java程序出现假死(hang)或无法打印日志时,可以采取以下措施进行排查和解决: 分析日志:首先检查程序的日志文件,看是否有异常信息、错误或者警告。如果有,...

  • 如何用java输出菱形

    如何用java输出菱形

    在Java中,要输出一个菱形,你可以使用嵌套循环
    public class Diamond { public static void main(String[] args) { int n = 5; // 菱形的大小,可以根据需...

  • java如何输出平行四边形

    java如何输出平行四边形

    在Java中,你可以使用循环和条件语句来输出平行四边形。以下是一个示例代码,用于输出一个由字符*组成的平行四边形:
    public class Parallelogram { public...

  • java如何打印心形

    java如何打印心形

    在Java中,你可以使用嵌套循环和条件语句来打印心形。以下是一个示例代码:
    public class HeartShape { public static void main(String[] args) { int n =...

  • 如何管理Datalink的连接和会话

    如何管理Datalink的连接和会话

    在数据链路层(Data Link Layer)中,连接和会话是通过以下方式进行管理的: 建立连接:当两个设备需要建立一个数据链路时,它们会发送一个连接请求。这个请求包...

  • 怎样提高Datalink的数据传输效率

    怎样提高Datalink的数据传输效率

    要提高Datalink的数据传输效率,可以采取以下几种方法:
    智能路由优化 智能路由算法:实时分析网络状况,自动选择最优传输路径。
    动态调整传输策略:根...

  • 如何通过Datalink实现数据备份

    如何通过Datalink实现数据备份

    DataLink是一个专注于数据交换和同步的平台,虽然它提供了数据同步的功能,但并不专门用于数据备份。根据搜索结果,DataLink的主要功能是实现各种异构数据源之间...

  • 如何解决Datalink中的数据冲突

    如何解决Datalink中的数据冲突

    在Datalink中解决数据冲突是一个复杂但至关重要的过程,以确保数据的一致性和准确性。以下是解决Datalink中数据冲突的方法和预防措施:
    解决数据冲突的方法...