Да, влетаешь на result=nil во втором условии. Надо так:
Код:
function Found_last_elem(L:TList):TList;
begin
result:=L;
while(result^.next<>nil)and (result^.info mod 2=0 ) do
result:=result^.next;
end;
вставка тогда как-то так:
Код:
var
NewItem : TList;
...
Podd:=Found_last_elem(L);
if Podd = Nil then writeln('No odd elements.')
else
begin
New(NewItem);
New^.Info := sqr(Podd^.info);
New^.next := Podd^.next;
Podd^.next := NewItem;
end;
...