Sobes.tech
Intern

Qu'est-ce que les piles ?

sobes.tech IA

Réponse de l'IA

Une pile est une structure de données qui fonctionne selon le principe LIFO (Last-In, First-Out). Les éléments sont ajoutés et supprimés uniquement d'une extrémité, appelée sommet de la pile.

Opérations principales :

  • push : ajouter un élément au sommet de la pile.
  • pop : supprimer un élément du sommet de la pile et le renvoyer.
  • peek : obtenir la valeur de l'élément au sommet de la pile sans le supprimer.
  • isEmpty : vérifier si la pile est vide.

En Java, la pile est représentée par la classe Stack, qui est une sous-classe de Vector.

// Exemple d'utilisation de Stack
import java.util.Stack;

public class StackExample {

    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();

        stack.push("Premier"); // Ajout d'éléments
        stack.push("Deuxième");
        stack.push("Troisième");

        System.out.println("Sommet de la pile : " + stack.peek()); // Voir l'élément supérieur

        while (!stack.empty()) { // Tant que la pile n'est pas vide
            System.out.println("Extraction : " + stack.pop()); // Extraire les éléments
        }
    }
}

Une alternative et approche plus recommandée dans les développements Java modernes est d'utiliser ArrayDeque comme pile, car il offre de meilleures performances.

// Exemple d'utilisation d'ArrayDeque comme pile
import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeStackExample {

    public static void main(String[] args) {
        Deque<String> stack = new ArrayDeque<>(); // Utiliser Deque comme pile

        stack.push("Premier"); // Ajouter des éléments
        stack.push("Deuxième");
        stack.push("Troisième");

        System.out.println("Sommet de la pile : " + stack.peek()); // Voir l'élément supérieur

        while (!stack.isEmpty()) { // Tant que la pile n'est pas vide
            System.out.println("Extraction : " + stack.pop()); // Extraire les éléments
        }
    }
}

Applications des piles :

  • Calcul d'expressions arithmétiques (par exemple, en notation polonaise inversée).
  • Annulation/répétition d'opérations dans les éditeurs (Ctrl+Z/Ctrl+Y).
  • Gestion des appels de fonctions dans le système d'exploitation.
  • Algorithmes récursifs.
  • Parcours de graphes et d'arbres (recherche en profondeur).