Δημοσιεύτηκε: 06 Ιούλ 2011, 03:45
από Star_Light
Λοιπον οκ... θα το γραψω τωρα να το δεις αυριο migf1 δεν θελω να σε κουρασω αλλο... λοιπον εχεις δικιο με πριν εγω πηγα απευθειας στο να διαγραψω εναν ενδιαμεσο κομβο. Ουσιαστικα δεν προσεξα πως η free σβηνει τον δεικτη list μιας και τον παιρνει σαν παραμετρο και οτι στο παραδειγμα σου ως τωρα έχουμε 2 κομβους τον 52 και τον 62. Οποτε αναδιατυπωνω

Αρχικα στην main() έχεις ορισει list να δειχνει στο 52. επομενως το list->next εξορισμου δειχνει στο 62.
θετουμε το list->next στον dummy και αμεσως μετα ελευθερωνουμε απλα τον list που δειχνει στον 52 αρα ο κομβος 52 διαγραφεται.
και τελος παρομοια με την πριν εξηγηση μου (αλλα οπως ειπε και ο migf1 για οποιον την διαβασει δεν ειναι ακριβως η διαγραφη που περιγραφουμε εδω αλλα αναφερεται σε ενδιαμεσο κομβο) μετα την free το χαος!!! Δηλαδη πλεον ο list πρεπει να δειχνει στον dummy πιο πισω δεν υπαρχει τιποτα.
Βεβαια και να υπηρχε δεν θα μπορουσαμε γιατι δεν υπαρχει δευτερος δεικτης να δειχνει προς τα πισω... η λιστα ειναι απλα συνδεδεμενη... και οχι διπλά.

Συμπερασμα σημερινής μέρας : Στον προγραμματισμό και ειδικα εδω στις δομές δεδομένων θα πρεπει να παίζεις και στο χαρτί με διαγράμματακια ωστε να καταλαβαίνει τι πας να προγραμματίσεις μετα.