public class Pile {
/*
* les éléments de la pile seront rangés dans un tableau
*/
public static int [] tab = new int[10];
/*
* la hauteur de la pile est utilisée ici comme un indice dans le tableau
* qui est donc constitué des éléments effectivements utilisés par la pile
* et des éléments de "réserve" (qui pourront être utilisés si nécessaire).
* Mais la pile n'est constituée que des éléments d'indice 0 à hauteur-1
*/
public static int hauteur = 0;
public static void main(String []a) {
empiler(100);
empiler(200);
empiler(300);
/*
* Les éléments sont dépilés dans le sens inverse de leur empilement
*/
while (!estVide()) {
int x = depiler();
System.out.println("J'ai trouvé : "+x+" dans la pile");
}
}
/*
* Empiler consiste à utiliser un élément de réserve pour stocker la
* valeur souhaitée, et déplacer en conséquence la hauteur
*/
public static void empiler(int valeur) {
tab[hauteur] = valeur;
hauteur += 1;
}
/*
* Dépiler consiste à augmenter la réserve en déplacant la hauteur d'un
* cran en arrière
*/
public static int depiler() {
hauteur -= 1;
return tab[hauteur];
}
/*
* Ce prédicat indique que la réserve est pleine (ou la pile vide :-)
*/
public static boolean estVide() {
return hauteur==0;
}
}