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



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

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

相关内容

  • 没有找到相关文章

最新更新