Академический Документы
Профессиональный Документы
Культура Документы
Colas
3 Colas
3.1 Descripción del TDA Cola.
3.2 Especificación del TDA Cola.
3.3 Ejemplos de uso.
3.4 Implementaciones del TDA Cola.
3.4.1 Implementación basada en el TDA Lista.
3.4.2 Implementación con vectores circulares.
3.4.3 Implementación con apuntadores.
3.4.4 Comparación de las implementaciones.
3.5 Modalidades de colas.
3.5.1 Dicolas.
3.5.2 Colas de Prioridad
3.1 Descripción del TDA Cola
Una cola es un caso particular de lista en el cual los elementos se
insertan en un extremo (el posterior o final) y se suprimen en el
otro (el anterior o frente).
Especificación Informal
OPERACIONES:
crea() devuelve (C:Cola)
efecto: Devuelve la cola vacía C.
3.2 Especificación del TDA Cola
vacia(C:Cola) devuelve (booleano)
efecto: Devuelve cierto si C es la cola vacía, y falso en
caso contrario.
inserta(C:Cola; E:Elemento)
modifica: C.
efecto: Añade el elemento E por el extremo final de la cola C
suprime(C:Cola)
requerimientos: La cola C es no vacía.
modifica: C.
efecto: Suprime el primer elemento de la cola C.
3.2 Especificación del TDA Cola
Especificación Formal
Tipo: Cola (Elemento)
Sintaxis:
crea Cola
vacia(Cola) booleano
primero(Cola) Elemento
inserta(Cola,Elemento) Cola
suprime(Cola) Cola
Semántica:
vacia(crea) cierto
vacia(inserta(C,E)) falso
primero(crea) error
primero(inserta(C,E)) si vacia(C) E |primero(C)
suprime(crea) error
suprime(inserta(C,E)) si vacia(C)crea|inserta(suprime(C),E)
3.2 Especificación del TDA Cola
package colaInterface;
import colaException.*;
public interface Cola {
public boolean vacia();
public Object primero() throws ColaVaciaException;
public void inserta(Object elemento);
public void suprime() throws ColaVaciaException;
} // fin class Cola
3.2 Especificación del TDA Cola
package colaException;
public class ColaException extends Exception {
public ColaException() { super(); };
public ColaException(String s) { super(s); };
}
package colaException;
public class ColaVaciaException extends ColaException {
public ColaVaciaException() { super(); };
public ColaVaciaException(String s) { super(s); };
}
3.3 Ejemplos de uso
import colaInterface.*;
import colaException.*;
import java.io.*;
...
a1 an
package colaVectoresCirculares;
import colaException.*;
public class Cola implements colaInterface.Cola {
private static int max = 100;
private Object elementos[];
private int frente, post;
public Cola() {
elementos = new Object[max+1];
frente = 1;
post = 0;
}
public boolean vacia() {
return (frente == ((post+1)%(max+1)));
}
3.4.2 Implementación basada en vectores circulares
package colaSimpleEnlazada;
import colaException.*;
public class Cola implements colaInterface.Cola {
class Celda {
Object elemento;
Celda sig;
}
private Celda frente,post;
public Cola() {
frente = new Celda();
frente.sig = null;
post = frente;
}
public boolean vacia() {
return (frente==post);
}
3.4.3 Implementación con apuntadores
package colaPrioridadInterface;
import colaException.*;
public interface ColaPrioridad {
public boolean vacia();
public Object primero() throws ColaVaciaException;
public int primero_prioridad() throws ColaVaciaException;
public void inserta(Object elemento, int prioridad);
public void suprime() throws ColaVaciaException;
} // fin interface ColaPrioridad
3.5.2 Colas de Prioridad
Una implementación en Java de la Cola de Prioridad mediante
simple enlace puede realizarse de la siguiente forma:
package colaPrioridadSimpleEnlazada;
import colaException.*;