# 图 || Graph模板及实例化 #
图(Graph)数据结构本体。(Java)
1 package testAlgori;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.HashSet;
6
7 public class Graph {
8 public HashMap<Integer, Node> nodes;
9 public HashSet<Edge> edges;
10
11 public Graph() {
12 nodes = new HashMap<>();
13 edges = new HashSet<>();
14 }
15
16 public static class Node {
17 public int value;
18 public int in;
19 public int out;
20 public ArrayList<Node> nexts;
21 public ArrayList<Edge> edges;
22
23 public Node(int value) {
24 this.value = value;
25 this.in = 0;
26 this.out = 0;
27 this.edges = new ArrayList<>();
28 this.nexts = new ArrayList<>();
29 }
30 }
31
32 public static class Edge {
33 public int weight;
34 public Node from;
35 public Node to;
36
37 public Edge(int weight, Node from, Node to) {
38 this.weight = weight;
39 this.from = from;
40 this.to = to;
41 }
42 }
43 }
发生器(Java)
1 package testAlgori;
2
3 import testAlgori.Graph.Edge;
4 import testAlgori.Graph.Node;
5
6 public class GraphGenerator {
7 public static Graph createGraph(int[][] matrix) {
8 Graph graph = new Graph();
9 for (int i = 0; i<matrix.length; i++) {
10 int weight = matrix[i][0];
11 int from = matrix[i][1];
12 int to = matrix[i][2];
13 if (!graph.nodes.containsKey(from)) {
14 graph.nodes.put(from, new Node(from));
15 }
16 if(!graph.nodes.containsKey(to)) {
17 graph.nodes.put(to, new Node(to));
18 }
19 Node fromNode = graph.nodes.get(from);
20 Node toNode = graph.nodes.get(to);
21 Edge newEdge = new Edge(weight, fromNode, toNode);
22 graph.edges.add(newEdge);
23 fromNode.edges.add(newEdge);
24 fromNode.nexts.add(toNode);
25 fromNode.out++;
26 toNode.in++;
27 }
28 return graph;
29 }
30 }
来源:https://www.cnblogs.com/zzl1209/p/12209256.html