SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Pilas y Colas
Dennis Escobar Salazar
Ampliación de informática
Índice
◼ TDA Cola
◼ Definición y operaciones básicas
◼ Operaciones e implementación
◼ Aplicaciones
TDA COLA
Def: una cola es una lista ordenada de elementos en la que todas las
inserciones se realizan por un extremo (frente o principio) y las
supresiones se realizan por el otro (final).
Definición
Estructura FIFO (First In First Out): “primero en entrar primero
en salir”
Operaciones básicas
◼ QUEUE: encolar, meter
◼ DEQUEUE: desencolar, sacar
TDA COLA
Operaciones
◼ Crear_cola(C: cola, ok: lógico)
◼ Borrar_cola(C: cola, ok: lógico)
◼ Vacía?(C: cola, resp: lógico)
◼ Llena?(C: cola, resp: lógico)
◼ Queue(C: cola, X: elemento, resp: lógico)
◼ Dequeue(C: cola, X: elemento, resp: lógico)
◼ Tamaño(C: cola, N: numérico)
TDA COLA
Implementación con listas enlazadas
◼ Definición de tipos
ELEMENTO = T;
NODO = registro de
info: ELEMENTO;
sgte: puntero a NODO;
fin registro;
POSICION = puntero a NODO;
TDA COLA
COLA = registro de
tam: numerico;
prim, ult: POSICIÓN;
fin registro;
Implementación con listas enlazadas
◼ Operación QUEUE
Algoritmo QUEUE(C: cola, X: ELEMENTO, resp: lógico) es
temp: POSICION;
INICIO
Llena?(C,resp);
si resp = cierto entonces
Escribir “Cola llena”;
resp := falso;
sino {la cola no está llena, por lo que procedemos a añadir el elemento}
Obtener(temp);
temp →.info := X;
temp→.sgte := nil; {porque va a ser el último}
Vacía?(C,resp);
si resp = cierto entonces {será el primero}
C.prim := temp;
sino C.ult→.sgte := temp; {será el siguiente al último}
finsi;
C.ult := temp; {porque es el nuevo último elemento}
C.longitud := C.longitud + 1; {pues ahora hay un elemento más en la cola}
finsi;
FIN
TDA COLA
Implementación con listas enlazadas
◼ Operación DEQUEUE
Algoritmo DEQUEUE(C: cola, X: ELEMENTO, resp: lógico) es
temp: POSICION;
tam: numérico;
INICIO
Vacía?(C,resp);
si resp = cierto entonces
Escribir “Cola vacía”;
resp := falso;
sino
temp := C.prim;
E := temp→.info;
Tamaño(C,tam);
si tam = 1 entonces
C.ult := nil;
finsi;
C.prim := temp→.sgte; {si sólo había un elemento, será nil}
Liberar(temp);
C.longitud := C.longitud -1;
finsi;
FIN
TDA COLA
Implementación con vectores
◼ Si el principio de la cola es fijo en la primera posición del vector y el final es
variante para eliminar un elemento de la cola hay que desplazar todos los
demás una posición (Dequeue() es ineficiente).
◼ Si principio y final de la cola son variantes, no hacen falta desplazamientos.
◼ Problema: la cola puede desbordarse teniendo celdas libres.
TDA COLA
Implementación con vectores
◼ Solución: VECTOR CIRCULAR cuando algún índice llega al final, vuelve al
comienzo del vector
TDA COLA
Para saber si la cola está llena o
vacía, su tamaño se controla con el
campo tam del registro
◼ Definición de tipos
ELEMENTO = T;
COLA = registro de
prim, ult, tam: numérico;
arreglo: vector[1..MAX] de
ELEMENTO;
finregistro;
Implementación con vectores
◼ Operación QUEUE
Algoritmo QUEUE(C: COLA, X: ELEMENTO, resp: lógico) es
INICIO
Llena?(C,resp);
si resp = cierto entonces {la cola está llena}
Escribir “Cola llena”;
resp := falso;
sino {la cola no está llena, por lo que procedemos a añadir el elemento}
C.ult := (C.ult + 1) mod MAX; {hacemos que ult avance de forma circular}
C.arreglo[C.ult] := X;
C.tam := C.tam +1; {pues ahora hay un elemento más en la cola}
finsi;
FIN
TDA COLA
Implementación con vectores
◼ Operación Dequeue
Algoritmo DEQUEUE(C: COLA, X: ELEMENTO, resp: lógico) es
INICIO
Vacía?(C,resp);
si resp = cierto entonces {la cola está vacía}
Escribir “Cola vacía”;
resp := falso;
sino {hay al menos un elemento}
X := C.arreglo[C.prim];
C.prim := (C.prim + 1) mod MAX;
C.longitud := C.longitud -1;
finsi;
FIN
TDA COLA
Aplicaciones de las colas
Principalmente: gestión de recursos
◼ Sistemas de tiempo compartido: los recursos (CPU, memoria, …) se
asignan a los procesos que están en cola de espera en el orden en el
que fueron introducidos.
◼ Colas de impresión: al intentar imprimir varios documentos a la vez o la
impresora está ocupada, los trabajos se almacenan en una cola según
el orden de llegada.
◼ Simulación por computadora de situaciones reales: una cola de clientes
en un supermercado o el tiempo de espera para ser atendidos por un
operador de una línea telefónica.
TDA COLA

