Diferencia entre pila y cola
Tema: tecnología.
La pila es una estructura de datos en la que el último elemento añadido es el primero en salir (orden LIFO); la cola es una estructura en la que el primer elemento añadido es el primero en salir (orden FIFO).
Para recordarlo: la pila funciona como una torre de platos, y la cola como una fila de personas esperando su turno.
Tabla comparativa: pila y cola
| Pila | Cola | |
|---|---|---|
| Orden | LIFO: el último en entrar es el primero en salir. | FIFO: el primero en entrar es el primero en salir. |
| Puntos de acceso | Un único extremo, por donde se añade y se retira todo. | Dos extremos: uno para añadir y otro para retirar. |
| Operaciones básicas | Apilar (añadir arriba) y desapilar (quitar de arriba). | Encolar (añadir al final) y desencolar (quitar del principio). |
| Analogía | Una torre de platos: solo se toma el de arriba. | Una fila de personas: se atiende primero a quien llegó primero. |
| Ejemplo de uso | La función deshacer de un editor de texto. | La cola de impresión de un documento compartido. |
Qué es la pila
Una pila organiza sus elementos de forma que solo se puede añadir o retirar por un único extremo, llamado la cima. Cada nuevo elemento se coloca encima de los anteriores, y al retirar un elemento, siempre se retira el que está en la cima en ese momento: el último que se añadió. Ese comportamiento se resume en la sigla LIFO, del inglés last in, first out, «último en entrar, primero en salir».
Las dos operaciones básicas de una pila son apilar, que añade un elemento en la cima, y desapilar, que retira el elemento que está en la cima. No es posible acceder directamente a un elemento que no esté en la cima sin retirar antes los que tiene encima.
Qué es la cola
Una cola organiza sus elementos con dos extremos distintos: uno para añadir elementos nuevos, llamado el final, y otro para retirarlos, llamado el principio o el frente. Cada elemento nuevo se añade al final, y al retirar un elemento, siempre se retira el que lleva más tiempo esperando en el frente. Ese comportamiento se resume en la sigla FIFO, del inglés first in, first out, «primero en entrar, primero en salir».
Las dos operaciones básicas de una cola son encolar, que añade un elemento al final, y desencolar, que retira el elemento que está en el frente. Existe también una variante, la cola de prioridad, en la que cada elemento sale según su prioridad asignada y no según el orden estricto de llegada.
Ejemplos que muestran la diferencia
El navegador guarda las páginas visitadas en una pila, así que el botón «atrás» siempre lleva a la última página vista, no a la primera.
Una impresora compartida en una oficina gestiona los documentos con una cola: el primero que se envió a imprimir es el primero en salir, sin importar quién lo mandó después.
Al resolver una llamada de función que a su vez llama a otra función, el programa usa una pila para recordar a qué punto debe volver cuando cada llamada termine.
Cuándo usar cada una
- Usa pila cuando el proceso necesita deshacer pasos en orden inverso al que se hicieron, como el historial de un navegador o la función deshacer de un programa.
- Usa cola cuando es importante respetar el orden de llegada y atender primero a quien esperó más, como una lista de tareas pendientes o un sistema de mensajería.
- Si el orden natural del problema es «lo último resuelto primero», piensa en pila; si es «lo primero en llegar, primero en atenderse», piensa en cola.
Preguntas frecuentes
¿Qué significan las siglas LIFO y FIFO?
LIFO viene del inglés last in, first out, «último en entrar, primero en salir», y describe el comportamiento de la pila. FIFO viene de first in, first out, «primero en entrar, primero en salir», y describe el comportamiento de la cola.
¿Dónde se usa una pila en programación?
En la gestión de llamadas a funciones, en la validación de paréntesis o etiquetas anidadas, y en funciones de deshacer, entre otros casos donde hace falta volver atrás en el orden inverso al que se avanzó.
¿Puede una cola tener prioridades en lugar de orden de llegada?
Sí, se llama cola de prioridad: cada elemento tiene asignado un valor de prioridad, y al retirar un elemento se elige siempre el de mayor prioridad, no necesariamente el que llegó primero.