【问题标题】:Linked List infinite loop on first Node第一个节点上的链表无限循环
【发布时间】:2016-05-07 14:00:44
【问题描述】:

在循环期间打印节点的值我发现它总是在第一个节点上无限循环,例如,搜索不在列表中的节点(如果它在列表中它可以工作)。我使用一个节点来指向第一个元素以及最后一个元素。

这是我的搜索方法

public LNode search(int data){
    LNode currNode = head;
    while(data != currNode.value){
        if(currNode.next == null)
            return null;
        else{
            currNode = currNode.next;
            System.out.println("currnode " + currNode.value);
        }
    }
    return currNode;
}

总是在开头插入元素的insert方法

public void insert( LNode aNode ) { 
    if(head==null){
        head = aNode;
        tail = aNode;
        size++;
    }
    aNode.next = head;
    head = aNode;
    size++;
}

就像第一个输入的元素有一个未设置为空的下一个节点,但我不知道为什么它不为空

【问题讨论】:

  • LNode currNode = head;在此之后,如果您的 head 为空,则应跳过循环
  • @Striker 会在 currNode.value 处抛出 NPE,导致 while 循环无论如何都不会被执行
  • 我正在重新评估代码,第一个输入元素的下一个节点是节点本身,我不知道为什么..我在考虑 if(currNode.next == tail) ,但它返回 NPE

标签: java list loops infinite


【解决方案1】:

我认为

if(head==null){
    head = aNode;
    tail = aNode;
    size++;
}

是缺少返回。 您制作一个带头部的循环,并通过一次插入将大小增加 2。

【讨论】:

  • 哦,对了,没注意,加了else语句,现在可以了,谢谢
猜你喜欢
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2015-08-08
  • 2016-02-22
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多