Discussione: Pascal: Liste
View Single Post
Old 14-08-2003, 10:27   #11
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
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)
Allegati
File Type: zip postopari.zip (1.2 KB, 2 visite)
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso