2017-09-26 3 views
0

J'essaie de supprimer le curseur de la liste et de le faire référence au précédent CarListNode (ou la tête, si le curseur a précédemment référencé la tête de la liste). Tout en retournant l'information à l'intérieur du curseur. Mon code ne supprime pas correctement le curseur. Quel est le problème dans mon code?Suppression du curseur d'une liste doublement chaînée

Voici mon code actuel:

public Fruit removeCursor() throws EndOfListException { 

    if (cursor == null) { 
     throw new EndOfListException(); 

    } else if (cursor.getPrev() == null) { 
     head = cursor.getNext(); 
     cursor.setNext(null); 
     cursor.setPrev(null); 
     cursor = head; 

    } else if (cursor.getNext() == null) { 
     tail = cursor.getPrev(); 
     cursor.setPrev(null); 
     cursor.setNext(null); 
     cursor = tail; 

    } else { 
     cursor.setData(cursor.getNext().getData()); //this isn't a singly linked list 
     cursor.setNext(cursor.getNext().getNext()); 
    } 

    count--; 

    return cursor.getData(); 
} 
+0

Quelle est votre question? –

+0

Désolé tard dans la nuit. Je demandais juste ce qui ne va pas avec mon code parce que le curseur n'est pas enlevé à prévu. –

+0

* Mon code ne supprime pas correctement le curseur. Quel est le problème dans mon code? * Qui sait ce que le curseur est là jusqu'à ce que vous le dites, – nullpointer

Répondre

0

Votre else clause ne pas "supprimer le curseur" ...

Essayez quelque chose comme ceci:

else { 
    cursor.getPrev().setNext(cursor.getNext()); 
    cursor.getNext().setPrev(cursor.getPrev()); 
    // You might want to release the cursor's item, EG: 
    cursor = null; 
    cursor = cursor.getNext(); 
}