Está en la página 1de 26

ARQUITECTURA DE DATOS

Mgtr. Luis Antonio Salvador


AUTOR DEL CONTENIDO
Unidad II: Pilas y colas
2.6 Definición de colas
2.7 Tipos de colas
2.8 Operaciones con colas
2.9 Implementación de colas con arreglos
2.10 Implementación de colas con listas
Objetivo

Conocer el funcionamiento y la
implementación de pilas y colas de
datos junto con las operaciones
relacionadas a estas estructuras de
datos
Introducción
Colas

❑ Un tipo de estructuras de datos algo más complejas que las sencillas


pilas y que al igual que esta últimas, se implementan mediante el
uso, ya sea de arreglos o de listas encadenadas, son las colas. Las
colas son estructuras de almacenamiento que permiten el ingreso de
datos por el inicio y la recuperación de elementos se realiza
únicamente desde el final de la cola.
❑ De esta manera el primer elemento que ingresó es el primer
elemento en recuperase.
❑ Un ejemplo típico de cola es la fila que se realiza en las instituciones
bancarias frente a una ventanilla.
2.6 Definición de colas
Es así que, una cola puede ser implementada con una lista simple. Los
elementos siempre son insertados al principio de la cola y son
recuperados desde el final de la cola. Por tanto, un cola puede ser
implementada usando como base la implementación de la lista simple
estudiada en la Unidad 2.

Grafica -Código
2.6 Definición de colas
En la ilustración siguiente puede observarse la forma como funciona una
cola

Imagen - Cola.
2.7 Tipos de colas
Existen varios tipos de colas entre las que se tienen:

1 2 3
2.7 Tipos de colas
Existen varios tipos de colas entre las que se tienen:

Son aquellas en las que los elementos son


insertados por un extremo de la lista y son
1
extraídos por le otro extremo. Normalmente
se insertan por la cabeza de la cola.

Son aquellas en las que los elementos se


disponen en forma circular y todos tienen un 2
sucesor y un predecesor. Se pude decir que
son similares a las listas circulares.
2.7 Tipos de colas

Son aquellas en que todos los elementos se


insertan por la cabeza pero son atendidos de
3
acuerdo a una prioridad, primero los de
mayor prioridad.

Grafica - Código
2.8 Operaciones con colas
Aunque, sobre una cola se pueden implementar variadas operaciones,
las operaciones básicas de una cola se conocen como Encolar y
Desencolas. La operación Encolar es aquella mediante la cual se agregan
elementos a la colas desde un extremo. La operación Desencolar es
aquella operación mediante la cual se extraen elementos desde el otro
extremo de la cola. Obsérvese la ilustración siguiente para entender el
funcionamiento de estas dos operaciones:

Grafica - código.
2.8 Operaciones con colas
La implementación de las operaciones básicas de una cola tanto en el
caso de usar estructuras de datos basadas en arreglos como en listas,
deberán insertar elementos al inicio y extraerlos del final.

Grafica - código.
2.9 Implementación de colas con arreglos
La implementación de las operaciones básicas de una cola con arreglos
requiere llevar cuenta del número de elementos almacenados en el
arreglo al igual que en las pilas. Para mantener tanto los datos como el
número de elementos agrupados en un solo tipo de dato abstracto se
puede definir la siguiente estructura:

Grafica – Código.
2.9 Implementación de colas con arreglos
Además, se requiere una operación para inicializar la cola, cuyo código
se muestra a continuación:

Grafica – Código.
2.9 Implementación de colas con arreglos
La operación encolar, a la cual se ha nombrado como agregar se
implementa mediante el siguiente algoritmo:

• La función agregar toma como


