Files
DEV/DEV3.2/Piles/tableau/PileTableau.java
2024-11-08 16:13:13 +01:00

48 lines
1.4 KiB
Java

// Classe PileTableau utilisant un tableau pour stocker les éléments
public class PileTableau<E> implements Pile<E> {
private static final int INITIAL_CAPACITY = 10;
private E[] elements;
private int size = 0;
@SuppressWarnings("unchecked")
public PileTableau() {
elements = (E[]) new Object[INITIAL_CAPACITY]; // Création du tableau initial
}
@Override
public void push(E element) {
ensureCapacity(); // Redimensionne si nécessaire
elements[size++] = element; // Ajoute l'élément en haut de la pile
}
@Override
public E pop() {
if (isEmpty()) {
throw new IllegalStateException("La pile est vide");
}
E element = elements[--size]; // Récupère l'élément en haut de la pile
elements[size] = null; // Supprime la référence pour éviter les fuites de mémoire
return element;
}
@Override
public int size() {
return size;
}
@Override
public boolean isEmpty() {
return size == 0;
}
// Redimensionne le tableau si nécessaire
private void ensureCapacity() {
if (size == elements.length) {
@SuppressWarnings("unchecked")
E[] newElements = (E[]) new Object[elements.length * 2]; // Double la capacité
System.arraycopy(elements, 0, newElements, 0, elements.length);
elements = newElements;
}
}
}