2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
Programación 3: colas
1. ESTRUCTURAS DE DATOS EN JAVA
COLAS
GABRIELA VERDUGO
PROGRAMACIÓN III
ING. ÁNGEL VÁZQUEZ
2. CONTENIDO
• Concepto de Cola
• Especificaciones del Tipo Abstracto Cola
• Colas Implementadas con arrays
• Cola con un array circular
• Cola con una Lista Enlazada
• Bicolas: Colas de doble entrada
3. CONCEPTO DE COLA
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 el frente (parte inicial, frente) de la lista.
Los elementos se eliminan (se quitan) de la cola en el mismo orden en que se
almacenan.
Una cola es una estructura de tipo Fifo. (First in First Out)
4. ESPECIFICACIONES DEL TIPO ABSTRACTO
COLA
A. Crear Cola : Inicia la Cola como vacía.
B. Insertar : Añade un elemento al final de la Cola.
C. Quitar : (Retira) Extrae el elemento del Frente de la Cola.
D. Cola Vacía : Comprueba si la cola no tiene elementos.
E. Cola Llena : Comprueba si la Cola esta llena de Elementos.
F. Frente : Obtiene el elemento del Frente de la Cola o el primer Elemento.
G. Tamaño de la Cola : Obtiene el número máximo de Elementos que puede tener la Cola.
12. ELIMINAR UN ELEMENTO DE LA COLA
FIRST IN FIST OUT
8 6 16
ELEMENTO ELIMINADO
NULL
13. COLAS IMPLEMENTADAS CON VECTORES
Al igual que las pilas las colas se implementan usando una estructura estática
( Vectores).
La declaración de una Cola ha de contener un array para almacenar los elementos de la
cola y dos marcadores o apuntadores para mantener las posiciones frente y fin de la
cola.
Cuando un elemento se elimina de la cola, se hace una prueba para ver si la cola está
vacía y, si no es así, se recupera el elemento de la posición apuntada por el marcador
de cabeza, y éste se incrementa en 1.
15. DECLARACIÓN DE LA CLASE COLA
Una cola debe tratar diferentes tipos de datos: enteros, cadenas, objetos, etc
La clase ColaLineal contiene un array (listaCola) cuyo máximo tamaño se determina por la
constante MAXTAMQ.
En el Tipo de Dato se puede poner un tipo simple o bien un Object.
La operación Insertar toma el elemento y lo añade al final de la Lista (Propiedad de las
Colas).
La Operación Frente Devuelve el primer elemento de la cola sin eliminar este elemento.
La Operación Cola Vacía comprueba si la Cola tiene elementos ya que es necesaria esta
operación antes de eliminar elementos.
17. NOTA PARA RECORDAR:
La realización de una cola con un array lineal es notablemente ineficiente, se
puede alcanzar la condición de cola llena existiendo elementos del array sin
ocupar. Se aconseja no utilizar esta implementación.
Se alcanza la condición de cola llena ya que al realizar la operación de quitar un
elemento, avanza el frente y, por consiguiente, las posiciones anteriores quedan
desocupadas, no accesibles.
18. COLA CON UN ARRAY CIRCULAR
La forma más eficiente de almacenar una cola en un array es modelarlo de tal
forma que se una el extremo final con el extremo cabeza. Tal array se denomina
array circular y permite que la totalidad de sus posiciones se utilicen para
almacenar elementos de la cola sin necesidad de desplazar elementos.
La figura muestra un array circular de n elementos.
19. OPERACIONES CON ARRAYS
CIRCULARES EN COLAS
Creación de una cola vacía, de tal forma que fin apunte a una posición
inmediatamente anterior a frente: frente = 0; fin = MAXTAMQ-1.
Comprobar si una cola está vacía: frente == siguiente(fin)
Comprobar si una cola está llena. Para diferenciar la condición de cola llena de
cola vacía se sacrifica una posición del array, de tal forma que la capacidad de
la cola va a ser MAXTAMQ-1. La condición de cola llena es:
frente == siguiente(siguiente(fin)).
Poner un elemento a la cola: si la cola no está llena, avanzar fin a la siguiente
posición, fin = (fin + 1) % MAXTAMQ, y asignar el elemento.
20. CLASE COLA CON ARRAY CIRCULAR
La clase declara los apuntadores frente, fin y el array listaCola[ ].
Para obtener la siguiente posición de una dada aplicando la teoría de los restos,
se escribe el método siguiente( ).
Ahora el tipo de los elementos es Object, de tal forma que se pueda guardar
cualquier tipo de elementos.
21.
22. COLAS CON LISTAS ENLAZADAS
Cola con una lista enlazada permite ajustarse exactamente al número de
elementos de la cola.
Utiliza dos apuntadores (referencias) para acceder a la lista, frente y fin, que
son los extremos por donde salen y por donde se ponen, respectivamente, los
elementos de la cola.
23. DECLARACIÓN DE COLA Y NODO
La representación del TAD Cola con listas maneja dos clases; la clase Nodo y la
clase, con las operaciones de las colas, ColaLista.
Al crear un Nodo, se asigna el elemento y el enlace se pone a null. Con el
objetivo de generalizar, el elemento se declara de tipo Object.
La clase ColaLista define las variables (atributos) de acceso: frente y fin, y las
operaciones básicas del TAD Cola.
El constructor de ColaLista inicializa frente y fin a null, es decir, a la condición
cola vacía.
26. BICOLAS : COLAS DE DOBLES ENTRADA
La estructura bicola o cola de doble entrada se puede considerar que es una
extensión del TAD Cola.
Una bicola es un conjunto ordenado de elementos, al que se puede añadir o
quitar elementos desde cualquier extremo del mismo.
Se puede afirmar que una bicola es una cola bidireccional .
Los dos extremos de una bicola se pueden identificar como frente y fin (iguales
nombres que en una cola).
27. OPERACIONES CON BICOLAS.
CrearBicola: Inicializa una bicola sin elementos.
BicolaVacia: Devuelve true si la bicola no tiene elementos.
PonerFrente: Añade un elemento por el extremo frente.
PonerFinal: Añade un elemento por el extremo final.
QuitarFrente: Devuelve el elemento Frente y lo retira de la bicola.
QuitarFinal: Devuelve el elemento Final y lo retira de la bicola.
Frente: Devuelve el elemento que se encuentra en el extremo frente.
Final: Devuelve el elemento que se encuentra en el extremo final.
30. RESUMEN
Una cola es una lista lineal en la cual los datos se insertan por un extremo( final)
que se extraen por el otro extremo (frente). Es una estructura FIFO (first-in, first-
out, primero en entrar-primero en salir).
Las operaciones básicas que se aplican sobre colas son: crearCola, colaVacia,
colaLlena, insertar, frente, retirar.
El TAD Cola se puede implementar con arrays y con listas enlazadas. La
implementación con un array lineal es muy ineficiente; se ha de considerar
el array como una estructura circular y aplicar la teoría de los restos para
avanzar el frente y el final de la cola.
31. RESUMEN
La realización de una cola con listas enlazadas permite que el tamaño de la
estructura se ajuste al número de elementos. La cola puede crecer
indefinidamente, con el único tope de la memoria libre.
Las bicolas son colas dobles, las operaciones básicas de insertar y retirar
elementos se pueden realizar por los dos extremos. A veces se ponen
restricciones de entrada o de salida por algún extremo. Una bicola es,
realmente, una extensión de una cola.
32. BIBLIOGRAFIA.
Joyanes Aguilar L, Zahonero Martínez I. Estructura de Datos en Java: Blanca
Pecharromán.
Sanchez Allende J, Fernandez Manjón B. (2009). Programación en Java:
Editorial Universidad Autónoma de Madrid.
Flores Fernadez H. (2012). Programación Orientada a Objetos usando Java:
Ecoe Ediciones.