2016-05-07 2 views
0

Печать значения узла во время цикла я обнаружил его бесконечные петли всегда на первом узле, когда, например, поиск узла, которого нет в списке (если его в списке оно работает). Im использует узел, чтобы указать первый элемент, а также последний.Связанный список бесконечного цикла на первом узле

Это мой метод поиска

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; 
} 

метод вставки, который всегда вставляет элементы в начале

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

Это как первый вошел элемент имеет следующий узел, который не установлен в нуль , но я не знаю, почему оно не нулевой

+0

LNode currNode = head; после этой точки, если ваша голова равна нулю, вы должны пропустить цикл – Striker

+0

@Striker, который будет бросать NPE в значение currNode.value, чтобы цикл while не выполнялся anyways – thepieterdc

+0

Я пересматривал код и следующий узел первого Введенный элемент - это сам узел, я не знаю, почему .. Я думал о if (currNode.next == tail), но он возвращает NPE –

ответ

2

Я думаю, что в

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

возвращение отсутствует. вы делаете петлю с головой и увеличиваете размер на 2 с помощью одной вставки.

+0

О, верно, не заметил этого, добавил оператор else, и теперь он работает , Спасибо –

Смежные вопросы