Ajout d'éléments à la fin de la liste chaînée
J'étudie pour un examen, et c'est un problème à partir d'un vieux test:
Nous avons une seule liste, avec une liste tête avec la déclaration suivante:
class Node {
Object data;
Node next;
Node(Object d,Node n) {
data = d;
next = n;
}
}
Écrire une méthode void addLast(Node header, Object x)
qui ajoute x
à la fin de la liste.
Je sais que si j'avais quelque chose comme:
LinkedList someList = new LinkedList();
Je pourrais juste ajouter des éléments à la fin en faisant:
list.addLast(x);
Mais comment puis-je faire ici?
Pourquoi avez-vous besoin de passer par le Nœud d'en-tête pour ajouter quelque chose à la fin de la liste?
écrivez votre propre mise en œuvre pour
probablement demander à son professeur.
c'est la question exacte, idk.
Essayez juste de l'ajout de la méthode à la classe de Nœud comme une méthode statique, et la boucle à la fin de l'en-tête du Nœud, puis l'ajout d'un nouveau nœud à la fin de la liste.
écrivez votre propre mise en œuvre pour
addLast(Node header, Object x) that adds x at the end of the list
google pour ajouter l'élément à la fin de individuellement linkedlist en javaprobablement demander à son professeur.
c'est la question exacte, idk.
Essayez juste de l'ajout de la méthode à la classe de Nœud comme une méthode statique, et la boucle à la fin de l'en-tête du Nœud, puis l'ajout d'un nouveau nœud à la fin de la liste.
OriginalL'auteur John | 2011-03-08
Vous devez vous connecter pour publier un commentaire.
Je voudrais donc faire la si statemtn juste de retour, Et le dernier en-tête.ensuite d'en-tête.next=addLast(en-tête,null)?
Sorte de, vous avez besoin pour passer de x à travers la boucle récursive: addLast(en-tête, x) et puis si l'en-tête == null, créer le nouveau nœud, ajouter X à elle, et de renvoyer le nouveau nœud. Si ce n'est dans le cas de base, vous devez retourner le résultat de addLast
Votre code s'exécute en O(n) fois, mais cette opération doit être O(1). Si vous gardez une trace de la queue nœud, vous n'avez pas besoin d'une boucle sur chaque élément de la liste. Tout ce que vous faire est de mettre à jour la queue pour pointer vers le nouveau nœud.
Le problème énoncé indique que nous devons prendre comme entrée le nœud de tête tout en ajoutant à la fin de la liste.
OriginalL'auteur therin
Vous voulez naviguer à travers l'ensemble de la liste liée à l'aide d'une boucle et de la vérification de la "prochaine" de la valeur de chaque nœud. Le dernier nœud sera celui dont la valeur est null. Simplement faire de ce nœud suivant la valeur d'un nouveau nœud que vous créez avec les données d'entrée.
C'est l'idée de base. C'est bien sûr, le pseudo-code, mais il devrait être assez simple à mettre en œuvre.
OriginalL'auteur Benjamin S
Ici est une solution partielle à votre liste liée de classe, j'ai laissé le reste de la mise en œuvre afin de vous et aussi de gauche la bonne idée d'ajouter une queue noeud dans le cadre de la liste liée à vous.
Le nœud du fichier :
Et voici une Liste Liée fichier :
OriginalL'auteur Literati Insolitus
boucle le dernier élément de la liste chaînée qui ont à côté du pointeur à null alors modifier la prochaine pointeur sur un nœud qui a le data=objet et à côté du pointeur = null
OriginalL'auteur Ahmed Elmorsy
Voici un indice, vous avez un graphe de nœuds dans la liste liée, et que vous gardez toujours une référence à la tête, qui est le premier nœud dans la linkedList.
suivant pointe vers le nœud suivant dans la linkedlist, donc lors de la prochaine est nul vous êtes à la fin de la liste.
OriginalL'auteur crowne
La addLast() a besoin de quelques optimisations comme la boucle while à l'intérieur de addLast() a O(n) la complexité. Ci-dessous est ma mise en œuvre de la LinkedList. Exécutez le code avec ll.addLastx(i) une fois et l'exécuter avec ll.addLast(i) encore une fois , vous pouvez voir leur, c'est beaucoup de différence dans le temps de traitement de addLastx() avec addLast().
Node.java
LinkedList.java
OriginalL'auteur Abhishek Panda
Les programmes ci-dessus peut vous donner une NullPointerException. C'est un moyen facile d'ajouter un élément à la fin de la linkedList.
OriginalL'auteur user7420004
Si vous gardez une trace de la queue nœud, vous n'avez pas besoin d'une boucle sur chaque élément de la liste.
Tout ce que vous faire est de mettre à jour la queue pour pointer vers le nouveau nœud:
En anglais:
OriginalL'auteur TomDane