Sono riuscito a risolvere il problema in questo modo, la mia intenzione è però non fare uso della funzione locale. Vediamo che posso fare grazie alle tue indicazioni, ciao
codice:
Procedure EliminaMax(var lis1: puntatore; max: integer);
var
paux: puntatore; //globale ad EliminaMax
(*TrovaMax è una funzione locale ad EliminaMax*)
Function TrovaMax(lis1: puntatore; max: integer):integer;
begin
if lis1<>NIL then
begin
if lis1^.info > max then max:=lis1^.info;
max:=TrovaMax(lis1^.next, max);
end;
TrovaMax:=Max;
end;{Fine della funzione TrovaMax}
(*Da qui in poi implementiamo EliminaMax*)
begin
if lis1<>NIL then
if lis1^.info=TrovaMax(lis1,max) then
begin
paux:=lis1;
lis1:=lis1^.next;
dispose(paux);
end
else
EliminaMax(lis1^.next,TrovaMax(lis1,max));
end;