Je tente d'écrire une classe java CircularList qui contient le nœud habituelle classe interne et les variables d'instance:Programmation Java - Circulaire LinkedList
Répondre
Conseil ... liste circulaire devrait avoir suivant et précédent au lieu de premier et dernier. La logique compte
Merci beaucoup. – user508833
OK, je ne vais pas vous donner l'implémentation complète de la classe, mais je vais vous donner quelques conseils.
- Vous n'avez pas besoin de contenir une référence au dernier élément. Placez une référence précédente et suivante à vos nœuds et votre dernier nœud sera le premier.Prev
Outre le fait que les listes circulaires n'ont pas de fin, ils sont tout à fait les mêmes que les listes régulières, mais où vous trouvez le dernier élément comme celui-ci :
Nœud tmp = premier;
while (tmp.Next! = Null) tmp = tmp.Next;
Dans une liste circulaire, l'idée est comme ceci:
Node tmp = first;
while (tmp.Next != first)
tmp = tmp.Next;
Parce que vous ne trouverez jamais un nœud pointant vers nulle, sauf si la liste est vide. Un dernier conseil, si vous avez besoin de mettre en œuvre un indexeur, rappelez-vous que dans une liste circulaire il n'y a pas une telle chose que l'indice hors de portée, car
list[count] = list[0] = list[count * k]
Gardez cela à l'esprit, donc le calcul de votre index pour ces méthodes peuvent être assez difficile. Pour les index positifs, l'idée principale est:
index = index % count;
Pour les négatifs, c'est légèrement différent. J'espère pouvoir vous aider avec mes mots. Si vous voulez une mise en œuvre, je crois qu'il devrait y avoir quelques-uns si vous demandez poliment à Google :)
Bonne chance!
Merci beaucoup – user508833
Bonjour, J'ai ajouté le programme que j'ai conçu et j'ai besoin d'aide supplémentaire. Merci – user508833
Pourriez-vous me regarder s'il vous plaît? – user508833
Je ne sais pas quel est votre problème, vous semblez avoir tout ce dont vous avez besoin. La seule différence entre cette liste liée et une normale serait d'ajouter à la fin.
Dans une liste liée régulière, vous créez un nouveau noeud et définissez le dernier élément sur ce noeud. Dans ce cas, vous changez le pointeur dans le • Dernier nœud pour pointer vers le nouveau nœud, et faites pointer le nouveau nœud sur • Premier.
La suppression fonctionne de la même manière qu'une liste chaînée normale. Chaque fois que vous voulez supprimer un nœud, vous trouvez quel autre nœud pointe vers celui-ci (soit en précédent, soit en supprimant le premier, vérifiez • Dernier) et faites le pointer vers l'endroit où le nœud en cours de suppression pointait.
Si cela ne résout pas votre problème, faites le moi savoir et je vais essayer de vous aider.
Juste quelqu'un a déjà remarqué demandé exactement la même question: Can I use java.util.LinkedList to construct a circular/cyclic linked list?
Salut, j'ai ajouté le programme que j'ai trouvé et j'ai besoin d'aide supplémentaire. Merci – user508833
Tout d'abord, je crois que vous avez une erreur dans removeLast(): En faisant current.setNextNode (..) à l'intérieur de la boucle while, chaque noeud pointe vers le premier. Vous voulez l'avoir en dehors du moment, donc seul le pointeur du second dernier nœud est changé. Pour la question, vous appelez simplement removeByPosition() avec p comme argument. Changez cette fonction pour définir tail = current.getNextNode() à la fin. Puis continuez à l'appeler avec p comme argument jusqu'à ce qu'il ne reste plus qu'un seul noeud. – Zepee
Pourriez-vous s'il vous plaît regarder cela pour moi? – user508833
class Node {
int value;
Node next;
Node prev;
Node(int initialValue) {
value = initialValue;
next = null;
prev = null;
}
public int getValue() {
return this.value;
}
}
class NodeList {
Node pointer;
NodeList() {
pointer = null;
}
public void insertNode(int nodeValue) {
Node newNode = new Node(nodeValue);
if(pointer == null) {
newNode.next = newNode;
newNode.prev = newNode;
}else if(pointer.next == null && pointer.prev == null && pointer != null) {
newNode.next = pointer;
newNode.prev = pointer;
pointer.prev = newNode;
pointer.next = newNode;
}
else if(pointer != null) {
newNode.next = pointer.next;
newNode.prev = pointer;
pointer.next.prev = newNode;
pointer.next = newNode;
}
pointer = newNode;
System.out.println(“Successfully inserted : ” + pointer.getValue());
}
public void printRing(boolean direction) {
Node tempNode = pointer;
do {
System.out.println(“Value = ” + tempNode.getValue());
tempNode = direction ? tempNode.next : tempNode.prev;
} while(tempNode.value != pointer.value);
}
}
- 1. Inverser LinkedList en Java
- 2. Java Convert générique LinkedList to Array Generic
- 3. Java: Problème avec TreeSet et LinkedList
- 4. ShortBuffer circulaire pour Audio en Java
- 5. programmation java
- 6. Java, LinkedList de chaînes. Insérer par ordre alphabétique
- 7. Java LinkedList Iterators: Pourquoi ne retournent-ils que des objets?
- 8. Quelle structure de données? LinkedList ou tout autre en Java?
- 9. Java Deque sans utiliser les classes existantes comme LinkedList?
- 10. LinkedList, First and Last
- 11. LinkedList "node jump"
- 12. Création de LinkedList personnalisé
- 13. LinkedList (T) add-method
- 14. Programmation simultanée en Java
- 15. programmation Java SWT
- 16. langage de programmation Java
- 17. Java Socket Programmation
- 18. Socket Programmation en Java
- 19. Programmation en Java bytecode
- 20. Programmation Java Socket
- 21. décalage circulaire c
- 22. circulaire Référence
- 23. dépendance circulaire
- 24. match circulaire
- 25. Tri pas une LinkedList standard
- 26. Get DefaultListModel pour utiliser LinkedList
- 27. Comment Xml sérialiser une LinkedList?
- 28. Programmation de socket en Java
- 29. Aide à la programmation Java
- 30. Java Generics Programmation avec Collection
Ce coutures comme un travail à domicile .. ai-je suppose que cela? –
Salut étudiant! Plz essayer quelque chose et quand vous atteignez un point où vous êtes coincé, nous pouvons vous pousser un peu.Imo regarde les premières diapositives de la conférence et les premiers exercices de vos travaux pratiques en laboratoire. – Muggen
les gens seront prêts à vous aider si vous leur montrez ce que vous avez essayé jusqu'à présent. – Naveen