【发布时间】:2013-11-17 23:13:47
【问题描述】:
我有这个链表方法,用于在之前插入,所以它需要一个节点并将其放在 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("|||");
}
【问题讨论】:
-
有什么东西在重复调用它吗? beforeNode 是做什么的?你没有while循环,所以它可以被其他东西递归调用。我也看不到任何可以让它长 4 的东西。
-
肯定有东西在重复调用 insertBefore。
-
@Jack 我主要使用它 myLinkedList.insertBefore(myNode4, myNode2);
-
问题不可能是这个方法。没有循环,也没有递归调用。也看看其他方法。
-
我的猜测是存在某种交互,并且在 insertBefore 中调用的方法之一在某些条件下调用 insertBefore。您是否得到了一个可以跟踪的异常?它只是冻结?有问题的迹象是什么?
标签: java arrays function methods linked-list