fin piles

This commit is contained in:
2024-11-08 16:13:13 +01:00
parent 26338467c0
commit 5903d26b48
25 changed files with 542 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
// 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;
}
}
}