Está en la página 1de 43

ESTRUCTURAS DE DATOS

LIC. REDES Y SERVICIOS DE CÓMPUTO

Facultad de Estadística e Informática


Clase
▪Unidad V. Colas
• Fundamentos teóricos
• Implantación de colas
• Operaciones básicas de colas
• Operaciones complementarias de colas
• Aplicaciones de colas

Facultad de Estadística e Informática


Una cola es una estructura de datos que almacena
elementos en una lista y permite acceder a los datos
por uno de los dos extremos de la lista.
Un elemento se inserta en la cola (parte final) de la
lista y se suprime o elimina por la frente (parte inicial,
cabeza) de la lista.
Saca o Inserta o
Elimnina Mete

Facultad de Estadística e Informática


Colas
o Los elementos se eliminan (se quitan)
de la cola en el mismo orden en que se
almacenan y, por consiguiente, una
cola es una estructura de tipo FIFO
(first-in-first-out, primero en entrar,
Primero en salir o bien primero en
llegar/primero en ser servido).
o El servicio de atención a clientes es un
ejemplo típico de cola o el cajero de
un banco.

Facultad de Estadística e Informática


Colas
Los datos se almacenan de un modo lineal y el acceso a los datos solo está
permitido en los extremos de la cola.

Los nodos de una cola se eliminan solo desde el principio (cabeza) de la misma
y se insertan sólo al final (cola) de ésta.

Ejemplos del uso de colas son: la cola de impresión, los paquetes de información
en la red, peticiones de clientes a un servidor de archivos en una red.

Facultad de Estadística e Informática


Colas
Implementación de Colas
Las colas no existen como estructuras de datos estándar en los lenguajes de
programación.
Este tipo de estructura de datos se puede representar mediante el uso de arreglos o
listas.
En este curso se hará la implementación de la estructura de Colas a través de Listas
simplemente enlazadas y bajo el paradigma de POO.

Facultad de Estadística e Informática


Colas
Implementación de Colas
Constructor
Está vacía
Agregar elemento
Eliminar elemento
Mostrar el primer elemento (Frente)
Mostrar el último elemento (Final)
Mostrar los datos de la cola
Destructor

Facultad de Estadística e Informática


Colas
Implementación de Colas
Eliminar un elemento de la cola

Copiar los elementos de una cola a otra

Contar el número de elementos de una cola

Encontrar el número mayor en los elementos de una cola

Mezclar los elementos de una cola

Facultad de Estadística e Informática


Colas
o La clase Nodo

o Crea un Nodo formado por los campos:


o dato (de tipo entero) que corresponde al
valor que contiene el nodo y
o siguientePtr (de tipo apuntador) que
corresponde a la dirección del siguiente
nodo en la cola.
dato siguientePtr

Facultad de Estadística e Informática


Colas
o La clase Cola

o Crea la estructura Cola, formada por dos


nodos:
o Uno que apunta al inicio de la cola.
o Otro que apunta al final de la cola.
inicioPtr FinalPtr

o Se definen los métodos de la clase Cola.

Facultad de Estadística e Informática


Colas
o Método estaVacia()

o Verifica si ambos nodos apuntan a Null;


si es el caso, la cola no tiene nodos.

inicioPtr FinalPtr

NULL NULL

return 1

Facultad de Estadística e Informática


Colas
o Método Cola()

o Es el constructor que inicializa el inicio de la cola


y el final de la cola con NULL.

inicioPtr = NULL FinalPtr = NULL

Facultad de Estadística e Informática


Colas
o Método ~Cola()

o Es el destructor. Libera el espacio en


memoria ocupado por los nodos de
la Cola.
o Emplea el método saca()

Facultad de Estadística e Informática


Colas
o Método saca()

o Saca el elemento que está al


inicio de la cola.

Facultad de Estadística e Informática


Frente
Inicio
Cabeza
Saca

Colas dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


dato siguientePtr

8 3 5

Colas inicioPtr FinalPtr


NULL

inicioPtr

dato siguientePtr

8 3 5
NULL
FinalPtr
inicioPtr

dato siguientePtr

X8 3 5
NULL
FinalPtr

Facultad de Estadística e Informática


Colas
o Método mete(int valor)

o Mete un elemento, siempre al


final de la lista.

Facultad de Estadística e Informática


Frente
Final
Inicio
Saca Mete

Colas dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

valor=7

dato siguientePtr

NULL

nuevoPtr

Facultad de Estadística e Informática


Frente
Final
Inicio
Saca Mete

Colas nuevoPtr
7
dato siguientePtr
NULL

8 3 5
NULL
inicioPtr FinalPtr

dato siguientePtr

nuevoPtr
8 3 5 7
NULL NULL
inicioPtr FinalPtr

dato siguientePtr

nuevoPtr
8 3 5 7
NULL
Facultad de Estadística inicioPtr
e Informática FinalPtr
Colas
dato siguientePtr

nuevoPtr
8 3 5 7
NULL
inicioPtr FinalPtr

dato siguientePtr

nuevoPtr
8 3 5 7
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas

inicioPtr finalPtr

NULL NULL

nuevoPtr
7
inicioPtr
NULL
finalPtr

Facultad de Estadística e Informática


Colas
o Actividad:

Elabora el método int Cola::nodoInicio() y el método int Cola::nodoFinal(). Es


decir el método para obtener el dato del frente y del final de la cola:
Frente
Final
Inicio
dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Método nodoInicio()

o Obtiene el dato del inicio (Frente) de


la Cola.
Frente
Inicio Final
dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Método nodoFinal()

o Obtiene el dato del Final


