Σπίτι Προσωπικά Οικονομικά Πώς να δημιουργήσετε μια συνδεδεμένη λίστα στον προγραμματισμό C - ανδρείκελα

Πώς να δημιουργήσετε μια συνδεδεμένη λίστα στον προγραμματισμό C - ανδρείκελα

Βίντεο: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024

Βίντεο: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Anonim

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

Με κάποια έξυπνη juggling των ονομάτων δείκτη, συν ένα NULL για να καλύψετε το τέλος της λίστας, ίσως καταλήξετε σε κάτι παρόμοιο με τον πηγαίο κώδικα σε ένα Primitive Linked-List Example.

ΕΝΑ PRIMITIVE ΣΥΝΔΥΑΣΜΕΝΟΣ ΚΑΤΑΛΟΓΟΣ ΠΑΡΑΔΕΙΓΜΑ

#include #include #include int main () {struct stock {σύμβολο char [5]; int ποσότητα? τιμή float. δομή stock * επόμενη?}; Δομή stock * πρώτα? Δομή stock * τρέχουσα; δομητικό απόθεμα * νέο; / * Δημιουργία δομής στη μνήμη * / first = (struct stock *) malloc (sizeof (δομή stock)); αν (πρώτη == NULL) {puts ("Ένα είδος λάθους malloc ()"); έξοδος (1),} / * Αντιστοίχιση δεδομένων δομής * / current = first; strcpy (τρέχον-> σύμβολο, "GOOG"); ρεύμα-> ποσότητα = 100; τρέχουσα-> τιμή = 801. 19; τρέχουσα-> επόμενη = NULL; new = (δομή stock *) malloc (sizeof (δομή stock)); αν (νέο == NULL) {puts ("Ένα άλλο σφάλμα malloc ()"); έξοδος (1),} τρέχουσα-> επόμενη = νέα. current = new; strcpy (τρέχον-> συμβόλαιο, "MSFT"); ρεύμα-> ποσότητα = 100; τρέχουσα-> τιμή = 28. 77; τρέχουσα-> επόμενη = NULL; / * Εμφάνιση βάσης δεδομένων * / puts ("χαρτοφυλάκιο επενδύσεων"); printf ("SymboltSharestPricetValuen"). τρέχουσα = πρώτη; printf ("% -6st% 5dt%. 2ft%. 2fn", τρέχον-> συμβόλαιο, τρέχον-> ποσότητα, τρέχουσα-> τιμή, τρέχουσα-> ποσότητα * τρέχουσα-> τιμή). τρέχουσα = τρέχουσα-> επόμενη? printf ("% -6st% 5dt%. 2ft%. 2fn", τρέχον-> συμβόλαιο, τρέχον-> ποσότητα, τρέχουσα-> τιμή, τρέχουσα-> ποσότητα * τρέχουσα-> τιμή). επιστροφή (0)?}

Αυτός ο πηγαίος κώδικας είναι αρκετά μεγάλος, αλλά απλά δημιουργεί μια δεύτερη δομή που συνδέεται με την πρώτη. Μην αφήνετε το μήκος του πηγαίου κώδικα να σας εκφοβίσει.

Οι γραμμές 13 έως 15 δηλώνουν τους τυπικούς τρεις δείκτες δομής που απαιτούνται για έναν χορό με συνδεδεμένη λίστα. Παραδοσιακά, ονομάζονται πρώτοι, τρέχοντες και νέοι. Παίζουν στο τέταρτο μέλος στη δομή, στη συνέχεια, που βρίσκεται στη Γραμμή 11, η οποία είναι ένας δείκτης δομής.

Μην χρησιμοποιείτε το typedef για να ορίσετε μια νέα μεταβλητή δομής κατά τη δημιουργία μιας συνδεδεμένης λίστας. Ένα Primitive Linked-List Παράδειγμα δεν χρησιμοποιεί typedef, οπότε δεν πρόκειται για πρόβλημα με τον κώδικα, αλλά πολλοί προγραμματιστές C χρησιμοποιούν typedef με δομές. Πρόσεχε!

