Pilas y colas
En el banco de Santa Tecla, la fila avanza y atienden primero a quien llegó primero. En tu cocina, el último plato que lavaste es el primero que agarrás de la pila. Dos formas de ordenar, dos reglas distintas. En esta página vas a ver cómo la computadora guarda datos con esas mismas reglas, y al final vas a poder decir cuál conviene usar en cada caso.
Dos reglas para entrar y salir
Una lista permite agregar, quitar o modificar en cualquier posición. Una pila y una cola son más estrictas: solo se puede agregar y quitar por lugares fijos. Esa restricción las hace muy útiles, porque el orden de salida es predecible.
Fijate en la diferencia: en la pila todo ocurre por un solo extremo (la cima). En la cola se entra por un extremo y se sale por el otro.
Definí qué significan las siglas LIFO y FIFO e indicá cuál corresponde a una pila y cuál a una cola.
Definí qué significan las siglas LIFO y FIFO e indicá cuál corresponde a una pila y cuál a una cola.
Pilas: agregar y quitar por la cima
Las dos operaciones básicas de una pila tienen nombres propios:
-
Apilar (agregar): coloca un elemento encima de la cima.
-
Desapilar (quitar): saca la cima y la devuelve.
Una pila está vacía. Se agregan en orden los valores 4, 8 y 2. ¿Cuál es el valor que está en la cima? Si luego se quita un elemento, ¿cuál se quita?
Una pila está vacía. Se agregan en orden los valores 4, 8 y 2. ¿Cuál es el valor que está en la cima? Si luego se quita un elemento, ¿cuál se quita?
En una pila se aplican estas operaciones sobre la pila vacía: agregar 5, agregar 9, quitar, agregar 3, agregar 7, quitar, quitar. Escribí el contenido final de la pila y…
En una pila se aplican estas operaciones sobre la pila vacía: agregar 5, agregar 9, quitar, agregar 3, agregar 7, quitar, quitar. Escribí el contenido final de la pila y la lista de valores que fueron saliendo, en orden.
Colas: entrar por el final, salir por el frente
En una cola las operaciones se llaman:
-
Encolar (agregar): el elemento se pone al final.
-
Desencolar (quitar): sale el elemento del frente.
Clasificá cada situación como pila o cola: (a) personas esperando en la fila de un banco, (b) platos apilados en una cocina, (c) el botón «deshacer» de un editor de…
Clasificá cada situación como pila o cola: (a) personas esperando en la fila de un banco, (b) platos apilados en una cocina, (c) el botón «deshacer» de un editor de texto, (d) documentos esperando para imprimirse.
Una cola está vacía. Se ejecutan estas operaciones: agregar A, agregar B, agregar C, quitar, agregar D, quitar. Escribí cómo queda la cola al final, indicando cuál es el…
Una cola está vacía. Se ejecutan estas operaciones: agregar A, agregar B, agregar C, quitar, agregar D, quitar. Escribí cómo queda la cola al final, indicando cuál es el elemento del frente, y qué elementos salieron y en qué orden.
Dónde aparecen en la vida y en la computación
| Situación | Estructura | Por qué |
|---|---|---|
| Fila de personas en el banco | Cola | Atienden en orden de llegada |
| Platos apilados | Pila | Se toma el de arriba, el último puesto |
| Botón «deshacer» de un editor | Pila | Se deshace primero la última acción |
| Documentos esperando impresión | Cola | Se imprime en orden de envío |
| Historial de páginas en el navegador | Pila | «Atrás» regresa a la última página visitada |
| Turnos en una clínica del ISSS | Cola | Primero llegado, primero atendido |
Explicá cómo el historial de páginas visitadas en un navegador, con los botones «atrás», se comporta como una pila. Describí qué pasa con el historial si visitás tres…
Explicá cómo el historial de páginas visitadas en un navegador, con los botones «atrás», se comporta como una pila. Describí qué pasa con el historial si visitás tres páginas (P1, P2, P3) y luego pulsás «atrás» una vez.
Una impresora compartida en un centro escolar recibe trabajos de varios estudiantes: Kevin envía el trabajo 1, Valeria el 2, Óscar el 3. Mientras se imprime el trabajo…
Una impresora compartida en un centro escolar recibe trabajos de varios estudiantes: Kevin envía el trabajo 1, Valeria el 2, Óscar el 3. Mientras se imprime el trabajo 1, llega el de Jennifer (4). Explicá qué estructura conviene usar y por qué, escribí el orden en que se imprimirán y analizá qué problema habría si se usara la otra estructura.
Implementarlas con listas
En un entorno de programación visual (tipo Scratch) o en Python no hace falta una estructura nueva: se usa una lista y se respetan las reglas. Con listas, la pila y la cola se parecen mucho; cambia el lado por donde se quita.
En Python:
pila = []
pila.append(4) # apilar
pila.append(8)
cima = pila.pop() # desapilar: sale 8
cola = []
cola.append("A") # encolar
cola.append("B")
frente = cola.pop(0) # desencolar: sale "A" (índice 0)
En pseudocódigo, con un condicional para evitar el error de la lista vacía:
Si longitud(pila) > 0 Entonces
quitar el último elemento de pila
Sino
Escribir "La pila está vacía"
Fin Si
Un uso clásico: paréntesis balanceados
Para saber si los paréntesis están bien cerrados, se recorre la expresión: al ver ( se agrega un símbolo a la pila; al ver ) se quita uno.
Si al terminar la pila no está vacía, falta cerrar algún paréntesis. Si se intenta quitar de una pila vacía, hay un ) de más.
Se quiere revisar si los paréntesis de la expresión ((a + b) * (c - d)) están bien balanceados usando una pila: se agrega un símbolo al encontrar ( y se quita uno al…
Se quiere revisar si los paréntesis de la expresión ((a + b) * (c - d)) están bien balanceados usando una pila: se agrega un símbolo al encontrar ( y se quita uno al encontrar ). Describí paso a paso cómo cambia la pila al recorrer la expresión, indicá su tamaño máximo y explicá qué indicaría que la pila no esté vacía al terminar o que se intente quitar de una pila vacía.
Resumen
-
Pila (LIFO): el último en entrar es el primero en salir; se agrega y se quita por la cima.
-
Cola (FIFO): el primero en entrar es el primero en salir; se agrega al final y se quita por el frente.
-
Pila: deshacer, historial del navegador, platos. Cola: fila del banco, impresión, turnos.
-
Con listas: pila = agregar y quitar del final; cola = agregar al final y quitar del inicio.
-
Revisá siempre que la estructura no esté vacía antes de quitar.
-
Volvé al principio: en el banco rige la regla de la cola (FIFO) y en tu cocina la de la pila (LIFO).