Colas
interface
type
tipo_dato = <dato a almacenar>;
ptr_nodo_cola = ^tnodo_cola;
tnodo_cola = record
dato : tipo_dato;
enlace : ptr_nodo_cola;
end;
tipo_cola = record
frente,final : ptr_nodo_cola;
end;
{encabezamiento de las primitivas que utilizaremos en el tipo de dato COLA}
Procedure Cola_crear (var Cola : tipo_Cola);
{Pre: La cola nunca fue creada.
Post: Se creola cola y se encuentra vacía}
Procedure Cola_insertar (var Cola : tipo_cola; elem : tipo_dato; var error : boolean);
{Pre: La Cola existe.
Post: Si error = false el elemento fue ingresado en elfinal de la Cola, si error = true no se ha ingresado el elemento, la Cola se encuentra llena}
Procedure Cola_retirar (var Cola : tipo_cola; var elem : tipo_dato);
{Pre:La Cola fue creada y no estávacia.
Post: El elemento del frente de la Cola fue retirado y se encuentra en elem, la Cola queda igual, sin el elemento que se encontraba en el frente}
Function Cola_vacia (Cola : tipo_cola);{Pre: La Cola fue creada.
Post: Devuelve true si la Cola se encuentra vacía, y sino false}
Procedure Cola_vaciar (var Cola : tipo_cola);
{Pre: La Cola fue creada.
Post: La Cola se encuentra vacía}Implementation
Procedure Cola_crear (var Cola : tipo_Cola);
begin
cola.frente := nil;
cola.final := nil;
end;
Procedure Cola_insertar (var Cola : tipo_cola; elem : tipo_dato; var error :boolean);
var ptr_aux : ptr_nodo_cola;
begin
error:= Maxavail < sizeof(tnodo_cola);
if (not error) then
begin
new (ptr_aux);
ptr_aux^.dato := elem;
ptr_aux^.enlace := nil;
if (Cola_vacía (cola))then cola.frente := ptr_aux
else cola.final^.enlace := ptr_aux;
cola.final := ptr_aux;
end
end;
Procedure Cola_retirar (var Cola : tipo_cola; var elem : tipo_dato);
var ptr_aux : ptr_nodo_cola;begin
ptr_aux := cola.frente;
cola.frente := cola.frente^.enlace;
if (cola.frente = nil) then cola.final := nil;
elem := ptr_aux^.dato;
dispose (ptr_aux);
end;
Function Cola_vacia (Cola :...
Regístrate para leer el documento completo.