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;
}
3 Réponses :
Dans ce cas Noeud de défunt em> fort> signifie un nœud non existant. Dans ce cas, le nœud 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. P> généralement p code> a une méthode appelée getNext () code> 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. em> p> Node code> aura probablement une méthode appelé setNext (position
La mise en œuvre dans le livre que vous posez des questions sur les utilisations Un nœud code> explicite code> 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 () code> méthode renvoie null code> ce nœud n'est pas dans la liste. P>
Si vous lisez dans le livre, la «mise en œuvre de la liste doublement liée» du chapitre 7 explique la notion em> la notion de défunt em> à la suite de vous débarrasser de toute position supprimée (noeud) de la liste. Parce que la méthode donc la méthode code> valider () code> 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 Pour mieux comprendre, désignez simplement la méthode Suppr () là dans le livre. Ici c'est du livre: p> supprimer () code> implémente que la position à supprimer est définie sur null code> valeur. getNext () code> sur son null code> valeur. Si tel est le cas, il a dû être défini sur null code> en tant que position supprimée à l'aide de la méthode Supprimer () CODE>. Par conséquent, il jette une erreur car la position d'entrée P est
À 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 i> 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.