Όταν γεμίσει η πρώτη δομή, η γραμμή 30 εκχωρεί έναν δείκτη NULL στο επόμενο στοιχείο.Αυτή η τιμή NULL καλύπτει το τέλος της συνδεδεμένης λίστας.

Η γραμμή 32 δημιουργεί μια δομή, τοποθετώντας τη διεύθυνσή της στη νέα μεταβλητή δείκτη. Η διεύθυνση αποθηκεύεται στην πρώτη δομή στη Γραμμή 38. Έτσι διατηρείται η θέση της δεύτερης δομής.

Οι γραμμές 40 έως 43 συμπληρώνουν τις πληροφορίες για το δεύτερο δείκτη, αντιστοιχίζοντας μια τιμή NULL στο επόμενο στοιχείο στη γραμμή 43.

Η σύνδεση πραγματοποιείται καθώς εμφανίζονται τα περιεχόμενα των δομών. Η γραμμή 48 καταγράφει τη διεύθυνση της πρώτης δομής. Στη συνέχεια, η γραμμή 54 καταγράφει τη διεύθυνση της επόμενης δομής από την πρώτη δομή.

Άσκηση 1

: Πληκτρολογήστε τον πηγαίο κώδικα από ένα Primitive Linked-List Example στον επεξεργαστή σας. Παρόλο που είναι μακρύ, πληκτρολογήστε το, επειδή θα πρέπει να το επεξεργαστείτε ξανά αργότερα (αν δεν το έχετε συνηθίσει μέχρι τώρα). Κατασκευάστε και τρέξτε. Σε αντίθεση με τους πίνακες, οι δομές σε μια συνδεδεμένη λίστα δεν είναι αριθμημένες. Αντ 'αυτού, κάθε δομή συνδέεται με την επόμενη δομή της λίστας. Εφόσον γνωρίζετε τη διεύθυνση της πρώτης δομής, μπορείτε να επεξεργαστείτε τη λίστα μέχρι το τέλος, το οποίο χαρακτηρίζεται από ένα NULL.

Ένα Primitive Linked-List Παράδειγμα δείχνει κάποιο παραπλανητικό πηγαίο κώδικα με πολύ επαναλαμβανόμενο κώδικα. Όταν βλέπετε πολλές δηλώσεις όπως αυτό στον κώδικα σας, πρέπει να σκεφτείτε αμέσως "λειτουργίες. "

ΚΑΛΥΤΕΡΟ ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΔΥΑΣΜΕΝΗΣ ΚΑΤΑΛΟΓΗΣ

#include #include #include #define ΣΤΟΙΧΕΙΑ 5 struct stock {char symbol [5]; int ποσότητα? τιμή float. δομή stock * επόμενη?}; Δομή stock * πρώτα? Δομή stock * τρέχουσα; δομητικό απόθεμα * νέο; δομή stock * make_structure (κενό); άχρηστο fill_structure (δομή stock * a, int c); κενό show_structure (δομικό αποθέμα * a); int main () {int x; για το (x = 0; xnext = new; current = new;} fill_structure (τρέχουσα, x + 1);} τρέχουσα-> επόμενη = NULL; / * βάση εμφάνισης * / puts ()), τρέχουσα = πρώτη, ενώ (τρέχουσα) {show_structure (τρέχουσα) · τρέχουσα = τρέχουσα-> επόμενη ·} επιστροφή (0)) malloc (sizeof (struct stock)), αν (a == NULL) {puts ("κάποιο είδος malloc (), int c) {printf ("Στοιχείο #% d /% d: n", c, ITEMS) των μετοχών: "), scanf ("% d ", & a-> quantity), printf (" Τιμή μετοχής: ") {printf ("% - 6st% 5dt%. 2ft%. 2fn", α-> συμβόλαιο, α-> ποσότητα, a-> τιμή, a-> ποσότητα * a-> τιμή) δημιουργούνται όπως παρουσιάζεται στο Παράδειγμα Καλύτερου Συνδεδεμένου Καταλόγου.Το κλειδί είναι να χρησιμοποιήσετε τρεις μεταβλητές δομής, που εμφανίζονται στις Γραμμές 13 έως 15:

