Conviene comprender nodos, arreglos, tamaño lógico y el operador módulo; la lección explica cómo se combinan.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar FIFO con Cola enlazada y resolver un caso nuevo.
Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.
Instala un JDK actual y utiliza un editor o IDE con soporte para Java. Trabaja en un proyecto de laboratorio separado.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan FIFO y Cola enlazada? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Construirás colas que preservan FIFO sin desplazar todo el contenido en cada operación.
- Una cola es FIFO: entra al final y sale por el frente
- Dos referencias vuelven constante una cola enlazada
- Un arreglo circular reutiliza huecos mediante módulo
Una cola es FIFO: entra al final y sale por el frente
offer agrega al final, poll retira el frente y peek lo consulta. Como en una fila de atención, lo más antiguo se atiende primero. En Queue, remove y element lanzan una excepción si está vacía; poll y peek retornan null. ArrayDeque no admite null, por lo que ese resultado sigue siendo inequívoco.
FIFO: First In, First Out.
frente señala el próximo elemento en salir.
final señala la próxima posición de inserción o el último nodo, según la representación.
¿Qué estructura usarías si una urgencia debe adelantarse?
Mostrar respuesta +
Una cola de prioridad, porque una cola FIFO pura atiende según el orden de llegada.
Dos referencias vuelven constante una cola enlazada
Una cola enlazada mantiene frente y final. Agregar enlaza después del final; retirar mueve el frente. Cuando se elimina el último nodo, ambas referencias deben quedar en null. Con una sola referencia, alguna operación exigiría recorrer.
Vacía implica frente == null y final == null.
El final siempre apunta al último nodo.
Retirar el último restaura el estado vacío completo.
¿Qué fallo aparece si final conserva el nodo eliminado?
Mostrar respuesta +
La estructura queda con referencias contradictorias: parece vacía desde el frente, pero final apunta a un nodo que ya no pertenece a la cola.
Un arreglo circular reutiliza huecos mediante módulo
Desplazar todo el arreglo al retirar cuesta O(n). En un buffer circular, frente y final avanzan con módulo capacidad. size permite distinguir lleno de vacío aun cuando los índices coincidan.
La capacidad debe ser mayor que cero; siguiente = (indice + 1) % capacidad.
0 <= size <= capacidad.
offer falla o redimensiona cuando size == capacidad.
¿Qué ventaja ofrece frente a desplazar tras cada poll?
Mostrar respuesta +
offer y poll permanecen O(1), porque solo actualizan un elemento y unos índices.
Tu recorrido en tres ideas
- Una cola es FIFO: entra al final y sale por el frente
- Dos referencias vuelven constante una cola enlazada
- Un arreglo circular reutiliza huecos mediante módulo
Simula una sala de espera con buffer circular
Relaciona contrato FIFO, índices modulares, capacidad y estado observable en una simulación.
Una sala admite cinco turnos pendientes; llegan y salen personas en secuencias que hacen girar los índices varias veces.
Procedimiento
- Define offer, poll y peek para vacío y lleno.
- Implementa frente, final y size con módulo.
- Genera una prueba aleatoria comparando cada operación con ArrayDeque.
Evidencia mínima
- Secuencias de vuelta completa.
- Estado de índices y contenido lógico.
- Mismo resultado que la implementación de referencia.
Mostrar razonamiento modelo +
Los índices pueden coincidir tanto al estar vacío como lleno, por lo que size conserva la distinción. La prueba compara no solo las salidas, sino también orden y cantidad después de cada operación.
Para ir más lejos¿Cómo redimensionarías sin alterar el orden lógico cuando frente no está en cero?
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Desplazar todo el arreglo después de cada salida.
Dejar final apuntando a un nodo cuando la cola quedó vacía.
Ahora hazlo sin guía
Implementa una cola circular de capacidad fija con offer, poll, peek, size e isEmpty.
Mostrar pauta de corrección +
- Distingue lleno y vacío.
- Reutiliza posiciones liberadas.
- Prueba vueltas completas e intercaladas.
