import java.util.AbstractQueue; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Queue; public class FileChainee extends AbstractQueue implements Queue { private static class Node { E data; Node next; Node(E data) { this.data = data; } } private Node head; // Premier élément de la file private Node tail; // Dernier élément de la file private int size = 0; // Taille de la file @Override public boolean offer(E element) { Node newNode = new Node<>(element); if (head == null) { tail = newNode; } else { newNode.next = head; } head = newNode; size++; return true; } @Override public E poll() { if (isEmpty()) { return null; } E data = head.data; head = head.next; if (head == null) { tail = null; } size--; return data; } @Override public E peek() { return (head == null) ? null : head.data; } @Override public Iterator iterator() { return new Iterator<>() { private Node current = head; @Override public boolean hasNext() { return current != null; } @Override public E next() { if (!hasNext()) { throw new NoSuchElementException(); } E data = current.data; current = current.next; return data; } }; } @Override public int size() { return size; } }