[ cobragangsta @ 20.09.2007. 23:28 ] @
Ovo je primer iz zbirke zadataka "C\C++" od Milana Cabarkape glava 15 zad "3 h - drugo resenje". Dakle donja f-ja brise one clanove liste koji sadrze karakter koji cuva promenjiva E. Interesuje me zasto (u liniji oznacenoj sa mnogo "??????" ) svaki put kada se nadje "informacija E" on ponovo definise pokazivac q. delete q bi trebalo samo da oslobodi memoriju na koju pokazuje a ne i pokazivaca q. Ja bih recimo pokazivac q definisao odmah u drugom redu f-je (POKC pred=NULL,t=L,q) a "dole" samo q=t. ima li neko odgovor? Code: typedef struct cvor { char inf; struct cvor *sledeci; } CVOR; typedef CVOR* POKC; ... void brisi_iter (char E, POKC &L) { POKC pred=NULL,t=L; while (t) if (t->inf==E) { POKC q=t; // ????????????????????????? if (pred) pred->sledeci=t->sledeci; else L=t->sledeci; t->sledeci; delete q; // fusnote } else { pred=t;t=t->sledeci;} } a druga stvar moglo bi i sa f-jom free umesto delete. pr: (red: fusnote) jel' to Cabarkapa nedosleda pa malo C malo C++ (malo 'leba , malo perece :) )? Code: void brisi_iter (char E, POKC &L) { POKC pred=NULL,t=L; while (t) if (t->inf==E) { POKC q=t; // ????????????????????????? if (pred) pred->sledeci=t->sledeci; else L=t->sledeci; t->sledeci; free( q ); // fusnote } else { pred=t;t=t->sledeci;} } |