Ejercicio 6.(e)

Ejercicio 6.(e)

de Diego Subeldia Loureiro -
Número de respuestas: 1

Buenas, quería consultarles si este código resuelve el problema.

procedure concatenar(var l1; l2:ListaInt);
var p:ListaInt;
begin
    p:=l1;
    while (p^.sig<>NIL) do
        p:=p^.sig;
    p^.sig:=l2
end;

Mi duda viene por el lado de que estoy suponiendo que si al último elemento de l1 (que apunta a NIL) lo hago apuntar a l2 entonces la lista quedará encadenada. Pero como l2 está pasado como parámetro de valor, no sé si debería ir armando l2 celda por celda en l1.

En respuesta a Diego Subeldia Loureiro

Re: Ejercicio 6.(e)

de Luis Sierra -
hola diego,

el cabezal del procedimiento no es como tu pusiste, que por otro lado no podría compilar. corrígelo, y observa si ese cambio afecta a tu pregunta.

luego, observa que tu programa no puede funcionar cuando l1 es la lista vacía.

finalmente, y yendo quizá a tu duda original, se espera que en l1 queden todos los elementos originales seguidos de los elementos de l2, pero sin utilizar celdas nuevas; la lista l2, que es un puntero, queda apuntando "al medio" de la lista l1, compartiendo todas sus celdas con l1.

saludos

luis