我有这个用于之前插入的链表方法,所以它需要一个节点并将它放在beforeNode之前。目前它确实如此,但随后它会继续下去并使链表无限大,而它应该只有四个长。有谁知道它为什么继续前进?
private void insertBefore(Node aNode, Node beforeNode)
{
if(this.getPrevious(beforeNode) != null) {
this.getPrevious(beforeNode).setNext(aNode);
// aNode.setPrevious(beforeNode);
//this.getPrevious(this.getPrevious(beforeNode)).setNext(aNode);
} else {
head = aNode;
}
aNode.setNext(beforeNode);
// beforeNode.setPrevious(aNode);
}
这是打印列表方法可能与它有关,但我不这么认为
public void printList()
{
Node currentNode;
currentNode = this.getHead();
System.out.print("head ->");
while(currentNode!=null)
{
System.out.print(currentNode.getData().toString()+ " -> ");
currentNode = currentNode.getNext();
}
System.out.println("|||");
}
答案 0 :(得分:0)
我想一些你如何为aNode和beforeNode传递相同的节点。在java中,每个对象都是一个引用。您是否有机会尝试创建一个名为beforeNode的副本?它可能使两者相同并导致链表具有自循环。使用复制构造函数或克隆之类的东西来获取重复的节点。