public class Queue { private static class Node { T data; Node next; Node(T data) { this.data = data; this.next = null; } } private Node front; // Frente de la cola private Node rear; // Final de la cola private int size; // Tamaño de la cola public Queue() { front = null; rear = null; size = 0; } // Método para agregar un elemento a la cola public void enqueue(T item) { Node newNode = new Node<>(item); if (isEmpty()) { front = newNode; rear = newNode; } else { rear.next = newNode; rear = newNode; } size++; } // Método para eliminar y devolver el elemento en el frente de la cola public T dequeue() { if (isEmpty()) { throw new IllegalStateException("La cola está vacía"); } T data = front.data; front = front.next; if (front == null) { rear = null; } size--; return data; } // Método para verificar si la cola está vacía public boolean isEmpty() { return front == null; } // Método para obtener el tamaño de la cola public int size() { return size; } // Método para imprimir los elementos de la cola public void printQueue() { Node current = front; while (current != null) { System.out.print(current.data + " "); current = current.next; } System.out.println(); } public static void main(String[] args) { Queue queue = new Queue<>(); queue.enqueue(1); queue.enqueue(2); queue.enqueue(3); System.out.print("Elementos en la cola: "); queue.printQueue(); System.out.println("Desencolando: " + queue.dequeue()); System.out.print("Elementos en la cola después de desencolar: "); queue.printQueue(); System.out.println("Tamaño de la cola: " + queue.size()); } }