Utilisation de listes chainées
Bonjour,
J'ai une liste chainée dont je voudrait inscrire les éléments dans une String. Celle-ci doit être de la forme : [3,2,1,0]. J'ai en fait le résultat suivant chaque fois que s'insère un élément dans ma liste :
[0] puis [1,0] là c'est bon.
Puis [2,0] alors que je devrais obtenir [2,1,0].
Quelqu'un pourrait me dire comment je dois procéder, j'avoue avoir du mal à comprendre le fonctionnement.
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
public class Pile4 implements PileI, Cloneable {
/** la liste des Maillons/Elements */
private Maillon stk;
/** la capacité de la pile */
private int capacite;
/** le nombre */
private int nombre;
/**
* Classe interne "statique" contenant chaque élément de la chaine c'est une
*
*/
private static class Maillon implements Cloneable {
private Object element;
private Maillon suivant;
public Maillon(Object element, Maillon suivant) {
this.element = element;
this.suivant = suivant;
}
public Maillon suivant() {
return this.suivant;
}
public Object element() {
return this.element;
}
public Object clone() throws CloneNotSupportedException {
Maillon m = (Maillon) super.clone();
m.element = element;
return m;
}
}
/**
* Création d'une pile.
*
* @param taille
* la taille de la pile, la taille doit être > 0
*/
public Pile4(int taille) {
if (taille <= 0)
taille = CAPACITE_PAR_DEFAUT;
this.stk = null;
this.capacite = taille;
}
public Pile4() {
this(PileI.CAPACITE_PAR_DEFAUT);
}
public void empiler(Object o) throws PilePleineException {
if (estPleine())
throw new PilePleineException();
if (this.stk == null){
this.stk = new Maillon(o, null);
this.nombre = 1;
}
else {
Maillon pere = this.stk;
this.stk = new Maillon (o, pere);
nombre ++;
}
}
public String toString() {
StringBuffer sb = new StringBuffer("[");
//Maillon fils = null;
sb.append(this.stk.element());
if (this.stk.suivant() != null)
{
sb.append(", " + this.stk.suivant.element());
this.stk = this.stk.suivant();
}
sb.append("]");
return sb.toString();
} |