/**
 Classe Java correspondant au TAD pile
 (voir plus tard, la version avec interface Java
  et implementation)
 */

public class Pile {

//  Méthodes:
//
//  Pile()
//  void empiler(char)
//          // Empile le caractère donné
//  char sommet()
//          // Retourne le caractère au sommet de la pile
//  void depiler()
//          // Décapite la pile (retire le sommet )
//  boolean estVide()
//          // Teste si la pile est vide
//  boolean estPleine()
//        // Teste si la pile est pleine


//
//  Déclarations des attributs de la pile
//
    static final int MAX = 8;
    char t[];
    int top;

//
//  Programmation des opérations (méthodes) de la pile
//


    /**
     * Initialise une pile vide
     */
    public Pile() {
        // Initialise une pile vide
        t = new char[MAX];
        top = -1;
    }

    /**
     * Empile le caractère donné
     */
    public void empiler(char c) {
        // Empile le caractère donné
        if (!estPleine())
            t[++top] = c;
        else
            System.out.println("Pile pleine");
    }

    /**
     * Consulte et retourne le caractère
     * au sommet de la pile
     */
    public char sommet() {
        // Retourne le caractère au sommet de la pile
        if (!estVide())
            return t[top];
        else
            System.out.println("Pile vide Sommet");
        return '#';
    }

    /**
     * Décapite la pile (retire le sommet )
     */
    public void depiler() {
        //    décapite la pile (retire le sommet )
        if (!estVide())
            top--;
        else
            System.out.println("Pile vide Depiler");
    }

    /**
     * Teste si la pile est vide
     */
    public boolean estVide() {
//    Teste si la pile est vide
        return (top < 0);
    }

    /**
     * Teste si la pile est vide
     */
    public boolean estPleine() {
        // teste si la pile est pleine
        return (top >= (MAX - 1));
    }

}; // class Pile
