0
votes

Pourquoi utiliser "node.getNext () == null" en tant que convention pour le nœud de défunt?

Il s'agit d'un fragment de code du livre "Structures de données et algorithmes de Java (6ème éd.)" Cette méthode fait partie de la mise en œuvre LinkedPositionAllist. Je ne comprends pas exactement que fait la ligne: "Si (node.getNext () == null) // Convention pour le nœud de défunt" est pour. J'apprécierais certaines explications sur ses fonctionnalités.

// private utilities
/** Validates the position and returns it as a node. */

private Node<E> validate(Position<E> p) throws IllegalArgumentException { 

if (!(p instanceof Node)) throw new IllegalArgumentException("Invalid p");

Node<E> node = (Node<E>) p; // safe cast

if (node.getNext( ) == null) // convention for defunct node
    throw new IllegalArgumentException("p is no longer in the list");

return node;
}


2 commentaires

À moins que je ne manque quelque chose, ce code renvoie toujours son argument ou ses lancers. Pouvez-vous nous dire ce que le livre de votre lecture dit Ce code est censé faire? Par exemple, quel est un "nœud" dans ce contexte? Est-ce un nœud d'un graphique ou autre chose? Cela peut nous aider à comprendre pourquoi un nœud sans autre est considéré comme défunt.


Les nœuds sont utilisés comme blocs de constructeur de la localisocialiste LinkedPhaseList, basé sur une DoubleLylinkedList.


3 Réponses :


1
votes

Dans ce cas Noeud de défunt signifie un nœud non existant. xxx

Dans ce cas, le nœud p a une méthode appelée getNext () qui peut renvoyer null, si cela le fait, alors signifie que c'est le dernier des nœuds. En d'autres termes, il n'y a pas de nœud suivant.

Ce type de structures, comme son nom l'indique, liez-vous entre eux. getNext () doit renvoyer une position dans la mémoire dans laquelle le nœud suivant est, si cette position n'existe pas alors, il n'y a pas de nœud là-bas.

généralement Node aura probablement une méthode appelé setNext (position suivante) Ceci est la contrepartie qui enregistre la position de l'élément suivant pour ce nœud.


0 commentaires

2
votes

La mise en œuvre dans le livre que vous posez des questions sur les utilisations Un nœud explicite qui représente une position "une dernière fois la fin" dans la structure. Par conséquent, tous les nœuds de la liste doivent avoir un prochain nœud. Par conséquent, si le noeud getnext () méthode renvoie null ce nœud n'est pas dans la liste.


0 commentaires

0
votes

Si vous lisez dans le livre, la «mise en œuvre de la liste doublement liée» du chapitre 7 explique la notion la notion de défunt à la suite de vous débarrasser de toute position supprimée (noeud) de la liste. Parce que la méthode supprimer () implémente que la position à supprimer est définie sur null valeur.

donc la méthode valider () vérifie en réalité si la position d'entrée n'est pas supprimée de la liste .. Comment? Encore une fois, en vérifiant si appeler getNext () sur son null valeur. Si tel est le cas, il a dû être défini sur null en tant que position supprimée à l'aide de la méthode Supprimer () . Par conséquent, il jette une erreur car la position d'entrée P est plus dans la liste (puisqu'il s'agit d'une position supprimée).

Pour mieux comprendre, désignez simplement la méthode Suppr () là dans le livre. Ici c'est du livre: xxx


0 commentaires