// Classe PileChainee utilisant une liste chaînée pour stocker les éléments public class PileChainee implements Pile { private static class Node { E data; Node next; Node(E data) { this.data = data; } } private Node top; // Le sommet de la pile private int size = 0; // Taille de la pile @Override public void push(E element) { Node newNode = new Node<>(element); newNode.next = top; // Le nouvel élément pointe vers l'ancien sommet top = newNode; // Le nouvel élément devient le sommet de la pile size++; } @Override public E pop() { if (isEmpty()) { throw new IllegalStateException("La pile est vide"); } E data = top.data; // Récupère la donnée du sommet top = top.next; // Le sommet devient l'élément suivant size--; return data; } @Override public int size() { return size; } @Override public boolean isEmpty() { return size == 0; } }