Δημοσιεύτηκε: 28 Ιαν 2012, 18:46
Star_Light έγραψε:Α ναι! Απλα βάζεις τον *list να δειχνει εκει που δειχνει και ο new και μετα κανεις free ξερω γω τον new.
Όχι, δεν τον κάνεις free τον new στο παραπάνω παράδειγμα, γιατί θα καταστρέψεις το κουτί (κόμβο) στο οποίο δείχνει (που είναι το ίδιο κουτί με αυτό που δείχνει ο *list). Μπορείς όμως να τον κάνεις NULL ή να τον βάλεις να δείχνει κάπου αλλού.
Αν θες όντως να καταστρέψεις το κουτί, πρέπει πριν το κάνεις free να εξασφαλίσεις πρόσβαση στο επόμενο κουτί.
Π.χ. για το παραπάνω παράδειγμα, αν θέλεις στο καπάκι να καταστρέψεις το κουτί που πρόσθεσες στην αρχή της λίστας, θα μπορούσες να συνεχίσεις με κάτι σαν κι αυτό...
- Κώδικας: Επιλογή όλων
*list = (*list)->next;
free( new );
ή έστω αυτό το πιο... πολυλογάδικο:
- Κώδικας: Επιλογή όλων
new = (*list)->next; // ή new = new->next;
free( *list );
*list = new;
ΥΓ. Την κάνω για σπίτι, θα τον κοιτάξω άλλη στιγμή τον κώδικα της bubble sort που σου βγάζει seg-fault.