import java.util.NoSuchElementException; public class SimpleQueue { private static class Node { T value; Node next; Node(T value) { this.value = value; } } private Node head; // Le début de la file private Node tail; // La fin de la file private int size; public SimpleQueue() { head = null; tail = null; size = 0; } /** * Ajoute un élément à la fin de la file. * * @param element L'élément à ajouter. */ public void enqueue(T element) { Node newNode = new Node<>(element); if (isEmpty()) { head = tail = newNode; } else { tail.next = newNode; tail = newNode; } size++; } /** * Retire et renvoie l'élément en tête de la file. * * @return L'élément retiré. * @throws NoSuchElementException si la file est vide. */ public T dequeue() { if (isEmpty()) { throw new NoSuchElementException("Queue is empty"); } T value = head.value; head = head.next; if (head == null) { // Si la file est désormais vide tail = null; } size--; return value; } /** * Renvoie l'élément en tête de la file sans le retirer. * * @return L'élément en tête. * @throws NoSuchElementException si la file est vide. */ public T peek() { if (isEmpty()) { throw new NoSuchElementException("Queue is empty"); } return head.value; } /** * Vérifie si la file est vide. * * @return true si la file est vide, false sinon. */ public boolean isEmpty() { return size == 0; } /** * Renvoie le nombre d'éléments dans la file. * * @return La taille de la file. */ public int size() { return size; } }