Pilas y colas

La Pila es una estructura de datos que almacena y recupera sus elementos atendiendo a un estricto orden. Debido a su propiedad específica “último en entrar, primero en salir” se conoce a las pilas como estructura de datos LIFO. Las operaciones usuales en la pila son Insertar y Quitar. La operación Insertar (push) añade un elemento en la cima de la pila y la operación Quitar (pop) elimina o saca un elemento de la pila. La Imagen 1 y la Imagen 2 muestran una secuencia de operaciones Insertar y Quitar.

Palabras claves:

LIFO: del inglés Last-in, first-out y traducido significa “Ultimo en entrar, primero en salir”.

FIFO: del inglés First-in, first-out y traducido significa “Primero en entrar, primero en salir”.

Imagen 1 Imagen 2

Una metáfora que se utiliza con frecuencia es la idea de una pila de platos en una cafetería con muelle de pila. En esa serie, sólo la primera placa es visible y accesible para el usuario, todas las demás placas permanecen ocultas. Como se añaden las nuevas placas, cada nueva placa se convierte en la parte superior de la pila, escondidos debajo de cada plato, empujando a la pila de placas. A medida que la placa superior se elimina de la pila, la segunda placa se convierte en la parte superior de la pila.

Dos principios importantes son ilustrados por esta metáfora: En primer lugar la última salida es un principio, la segunda es que el contenido de la pila está oculto. Sólo la placa de la parte superior es visible, por lo que para ver lo que hay en la tercera placa, el primer y segundo platos tendrán que ser retirados.

Definición de Cola:

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO, debido a que el primer elemento en entrar será también el primero en salir.

Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento.

La particularidad de una estructura de datos de cola es el hecho de que sólo podemos acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.

Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando para entrar a ver un partido de béisbol, esperando en el cine para ver una película, una pequeña peluquería, etc. La idea esencial es que son todos líneas de espera.

Puede haber diversas variaciones para la implementación de las colas, sin embargo, los dos tipos de colas más usados y conocidos son:

  • Colas circulares (anillos): en las que el último elemento y el primero están unidos.
  • Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atenderán de modo convencional según la posición que ocupen. Hay 2 formas de implementación:
    • Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad.
    • Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

En la Imagen 3 y la Imagen 4 se muestra una secuencia de operaciones Insertar y Eliminar.

Imagen 3 Imagen 4

Notas de programación:

  • De manera dinámica, se almacena y se libera la memoria dependiendo el método de la clase que se utilice.

Errores de programación:

  • En el método de eliminar de una pila o cola no se debe especificar cual debido a que, en caso de la pila, será siempre el ultimo ingresado y en caso de la cola, el primero.

Referencias:

No comments

Comentarios en artículos

No comments

Nobody has submitted a comment yet.