91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java鄰接表怎樣實現圖結構

小樊
86
2024-09-15 02:03:21
欄目: 編程語言

在Java中,使用鄰接表實現圖結構需要以下幾個步驟:

  1. 創建一個節點類(Vertex)來表示圖中的每個節點。這個類應該包含一個標識符(例如,一個字符串或整數)以及一個鄰接節點列表。
public class Vertex {
    private String id;
    private List<Vertex> neighbors;

    public Vertex(String id) {
        this.id = id;
        this.neighbors = new ArrayList<>();
    }

    public String getId() {
        return id;
    }

    public List<Vertex> getNeighbors() {
        return neighbors;
    }

    public void addNeighbor(Vertex neighbor) {
        if (!neighbors.contains(neighbor)) {
            neighbors.add(neighbor);
        }
    }
}
  1. 創建一個圖類(Graph)來表示整個圖結構。這個類應該包含一個節點列表以及一些方法來添加節點、添加邊和獲取節點。
public class Graph {
    private Map<String, Vertex> vertices;

    public Graph() {
        vertices = new HashMap<>();
    }

    public void addVertex(String id) {
        if (!vertices.containsKey(id)) {
            vertices.put(id, new Vertex(id));
        }
    }

    public void addEdge(String sourceId, String targetId) {
        Vertex source = vertices.get(sourceId);
        Vertex target = vertices.get(targetId);

        if (source == null || target == null) {
            throw new IllegalArgumentException("Source or target vertex not found");
        }

        source.addNeighbor(target);
        target.addNeighbor(source); // 如果是無向圖,需要添加這行代碼
    }

    public Vertex getVertex(String id) {
        return vertices.get(id);
    }
}
  1. 使用這兩個類來創建和操作圖結構。
public static void main(String[] args) {
    Graph graph = new Graph();

    graph.addVertex("A");
    graph.addVertex("B");
    graph.addVertex("C");

    graph.addEdge("A", "B");
    graph.addEdge("B", "C");
    graph.addEdge("C", "A");

    Vertex a = graph.getVertex("A");
    System.out.println("Neighbors of A: " + a.getNeighbors());
}

這個例子創建了一個包含三個節點(A、B和C)的無向圖,并添加了相應的邊。然后,我們獲取節點A的鄰居并將其打印出來。

0
汉沽区| 玛沁县| 长汀县| 孝感市| 贞丰县| 红原县| 安仁县| 建始县| 屯留县| 应用必备| 玉林市| 逊克县| 旅游| 奉化市| 金沙县| 家居| 浦江县| 衡南县| 色达县| 曲阳县| 洪泽县| 阿城市| 桐城市| 浦城县| 兰溪市| 六安市| 闻喜县| 台南市| 兴海县| 广汉市| 奉节县| 柯坪县| 自贡市| 云霄县| 中西区| 延长县| 南丰县| 广河县| 响水县| 溧阳市| 灵台县|