所以我有一个简单的程序,它创建一个给定大小为n的LinkedList
数组,列表中的每个值代表一个新的独立LinkedList
数据结构。
public class Graph {
public final LinkedList[] graph;
public Graph(int n){
graph = new LinkedList[n];
for (int i=0; i<n; i++){
graph[i] = new LinkedList();
}
}
public void addEdge(int x, int y){
graph[x].addFirst(y);
graph[y].addFirst(x);
}
但是,出于某种原因,当我使用两个int值调用addEdge()
方法时,不是将它们添加到LinkedList
中的特定被调用graph[]
,而是将它们添加到每个{ {1}}中的{1}}。
这里有什么问题?
编辑:*
LinkedList
这是我正在使用的LinkedList和Node Class:
graph[]
答案 0 :(得分:1)
public static Node first;
这就是问题所在。您创建的每个LinkedList
共享相同的Node
,因此它们实际上都是相同的列表。
不要将static
用于实例变量。