|
|
@@ -0,0 +1,83 @@
|
|
|
+public class Queue<T> {
|
|
|
+ private Node<T> front; // Puntero al frente de la cola
|
|
|
+ private Node<T> rear; // Puntero al final de la cola
|
|
|
+ private int size; // Tamaño de la cola
|
|
|
+
|
|
|
+ // Clase interna para el nodo
|
|
|
+ private static class Node<T> {
|
|
|
+ T data;
|
|
|
+ Node<T> next;
|
|
|
+
|
|
|
+ Node(T data) {
|
|
|
+ this.data = data;
|
|
|
+ this.next = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Constructor para la cola
|
|
|
+ public Queue() {
|
|
|
+ front = rear = null;
|
|
|
+ size = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Método para agregar un elemento a la cola
|
|
|
+ public void enqueue(T data) {
|
|
|
+ Node<T> newNode = new Node<>(data);
|
|
|
+ if (isEmpty()) {
|
|
|
+ front = rear = newNode;
|
|
|
+ } else {
|
|
|
+ rear.next = newNode;
|
|
|
+ rear = newNode;
|
|
|
+ }
|
|
|
+ size++;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Método para eliminar un elemento de la cola
|
|
|
+ public T dequeue() {
|
|
|
+ if (isEmpty()) {
|
|
|
+ throw new IllegalStateException("La cola está vacía");
|
|
|
+ }
|
|
|
+ T data = front.data;
|
|
|
+ if (front == rear) {
|
|
|
+ front = rear = null;
|
|
|
+ } else {
|
|
|
+ front = front.next;
|
|
|
+ }
|
|
|
+ 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<T> current = front;
|
|
|
+ while (current != null) {
|
|
|
+ System.out.print(current.data + " ");
|
|
|
+ current = current.next;
|
|
|
+ }
|
|
|
+ System.out.println();
|
|
|
+ }
|
|
|
+
|
|
|
+ // Método main para probar la implementación de la cola
|
|
|
+ public static void main(String[] args) {
|
|
|
+ Queue<Integer> queue = new Queue<>();
|
|
|
+ queue.enqueue(1);
|
|
|
+ queue.enqueue(2);
|
|
|
+ queue.enqueue(3);
|
|
|
+ System.out.println("Tamaño de la cola: " + queue.size());
|
|
|
+ queue.printQueue();
|
|
|
+ System.out.println("Desencolando: " + queue.dequeue());
|
|
|
+ System.out.println("Desencolando: " + queue.dequeue());
|
|
|
+ System.out.println("Tamaño de la cola después de desencolar dos elementos: " + queue.size());
|
|
|
+ queue.printQueue();
|
|
|
+ }
|
|
|
+}
|