1 / 21

Estructura: COLA

Estructura: COLA. Profesor: Ing. Erick López Ch. M.R.I. COLAS. El concepto de cola es ampliamente utilizado en la vida real.

monte
Download Presentation

Estructura: COLA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Estructura:COLA Profesor: Ing. Erick López Ch. M.R.I.

  2. COLAS • El concepto de cola es ampliamente utilizado en la vida real. • Fila en el cine, en el autoservicio, cajeros automáticos, etc. Esto significa que formamos una fila en la que el primero que llega es el primero en obtener el servicio y salir de la misma. Esta política de funcionamiento se denomina FIFO (First In First Out), es decir, el primer elemento en entrar es el primer elemento en salir: • Definición: • Una cola es un conjunto ordenado de elementos homogéneos, en el cual los elementos se eliminan por uno de sus extermos, denominado frente (cabeza), y se añaden por el otro extremo, denominado fondo (final). Las eliminaciones y añadidos se realizan siguiendo una política FIFO.

  3. COLAS • Al igual que las pilas, las colas se gestionan añadiendo y borrando elementos de las mismas. En este caso en particular las dos operaciones básicas de maniopulación funcionan del siguiente modo: • AÑADIR: Añade un elemento al final de la cola. • ELIMINAR: Elimina un elemento del frente de la cola. Cab E2 E1 E1 Cab E1 Cab Cab E3 E2 E2 E2 E4 E3 Fin E3 E3 Fin Fin E5 E4 E4 Fin E5

  4. COLAS • En el ámbito de la informática las colas son ampliamente utilizadas. Por ejemplo, los sistemas operativos suelen utilizar esta estructura de datos para gestionar los recursos que pueden ser compartidos por varios procesos (gestión de memoria, tiempo de procesador, etc). En general, las colas se aplicarán cuando los objetos manejados sigan una política FIFO.

  5. COLAS - Axiomas • ColaVacia(CrearCola) = Verdadero • ColaVacia(Añadir(S,e))=falso • Eliminar(CrearCola) = error • Eliminar(Añadir(S,e)) = Si ColaVacia(S) entonces CrearCola sino Añadir(Eliminar(S),e) • Cabeza(CrearCola) = error • Cabeza(Añadir(S,e)) = Si ColaVacia(S) entonces e sino Cabeza(S)

  6. COLAS - Implementación CONST Max = … ; {número máximo de elementos} TYPE TipoCola = Record datos:array[1..Max] of TipoBase; Frente, Fondo:0..Max End;

  7. COLAS - Implementación PROCEDURE CrearCola (var q:tipoCola); Begin q.frente:=0; q.fondo:=0; End; PROCEDURE ColaVacia (q:TipoCola):Boolean; Begin ColaVacia:=(q.frente=q.fondo) End; PROCEDURE Frente(q:TipoCola; var e:TipoBase); Begin If Not ColaVacia(q) then e:=q.datos[q.frente+1] end; End;

  8. COLAS - Implementación PROCEDURE Eliminar (var q:tipoCola); Begin If Not ColaVacia(q) Then q.frente:=q.frente+1 end End; PROCEDURE Añadir (var q:TipoCola; e:TipoBase); Begin If Not ColaLlena(q) Then q.fondo:=q.fondo+1; q.datos[q.fondo]:=e End End;

  9. COLAS Circulares

  10. COLAS - Implementación FUNCTION Siguiente ( i:INTEGER ):INTEGER; BEGIN IF (i<>MAX) THEN Siguiente := i+1 ELSE Siguiente := 1 END; FUNCTION Siguiente ( i:INTEGER ):INTEGER; BEGIN Siguiente := i MOD MAX + 1 END;

  11. COLAS - Implementación PROCEDURE CrearCola ( VAR q: TipoCola ); BEGIN q.cabeza := MAX; q.final := MAX END;

  12. COLAS - Implementación FUNCTION ColaVacia ( q: TipoCola ): BOOLEAN; BEGIN ColaVacia := (q.cabeza=q.final) END; PROCEDURE Cabeza (q: TipoCola ; VAR e:Tipobase;); BEGIN IF Not ColaVacia(q) THEN BEGIN e := q.datos[Siguiente(q.cabeza)] END END;

  13. COLAS - Implementación PROCEDURE Eliminar ( VAR q: TipoCola); BEGIN IF Not ColaVacia(q) THEN BEGIN q.cabeza := Siguiente(q.cabeza) END END;

  14. COLAS - Implementación PROCEDURE Añadir (VAR q: TipoCola; e:Tipobase); BEGIN IF Not ColaLlena(q) THEN BEGIN q.final := Siguiente(q.final); q.datos[q.final] := e END END;

  15. COLAS - Implementación

  16. COLAS - Implementación

  17. COLAS - Implementación

  18. COLAS - Implementación

  19. EJERCICIO COLA Un concesionario de autos tiene un número limitado m de modelos, todos en un número limitado c de colores distintos. Cuando un cliente quiere comprar un auto, pide un auto de un modelo y color determinados. Si el auto de ese modelo y color no está disponible en el concesionario, se toman los datos del cliente (nombre y dirección), que verá atendida su petición cuando el auto esté disponible. Si hay más de una petición de un auto de las mismas características, se atienden las peticiones por orden cronológico. Se pide: • Definir la estructura de datos más adecuada capaz de contener las peticiones de un modelo y color de auto. b) Definir una operación que, dado un cliente (nombre y dirección) que desea comprar un auto de un modelo y color determinado, coloque sus datos como última petición de ese modelo y color.

  20. EJERCICIO COLA c) Definir una operación que, dado un modelo del que se han recibido k autos de determinado color, elimine los k primeros clientes de la lista de peticiones de ese coche y los devuelva en un vector, sabiendo que k <= 20.

More Related