πρώτα πάντα περιέχει τη διεύθυνση της πρώτης δομής της λίστας. Πάντα. Το

τρέχον περιέχει τη διεύθυνση της δομής που έχει επεξεργαστεί, γεμάτη με δεδομένα ή εμφανίζεται.

  • νέα είναι η διεύθυνση μιας νέας δομής που δημιουργήθηκε χρησιμοποιώντας τη συνάρτηση malloc ().

  • Η γραμμή 7 δηλώνει τη δομή του αποθέματος ως παγκόσμια. Με αυτόν τον τρόπο, μπορείτε να έχετε πρόσβαση στις διάφορες λειτουργίες.

  • Ο βρόχος για τις γραμμές 25 και 39 δημιουργεί νέες δομές, συνδέοντάς τις μεταξύ τους.Η αρχική δομή είναι ειδική, οπότε η διεύθυνσή της αποθηκεύεται στη Γραμμή 30. Διαφορετικά, διατίθεται μια νέα δομή, χάρη στη συνάρτηση make_structure ().

Στη γραμμή 35, ενημερώνεται η προηγούμενη δομή. η τιμή του ρεύματος δεν αλλάζει μέχρι τη Γραμμή 36. Πριν συμβεί αυτό, ο δείκτης στην τρέχουσα δομή ενημερώνεται με τη διεύθυνση της επόμενης δομής, νέα.

Στη Γραμμή 40, το τέλος της συνδεδεμένης λίστας επισημαίνεται με επαναφορά του νέου δείκτη στην τελευταία δομή σε NULL.

Ο βρόχος while στη Γραμμή 46 εμφανίζει όλες τις δομές στη συνδεδεμένη λίστα. Η συνθήκη του βρόχου είναι η τιμή του τρέχοντος δείκτη. Όταν εντοπιστεί το NULL, ο βρόχος σταματά.

Το υπόλοιπο του κώδικα που εμφανίζεται στο Παράδειγμα Καλύτερου Συνδυασμένου Συνόλου αποτελείται από λειτουργίες που είναι αρκετά αυτονόητες.

Άσκηση 2

:

Αντιγράψτε τον κώδικα από ένα παράδειγμα λίστας καλύτερων συνδέσεων στον επεξεργαστή. Κατασκευάστε και τρέξτε. Σημειώστε τις δηλώσεις scanf () στη λειτουργία fill_structure (). Θυμηθείτε ότι το -> είναι το σύμβολο "peeker" για έναν δείκτη. Για να λάβετε τη διεύθυνση, πρέπει να δώσετε την πρόθεση της μεταβλητής με το & στη λειτουργία scanf ().

Πώς να δημιουργήσετε μια συνδεδεμένη λίστα στον προγραμματισμό C - ανδρείκελα

Η επιλογή των συντακτών

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

Η επιλογή των συντακτών

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

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

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Όπου οι φωτεινές περιοχές πληρούν τις σκοτεινές περιοχές. Πολλά προγράμματα επεξεργασίας φωτογραφιών σας επιτρέπουν να σχεδιάσετε ένα περίγραμμα επιλογής κατά μήκος ενός άκρου. Το εργαλείο αναζητά άκρες κοντά στο σημείο που σύρετε το ποντίκι.

Η επιλογή των συντακτών

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

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

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Από, Προς, Στήλες και Ταξινόμηση. Αυτά τα πλαίσια σας επιτρέπουν επίσης να ελέγχετε τις πληροφορίες που εμφανίζονται στο παράθυρο αναφοράς και την εμφάνιση των πληροφοριών. Για παράδειγμα, μπορείτε να ενημερώσετε το QuickBooks για το χρονικό διάστημα που θέλετε ...