saca_fondo.pas

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

  Ejercicio tomado en el 1er parcial 16/04/02.
  Escribir un procedimiento SACA_FONDO (var P: pila) que
  elimina el \'ultimo elemento de una pila P, dejando
  los dem\'as inalterados, usando exclusivamente una
  pila auxiliar. Por ejemplo, si P = [ 8 3 9 1 6 5 ],
  despu\'es de SACA_FONDO (P), debe quedar
  P = [ 8  3  9  1 6 ].
  keywords: pila

  FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: saca_fondo.pas  2002/04/10 7:10 jdelia Exp jdelia   $}

program  sacar ;

uses u_pilapi ;

type
  pila = pilapi;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure SACA_FONDO (var P: pila);
var
  Q : pila ;
  x : tipo_elemento ;
begin
  writeln;
  write ('saca: ');

  Q.ANULA ;
  while not P.VACIA do begin
    x := P.TOPE ;  write (x, ' ');
    Q.METE (x);
    P.SACA ;
  end ; {while} 
  writeln ;
  Q.SACA ; {descarta tope en Q}
  while not Q.VACIA do begin
    x := Q.TOPE ;
    P.METE (x);
    Q.SACA ;
  end ; {while}
end ;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  P : pila ;
begin

  P.ANULA ;

  P.METE (5); {n=1}
  P.METE (6); {n=2}
  P.METE (1); {n=3}
  P.METE (9); {n=4}
  P.METE (3); {n=5}
  P.METE (8); {n=6}
 
  SACA_FONDO (P);

  P.IMPRIME (' ');

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

Generated by GNU enscript 1.6.1.