Upload
others
View
15
Download
0
Embed Size (px)
Citation preview
19/04/2018
1
Facultad de Informática Culiacán
Tema: COLAS(Queue )
Instructor: MC. Gerardo Gálvez Gámez
Abril de 2018
UNIVERSIDAD AUTÓNOMA DE SINALOA
Colas • FIUAS
Temas
• Colas
▫ Definición.
▫ Características.
▫ Representación.
▫ Utilización.
▫ Estados de una estructura Cola.
▫ Tipos de Colas y Operaciones que
se pueden realizar.
▫ Clases para la implementación
de la estructura Cola.
▫ Prácticas y resolución de problemas.
19/04/2018
2
Colas • FIUAS
Definición de Cola
▫ Constituye una estructura lineal de datos en laque los nuevos elementos se introducen por unextremo y los ya existentes se eliminan por elotro. (Cairo)
• Es una colección de elementos homogéneosdispuestos en orden tal que se recuperan enigual orden a como se introdujeron.
• Reciben el nombre de estructuras FIFO(First-In, First-Out: primero en entrar,primero en salir).
Colas • FIUAS
Clasificación de Colas
Cola Lineal
Cola Circular
Doble Cola
19/04/2018
3
Colas • FIUAS
Características de la Cola
• Es una lista de elementos en la que éstos seintroducen por un extremo y se eliminan por otro.
• Los elementos se eliminan en el mismo orden en elque se insertaron.
• Por lo tanto el primer elemento que entra a la colaserá el primero en salir.
• El único elemento accesible es el primero.
Colas • FIUAS
Representación de Colas
• Mediante el uso de:
▫ Arreglos.
▫ Listas Enlazadas.
▫ Tipo de Objeto del
Lenguaje C# y Java
(Queue ).
122 222 333 ...
1 2 3
FRENTE FINAL
MÁX
122
...
222
333
1
2
3
FRENTE
FINAL
MÁX
19/04/2018
4
Colas • FIUAS
Utilización de Colas
Las Colas suelen emplearse en los siguientes contextos:
1. Personas esperando para usar un teléfono público (la primerapersona de la cola será la primera que use el teléfono).
2. Personas que esperan para ser atendidas en la caja de unbanco (la primera persona de la cola será la primera en seratendida).
3. Autos que esperan el cambio de luz de un semáforo en rojo.
4. Niños que esperan para subir a un juego mecánico.
5. Control de Impresiones.- Cuando hay una sola impresorapara atender a varios usuarios.
6. Sistemas de tiempo compartido. Varios usuarios compartenciertos recursos, como CPU y memoria de la computadora.
Colas • FIUAS
19/04/2018
5
Colas • FIUAS
Operaciones
• Insertar un elemento (se llevarán a cabo por el FINAL de la cola).
• Eliminar un elemento (se harán por el FRENTE).
• Auxiliares:▫ Cola Vacía (se presenta al intentar
eliminar).▫ Cola Llena (se presenta al tratar
insertar).▫ Limpiar Cola.▫ Cola Con Elementos.▫ Próximo Elemento en Salir.
Entra
Sale
Final
Frente
Colas • FIUAS
Estados de una Cola
Cola Llena Con Algunos Elementos
Cola Vacía
122
...
222
333
1
2
3
FRENTE
MÁXFINAL 999
a)
122
...
222
333
MÁX
1
2
3
FRENTE
FINAL
b)
...
c)
MÁX
1
2
3
FRENTE = FINAL = 0
19/04/2018
6
Colas • FIUAS
Clases para la implementación de
Colas Lineal
• Utilizando arreglos.
1.Debe definirse un Tamaño Máximo para la cola.2.Contar con una variable que guarde la posición del
primer elemento de la cola (FRENTE).3.Contar con una variable que guarde la posición del
último elemento de la cola (FINAL).
• Mediante Objetos de C#.
▫ Queue
Colas • FIUAS
Diseño de
la clase Cola Lineal
ColaLineal
- [ ]Datos: int- Frente:int- Final:int-Tamaño:int- Mensaje:string- NumeroError:int
+Insertar(pDato:int):void+Eliminar():int+LimpiarCola():void+ProximoElemento():int+ColaConElementos():bool.ColaVacia():bool-ColaLlena():bool
19/04/2018
7
Colas • FIUAS
Estado Inicial de la Cola (Vacía)
Frente
Final
0
8
7
6
5
4
3
2
1
Colas • FIUAS
Insertar el Primer Elemento
10Frente
Final
0
Elemento=10
8
7
6
5
4
3
2
1
19/04/2018
8
Colas • FIUAS
Insertar el Segundo Elemento
20
10Frente
Final
0
Elemento=20
8
7
6
5
4
3
2
1
Colas • FIUAS
Insertar el Tercer Elemento
30
20
10Frente
Final
0
Elemento=30
8
7
6
5
4
3
2
1
19/04/2018
9
Colas • FIUAS
Insertar el ultimo Elemento
70
60
50
40
30
20
10Frente
Final
0
Elemento=80
Nota: Cuando Final ==Tamaño de Cola, la Cola alcanza el estado de Cola llena
Tamaño=8
8
7
6
5
4
3
2
1
Colas • FIUAS
Insertar el ultimo Elemento
80
70
60
50
40
30
20
10Frente
Final
0
Elemento=80
Nota: Cuando Final ==Tamaño de Cola, la Cola alcanza el estado de Cola llena
Tamaño=8
8
7
6
5
4
3
2
1
19/04/2018
10
Colas • FIUAS
Algoritmo propuesto para Insertar
PUBLICO SINVALOR Insertar(ENTERO pDato)
INICIO
//Se verifica que exista espacio libre en la Cola
SI Existe espacio en Cola ENTONCES
Incrementar el Apuntador Final en 1
Insertar el dato en la cola
SI_NO
Indicar un mensaje de “Cola Llena”
FIN_SI
FIN
Lógica de la operación :Se realiza por el final
Colas • FIUAS
Eliminar Elemento
80
70
60
50
40
30
20
10Frente
Final
0
Lógica de la operación: Se realiza por el frente 8
7
6
5
4
3
2
1
19/04/2018
11
Colas • FIUAS
Eliminar Elemento
80
70
60
50
40
30
20
Frente
Final
0
8
7
6
5
4
3
2
1
Colas • FIUAS
Eliminar Elemento
80
70
60
50
40
30
Frente
Final
0
8
7
6
5
4
3
2
1
19/04/2018
12
Colas • FIUAS
Eliminar Elemento
80
70
60
50
40
Frente
Final
0
8
7
6
5
4
3
2
1
Colas • FIUAS
Eliminar Elemento
80
Frente
Final
0
8
7
6
5
4
3
2
1
19/04/2018
13
Colas • FIUAS
Eliminar el ultimo Elemento
Frente
Final
0
Nota: En este momento la
estructura Cola, alcanza el Estado de Cola Vacía?
8
7
6
5
4
3
2
1
Lógica de la operación: Se realiza por el frente
Colas • FIUAS
Algoritmo propuesto para Eliminar
PUBLICO ENTERO ELIMINAR()
INICIO
//Verificar que existan elementos en la Cola
SI Existen Elementos en la Cola ENTONCES
Incrementar el Apuntador Frente en 1
Eliminar el dato en la cola
SI_NO
Indicar un mensaje de “Cola Vacía”
FIN_SI
FIN // del Método
19/04/2018
14
Colas • FIUAS
Actividades para el Alumno:
Elaborar los algoritmos para cada una de lassiguientes operaciones restantes de la EstructuraCola.
▫ Cola Vacía (se presenta al intentar eliminar).▫ Cola Llena (se presenta al tratar insertar).
▫ Limpiar Cola.
▫ Cola Con Elementos.
▫ Próximo Elemento en Salir.
Prácticas
Resolución de problemas
utilizando la Estructura Colas
Lineal
19/04/2018
15
Colas • FIUAS
Proyectos:
Elaboré un proyecto gráfico, utilizando ellenguaje java y el IDE NetBeans, tal quepermita invocar las distintas operacionesde una estructura cola lineal, al mismotiempo que muestre gráficamente elestado de la estructura en pantalla.
Cola Circular
19/04/2018
16
Colas • FIUAS
Colas Circulares
• Constituyen unaestructura de datoslineal en la cual elsiguiente elementodel último en realidades el primero.
• De esta forma seutiliza de maneramás eficiente lamemoria de lacomputadora.
Colas • FIUAS
Cola Circular
• Las colas lineales tienen un grave problema:
▫ Las extracciones sólo pueden realizarse por un extremo
▫ Puede llegar un momento en que el apuntador Final, sea igual al máximo número de elementos en la cola
▫ Siendo que al Frente de la misma existan lugares vacíos, y
▫ Al insertar un nuevo elemento mandará un error de cola llena.
19/04/2018
17
Colas • FIUAS
Ejemplo de Espacios Disponibles
80
70
60
50
40
30
Frente
Final
-1
Se realiza por el frente
7
6
5
4
3
2
1
0
Colas • FIUAS
Cola Circular
• Para solucionar el problema de desperdicio dememoria se implementaron las colascirculares, en las cuales existe un apuntadordesde el último elemento al primero de lacola.
• Las condiciones para este tipo de estructurason:
▫ Cola Llena.- cuando se realice una inserción.
▫ Cola Vacía.- cuando se requiera de una extracciónen la cola.
19/04/2018
18
Colas • FIUAS
Operaciones
• InsertarColaCircula
• EliminarColaCircula
▫ Actividad para el alumno:
Elaborar los Algoritmos correspondientes a las Operaciones Anteriores.
Pág. 99 bibliografía: OSVALDO CAIRO
Colas • FIUAS
Ejemplo de inserción
PP ZZ KK TT VV RR
0 1 2 3 4 5 6 7
FINAL FRENTE
COLA CIRCULAR
ZZ KK TT VV RR
0 1 2 3 4 5 6 7
FRENTE FINAL
COLA CIRCULAR
19/04/2018
19
Colas • FIUAS
Ejemplos de Cola Llena
PP AA GG ZZ KK TT VV RR
0 1 2 3 4 5 6 7
FINAL FRENTE
COLA CIRCULAR
BB AA ZZ KK TT VV RR ZZ
-1 0 1 2 3 4 5 6 7
FRENTE FINAL
COLA CIRCULAR SI Frente ==-1 AND Final ==Tamaño-1
SI Final == Frente
Colas • FIUAS
Ejemplo de Eliminación
PP RR
0 1 2 3 4 5 6 7
FINAL FRENTE
COLA CIRCULAR
KK TT VV RR
0 1 2 3 4 5 6 7
FRENTE FINAL
COLA CIRCULAR Se incrementa Frente y se elimina el dato
19/04/2018
20
Colas • FIUAS
Cola Vacía
PP dd gg
0 1 2 3 4 5 6 7
FINAL FRENTE
COLA CIRCULAR
Se incrementa Frente y se elimina el dato
SI al Eliminar el Frente alcanza a FinalHacer que Frente y Final = -1
Colas • FIUAS
Diseño de
la clase ColaCircularColaCircular
- [ ]arreglo: int- Frente:int- Final:int-Tamaño:int- mensaje:string- numeroerror:int
+Insertar(Dato:int):void+Eliminar():int+LimpiarCola():void+ProximoElemento():int+ColaConElementos():bool.ColaVacia():bool-ColaLlena():bool
19/04/2018
21
Doble Cola
Bicola
Colas • FIUAS
Doble Cola
• Es una generalización de una estructura de cola simple.
• Los elementos pueden ser insertados o eliminados por cualquiera de los extremos.
• Se pueden insertar y eliminar valores tanto por el FRENTE como por el FINAL de la cola
1 2 3 MÁX
DOBLE COLAFRENTE FINAL
19/04/2018
22
Colas • FIUAS
Variantes de dobles colas• Doble cola con entrada restringida.- Permite que las
eliminaciones puedan hacerse por cualquiera de los dos Extremos, mientras que las inserciones sólo por el FINAL de la cola.
• Doble cola con salida restringida.- Permite que las inserciones puedan hacerse por cualquiera de los dos Extremos, mientras que las eliminaciones sólo por el FRENTE de la cola
1 2 3 MÁX
DOBLE COLAFRENTE FINAL
1 2 3 MÁX
DOBLE COLAFRENTE FINAL
Colas • FIUAS
Operaciones
• Insertar
• Eliminar
19/04/2018
23
Colas • FIUAS
Actividad
▫ Elaborar los Algoritmoscorrespondientes a lasOperaciones Anteriores, paracada tipo de doble cola.
Colas • FIUAS
Bibliografía
ESTRUCTURAS DE DATOS
De: OSVALDO CAIRO
Editorial: MCGRAW-HILL INTERAMERICANA
ISBN: 9701059085
Edición: 3ª
Año: 2006
No. de páginas: 467
Idioma: ESPAÑOL
País: MEXICO
19/04/2018
24
Colas • FIUAS
Preguntas?
FIN de Unidad