Parcial diciembre 2023, ejercicio 2

Parcial diciembre 2023, ejercicio 2

de Clementina Firpo Couselo -
Número de respuestas: 1

Buenas, con unos amigos hicimos el ejercicio 2 y nos quedó diferente que en la solución. Tenemos una duda puntual y otra general. La puntual es si podríamos hacer la instrucción "new(lis)" cuando antes lis ya estaba apuntando a NIL. Y la segunda es si está bien cómo resolvimos nosotros el ejercicio (al ser diferente a la solución no estamos seguros, pero según nosotros funciona).

Les paso el código (perdonen la indentación pero no logré hacerla bien acá, espero se entienda igual):

procedure NumeroAlCuadrado (VAR list : Lista; r : Real);

VAR

p, q : Lista;

BEGIN

if lis <> NIL then

begin

p := lis;

while (p^.dato<>r) and (p^.sig<>NIL) do

p := p^.sig;

if p^.dato=r then

p^.dato := r*r

else

begin

new(q);

q^.sig := NIL;

q^.dato := r;

p^.sig := q;

end;

end else

begin

new(lis);

lis^.sig := NIL;

lis^.dato := r;

end;

END;