Está en la página 1de 11

Algoritmos y Estructuras de Datos II

Ing. Walter A. Carpio


wcarpio@utpaqp.edu.pe
Ingeniería de Sistemas
Universidad Tecnológica del Perú

Pilas y Colas
Noviembre, 2010
Algoritmos y Estructuras de Datos II
Pilas y Colas

Estructura FIFO: First In, First Out


FIFO es una estructura en la que el primero que entra, es el primero
que sale.
EJEMPLO: La cola que se forma en una caja de un supermercado a la
hora de pagar. La primera persona que esté en la cola será la primera
persona atendida.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

Estructura LIFO: Last In, First Out


LIFO es una estructura en la que el último que entra, es el primero que
sale.
EJEMPLO: La pila de bandejas de una cafetería-autoservicio.
Habitualmente, las bandejas limpias se colocan encima de esta pila, y
de la cima son tomadas. Así, la última bandeja colocada en la pila será
la primera bandeja recogida por un cliente.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

El TAD Cola
Una Cola es un conjunto dinámico que obedece la propiedad FIFO.
Esto significa que el orden temporal de inserciones en estos conjuntos
determina completamente el orden en el cual los elementos son obtenidos
a partir de ellos.
Esta estructura se utiliza bastante en la simulación del sistemas.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

Operaciones de las colas


Las operaciones ofrecidas por una implementación del TAD Lista
también pueden ser utilizadas para implementar el TAD Cola.
Los nombres especiales de las rutinas de acceso para COLA se ofrecen
más abajo. En cada operación, x de nuevo representa a un elemento y Q
a una cola arbitraria:

1. Añadir(Q, x). Inserta x en Q.


2. Primero(Q). Devuelve el elemento que lleva más tiempo en Q.
3. Avanzar(Q). Elimina el elemento que lleva más tiempo en Q.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

En la práctica, la operación Avanzar a menudo se implementa de tal


forma que devuelve un elemento antes de eliminarlo. Asumiremos que
realizar una operación Primero o Avanzar en una cola vacía produce un
error, y nos referiremos a los elementos que llevan el mayor y el menor
período de tiempo en la cola como el primero y el último de la cola,
respectivamente.
Implementar el TAD Cola supone añadir elementos en un extremo de la
lista durante una operación Añadir, y quitarlos del otro extremo de la lista
durante una operación Avanzar. Esto garantiza que los elementos son
accedidos en orden FIFO.
Esta estrategia puede ser implementada eficientemente utilizando una
lista enlazada.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

Estrategia para mejorar la performance

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

El TAD Pila
Una pila es un conjunto dinámico que obedece la propiedad LIFO.
Aunque estas operaciones con las Pilas son extremadamente simples, se
muestran bastante útiles en un gran número de aplicaciones.

Las pilas son utilizadas en la evaluación de expresiones matemáticas


encontradas en el código fuente.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

Operaciones con las pilas

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

Operaciones con las pilas


En cada una de las operaciones del TAO PILA que se dan a
continuación, x representa a un elemento y S a una pila arbitraria.

1. Apilar(S, x). Inserta x en S.


2. Cima(S). Devuelve el elemento que fue insertado más recientemente
en S.
3. Desopilar(S). Elimina el elemento que fue insertado más
recientemente en S.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio


Algoritmos y Estructuras de Datos II
Pilas y Colas

En la práctica la operación Desapilar a menudo se implementa de tal


forma que devuelve el elemento insertado más recientemente antes de
eliminarlo.
A menudo resulta útil pensar en una pila usando la analogía de la
cafetería-autoservicio comentada previamente.
Por ejemplo, la Figura anterior muestra cómo sería representada una pila
de números enteros. El único elemento al que tenemos acceso es el que
ha sido insertado más recientemente, al que nos referiremos como cima
de la pila. En la Figura el elemento insertado más recientemente es 8, y el
elemento que lleva más tiempo en la pila es 3.

Algoritmos y Estructuras II UTP/2010-II © W.Carpio

También podría gustarte