Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PILAS Y COLAS
6.1 PILA
Una Pila es un conjunto ordenado de elementos en el cual se pueden agregar y
eliminar elementos en un extremo, que es llamado el tope de la pila. Es un objeto dinámico
en continuo cambio. Veamos ahora la definición del TAD PILA.
6.1.2.1 El constructor:
6.1.2.2 El Destructor:
1
El prototipo de esta operación es
void P_Destruir (PILA P);
Note que cada elemento de la pila aparece en un nodo diferente. El tope de la pila se
coloca en el inicio de la lista enlazada. Esto permite que las dos operaciones de modificación
de la estructura de la pila sean realizadas por el comienzo de la lista enlazada. Esto hará que
dichas operaciones sean muy sencillas de implementar.
2
Pila
c
Tope c b a
b
a
PILA P_Crear ()
/* PRE: ninguna
POST: Devuelve una pila vacía.
*/
{
return(NULL);
}
PILA P_Pop(PILA P)
3
/* PRE: dada una una pila creada no vacía
POST: remueve el tope de la pila
*/
{
NODO *aux;
aux=P;
P=P–>sig;
free(aux);
return(P);
}
ELEM P_Top(PILA P)
/* PRE: dada una una pila creada y no vacía
POST: devuelve el elemento del tope
*/
{
return (P->info);
}
bool P_Empty(PILA P)
/* PRE: dada una una pila creada
POST: dice si la pila está vacía
*/
{
return ((P == NULL));
}
6.2 COLA
Una Cola es un conjunto ordenado de elementos donde siempre se eliminan
elementos de un extremo (parte delantera) y se insertan elementos en el otro extremo (parte
posterior). En la figura 6.3 se puede observar dicho comportamiento para una cola.
4
6.2.1 Conceptualización de la estructura
Una cola es una colección de elementos (e 1,...en) donde e1 es el primero de la cola y
en es el último de la cola.
b c
a b c
Se eliminó a b c d e
Se agregó d y e
Figura 6.3. Simulación de cola
El comportamiento de una cola se conoce como FIFO (First in first out), es decir, el
primer elemento insertado en una cola es el primero en salir de ella. Existen ejemplos
abundantes en el mundo real de este comportamiento: paradas de autobús, fila del banco,
automóviles en un peaje, entre otros.
6.2.2.1 El constructor:
6.2.2.2 El Destructor:
5
/* PRE: dada una una cola creada no vacía
POST: remueve el primer elemento de la cola
*/
El prototipo de esta operación es
COLA C_Remove(COLA C);
c b a
c b a
Note que cada elemento tiene asociado un nodo y que la estructura encabezado
almacena las direcciones del primero y último elemento. La cola es un es un apuntador a
encabezado.
COLA C_Crear ()
/* PRE: ninguna
POST: Devuelve una cola vacía.
*/
{
COLA aux;
if ((aux = (COLA) malloc (sizeof (ENCABEZADO))) != NULL)
{
aux->Primero = NULL;
aux->Ultimo = NULL;
}
return(aux);
}
COLA C_Remove(COLA C)
/* PRE: dada una una cola creada no vacía
POST: remueve el primer elemento de la cola
*/
{
7
NODO *aux;
aux = C->Primero;
C->Primero = C->Primero–>sig;
free(aux);
return(C);
}
ELEM C_First(COLA C)
/* PRE: dada una cola creada y no vacía
POST: devuelve el elemento al comienzo de la cola
*/
{
return (C->Primero->info);
}
bool C_Empty(COLA C)
/* PRE: dada una cola creada
POST: dice si la cola está vacía
*/
{
return ((C->Primero == NULL));
}