Weitere ähnliche Inhalte

Ähnlich wie Colas Dennis Escobar Salazar.pdf (20)

2- TDA Listas
2- TDA Listas2- TDA Listas
2- TDA Listas
 
Estructura dedatos
Estructura dedatosEstructura dedatos
Estructura dedatos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
10 colas1 t2018
10 colas1 t201810 colas1 t2018
10 colas1 t2018
 
Ejercicios pilas y_colas
Ejercicios pilas y_colasEjercicios pilas y_colas
Ejercicios pilas y_colas
 
Pilas Dennis Escobar Salazar.pdf
Pilas Dennis Escobar Salazar.pdfPilas Dennis Escobar Salazar.pdf
Pilas Dennis Escobar Salazar.pdf
 
Colas
ColasColas
Colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Operaciones con colas
Operaciones con colasOperaciones con colas
Operaciones con colas
 
08 pilas1 t2018
08 pilas1 t201808 pilas1 t2018
08 pilas1 t2018
 
Practica 3
Practica  3Practica  3
Practica 3
 
Evidencia unidad 1
Evidencia unidad 1Evidencia unidad 1
Evidencia unidad 1
 
Apuntes generación de codigo intermedio
Apuntes generación de codigo intermedioApuntes generación de codigo intermedio
Apuntes generación de codigo intermedio
 
Pilas colas
Pilas colasPilas colas
Pilas colas
 
PILAS
PILASPILAS
PILAS
 
colasEjeRe_1_2022.pdf
colasEjeRe_1_2022.pdfcolasEjeRe_1_2022.pdf
colasEjeRe_1_2022.pdf
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
 
S6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colasS6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colas
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 

