concatena.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Escriba un programa para concatenar dos listas de enteros
L1 y L2 en una nueva lista L3. Esta soluci\'on
llama primero al procedimiento COPIA para copiar la
primera lista L1 en la lista L3 y, luego, apendiza
la lista L2 al final de L3.
Esta versi\'on usa la unidad 'u_listpi', es decir, listas
de enteros por punteros y sin puntero a la celda final.
keywords: lista
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: concatena.pas 2002/04/05 12:00 mstorti Exp jdelia $}
program p_concatena ;
uses u_listpi ;
type
lista = listpi ;
var
L1, L2, L3 : lista ;
p1, p2 : posicion;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure COPIA (L1: lista ; var L2: lista);
var
p1 : posicion;
e1 : tipo_elemento ;
begin
L2.ANULA ;
p1 := L1.PRIMERO ;
while ( p1 <> L1.FIN ) do begin
e1 := L1.RECUPERA (p1);
L2.INSERTA (e1, L2.FIN);
p1 := L1.SIGUIENTE (p1);
end ; {while}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure CONCATENA (L1, L2: lista ; var L3: lista);
var
p2 : posicion;
e2 : tipo_elemento ;
begin
COPIA (L1, L3) ;
p2 := L2.PRIMERO ;
while ( p2 <> L2.FIN ) do begin
e2 := L2.RECUPERA (p2);
L3.INSERTA (e2, L3.FIN);
p2 := L2.SIGUIENTE (p2);
end ; {while}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
begin
L1.ANULA ;
p1 := L1.PRIMERO ;
L1.INSERTA (5, p1);
L1.INSERTA (3, p1);
L1.INSERTA (1, p1);
L1.IMPRIME ('lista L1');
L2.ANULA ;
p2 := L2.PRIMERO ;
L2.INSERTA (6, p2);
L2.INSERTA (4, p2);
L2.INSERTA (2, p2);
L2.IMPRIME ('lista L2');
CONCATENA (L1, L2, L3);
L3.IMPRIME ('lista concatenada L3');
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.