parámetros un puntero a la cola y el
valor que se desea almacenar. Esta
función agrega un elemento al final
del arreglo e incrementa el contador
de elementos en uno. Finalmente,
retorna el valor agregado. Además,
Grafica -Códigos
la función verifica que el número de
elementos no exceda el tamaño
máximo del arreglo.
2.9 Implementación de colas con arreglos
La operación desencolar, a la cual se ha nombrado como retirar se
implementa mediante el siguiente algoritmo:
• La función retirar toma como
parámetro un puntero a la cola. Esta
función disminuye el contador de
elementos almacenados en 1,
siempre que dicho valor sea mayor a
cero y luego retorna el primer
elemento almacenado en el arreglo
de nombre dato, desplazando los
elementos de izquierda a derecha
para sobrescribir el primer elemento
Grafica -Códigos
extraído.
2.9 Implementación de colas con arreglos
Para verificar el correcto funcionamiento de las operaciones, es
necesario implementar la función imprimir. La implementación del
algoritmo de la función imprimir se muestra a continuación:
• La función imprimir toma como
parámetro la cola. Esta función
imprime en pantalla cada uno de los
elementos almacenados en el
campo dato, del último al primero,
mostrando al usuario que la parte
final del arreglo es realmente la
cabeza de la cola y retorna el
número de elementos actual de
Grafica -Códigos esta.
2.9 Implementación de colas con arreglos
Para inicializar o vaciar la cola se implementa la función vaciar. La
implementación de la función vaciar se muestra a continuación:
La función vaciar toma como parámetro un puntero a la cola. Esta
función únicamente coloca en cero el contador de elementos
almacenados en el arreglo y retorna el valor de cero.
2.9 Implementación de colas con arreglos
El siguiente programa permite la verificación del funcionamiento de las
operaciones implementadas para la cola basada en arreglos y junto a
este se muestra su ejecución: int main(){
ColaArreglo p;
inicializarCola(&p);
printf("Encolar: %d\n",agregar(&p,5));
imprimir(p);
printf("Encolar: %d\n",agregar(&p,4));
imprimir(p);
printf("Encolar: %d\n",agregar(&p,3));
imprimir(p);
printf("Desencolar: %d\n",retirar(&p));
imprimir(p);
printf("Desencolar: %d\n",retirar(&p));
imprimir(p);
printf("Desencolar: %d\n",retirar(&p));
imprimir(p);
return(0);
}
2.10 Implementación de colas con listas
La implementación de las
operaciones básicas de una cola
usando listas se logra a partir de las
funciones creadas para el manejo
de listas estudiadas en la Unidad 2.
El tipo de dato ColaLista considera
el contador de número de
elementos que contiene la cola,
además de la lista enlazada con los
elementos.

Grafica – Código.
2.10 Implementación de colas con listas
Una función de inicialización es necesaria antes de utilizar la cola cuyo
código se muestra a continuación:

Grafica - Código.
2.10 Implementación de colas con listas
La operación encolar, a la cual se ha nombrado como agregarCola se
implementa mediante el siguiente algoritmo:

• La función agregarCola toma


como parámetros un puntero a
la cola y el valor que se desea
almacenar. Esta función agrega
un elemento al inicio de la lista e
incrementa el contador de
elementos en uno. Finalmente,
retorna el valor agregado.
Grafica - Código.
2.10 Implementación de colas con listas
La operación desencolar, a la cual se ha nombrado como retirarCola se
implementa mediante el siguiente algoritmo:

• La función retirarCola toma como


parámetro un puntero a la cola. Esta
función verifica que el puntero a la
cola no sea nulo, que el contador de
elementos almacenados sea mayor a
cero y que existan datos en la cola. Si
se cumple esta condición se
Grafica -Códigos
disminuye en uno el contador de
elementos, se toma el valor
almacenado y se elimina el elemento
respectivo.
2.10 Implementación de colas con listas
Para verificar el correcto funcionamiento de las operaciones
implementadas, es necesario implementar la función imprimirCola. El
implementación del algoritmo de la función imprimirCola se muestra a
continuación:
• La función imprimirCola toma como
parámetro la cola. Esta función
imprime en pantalla cada uno de los
elementos almacenados en el
campo dato, mediante una llamada
a la función imprimir, definida para
desplegar los elementos de una lista
simple en pantalla. La función
imprimirCola retorna el número de
Grafica - Código.
elementos de la cola.
2.10 Implementación de colas con listas
Para inicializar o vaciar la cola se implementa la función vaciar. La
implementación de la función vaciar se muestra a continuación:

• La función vaciarCola toma


como parámetro un puntero
a la cola. Esta función retira
todos los elementos de la
cola hasta dejarla vacía y
retorna el valor de cero.

Grafica - Código.
2.10 Implementación de colas con listas
El siguiente programa permite la verificación del funcionamiento de las
funciones implementadas para la cola basada en listas y junto a este se
muestra su ejecución: int main(){
ColaLista p;
inicializarCola(&p);
printf("Encolar: %d\n",agregarCola(&p,5));
imprimirCola(p);
printf("Encolar: %d\n",agregarCola(&p,4));
imprimirCola(p);
printf("Encolar: %d\n",agregarCola(&p,3));
imprimirCola(p);
printf("Desencolar: %d\n",retirarCola(&p));
imprimirCola(p);
printf("Desencolar: %d\n",retirarCola(&p));
imprimirCola(p);
printf("Desencolar: %d\n",retirarCola(&p));
imprimirCola(p);
return(0);
}
La educación es el arma más
poderosa que puedas usar
para cambiar el mundo.
Nelson Mandela

FIN DE LA CLASE 4
UNIDAD 2

También podría gustarte