View Single Post
Old 15-12-2009, 18:56   #3
The-Revenge
Senior Member
 
Iscritto dal: Feb 2007
Messaggi: 1352
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Gli errori sono sostanzialmente due:
immagina la lista come una catena: quando cancelli un nodo è come se eliminassi un anello della catena, per far sì che la catena resti insieme devi legare tra loro l'anello che precedeva l'anello eliminato e il successivo. Quello che fai qui:
Codice:
struct lis *cancNum(struct lis *p){
        struct lis *paus,*paus2;
        while(((p->inf)%2==0)&&(p!=NULL))p=p->pun;
        paus=p;
        while(paus!=NULL){
        if(((paus->inf)%2==0)){
        paus2=paus->pun;
        paus->pun=NULL;
        paus=paus2;
        continue;
        }
        paus=paus->pun;
        }
    return(p);
                    }
è cancellare un nodo, senza legare i due che gli stavano intorno.
Il secondo errore è che non deallochi la memoria allocata.
bhè, entrambe le cose che mi hai detto mi erano note : deallocare la memoria (penso tu intenda con free) lo volevo fare ma sl in un secondo momento, dato che era solo per ottimizzare il programma, e non mi interessa più di tanto visto che è ad uso didattico...per quanto riguarda le catene, è propio ciò che ho tentato di fare usando paus2...per non lasciare nessun nodo fluttante e per ricollegare il nodo precedente a quello distrutto...
mi potresti dire cosa ho sbagliato esattamente?
__________________
Ho venduto a : truedocman2004,ragen-fio
Ho acquistato da :shinakuma, britt-one
The-Revenge è offline   Rispondi citando il messaggio o parte di esso