[Débutant][Conception] Modéliser une pile d'entiers
bonjour à tous, je viens de me mettre au java et à la prog objet au passage...
J'ai reussi à realiser une pile d'entier avec 2 classes(pile et cellul) et 1 classe pour avoir un main :
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| public class Cellul
{
private int valeur; // valeur de la cellule
private Cellul suivant; //cellule suivante
public Cellul(int v) {this.valeur = v;} //constructeur
public int getValeur() {return this.valeur;} //accesseur
public Cellul getSuivant() {return this.suivant;} //accesseur
public void setSuivant(Cellul c) {this.suivant = c;} //accesseur
public void setValeur(int v) {this.valeur = v;} //accesseur
}
public class Pile
{
private Cellul sommet;
public Pile(int t) // constructor
{
this.sommet = new Cellul(t);
}
public boolean pile_vide() // vérifie si la pile est vide
{
if (this.sommet == null)
{return true;}
else
{return false;}
}
public void empiler(int t) // empile un élément
{
if (pile_vide())
{this.sommet = new Cellul(t);}
else
{
Cellul c = new Cellul(t);
c.setSuivant(this.sommet);
this.sommet = c;
}
}
public void depiler() // dépile un élément
{
if (this.sommet != null) {this.sommet = this.sommet.getSuivant();}
}
public int dernier_insere() // retourne le dernier élément entré
{
if (!pile_vide())
return this.sommet.getValeur();
else
return -1; //gestion erreurs
}
public int nb_element() // retourne le nombre d'élément de la pile
{
if (!pile_vide())
{
Cellul c;
int cpt = 0;
for (c = this.sommet; c != null; c = c.getSuivant()) cpt++;
return cpt;
}
else return 0;
}
public void afficher_pile() // affiche le contenu de la pile
{
String str_msg;
if (!pile_vide())
{
Cellul c;
c = this.sommet;
str_msg = "Contenu de la pile : ";
while (c != null)
{
str_msg += c.getValeur();
if (c.getSuivant() != null) str_msg += " - ";
c = c.getSuivant();
}
}
else str_msg = "Pile vide";
System.out.println(str_msg);
}
}
public class Principale
{
public static void main(String[] args)
{
Pile maPile = new Pile(1); //instanciation de l'objet maPile
maPile.empiler(2); //empiler une cellule de valeur 2
maPile.empiler(3); //empiler une cellule de valeur 3
maPile.depiler(); //depiler le dernier element insere
maPile.empiler(4); //empiler une cellule de valeur 4
maPile.empiler(5); //empiler une cellule de valeur 5
maPile.empiler(6); //empiler une cellule de valeur 6
maPile.depiler(); //depiler le dernier element insere
maPile.afficher_pile(); // affichage du contenu de la pile
System.out.println("nombre d'element : " + maPile.nb_element()); // afficher le nombre d'elements de la pile
System.out.println("Dernier element insere : " + maPile.dernier_insere()); //afficher le dernier element insere
while (!maPile.pile_vide()) // on depile tous les elements
{
maPile.depiler();
}
maPile.afficher_pile(); // affichage du contenu de la pile
System.out.println("nombre d'element : " + maPile.nb_element()); // afficher le nombre d'elements de la pile
System.out.println("Dernier element insere : " + maPile.dernier_insere()); //afficher le dernier element insere
}
} |
bon ca ca marche et ca ne pose pas de problemes.
maintenant je voudrais faire une pile d'entier avec une seule classe et la je seche, je n'arrive pas à la concevoir.
elle devrait avoir cette forme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Pile_entier
{
private int valeur;
private Pile_entier suivant;
public Pile_entier(){} // constructeur
public boolean pile_vide() // Renvoie true si la pile est vide
{}
public void empiler(int n)
{}
public void depiler()
{}
} |
donc si quelqu'un pouvait m'aider... :wink:
@+