tpu/u_dcolpi.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Doble cola por punteros. keywords: cola, punteros
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: u_dcolpi.pas 2002/04/25 15:57 mstorti Exp jdelia $ }
unit u_dcolpi;
interface
type
tipo_elemento = integer;
ptipo_celda = ^tipo_celda;
tipo_celda = record
elemento : tipo_elemento;
sig : ptipo_celda
end;
dcolpi = object
private
ant, post: ptipo_celda;
procedure ERROR (s:string);
public
procedure ANULA;
procedure PONE_FRENTE (x: tipo_elemento);
procedure QUITA_FRENTE;
procedure PONE_FINAL (x: tipo_elemento);
procedure QUITA_FINAL;
function VACIA : boolean;
function FRENTE : tipo_elemento;
function FINAL : tipo_elemento;
end;
implementation
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.ERROR (s: string);
begin
write ('error: ');
writeln (s);
halt;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.ANULA;
begin
new (ant);
ant^.sig := nil;
post := ant;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.PONE_FINAL (x:tipo_elemento);
begin
new (post^.sig);
post := post^.sig;
post^.elemento := x;
post^.sig := nil;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.QUITA_FINAL;
var
q: ptipo_celda;
begin
if ( VACIA ) then ERROR ('la cola esta vacia') ;
q := ant;
while (q^.sig <> post) do q := q^.sig;
post := q;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.PONE_FRENTE (x: tipo_elemento);
var
temp: ptipo_celda;
begin
temp := ant;
new (ant);
ant^.sig := temp;
ant^.sig^.elemento := x;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure dcolpi.QUITA_FRENTE;
begin
if ( VACIA ) then ERROR ('la cola esta vacia') ;
ant := ant^.sig ;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function dcolpi.VACIA : boolean;
begin
VACIA := ( ant = post ) ;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function dcolpi.FRENTE : tipo_elemento;
begin
if ( VACIA ) then ERROR (' la cola esta vacia');
FRENTE := ant^.sig^.elemento;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function dcolpi.FINAL : tipo_elemento;
begin
if ( VACIA ) then ERROR (' la cola esta vacia');
FINAL := post^.elemento;
end ;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.