listas

listas

de Valentin Ezequiel Petrone Ruiz -
Número de respuestas: 2

buenas, no sé si lo siguiente está en el práctico, estoy tratando de hacer un procedimiento que agregue elementos al final de la lista y probé de mil formas pero todo me da error.

código del procedimiento: 

procedure agregarAlFinal(valor : integer; var l : lista);

var p, aux : lista;

begin

    new(p);

    p^.elemento:=valor;

    

    aux:=l;

    while (aux<>nil) do

        aux:=aux^.siguiente;

    

    aux^.siguiente:=p;

    p^.siguiente:=nil

end;


declaración de tipos: 

type

    lista = ^celda;

    celda = record

        elemento : integer;

        siguiente : lista

    end;

En respuesta a Valentin Ezequiel Petrone Ruiz

Re: listas

de Jonathan Murana -
Hola Valentín,

el código va rumbeado aunque tiene algunos errores.

el ejercicio 5 es muy parecido.

el problema que veo es que el while se detiene cuando aux=nil, y luego quieres hacer aux^.siguiente, lo que no es posible.

Para corregir el código te recuerdo dos cosas importantes que en general pasan en modificaciones de listas.

- necesitamos detener la iteracion uno antes del lugar donde vamos a modificar, para no perder la referencia a la celda donde esta el puntero que debemos cambiar,
mas concreto, el while deberia ser algo como while aux^.siguiente<> NIL.

- otra cosa es que casi siempre debemos tratar diferente algun caso de borde, por ejemplo, cuando la lista es vacía.

espero tus comentarios

saludos
Jonathan