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).