Você está na página 1de 3

TAD Cola

IMPLEMENTACION
Constantes
MAX_COLA = .;
tipos
tcola = registro
frente, fondo: entero
elementos: array[1..MAX_COLA] de tipo_dato
fin_registro
procedimiento CrearCola (Var cola: tcola)
Funcion ColaVacia(cola:tcola) de logico
Funcion ColaLlena(cola:tcola) de logico
Procedimiento AgregarCola(Var cola:tcola, elem:tipo_dato)
Procedimiento SacarCola(Var cola:tcola, Var elem:entero)
IMPLEMENTACION
/**Creacin:
procedimiento CrearCola(VAR cola:tcola)
inicio
cola.frente 0
cola.fondo 0
fin_procedimiento
/**Funcin que devuelve verdadero si la cola est vaca:
Funcion ColaVacia(cola:tcola) de logico
inicio
retorna (cola.frente=cola.fondo)
fin_funcion
/**Funcin que devuelve verdadero si la cola est llena:
Funcin ColaLlena(cola: tcola) de logico
inicio
retorna (cola.fondo = MAX_COLA);
fin_funcion
/**Agrega un elemento a la cola:
Procedimiento AgregarCola(Var cola:tcola, elem:tipo_dato)
inicio
Si (ColaLlena(cola) = Falso) entonces
cola.fondo cola.fondo + 1
cola.elementos[cola.fondo] elem
fin-Si
Si (cola.frente=0)
cola.frente 1
fin-si

fin-procedimiento
/**Sacar un elemento de la cola:
Procedimiento SacarCola(Var cola:tcola, Var elem:entero)
inicio
Si (ColaVacia(cola)=Falso) entonces
Elem=cola.elementos[cola.frente]
Cola.frente cola.frente + 1
Fin_si
Fin-procedimiento
Fin_TAD
TAD ColaCircular
INTERFACE
Constantes
MAX_COLA = .;
tipos
tcola = registro
frente, fondo: entero
elementos: array[1..MAX_COLA] de tipo_dato
fin_registro
procedimiento CrearCola (Var cola: tcola)
Funcion ColaVacia(cola:tcola) de logico
Funcion ColaLlena(cola:tcola) de logico
Procedimiento AgregarCola(Var cola:tcola, elem:tipo_dato)
Procedimiento SacarCola(Var cola:tcola, Var elem:entero)
IMPLEMENTACION
/**Creacin:
procedimiento CrearCola(VAR cola:tcola)
inicio
cola.frente 0
cola.fondo 0
fin_procedimiento
/**Funcin que devuelve verdadero si la cola est vaca:
Funcion ColaVacia(cola:tcola) de logico
inicio
retorna (cola.frente=0)
fin_funcion
/**Funcin que devuelve la siguiente posicin

Funcin siguiente(posicion:entero) de entero


inicio
retorna ((posicin modulo MAX_COLA) + 1);
fin-funcion
/**Funcin que devuelve verdadero si la cola est llena:
Funcin ColaLlena(cola: tcola) de logico
inicio
retorna (siguiente(cola.fondo) = cola.frente);
fin-funcion
/**Agrega un elemento a la cola:
Procedimiento AgregarCola(Var cola:tcola, elem:tipo_dato)
inicio
Si (ColaLlena(cola) = Falso) entonces
cola.fondo (cola.fondo Modulo MAX_COLA) + 1
cola.elementos[cola.fondo] elem
fin-Si
Si (cola.frente=0)
cola.frente 1
fin-si
fin-procedimiento
/**Sacar un elemento de la cola:
Procedimiento SacarCola(Var cola:tcola, Var elem:entero)
inicio
Si (ColaVacia(cola)=Falso) entonces
Elem=cola.elementos[cola.frente]
Si (cola.frente = cola.fondo) entonces
Llamar CrearCola(cola)
Caso contrario
Cola.frente (cola.frente Modulo MAX_COLA) + 1
Fin_Si
Fin_si
Fin-procedimiento
Fin_TAD