Διαφορά μεταξύ πίνακα και συνδεδεμένης λίστας

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 3 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 8 Ενδέχεται 2024
Anonim
Λίστες Ι  -  Απλά Συνδεδεμένη Λίστα
Βίντεο: Λίστες Ι - Απλά Συνδεδεμένη Λίστα

Περιεχόμενο


Η μεγάλη διαφορά μεταξύ Παράταξη και Συνδεδεμένη λίστα όσον αφορά τη δομή τους. Οι πίνακες είναι με βάση το δείκτη δομή δεδομένων όπου κάθε στοιχείο συνδέεται με ένα ευρετήριο. Από την άλλη πλευρά, η Linked list στηρίζεται βιβλιογραφικές αναφορές όπου κάθε κόμβος αποτελείται από τα δεδομένα και τις αναφορές στο προηγούμενο και το επόμενο στοιχείο.

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

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


Μια άλλη σημαντική διαφορά μεταξύ μιας συστοιχίας και μιας συνδεδεμένης λίστας είναι ότι το Array έχει σταθερό μέγεθος και απαιτείται να δηλωθεί πριν, αλλά η Linked List δεν περιορίζεται στο μέγεθος και επεκτείνεται και συστέλλεται κατά την εκτέλεση.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. συμπέρασμα

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΠαράταξηΣυνδεδεμένη λίστα
ΒασικόςΕίναι ένα σταθερό σύνολο σταθερού αριθμού στοιχείων δεδομένων.Πρόκειται για ένα παραγγελθέν σύνολο που περιλαμβάνει έναν μεταβλητό αριθμό στοιχείων δεδομένων.
ΜέγεθοςΚαθορίζεται κατά τη διάρκεια της δήλωσης.Δεν χρειάζεται να καθορίσετε. να αναπτυχθούν και να συρρικνωθούν κατά την εκτέλεση.
Κατανομή αποθήκευσης Η θέση του στοιχείου κατανέμεται κατά τη διάρκεια της μεταγλώττισης.Η θέση στοιχείου ορίζεται κατά τη διάρκεια του χρόνου εκτέλεσης.
Η σειρά των στοιχείων Αποθηκεύτηκε διαδοχικά Αποθηκεύτηκε τυχαία
Πρόσβαση στο στοιχείοΑπευθείας ή τυχαία προσπελάσιμη, δηλ. Καθορίστε το ευρετήριο πίνακα ή δείκτη.Προσέγγιση με διαδοχή, δηλ. Traverse ξεκινώντας από τον πρώτο κόμβο της λίστας από τον δείκτη.
Εισαγωγή και διαγραφή στοιχείουΑργή σχετικά ως μετατόπιση απαιτείται.Ευκολότερη, ταχύτερη και αποτελεσματικότερη.
Ερευνητικός Δυαδική αναζήτηση και γραμμική αναζήτησηγραμμική αναζήτηση
Απαιτείται μνήμηπιο λιγο Περισσότερο
Χρήση μνήμηςΑτελέσφοροςΑποτελεσματικός


Ορισμός του πίνακα

Ένας πίνακας ορίζεται ως ένα σύνολο καθορισμένου αριθμού ομοιογενών στοιχείων ή στοιχείων δεδομένων. Σημαίνει ότι ένας πίνακας μπορεί να περιέχει μόνο έναν τύπο δεδομένων, είτε όλους τους ακέραιους αριθμούς, όλους τους αριθμούς κινητής υποδιαστολής ή όλους τους χαρακτήρες. Η δήλωση ενός πίνακα είναι η εξής:
int a;
Όπου το int ορίζει τον τύπο δεδομένων ή τα στοιχεία αποθήκευσης στοιχείων στοιχείων πίνακα. Το "a" είναι το όνομα ενός πίνακα και ο αριθμός που καθορίζεται μέσα στις αγκύλες είναι ο αριθμός των στοιχείων που μπορεί να αποθηκεύσει ένας πίνακας, αυτό ονομάζεται επίσης μέγεθος ή μήκος του πίνακα.

