gpt4 book ai didi

java - java中邻接表的图实现

转载 作者:行者123 更新时间:2023-12-01 17:00:31 24 4
gpt4 key购买 nike

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

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

我尝试为名为 point 的点创建一个类,并创建一个链接列表数组

私有(private)列表节点[] = new LinkedList[numPoints]

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

最佳答案

您可以尝试这种无向图的实现

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 LinkedList[v];
for (int i = 0; i < v; i++) {
adj[v] = new LinkedList<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();
}
}

关于java - java中邻接表的图实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61512038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com