tpu/u_colpar.pas

{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION

  Cola de pares de enteros por punteros.
  keywords: cola, punteros

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: u_colpar.pas 2002/04/25 15:57 mstorti Exp mstorti   $}

unit u_colpar ;

interface

type
  par = record
    a: integer;
    b: integer
  end;

  tipo_elemento  = par;
  ptipo_elemento = ^tipo_elemento;

  ptipo_celda = ^tipo_celda;
  tipo_celda = record
    elemento : tipo_elemento;
    sig      : ptipo_celda
  end;

  colapar = object
  private
    ant, post : ptipo_celda;
    procedure ERROR (s: string);
  public
    procedure ANULA;
    procedure PONE (x: tipo_elemento);
    procedure QUITA;
    function  VACIA: boolean;
    function  FRENTE: ptipo_elemento;
  end;

  implementation

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colapar.ERROR (s:string);
begin
  write ('error: ');
  writeln (s);
  halt;
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colapar.ANULA;
begin
  new (ant);
  ant^.sig := nil;
  post := ant;
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colapar.PONE (x: tipo_elemento);
begin
  new (post^.sig);
  post := post^.sig;
  post^.elemento := x;
  post^.sig := nil;
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colapar.QUITA;
begin
  if ( VACIA ) then
    ERROR ('la cola esta vacia')
  else begin
    ant := ant^.sig
  end ; {if}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function  colapar.VACIA : boolean;
begin
  VACIA := ( ant = post );
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function  colapar.FRENTE : ptipo_elemento;
begin
  if ( VACIA ) then
    ERROR (' la cola esta vacia')
  else begin
    FRENTE := @(ant^.sig^.elemento);
  end ; {if}
end;

end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.