Ας δούμε μερικές από τις έννοιες που πρέπει να θυμόμαστε σχετικά με τις συστοιχίες:

  • Τα μεμονωμένα στοιχεία ενός πίνακα μπορούν να προσπελαστούν περιγράφοντας το όνομα του πίνακα, ακολουθούμενο από δείκτη ή δείκτη (προσδιορίζοντας τη θέση του στοιχείου στη συστοιχία) μέσα στις αγκύλες. Για παράδειγμα, για να ανακτήσουμε το 5ο στοιχείο του πίνακα, πρέπει να γράψουμε μια δήλωση a.
  • Σε κάθε περίπτωση τα στοιχεία μιας συστοιχίας θα αποθηκευτούν σε μια διαδοχική θέση μνήμης.
  • Το πρώτο στοιχείο του πίνακα έχει μηδενικό δείκτη. Σημαίνει ότι το πρώτο και το τελευταίο στοιχείο θα καθοριστούν ως α, και αντίστοιχα.
  • Ο αριθμός των στοιχείων που μπορούν να αποθηκευτούν σε μια διάταξη, δηλαδή το μέγεθος μιας συστοιχίας ή το μήκος της δίνεται από την ακόλουθη εξίσωση:
    (άνω όριο-κάτω όριο) + 1
    Για την παραπάνω διάταξη, θα ήταν (9-0) + 1 = 10. Όπου 0 είναι το κατώτερο όριο της συστοιχίας και το 9 είναι το άνω όριο της συστοιχίας.
  • Οι πίνακες μπορούν να διαβαστούν ή να γραφτούν μέσω του βρόχου. Εάν διαβάζουμε τη μονοδιάστατη συστοιχία, απαιτεί ένα βρόχο για ανάγνωση και άλλο για τη γραφή του πίνακα, για παράδειγμα:
    ένα. Για την ανάγνωση ενός πίνακα
    για (i = 0, i <= 9, i ++)
    {scanf ("% d", & a); }}
    σι. Για τη σύνταξη ενός πίνακα
    για (i = 0, i <= 9, i ++)
    {f ("% d", α). }}
  • Στην περίπτωση μιας συστοιχίας 2-D, θα χρειαζόταν δύο βρόχους και παρόμοια n-διαστάσεων array θα χρειαζόταν n βρόχους.

Οι λειτουργίες που εκτελούνται σε συστοιχίες είναι:

  1. Δημιουργία πίνακα
  2. Τράβηγμα συστοιχίας
  3. Προσθήκη νέων στοιχείων
  4. Διαγραφή των απαιτούμενων στοιχείων.
  5. Τροποποίηση στοιχείου.
  6. Συγχώνευση συστοιχιών

Παράδειγμα

Το παρακάτω πρόγραμμα απεικονίζει την ανάγνωση και τη γραφή του πίνακα.

#περιλαμβάνω
#περιλαμβάνω
κενό κύρια ()
{
int a, i;
f ("Εισαγωγή του πίνακα").
για (i = 0, i <= 9, i ++)
{
scanf ("% d", & a)
}
f ("Εισαγωγή του πίνακα").
για (i = 0, i <= 9, i ++)
{
f ("% d n", α).
}
getch ();
}

Ορισμός της συνδεδεμένης λίστας

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

Το τμήμα INFO που αποθηκεύει τις πληροφορίες και το POINTER που δείχνει το επόμενο στοιχείο. Όπως γνωρίζετε για την αποθήκευση της διεύθυνσης, έχουμε μια μοναδική δομή δεδομένων στο C που ονομάζεται δείκτες. Επομένως, το δεύτερο πεδίο της λίστας πρέπει να είναι ένας τύπος δείκτη.

Οι τύποι των συνδεδεμένων λιστών είναι η λίστα που είναι απλά συνδεδεμένη, η λίστα διπλών συνδέσεων, η λίστα συνδεδεμένων εγκυκλίων, η εγκύκλιος λίστα διπλών συνδέσμων.

