Mesurer la taille/longueur de la seule liste liée dans Java?
J'ai besoin d'aide pour faire le int size();
méthode pour une seule liste liée dans Java.
C'est ce que j'ai à ce jour, mais il n'a pas de retour de la taille correcte de la liste.
public int size()
{
int size = 0;
Node CurrNode = head;
while(CurrNode.next != null)
{
CurrNode = CurrNode.next;
size++;
}
return size;
}
Quelqu'un peut-il m'aider à mettre en œuvre cette méthode en Java?
Quelle est la question?
ressemble à un cas d'école - pour le monde réel de code que vous souhaitez utiliser l'un des nombreux de la Liste des implémentations de la bibliothèque standard
Aussi: La java de la convention est que les noms de variables commencent avec une lettre minuscule, de sorte que vous devriez renommer
ressemble à un cas d'école - pour le monde réel de code que vous souhaitez utiliser l'un des nombreux de la Liste des implémentations de la bibliothèque standard
Aussi: La java de la convention est que les noms de variables commencent avec une lettre minuscule, de sorte que vous devriez renommer
CurrNode
en currNode
. Il fera collègues java programmeurs beaucoup plus friands avec votre code (Ma première pensée, par exemple, a été "Pourquoi est-il de l'accès à une variable statique dans la classe CurrNode
", et j'avais besoin d'une deuxième lecture pour voir qu'il n'est pas le cas)OriginalL'auteur user1702633 | 2012-09-27
Vous devez vous connecter pour publier un commentaire.
Les améliorations les plus importantes que vous pouvez faire est d'utiliser Java Convension et l'utilisation camelCase variables locales.
Vous pouvez l'écrire comme ça.
que vous ré-écrit couramment utilisée pour la classe en Java, je vous suggère de regarder comment c'est fait-y si vous voulez une meilleure façon de faire les choses.
De LinkedList
Comme vous pouvez le voir, lorsqu'un élément est ajouté à la taille est incrémenté et lorsqu'un élément est supprimé id décrémenté d'économie d'avoir à parcourir la liste pour obtenir la taille.
ce code suppose que le
head
n'est pas une entrée juste le début de la liste chaînée comme LinkedList. si vous voulez que ce soit un nœud, vous devez vérifier si il estnull
et ajouter un.D'où vient
.next
venir? Je ne vois pas que c'est une partie de laNode
classe, et il n'y a pas de déclaration de variable.Le
.next
est dans l'exemple de code à partir de l'OP. J'ai supposé à partir du code à condition qu'il existe un champ appelénext
Merci Peter. J'étais curieux parce que j'ai trouvé cette utilisation de
.next
dans le livre de Fissuration du Codage de l'Entretien, et il a été d'une variable de typeNode
. C'est probablement ce qu'il était dans l'OP du code de trop.OriginalL'auteur Peter Lawrey
La façon la plus simple serait d'avoir variable qui suit la taille initialisé à 0. Ensuite, chaque fois que vous ajoutez un nœud, c'est juste la taille++, ou taille-lorsque vous supprimer un nœud. Vous méthode size() n'a plus qu'à retourner cette variable sans parcourant la liste.
si l'entrée de la linkedlist est la même classe que celui que vous êtes en l'ajoutant, ça fonctionnera toujours. par exemple, addList(LinkedList otherList) { addLast(otherList.de la tête); ce.taille += otherList.size(); }
OriginalL'auteur lotophage
Vous avez besoin pour passer la liste à votre méthode et de vérifier currNode!= null :
OriginalL'auteur Han Kai
Bien, la façon la plus simple pour calculer la longueur est de vérifier si le currentNode!=null et de garder la currentNode incrémentation .
On peut utiliser tout ou une boucle for pour mettre en œuvre cette.
Ci-dessous est un exemple de cas où la boucle for est utilisée.
OriginalL'auteur Sanket Saha