0% encontró este documento útil (0 votos)
15 vistas20 páginas

U2 05 Colas

Una cola es una estructura de datos que opera bajo el principio FIFO, permitiendo la inserción y eliminación de elementos desde dos extremos: frente y final. Existen diferentes tipos de colas, como estáticas, dinámicas, dobles y circulares, cada una con sus propias características y métodos de implementación. En Java, se puede implementar una cola dinámica utilizando una lista ligada, y se utiliza en aplicaciones como el despacho de procesos en sistemas operativos.

Cargado por

Adriana Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas20 páginas

U2 05 Colas

Una cola es una estructura de datos que opera bajo el principio FIFO, permitiendo la inserción y eliminación de elementos desde dos extremos: frente y final. Existen diferentes tipos de colas, como estáticas, dinámicas, dobles y circulares, cada una con sus propias características y métodos de implementación. En Java, se puede implementar una cola dinámica utilizando una lista ligada, y se utiliza en aplicaciones como el despacho de procesos en sistemas operativos.

Cargado por

Adriana Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Colas

Estructuras y organización de datos


Definición
•Una cola es un conjunto de componentes
homogéneos, los cuales se insertan y se eliminan
de acuerdo con el principio FIFO (Fisrt In, First
Out): el primer componente en insertarse es el
primero en eliminarse.
Definición
•Una cola es una colección de datos que sólo puede
accederse por dos extremos, uno llamado frente
para eliminar datos y otro llamado final para
insertar datos.

Frente Final
Aplicaciones
Clasificación
•Cola estática •Cola dinámica
•Se implementa con un •Se implementa con una
arreglo lista ligada
p=frente

final
4
Clasificación
•Cola doble o bicola •Cola circular
•Inserción/eliminación •El siguiente componente
por el frente o final del final es el frente

Frente=(Frente+1)%MAX
Final=(Final+1)%MAX
Operaciones
•Encolar. Inserta un componente en el final
•Desencolar. Eliminar el componente en el frente
•Ver el frente. Consulta el componente del frente
•Ver el final. Consulta el componente del final
•Es vacía. Verifica si está vacía

desencola( ) encola(sábado)
Implementación en Java
<<interface>> Cola esVacia regresa verdadero si la cola
está es vacía, falso en otro caso
+esVacia():boolean
+verFrente():Object verFrente/Final regresa el objeto
+verFinal ():Object
almacenado en el frente/final o null si la
+encolar(info:Object):Object
+desencolar():Object cola es vacía
<<implements>>
encolar regresa el objeto insertado
ColaDinamica exitosamente en el final, regresa null en
-lacola:LinkedList otro caso
+ColaDinamica(p:ListaSimple) desencolar regresa el objeto
+ColaDinamica()
+setLaCola(p:LinkedList):void eliminado del frente o null si es vacía
+getLaCola():LinkedList
+esVacia():boolean
+verFrente():Object
+verFinal():Object
+encolar(info:Object):Object
+desencolar():Object
Implementación en Java
Implementación en Java
Implementación en Java
Implementación en Java
Aplicación: Despacha proceso por
rebanadas de tiempo=2ut
Procesador Procesador Procesador Procesador

P1 P1 P2

P1 P2 P2 P3

P2 P3 P3 P4

P3 P4 P4 P5

P4 P5 P5

P5

ColaProc ColaProc ColaProc ColaProc


Aplicación: Despacha proceso por
rebanadas de tiempo=2ut
Procesador Procesador Procesador Procesador

P2 P3 P4 P4
3 2

P3 P3
P4 3 P5 2 P5 2

P4 P5 2 P2 1 P2 1

P5 P2 1

ColaProc ColaProc ColaProc ColaProc


Aplicación: Despacha proceso por
rebanadas de tiempo=2ut
Procesador Procesador Procesador Procesador
8 9 10 11

P5 P5 P2 P4
1 1

P2 P3
P2 13 P4 1

P4 1 P4 1
2

P2 1

ColaProc ColaProc ColaProc ColaProc


Aplicación: Despachador de procesos
<<interface>> Cola
<<implements>>

usa
ColaDinamica LinkedList
usa

DespachadorP
-colaProc:ColaDinamica
-rebanadaT:int Proceso
-procEnDespacho:Proceso -id:String
-tiempo:int 1 0…* -numOp:int
tiene
+DespachadorP() +Proceso()
+set/get +Proceso(i:String,n:int)
+creaColaProcs():void +set/get
+despachaProcs():void
+main(args:String[]):void
Aplicación: creaColaProcs
1. Inicio
2. Leer (rebanadaT)
3. Leer (numProcs)
4. Para i=0,1,…,numProcs-1
4.1. Leer (idProc)
4.2. Leer (numOp)
4.3. [Link](new Proceso(id,numOp))
5. Fin
Aplicación: despachaProcs
1. Inicio
2. Tiempo = 0
3. Mientras colaProcs no vacío
3.1. procesoEnDespacho = [Link]()
3.2. id=[Link]
3.3. numOp = [Link]
3.4. contaReb = 1
3.5. Mientras numOp>0 & contaReb<rebanadaT
3.5.1. Escribir (‘Tiempo=‘,Tiempo)
3.5.2. Escribir (‘Despachando a: ‘,id)
3.5.3. Escribir (numOp,’transacciones’)
3.5.4. numOp--
3.5.5. contaReb++
3.5.6. Tiempo++
3.6. Si numOp>0
3.6.1. [Link](new Proceso(id,numOp))
4. Fin
Aplicación: main
1. Inicio
2. Declarar e instanciar midesp de la clase DespachadorP
3. Crear cola de procesos
4. Despachar los procesos
5. Fin

También podría gustarte