Queue.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. public class Queue<T> {
  2. private Node<T> front; // Puntero al frente de la cola
  3. private Node<T> rear; // Puntero al final de la cola
  4. private int size; // Tamaño de la cola
  5. // Clase interna para el nodo
  6. private static class Node<T> {
  7. T data;
  8. Node<T> next;
  9. Node(T data) {
  10. this.data = data;
  11. this.next = null;
  12. }
  13. }
  14. // Constructor para la cola
  15. public Queue() {
  16. front = rear = null;
  17. size = 0;
  18. }
  19. // Método para agregar un elemento a la cola
  20. public void enqueue(T data) {
  21. Node<T> newNode = new Node<>(data);
  22. if (isEmpty()) {
  23. front = rear = newNode;
  24. } else {
  25. rear.next = newNode;
  26. rear = newNode;
  27. }
  28. size++;
  29. }
  30. // Método para eliminar un elemento de la cola
  31. public T dequeue() {
  32. if (isEmpty()) {
  33. throw new IllegalStateException("La cola está vacía");
  34. }
  35. T data = front.data;
  36. if (front == rear) {
  37. front = rear = null;
  38. } else {
  39. front = front.next;
  40. }
  41. size--;
  42. return data;
  43. }
  44. // Método para verificar si la cola está vacía
  45. public boolean isEmpty() {
  46. return front == null;
  47. }
  48. // Método para obtener el tamaño de la cola
  49. public int size() {
  50. return size;
  51. }
  52. // Método para imprimir los elementos de la cola
  53. public void printQueue() {
  54. Node<T> current = front;
  55. while (current != null) {
  56. System.out.print(current.data + " ");
  57. current = current.next;
  58. }
  59. System.out.println();
  60. }
  61. // Método main para probar la implementación de la cola
  62. public static void main(String[] args) {
  63. Queue<Integer> queue = new Queue<>();
  64. queue.enqueue(1);
  65. queue.enqueue(2);
  66. queue.enqueue(3);
  67. System.out.println("Tamaño de la cola: " + queue.size());
  68. queue.printQueue();
  69. System.out.println("Desencolando: " + queue.dequeue());
  70. System.out.println("Desencolando: " + queue.dequeue());
  71. System.out.println("Tamaño de la cola después de desencolar dos elementos: " + queue.size());
  72. queue.printQueue();
  73. }
  74. }