Queue.java 2.2 KB

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