[JAVA] Iterator dans Liste avec Node

Fermé
hyper - 31 déc. 2009 à 15:07
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 31 déc. 2009 à 15:20
Bonjour,

je désir parcourir ma liste chainée, sans utiliser les méthodes d'une LinkedList, à l'aide d'un itérateur qui parcourerait les différends noeuds.

Voici mon code:
-------------------------------------------------------------------------
import java.util.*;

/**
* Write a description of class ListNode here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class ListNode
{
//v d'instance
private Node first;
private Node last;
private int size;

//ma classe de noeuds
public class Node {
CD element;
Node next;
}

//Constructeur d'une liste vide
public ListNode (){
this.first=null;
this.last=null;
this.size=0;
}

//Ajout d'un élément dans la liste
public void add (CD e) {
if (first==null) {
Node newNode = new Node ();
newNode.element = e;
first=newNode;
last=first;
size++;
}

Node curent = first;
while (curent.next != null) {
curent = curent.next;
}
Node lastNode = new Node ();
curent.next=lastNode;
lastNode.element = e;
size++;

}

//Affiche l'entièreté des éléments (des CD) contenu dans ma liste
public void show () {
if (first==null) {}
Iterator <Node> it = first.iterator();
while (it.hasNext()){
System.out.println (it.element.next());}
}

}-----------------------------------------------------------------------------------------

l'erreur se situe dans la méthode show, il ne reconnait pas la méthode iterator()

Pour l'affichage, ça devrait allé ? Je peux aller rechercher mon element de puis l'itérateur qui parcours les noeuds ?

merci de votre aide
A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 663
31 déc. 2009 à 15:20
first.iterator();


first est de type Node.

Ta classe Node ne possède aucune méthode qui s'appelle Iterator. Les structures de données de base de JAva en possèdent une, mais si tu n'as pas le droit de les utiliser alors il va falloir coder ta propre méthode "iterator()".

D'autre part, ça m'étonnerai que ce que tu souhaites faire est d'avoir un noeud qui renvoie un iterateur. Ce serait plutot la liste ListNode elle-même qui devrait pouvoir en fournir un, qui pointerait vers le premier ou le dernier au départ.
0