带有邻接表java的图形实现

问题描述 投票:0回答:1

我有很多点的二维坐标,例如点a = x,y

我想使用邻接列表进行图实现,并以最有效的方式(不使用地图或哈希表)连接无向图的某些点

我试图为名为point的点创建一个类,并做了一系列链接列表

私有列表节点[] =新的LinkedList [numPoints]

问题是数组将是整数,我不能存储x和y,我需要知道x和y

java algorithm graph graph-algorithm adjacency-list
1个回答
0
投票
您可以尝试这种无向图的实现

public class Graph { private static final String NEW_LINE = System.lineSeparator(); private final int vertices; private int edges; private List<Integer>[] adj; public Graph(int v) { if (v < 0) throw new IllegalArgumentException("Number of vertices must be non-negative"); this.vertices = v; this.edges = 0; adj = (List<Integer>[]) new ArrayList[v]; for (int i = 0; i < v; i++) { adj[v] = new ArrayList<Integer>(); } } public int getVertices() { return vertices; } public int getEdges() { return edges; } public void addEdge(int v, int w) { adj[v].add(w); adj[w].add(v); edges++; } public int degree(int v) { return adj[v].size(); } public Iterable<Integer> adj(int v) { return adj[v]; } @Override public String toString() { StringBuilder builder = new StringBuilder(); for (int v = 0; v < vertices; v++) { builder.append(v + ": "); for (int w : adj[v]) { builder.append(w + " "); } builder.append(NEW_LINE); } return builder.toString(); } }

© www.soinside.com 2019 - 2024. All rights reserved.