gracias por tu respuesta, si lo hice la prueba de escritorio. pero aun asi no me quedo muy claro el codigo. por eso puse el el codigo anterior:
Código Delphi
[-]procedure InvertirLista(var l: pnodo);
var
temp,ant: pnodo;
begin
ant:=l;
temp:=nil;
while ant^.sig <>nil do
begin
temp:=ant^.sig;
ant^.sig:=temp^.sig;
temp^.sig:=l;
l:=temp
end;
end;
pero ahora que me pongo a penzarlo, creo que tu codigo toma en prev como si fuera el nodo que apunta siempre al primero. por eso utiliza 3 variables de tipo nodo en cambio mi codigo solo uza 2 variable de tipo nodos. por eso al final del bucle asigna primero:= prev. de todos modos muchisimas gracias. me ayudo muchisimo a dar con una logica que entendiera a cabalidad sin tu ayuda no lo hubiera logrado. Gracias