【发布时间】:2012-03-11 21:42:20
【问题描述】:
为了存储图形(邻接表),我必须为一个类创建一个链表数组。我们必须使用 Java。我可以创建数组并实例化每个链表,但是当我将第一个元素添加到每个链表时,每个 链表都会更改,而不仅仅是数组索引处的那个。
Node [] adjList;
for(i=0;i<adjList.length;i++)
adjList[i] = new Node(0,0,null);
这会实例化每个新的链表 [Node 是我自己的类,带有构造函数 Node(int head, int data, Node next) 并扩展 LinkedList]
然后我将第一个值添加到每个节点:
for(i=0;i<adjList.length;i++)
adjList[i].setHead(i+1); // numbers 1 to end are the graph vertices
或
for(i=0;i<adjList.length;i++)
adjList[i].add(new Node(i+1,0,null);
我使用打印语句来调试代码 在这些循环结束时,我打印出每个链接列表,但对于每个链接列表,值都是最后一个
即。如果adjList.length = 2,它会打印出来
[3,0,null] // adjList[0]
[3,0,null] // adjList[1]
[3,0,null] // adjList[2]
编辑:这里是 Node 类
import java.util.LinkedList;
public class Node extends LinkedList{
private static int head;
private static int data;
private static Node next;
public Node(int h,int d,Node n) {
head = h;
data = d;
next = n;
}
public int getHead(){ // getNext() and getData() are the same
return head;
}
public void setHead(int h){ // setNext() and setData() are basically the same
head = h;
}
}
【问题讨论】:
-
这是作业吗?我想我们需要
Node的代码来帮助... -
贴出
Node的定义。 -
为什么你的
Node类扩展LinkedList?这里没有 is-a 关系。 -
对我来说看起来像一个空数组;更容易看到实际代码。
-
你能显示打印的代码吗?此外,
adjList[i].add(new Node(i+1,0,null);行将Node添加到另一个Node。我以为每个Node都是一个整数链表。
标签: java arrays linked-list