Solución ejercicios implementación
// Implementacion de una cola sobre un vector circular
// Estructuras de Datos, UNICAN
// Autor: Pablo Sanchez (p.sanchez@unican.es)
// http://personales.unican.es/sanchezbp
PARAMETRO E ES CLASE
FINPARAMETRO
CLASE ColaVector(E) ES
HEREDABLE MAX_COLA ES NATURAL CON VALOR 100;
HEREDABLE vector : VECTOR DIM MAX_COLA DE E;
// Inv: (0 <= inicio) && (inicio < MAX_COLA)
HEREDABLE inicio : NATURAL;
// Inv: (0 <= fin) && (fin < MAX_COLA)
HEREDABLE fin : NATURAL;
// Inv: (0 <= tamanho) && (tamanho < MAX_COLA)
// Inv: tamanho = numerosEntre(inicio,fin)
HEREDABLE tamanho : NATURAL;
//-----------------------------------------------------//
// Constructores
//-----------------------------------------------------//
PUBLICO CONSTRUCTOR() ES
inicio := 0;
fin := 0;
tamanho := 0;
FINCONSTRUCTOR
//-----------------------------------------------------//
// Operaciones para manipular las listas //
//-----------------------------------------------------//
PUBLICO FUNCION isEmpty() : Booleano ES
DEVOLVER (tamanho == 0);
FINFUNCION
PUBLICO FUNCION isFull() : Booleano ES
DEVOLVER (tamanho == MAX_COLA)
FINFUNCION
PUBLICO FUNCION size() : NATURAL ES
DEVOLVER tamanho;
FINFUNCION
// Pre: NOT esteObj.isFull()
PUBLICO FUNCION add(e : E) : ColaVector(E) ES
vector[fin] := e;
fin := (fin + 1) mod MAX_COLA;
tamanho := tamanho + 1;
DEVOLVER esteObj;
FINFUNCION
// Pre: NOT esteObj.isEmpty()
PUBLICO FUNCION peek() : E ES
DEVOLVER vector[inicio]:
FINFUNCION
// Pre: NOT esteObj.isEmpty()
PUBLICO FUNCION remove() : Cola(E) ES
inicio := (inicio + 1) mod MAX_COLA;
DEVOLVER esteObj;
FINFUNCION
FINCLASE