3.3. ¿Qué es una pila?

Una pila (a veces llamada una “pila push-down”) es una colección ordenada de ítems donde la adición de nuevos ítems y la eliminación de ítems existentes siempre tienen lugar en el mismo extremo. Tal extremo se denomina el “tope”. El extremo opuesto se denomina la “base”.

La base de la pila es significativa ya que los ítems almacenados en la pila que están más cerca de la base representan aquellos que han permanecido más tiempo en la pila. El ítem más recientemente agregado es el que está en la posición que será eliminada primero. Este principio de ordenamiento a veces se denomina LIFO: último en entrar, primero en salir (last-in, first-out). Éste brinda un ordenamiento basado en el tiempo de permanencia en la colección. Los ítems más nuevos están cerca al tope y los más viejos están más cerca de la base.

Muchos ejemplos de pilas se producen en situaciones cotidianas. Casi cualquier cafetería tiene una pila de bandejas o platos donde usted toma la o él que esté en el tope, descubriendo una nueva bandeja o plato para el próximo cliente en la línea. Imagine una pila de libros sobre un escritorio (Figura 1). El único libro cuya cubierta es visible es el de arriba. Para acceder a otros en la pila, necesitamos eliminar los que están puestos encima de ellos. La Figura 2 muestra otra pila. Ésta contiene una serie de objetos de datos primitivos de Python.

../_images/bookstack2.png

Figura 1: Una pila de libros

Figura 1: Una pila de libros
../_images/primitive.png

Figura 2: Pila de de objetos primitivos de Python

Figura 2: Pila de de objetos primitivos de Python

Una de las ideas más útiles relacionadas con las pilas proviene de la simple observación de los ítems a medida que se agregan y se eliminan. Suponga que usted comienza con un escritorio limpio. Ahora coloque los libros, uno a la vez, encima de otro. Usted está construyendo una pila. Considere lo que sucede cuando comienza a quitar libros. El orden en que se eliminan es exactamente el orden inverso en que fueron colocados. Las pilas tienen una importancia fundamental puesto que pueden usarse para invertir el orden de los ítems. El orden de inserción es el inverso del orden de eliminación. La Figura 3 muestra el objeto pila tal como fue creado y luego, de nuevo, a medida que los ítems son eliminados. Observe el orden de los objetos.

../_images/simplereversal.png

Figura 3: Propiedad de orden inverso en las pilas

Figura 3: Propiedad de orden inverso en las pilas

Considerando esta propiedad de orden inverso, tal vez usted pueda pensar en ejemplos de pilas que se producen cuando utiliza su computadora. Por ejemplo, todo navegador web tiene un botón Atrás. A medida que usted navega de una página web a otra, esas páginas se ubican en una pila (en realidad, son las URL las que van en la pila). La página que usted está viendo actualmente está en el tope y la primera página que usted miró está en la base. Si usted hace clic en el botón Atrás, comienza a moverse en orden inverso a través de las páginas.

Next Section - 3.4. El tipo abstracto de datos Pila