Volver a la lista

Pila y cola: LIFO contra FIFO

Explica el principio de funcionamiento de la pila (LIFO) y la cola (FIFO), junto con analogías de la vida real y ejemplos de código para las operaciones de inserción (push), extracción (pop), encolado (enqueue) y desencolado (dequeue).

Principiante
|
6min
|
Verificado (2026-07)
Progreso0/23 (0%)

Pilas y colas: LIFO frente a FIFO

Al finalizar este tema

Podrás explicar los principios de las pilas y las colas, y conocerás sus respectivos usos.


Pila (Stack): apilar platos

Una pila (Stack) es una estructura en la que solo se insertan y eliminan elementos por la parte superior.

text
┌─────┐
  push → │  30 │ ← pop (saca primero lo que se insertó más recientemente)
         ├─────┤
         │  20 │
         ├─────┤
         │  10 │
         └─────┘

Es como apilar platos en un restaurante: el último plato que se apila es el primero que se retira. Esto se conoce como LIFO (Last In, First Out), o "el último en entrar es el primero en salir".

python
stack = []
# push — apilar encima
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # [10, 20, 30]
# pop — extraer desde arriba
top = stack.pop()
print(top) # 30 (el último insertado)
print(stack) # [10, 20]
# peek — verificar la parte superior sin extraer
print(stack[-1]) # 20

Usos de la pila

UsoDescripción
Deshacer (Ctrl+Z)Cancela la última acción realizada
Botón de retroceso del navegadorVuelve a la página anterior
Pila de llamadas de funcionesRetorna a la función que se llamó más recientemente
Validación de paréntesis({[]}) Comprueba que los paréntesis estén correctamente emparejados

Cola: hacer fila

Una cola es una estructura de datos en la que los elementos se insertan por un extremo y se extraen por el otro.

text
enqueue →  ┌────┬────┬────┐  → dequeue
             │ 10 │ 20 │ 30 │
             └────┴────┴────┘
             frente (front)    atrás (rear)

Es como la fila en la caja de un supermercado. Quien llega primero es atendido primero. Esto se conoce como FIFO (First In, First Out), o principio de "primero en entrar, primero en salir".

python
from collections import deque
queue = deque()
# enqueue — insertar al final
queue.append(10)
queue.append(20)
queue.append(30)
print(queue) # deque([10, 20, 30])
# dequeue — extraer desde el frente
front = queue.popleft()
print(front) # 10 (el primero insertado)
print(queue) # deque([20, 30])

También se puede implementar una cola con list de Python, pero list.pop(0) es lento porque requiere desplazar todos los elementos hacia adelante. deque tiene operaciones en ambos extremos con una complejidad de O(1).

Casos de uso de las colas

Caso de usoDescripción
Cola de impresiónImprime los documentos en el orden en que se enviaron.
Programación de tareasProcesa las solicitudes en el orden en que se recibieron.
BFS (búsqueda en amplitud)Visita primero los nodos más cercanos.
Cola de mensajesGarantiza el orden de los mensajes entre los servidores.

Comparación: pila frente a cola

CaracterísticaPilaCola
PrincipioLIFO (último en entrar, primero en salir)FIFO (primero en entrar, primero en salir)
AnalogíaApilar platosHacer fila
Inserciónpush (en la parte superior)enqueue (al final)
Extracciónpop (desde la parte superior)dequeue (desde el frente)
Pythonlist.append() + list.pop()deque.append() + deque.popleft()

Ejemplo práctico: validación de paréntesis (uso de pila)

python
def is_valid_brackets(s):
stack = []
pairs = {')': '(', ']': '[', '}': '{'}
for char in s:
if char in '([{':
stack.append(char)
elif char in ')]}':
if not stack or stack[-1] != pairs[char]:
return False
stack.pop()
return len(stack) == 0
print(is_valid_brackets("({[]})")) # True
print(is_valid_brackets("([)]")) # False
print(is_valid_brackets("((")) # False

Al encontrar un paréntesis de apertura, se añade a la pila; al encontrar un paréntesis de cierre, se extrae de la pila para verificar si hay una coincidencia. La característica LIFO (último en entrar, primero en salir) de la pila se corresponde exactamente con la regla de "cerrar primero el paréntesis que se abrió más recientemente".

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...