Estructuras de datos · Sección 5

Pilas: último en entrar, primero en salir

El contrato LIFO, push, pop y peek; implementaciones con arreglo o nodos y aplicaciones como deshacer, llamadas y validación de delimitadores.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene comprender el contrato de un TAD y las representaciones con arreglo o nodos de las secciones 1 y 4.

02 / META OBSERVABLE

Al terminar deberías poder relacionar LIFO y operaciones con Implementaciones y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

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 LIFO y operaciones y Implementaciones? +

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.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Dominarás el contrato LIFO y aprenderás a reconocer cuándo una pila es la estructura correcta.

Al terminar podrás
  • Una pila es LIFO: el último en entrar sale primero
  • El tope debe quedar donde push y pop sean constantes
  • La pila recuerda decisiones pendientes en orden inverso
01
Orden correcto

Una pila es LIFO: el último en entrar sale primero

push agrega al tope, pop devuelve y elimina el tope, y peek lo consulta sin eliminar. FIFO corresponde a una cola. El contrato debe decidir también qué ocurre al consultar una pila vacía: en ArrayDeque, pop lanza una excepción, peek retorna null y no se admiten elementos null.

01

LIFO: Last In, First Out.

02

Solo el tope es accesible directamente.

03

El comportamiento sobre vacío forma parte del contrato.

Comprueba lo aprendido · 01

¿Qué valor sale después de push(A), push(B), push(C)?

Mostrar respuesta +

C, porque fue el último elemento agregado al tope.

02
Representación

El tope debe quedar donde push y pop sean constantes

Con una lista simplemente enlazada, el tope conviene estar en la cabeza. Con un arreglo dinámico, conviene estar en la última posición ocupada. Ubicarlo al final de una lista simple obligaría a recorrer para hacer pop.

01

Lista: cambiar la cabeza cuesta O(1).

02

Arreglo: usar size - 1 cuesta O(1) amortizado.

03

Elimina la referencia retirada para no retener objetos.

Comprueba lo aprendido · 02

¿Por qué eliminar un valor situado en medio no es una operación básica de pila?

Mostrar respuesta +

Porque requiere retirar y reponer elementos o exponer la representación; no respeta el acceso exclusivo por el tope.

03
Aplicación

La pila recuerda decisiones pendientes en orden inverso

Deshacer, navegación hacia atrás, evaluación de expresiones, delimitadores y llamadas de funciones comparten una necesidad: resolver primero lo último que quedó pendiente. En Java actual, Deque y ArrayDeque suelen preferirse a la clase heredada Stack.

01

Cada apertura agrega una obligación.

02

Cada cierre debe corresponder al tope.

03

Al final la pila debe quedar vacía.

Comprueba lo aprendido · 03

¿Por qué una cola no sirve para validar anidamiento?

Mostrar respuesta +

Porque compararía primero con la apertura más antigua; el cierre actual debe corresponder a la apertura más reciente.

Resumen de la sección

Tu recorrido en tres ideas

  1. Una pila es LIFO: el último en entrar sale primero
  2. El tope debe quedar donde push y pop sean constantes
  3. La pila recuerda decisiones pendientes en orden inverso
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Llamar FIFO a una estructura que retira el último elemento agregado.

ERROR 02

Implementar el tope en una posición que obliga a recorrer.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Valida (), [] y {} e informa la posición de la primera incompatibilidad.

Mostrar pauta de corrección +
Una respuesta sólida:
  • Rechaza cierres sin apertura.
  • Comprueba tipo del delimitador superior.
  • Rechaza aperturas sobrantes al final.