fin piles
This commit is contained in:
47
DEV3.2/Piles/tableau/PileTableau.java
Normal file
47
DEV3.2/Piles/tableau/PileTableau.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user