2016-05-07 3 views
0

Impression de la valeur du nœud pendant la boucle je l'ai découvert boucle infinie toujours sur le premier nœud lorsque, par exemple, la recherche d'un nœud qui ne figure pas dans la liste Ça marche). Im en utilisant un noeud pour pointer le premier élément ainsi que le dernier.Lié boucle infinie liste sur le premier noeud

Ceci est ma méthode de recherche

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

la méthode d'insertion qui insère toujours des éléments au début

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

Il est comme le premier élément entré a un nœud suivant qui n'est pas réglé sur null , mais je ne sais pas pourquoi il nest pas null

+0

LNode currNode = tête; après ce point si votre tête est nulle, vous devez ignorer la boucle – Striker

+0

@Striker qui lancerait un NPE à currNode.value provoquant l'exécution de la boucle while de toute façon – thepieterdc

+0

Je réévaluais le code et le nœud suivant du premier élément entré est le nœud lui-même, je ne sais pas pourquoi .. je pensais à si (currNode.next == queue), mais il retourne NPE –

Répondre

2

Je pense que dans

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

est un retour manquant. vous faites une boucle avec la tête et augmentez la taille de 2 avec un insert.

+0

Oh, à droite, n'a pas remarqué que, ajouté une autre déclaration et maintenant ça marche , Je vous remercie –