Οι λειτουργίες που εκτελούνται στη Συνδεδεμένη Λίστα είναι:

  1. Δημιουργία
  2. Τράβηγμα
  3. Εισαγωγή
  4. Διαγραφή
  5. Ερευνητικός
  6. Αληλουχία
  7. Απεικόνιση

Παράδειγμα

Το ακόλουθο απόσπασμα απεικονίζει τη δημιουργία μιας συνδεδεμένης λίστας:

δομή κόμβου
{
int num;
κατακόρυφος κόμβος * επόμενος.
}
αρχή = NULL;
void create ()
{
typedef δομή κόμβου NODE;
NODE * p, * q;
επιλογή char;
πρώτα = NULL;
κάνω
{
p = (NODE *) malloc (μέγεθοςof (NODE)),
f ("Εισαγάγετε το στοιχείο δεδομένων n");
σάρωση ("% d", & p -> num);
αν (p == NULL)
{
q = έναρξη.
ενώ (q -> επόμενο! = NULL)
{q = q -> επόμενο
}
p -> επόμενη = q -> επόμενη?
q -> = p;
}
αλλού
{
p -> επόμενος = έναρξη.
αρχή = p;
}
f ("Θέλετε να συνεχίσετε (πληκτρολογήστε y ή n); n");
scanf ("% c", & επιλογή);
}
ενώ ((επιλογή == y) || (επιλογή == Y));
}

  1. Ένας πίνακας είναι η δομή δεδομένων που περιέχει μια συλλογή παρόμοιων στοιχείων δεδομένων τύπου ενώ η λίστα των συνδεδεμένων θεωρείται ως μη πρωτόγονη δομή δεδομένων περιέχει μια συλλογή από μη ταξινομημένα συνδεδεμένα στοιχεία γνωστά ως κόμβοι.
  2. Στη διάταξη τα στοιχεία ανήκουν σε ευρετήρια, δηλαδή εάν θέλετε να μπείτε στο τέταρτο στοιχείο πρέπει να γράψετε το όνομα της μεταβλητής με το δείκτη ή τη θέση του μέσα στην τετράγωνη αγκύλη.
    Σε μια συνδεδεμένη λίστα, όμως, πρέπει να ξεκινήσετε από το κεφάλι και να περάσετε μέχρι να φτάσετε στο τέταρτο στοιχείο.
  3. Ενώ η πρόσβαση σε μια συστοιχία στοιχείων είναι γρήγορη ενώ η λίστα συνδέσεων παίρνει γραμμικό χρόνο έτσι, είναι αρκετά πιο αργή.
  4. Οι λειτουργίες όπως η εισαγωγή και η διαγραφή σε συστοιχίες καταναλώνουν πολύ χρόνο. Από την άλλη πλευρά, η απόδοση αυτών των εργασιών σε συνδέσμους είναι γρήγορη.
  5. Οι πίνακες είναι σταθερού μεγέθους. Αντίθετα, οι συνδεδεμένοι κατάλογοι είναι δυναμικοί και ευέλικτοι και μπορούν να επεκταθούν και να συρρικνωθούν το μέγεθος τους.
  6. Σε μια συστοιχία, η μνήμη εκχωρείται κατά τη διάρκεια της μεταγλώττισης, ενώ σε μια συνδεδεμένη λίστα διατίθεται κατά τη διάρκεια της εκτέλεσης ή του χρόνου εκτέλεσης.
  7. Τα στοιχεία αποθηκεύονται διαδοχικά σε συστοιχίες ενώ αποθηκεύονται τυχαία σε συνδέσμους.
  8. Η απαίτηση της μνήμης είναι μικρότερη λόγω των πραγματικών δεδομένων που αποθηκεύονται στο ευρετήριο της συστοιχίας. Αντιθέτως, υπάρχει ανάγκη για περισσότερη μνήμη στις Συνδεδεμένες Λίστες λόγω της αποθήκευσης πρόσθετων επόμενων και προηγούμενων στοιχείων αναφοράς.
  9. Επιπλέον, η χρήση μνήμης είναι αναποτελεσματική στη συστοιχία. Αντίθετα, η χρήση μνήμης είναι αποτελεσματική στη συστοιχία.

συμπέρασμα

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