【发布时间】: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