2012-10-17 2 views
0

Lors de l'ajout d'un nœud à une liste chaînée je suppose que l'idée serait la suivante:méthode add de liste chaînée java

Declare newNode 
Add to the front if front == null 
else if there is already a node in the list 

Toutefois, cela ne semble pas fonctionner

public boolean add (E e) { 

    ListNode<E> newNode = new ListNode<E>(e,null); 

    if (front == null){ 
     front = newNode; 
     rear = newNode; 
     objectCount++; 
     return true; 
    } 

     front.next = newNode; 
     rear.next = newNode; 
     rear = newNode; 
     objectCount++; 
     return true; 
} 

mais quand je exécutez ceci pour la liste "a", "b", "c", "d", "e" il ne renvoie pas une taille de liste de 5 mais de taille 2. Qu'est-ce qui ne va pas ici?

Répondre

2

Vous ajoutez le nouveau noeud à côté de vos noeuds avant et arrière. Afin de résoudre le problème, vous devez simplement l'ajouter au nœud arrière (en supposant que votre liste n'acceptera que de nouvelles valeurs à l'arrière).

//front.next = newNode; 
rear.next = newNode; 
rear = newNode; 
objectCount++; 
return true; 
+0

Cela a fonctionné très bien et je comprends comment vous l'avez fait et ce que mon erreur était.Bonne réponse. – nitiger

+0

@nitiger vous êtes les bienvenus :). S'il vous plaît ne pas oublier de marquer le poste comme une réponse après 15 minutes, vous avez posté la question. –

0

Vous ne devez pas modifier le pointeur suivant à l'intérieur du noeud avant. Si un nœud avant existe, suivre les étapes suivantes:

  1. Créer un nouveau nœud
  2. nœud suivant du jeu arrière vers le nouveau nœud.
  3. Définir le noeud arrière sur le nouveau noeud.
  4. Incrémenter le compteur.
Questions connexes