(Cola) de la Cola.
Frente Final
Inicio Cola
dato siguientePtr

8 3 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Método Cola::muestra()

o Muestra los datos de la Cola.

Facultad de Estadística e Informática


Frente
Inicio

Saca
Colas dato siguientePtr

8 3 5
o Método Cola::muestra() NULL
inicioPtr FinalPtr

o Muestra los datos de la Cola.


Cola Aux

inicioPtr = NULL FinalPtr = NULL

Facultad de Estadística e Informática


Frente
Inicio

Colas SacasiguientePtr
dato

8 3 5
o Método Cola::muestra() NULL
inicioPtr FinalPtr

o Muestra los datos de la Cola.

x=8
Escribe en pantalla: 8 ->
Llama al método saca(). Saca el nodo
al frente de la Cola (que contiene el 8)
Llama al método mete(). Con la cola
aux. Para meter x (con el valor 8)

Facultad de Estadística e Informática


Cola Aux 8
NULL
Colas
3 5
o Método Cola::muestra() inicioPtr FinalPtr
NULL

x=3
Escribe en pantalla: 8 -> 3 →
Llama al método saca(). Saca el nodo
al frente de la Cola (que contiene el 3)
Llama al método mete(). Con la cola
aux. Para meter x (con el valor 3)

Facultad de Estadística e Informática


Cola Aux 8 3

Colas NULL

5
o Método Cola::muestra() inicioPtr FinalPtr NULL

x=5
Escribe en pantalla: 8 -> 3 → 5 ->
Llama al método saca(). Saca el nodo
al frente de la Cola (que contiene el 5)
Llama al método mete(). Con la cola
aux. Para meter x (con el valor 5)

FinalPtr NULL
inicioPtr

Facultad de Estadística e Informática


Frente
Inicio

Saca

Colas Cola Aux 8 3 5


NULL

o Método Cola::muestra()
FinalPtr NULL
inicioPtr
x=8
Llama al método saca(). Saca el nodo al frente
de la Cola aux (que contiene el 8)
Llama al método mete(). Para meter x (con el
valor 8) en la Cola original.
Cola Aux 3 5
NULL
Cola 8
Original
NULL

Facultad de Estadística e Informática


Cola Aux 3 5
NULL
Cola 8
Colas Original
NULL

o Método Cola::muestra() x=3


Llama al método saca(). Saca el nodo al frente
de la Cola aux (que contiene el 3)
Llama al método mete(). Para meter x (con el
valor 3) en la Cola original.

Cola Aux 5
NULL
Cola
8 3
Original
NULL

Facultad de Estadística e Informática


Cola Aux 5
NULL
Cola
8 3
Colas Original
NULL

o Método Cola::muestra() x=5


Llama al método saca(). Saca el nodo al frente
de la Cola aux (que contiene el 5)
Llama al método mete(). Para meter x (con el
valor 5) en la Cola original.

Cola Aux
NULL
Cola 5
8 3
Original
NULL

Facultad de Estadística e Informática


Colas
o Método Cola::mueve(Cola &c)

o Mueve los elementos de una cola c, a


la cola original.

Facultad de Estadística e Informática


Colas
o Método
Cola::eliminaNodo(int
referencia)
o Elimina el nodo que contenga
el dato dado como
referencia.

Facultad de Estadística e Informática


Colas
o Actividad:

Elabora los gráficos que ilustren el funcionamiento del método


Cola::eliminaNodo(int referencia), con el valor de referencia 9;
para ser eliminado de la siguiente cola:
dato siguientePtr

8 3 7 9 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Método Cola::cantidadElementos()

dato siguientePtr

7 9 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Método
Cola::cantidadElementos()
o Regresa la cantidad de
elementos que contiene la Cola.

Facultad de Estadística e Informática


Colas
o Método
Cola::cantidadElementos()
o Regresa la cantidad de
elementos que contiene la Cola.

Facultad de Estadística e Informática


Colas
o Método
Cola::cantidadElementos()
o Regresa la cantidad de
elementos que contiene la Cola.

Facultad de Estadística e Informática


Colas
o Actividad:

Elabora el método int Cola::nodoMayor().


Es el método para regresar el dato con el número mayor
almacenado en los nodos de la Cola.
dato siguientePtr

8 3 7 9 5
NULL
inicioPtr FinalPtr

Facultad de Estadística e Informática


Colas
o Aplicaciones de las colas

Una aplicación común es el envío a imprimir de un documento en las colas


de impresión.
Cuando hay una sola impresora para atender a varios usuarios; suele
suceder que algunos de ellos solicitan el servicio de impresión al mismo
tiempo o mientras está ocupado el dispositivo.
Se forma una cola con los trabajos que esperan para ser impresos y se
procesarán en el orden en el que fueron introducidos a la cola.

Facultad de Estadística e Informática


Colas
o Aplicaciones de las colas

Otra aplicación es la presentada en los sistemas de tiempo compartido.


Varios usuarios comparten ciertos recursos como CPU y memoria de la
computadora.
Los recursos se asignan a los procesos que están en la cola de espera, en el
orden en el cual fueron introducidos a la cola.

Facultad de Estadística e Informática


Bibliografía
Cairó, O. y Guardati, S. (2002). Estructuras de Datos, 2da. Edición. McGraw-Hill.

Deitel P.J. y Deitel H.M. (2008) Cómo programar en C++. 6ª edición.Prentice Hall.

Joyanes, L. (2006). Programación en C++: Algoritmos, Estructuras de datos y objetos.


McGraw-Hill.

Facultad de Estadística e Informática

También podría gustarte