public class PileChainee implements Pile { protected E valeur; protected PileChainee suivant; public PileChainee() { this.valeur = null; this.suivant = null; } public PileChainee(E element) { this.valeur = element; this.suivant = null; } @Override public void addFirst(E element) { if (this.isEmpty()) { this.valeur = element; } else { PileChainee nouveau = new PileChainee<>(); nouveau.valeur = this.valeur; nouveau.suivant = this.suivant; this.valeur = element; this.suivant = nouveau; } } @Override public E removeFirst() { if (this.isEmpty()) { throw new IllegalStateException("Pile vide"); } else { if (this.suivant == null) { E temp = this.valeur; this.valeur = null; return temp; } else { E temp = this.valeur; this.valeur = this.suivant.valeur; this.suivant = this.suivant.suivant; return temp; } } } @Override public boolean isEmpty() { return (this.valeur == null); } }