Adloun

programmation Java (école d'ingénieur) · Chapitre 12 · Exercice de TD

Une pile générique

Collections et génériques · niveau 2

Énoncé

Écrire une classe générique Pile<T> qui range ses éléments dans une ArrayList<T>, avec les méthodes empiler, depiler, sommet, estVide et taille. Dépiler ou consulter le sommet d'une pile vide doit lever une NoSuchElementException avec un message clair. Faut-il placer le sommet au début ou à la fin de la liste ? Pourquoi ?

Corrigé


import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;

public class Exo9Pile {
    static class Pile<T> {
        private final List<T> elements = new ArrayList<>();
        void empiler(T x) { elements.add(x); }            // le sommet est en fin de liste
        T sommet() {
            if (estVide()) throw new NoSuchElementException("pile vide");
            return elements.get(elements.size() - 1);
        }
        T depiler() {
            if (estVide()) throw new NoSuchElementException("pile vide");
            return elements.remove(elements.size() - 1);
        }
        boolean estVide() { return elements.isEmpty(); }
        int taille() { return elements.size(); }
    }
    public static void main(String[] args) {
        Pile<String> p = new Pile<>();
        p.empiler("a"); p.empiler("b"); p.empiler("c");
        System.out.println(p.depiler() + " " + p.sommet() + " " + p.taille());
        Pile<Integer> q = new Pile<>();
        try {
            q.depiler();
        } catch (NoSuchElementException e) {
            System.out.println("erreur : " + e.getMessage());
        }
    }
}

c b 2
erreur : pile vide

Le sommet est placé en fin de liste : ajouter ou retirer le dernier élément d'une ArrayList se fait en temps constant, alors qu'ajouter ou retirer le premier oblige à décaler tous les autres. L'attribut elements est private : l'utilisateur de la pile ne peut pas y accéder autrement que par les méthodes de pile (chapitre 8).

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →