Ciao Cisc, ho risolto cosi:
Codice:
function SubLista(lis1, lis2: puntatore):boolean;
begin
while (lis1<>NIL) AND (lis2<>NIL) do
if lis2^.info<>lis1^.info then lis2:=lis2^.next
else
lis1:=lis1^.next;
if (lis1=NIL) then SubLista:=TRUE
else SubLista:=FALSE;
end;
Adesso ti chiedo un piccolo l'ultimo aiutino per quanto riguarda le liste (infatti dalla prossima settimana comincio a lavorare con gli alberi, ahimè). Devo costruire una procedura che elimini le occorrenze di posto pari. Ad esempio sia la lista:
lista->3->5->4->9->12->NIL In questa lista devo eliminare quindi il 5 ed il 9 (rispettivamente di posto 2 e 4 in questo esempio). Sono riuscito ad implementare tale procedura così:
Codice:
Procedure EliminaPostoPari(p_testa:puntatore);
var
paux,paux2: puntatore;
warning:string;
begin
if p_testa=NIL then warning:='Lista vuota'
else
begin
paux:=p_testa^.next;
paux2:=p_testa;
paux2:=paux^.next;
dispose(paux);
p_testa^.next:=paux2;
EliminaPostoPari(paux2);
end;
end;
Questa procedura funziona bene fino a quando inserisco in lista 2,4,6,8... (un numero pari di elementi). Se ad esempio prendo la lista di sopra (cioè con un numero dispari di elementi) non funziona. Sicuramente in questo ultimo caso perdo il riferimento all'ultimo elemento e la lista si perde. Vuoi dare tu un' occhiata?
Ti allego tutto il programmino così vedi tu stesso (non so se tu hai/usi Delphi come compilatore di pascal)