Colas Dennis Escobar Salazar.pdf

  • 1. Pilas y Colas Dennis Escobar Salazar Ampliación de informática
  • 2. Índice ◼ TDA Cola ◼ Definición y operaciones básicas ◼ Operaciones e implementación ◼ Aplicaciones
  • 3. TDA COLA Def: una cola es una lista ordenada de elementos en la que todas las inserciones se realizan por un extremo (frente o principio) y las supresiones se realizan por el otro (final). Definición Estructura FIFO (First In First Out): “primero en entrar primero en salir”
  • 4. Operaciones básicas ◼ QUEUE: encolar, meter ◼ DEQUEUE: desencolar, sacar TDA COLA
  • 5. Operaciones ◼ Crear_cola(C: cola, ok: lógico) ◼ Borrar_cola(C: cola, ok: lógico) ◼ Vacía?(C: cola, resp: lógico) ◼ Llena?(C: cola, resp: lógico) ◼ Queue(C: cola, X: elemento, resp: lógico) ◼ Dequeue(C: cola, X: elemento, resp: lógico) ◼ Tamaño(C: cola, N: numérico) TDA COLA
  • 6. Implementación con listas enlazadas ◼ Definición de tipos ELEMENTO = T; NODO = registro de info: ELEMENTO; sgte: puntero a NODO; fin registro; POSICION = puntero a NODO; TDA COLA COLA = registro de tam: numerico; prim, ult: POSICIÓN; fin registro;
  • 7. Implementación con listas enlazadas ◼ Operación QUEUE Algoritmo QUEUE(C: cola, X: ELEMENTO, resp: lógico) es temp: POSICION; INICIO Llena?(C,resp); si resp = cierto entonces Escribir “Cola llena”; resp := falso; sino {la cola no está llena, por lo que procedemos a añadir el elemento} Obtener(temp); temp →.info := X; temp→.sgte := nil; {porque va a ser el último} Vacía?(C,resp); si resp = cierto entonces {será el primero} C.prim := temp; sino C.ult→.sgte := temp; {será el siguiente al último} finsi; C.ult := temp; {porque es el nuevo último elemento} C.longitud := C.longitud + 1; {pues ahora hay un elemento más en la cola} finsi; FIN TDA COLA
  • 8. Implementación con listas enlazadas ◼ Operación DEQUEUE Algoritmo DEQUEUE(C: cola, X: ELEMENTO, resp: lógico) es temp: POSICION; tam: numérico; INICIO Vacía?(C,resp); si resp = cierto entonces Escribir “Cola vacía”; resp := falso; sino temp := C.prim; E := temp→.info; Tamaño(C,tam); si tam = 1 entonces C.ult := nil; finsi; C.prim := temp→.sgte; {si sólo había un elemento, será nil} Liberar(temp); C.longitud := C.longitud -1; finsi; FIN TDA COLA
  • 9. Implementación con vectores ◼ Si el principio de la cola es fijo en la primera posición del vector y el final es variante para eliminar un elemento de la cola hay que desplazar todos los demás una posición (Dequeue() es ineficiente). ◼ Si principio y final de la cola son variantes, no hacen falta desplazamientos. ◼ Problema: la cola puede desbordarse teniendo celdas libres. TDA COLA
  • 10. Implementación con vectores ◼ Solución: VECTOR CIRCULAR cuando algún índice llega al final, vuelve al comienzo del vector TDA COLA Para saber si la cola está llena o vacía, su tamaño se controla con el campo tam del registro ◼ Definición de tipos ELEMENTO = T; COLA = registro de prim, ult, tam: numérico; arreglo: vector[1..MAX] de ELEMENTO; finregistro;
  • 11. Implementación con vectores ◼ Operación QUEUE Algoritmo QUEUE(C: COLA, X: ELEMENTO, resp: lógico) es INICIO Llena?(C,resp); si resp = cierto entonces {la cola está llena} Escribir “Cola llena”; resp := falso; sino {la cola no está llena, por lo que procedemos a añadir el elemento} C.ult := (C.ult + 1) mod MAX; {hacemos que ult avance de forma circular} C.arreglo[C.ult] := X; C.tam := C.tam +1; {pues ahora hay un elemento más en la cola} finsi; FIN TDA COLA
  • 12. Implementación con vectores ◼ Operación Dequeue Algoritmo DEQUEUE(C: COLA, X: ELEMENTO, resp: lógico) es INICIO Vacía?(C,resp); si resp = cierto entonces {la cola está vacía} Escribir “Cola vacía”; resp := falso; sino {hay al menos un elemento} X := C.arreglo[C.prim]; C.prim := (C.prim + 1) mod MAX; C.longitud := C.longitud -1; finsi; FIN TDA COLA
  • 13. Aplicaciones de las colas Principalmente: gestión de recursos ◼ Sistemas de tiempo compartido: los recursos (CPU, memoria, …) se asignan a los procesos que están en cola de espera en el orden en el que fueron introducidos. ◼ Colas de impresión: al intentar imprimir varios documentos a la vez o la impresora está ocupada, los trabajos se almacenan en una cola según el orden de llegada. ◼ Simulación por computadora de situaciones reales: una cola de clientes en un supermercado o el tiempo de espera para ser atendidos por un operador de una línea telefónica. TDA COLA