任何人都知道为什么链接列表的这种方法会一直持续下去?

时间:2013-11-17 23:13:48

标签: java arrays function methods linked-list

我有这个用于之前插入的链表方法,所以它需要一个节点并将它放在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("|||");
    }

1 个答案:

答案 0 :(得分:0)

我想一些你如何为aNode和beforeNode传递相同的节点。在java中,每个对象都是一个引用。您是否有机会尝试创建一个名为beforeNode的副本?它可能使两者相同并导致链表具有自循环。使用复制构造函数或克隆之类的东西来获取重复的节点。