Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να δημιουργήσετε ένα Διπλά -Linked List σε C ​​Προγραμματισμός

Προγραμματιστές χρησιμοποιούν συνδεδεμένες λίστες , όπως γραμμικά traversable δομές δεδομένων . Αυτό σημαίνει ότι ο προγραμματιστής μπορεί να ξεκινήσει από την αρχή της λίστας (που ονομάζεται το κεφάλι ) και να προχωρήσουμε προς τα εμπρός μέσα από τη λίστα ένα αντικείμενο κάθε φορά . Αυτή η μέθοδος αποθήκευσης δεδομένων επιτρέπει επίσης τον προγραμματιστή να προσθέσει αποτελεσματικά τα δεδομένα στη λίστα , προσφέροντας μια πιο ευέλικτη εναλλακτική λύση για ορισμένες άλλες δομές δεδομένων , όπως δυναμικά συστοιχίες . Αυτό το παράδειγμα δείχνει πώς να κατασκευάσει ένα απλό διπλά συνδεδεμένη λίστα , η οποία επιτρέπει την πλοήγηση του καταλόγου στις δύο κατευθύνσεις ( προς τα εμπρός και προς τα πίσω) . Τα πράγματα που θα χρειαστείτε
επεξεργαστή κειμένου
C /C + + Compiler ή IDE ( όπως το Microsoft Visual Studio )
Η Εμφάνιση Περισσότερες οδηγίες
Η 1

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

# include

int main {

struct { listNode

int δεδομένων ?

γόνατο listNode * προηγ ?

αλαζονικό listNode * επόμενο ?

} ?

επιστροφή 0? }


Η " struct listNode " μπλοκ του κώδικα δημιουργεί ένα πρότυπο για τα στοιχεία που θα συμπληρώσετε τη λίστα . Αυτό το πρότυπο καθορίζει ένα listNode καθώς περιέχει τρία στοιχεία : ένα στοιχείο δεδομένων ( ακέραιος αριθμός ) και δείκτες για τα προηγούμενα και τα επόμενα στοιχεία στη λίστα . Ένας δείκτης είναι μια μεταβλητή που κρατά μια διεύθυνση μνήμης . Δείκτες που χρησιμοποιείται για να αναφερθεί σε άλλες δομές δεδομένων σε βαθιά μνήμη και να κατανέμει δυναμικά μνήμη κατά την εκτέλεση του κώδικα . 2

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

int μέγεθος ?

ListNode * κεφάλι?

ListNode * ουρά?

Ουρά = κεφάλι?
το κεφάλι

= ουρά?

Αυτές οι δύο δείκτες είναι η αρχή και το τέλος της λίστας , αντίστοιχα . Χρησιμοποιώντας αυτούς τους δείκτες , ο προγραμματιστής ξέρει όπου η αρχή του καταλόγου είναι και όπου το τέλος είναι , απλά ελέγχοντας εάν ο τρέχων κόμβος είναι η "κεφαλή " ή " ουρά " δείκτη. Και οι δύο αναφέρονται πίσω ο ένας στον άλλο σε περίπτωση μια κενή λίστα .
Εικόνων 3

Δημιουργήστε ένα απλό αλγόριθμο για να προσαρτήσει τα στοιχεία από τη συνδεδεμένη λίστα . Ακολουθήστε αυτό το παράδειγμα κώδικα :

void append ( int num ) { struct

listNode * ιχνηθέτη = κεφάλι?

Struct listNode * newNode = ( struct listNode * ) malloc ( sizeof ( struct listNode ) ) ?

newNode - > data = num ?

αν ( κεφάλι == NULL) {

κεφάλι = newNode ?

ουρά = newNode ?

newNode - > προηγ = κεφάλι ?

newNode - > επόμενο = ουρά?

}

else {

ενώ ( ιχνηθέτη - > επόμενο = ουρά ! )

{ ιχνηθέτη = ιχνηθέτη - > επόμενο ? }

newNode - > προηγ = ιχνηθέτη ?

newNode - > επόμενο = ουρά?

ιχνηθέτη - > επόμενο κόμβο = ?

ουρά = κόμβου ?

}

μέγεθος + + ?

}

Ο κωδικός αυτός προσθέτει έναν κόμβο στο τέλος της λίστας . Ξεκινά με τη δημιουργία ενός δείκτη στο κεφάλι του καταλόγου ( «ανιχνευτή» ) . Στη συνέχεια , δημιουργεί ένα δείκτη σε μια κατανέμεται δυναμικά μπλοκ μνήμης που προορίζεται για μια νεοσύστατη listNode ( newNode ) και θέτει τα δεδομένα του κόμβου στο ακέραιο " αριθμός " . Εάν η κεφαλή δείχνει NULL ( που σημαίνει ότι η λίστα είναι κενή , επειδή τα σημεία της κεφαλής σε τίποτα ) , τότε , ο κώδικας εισάγει τον κόμβο στην αρχή της λίστας. Σε αντίθετη περίπτωση , η "ενώ" κύκλοι βρόχο μέσω των κόμβων στη λίστα μέχρι να φτάσει το τελευταίο κόμβο . Όταν «ανιχνευτή» σημεία στο τελευταίο στοιχείο της λίστας , ο κώδικας εισάγει τον κόμβο . Η τελική εντολή προσθέτει το "μέγεθος " ακέραιος , την παρακολούθηση των στοιχείων στη λίστα
Η 4

Δημιουργήστε έναν αλγόριθμο για να αφαιρέσετε και το σημείο από το τέλος της λίστας : .

void removeNode ( ) {

αν ( ουρά = κεφάλι ! ) { struct

listNode * τέλος = ουρά?


ουρά = tail- > προηγ ?

ελεύθερο (τέλος ) ?

μέγεθος - ?

} }


Αυτός ο κώδικας δημιουργεί ένα δείκτη ( «τέλος» ) έως την τελευταία στοιχείο της λίστας ( το ίδιο στοιχείο «ουράς» σημεία για να ) . Στη συνέχεια , η ουρά έχει ρυθμιστεί ώστε να δείχνει προς το στοιχείο αμέσως πριν από το τελευταίο στοιχείο ( ο κόμβος που υποδεικνύεται από το " προηγούμενο " δείκτη του τελευταίου στοιχείου ) . Τέλος , η μνήμη που χρησιμοποιείται από το τελευταίο κόμβο , που αναφέρεται από το " τέλος " , ελευθερώνεται για περαιτέρω χρήση .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα