Πώς να εφαρμόσετε μια συνδεδεμένη λίστα στο Python;



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

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

Ας ξεκινήσουμε!!





Τι είναι η συνδεδεμένη λίστα;

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

Μια συνδεδεμένη λίστα είναι μια γραμμική δομή δεδομένων με τη συλλογή πολλαπλών κόμβων. Όπου εΤο στοιχείο ach αποθηκεύει τα δικά του δεδομένα και έναν δείκτη στη θέση του επόμενου στοιχείου. Ο τελευταίος σύνδεσμος σε μια συνδεδεμένη λίστα δείχνει το μηδέν, υποδεικνύοντας το τέλος της αλυσίδας. Ένα στοιχείο σε μια συνδεδεμένη λίστα ονομάζεται a κόμβος . Ο πρώτος κόμβος ονομάζεται κεφάλι .Ο τελευταίος κόμβος καλείταιο ουρά .
συνδεδεμένη λίστα - συνδεδεμένη λίστα στο python - edurekaΗ τυπική βιβλιοθήκη python δεν έχει συνδεδεμένη λίστα. Μπορούμε να εφαρμόσουμε την έννοια της δομής δεδομένων λίστας συνδέσεων χρησιμοποιώντας την έννοια των κόμβων.



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

Εφαρμογή συνδεδεμένης λίστας

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

class Node (αντικείμενο): # Κατασκευαστής για την ενεργοποίηση των μεταβλητών κλάσης def __init __ (self, data = None, next_node = None): self.data = data self.next_node = next_node #get data def get_data (self): return self.data # get next value def get_next (self): return self.next_node # set next data def set_next (self, new_next): self.next_node = new_next

Η υλοποίηση της λίστας συνδέσμων αποτελείται από τις ακόλουθες λειτουργίες σε μια συνδεδεμένη λίστα
ένας. Εισάγετε : Αυτή η μέθοδος θα εισαγάγει έναν νέο κόμβο σε μια συνδεδεμένη λίστα.
2. Μέγεθος : Αυτή η μέθοδος θα επιστρέψει το μέγεθος της συνδεδεμένης λίστας.
3. Αναζήτηση : Αυτή η μέθοδος θα επιστρέψει έναν κόμβο που περιέχει τα δεδομένα, αλλιώς θα δημιουργήσει σφάλμα
Τέσσερις. Διαγράφω : Αυτή η μέθοδος θα διαγράψει έναν κόμβο που περιέχει τα δεδομένα, αλλιώς θα δημιουργήσει σφάλμα



Ας δούμε τη λίστα Μέθοδοι συνδεδεμένων

c ++ αλγόριθμος συγχώνευσης

Μέθοδος Init σε μια συνδεδεμένη λίστα

τάξη LinkedList (αντικείμενο): def __init __ (self, head = None): self.head = head

Η μέθοδος Init χρησιμοποιείται για την αρχικοποίηση ενός τάξη μεταβλητή εάν η λίστα δεν έχει κόμβους έχει οριστεί σε κανέναν.

Εισάγετε:

def ένθετο (self, data): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

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

Μέγεθος

# Επιστρέφει συνολικούς αριθμούς κόμβου στο μέγεθος def list (self): current = self.head count = 0 while current: count + = 1 current = current.get_next () count return

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

Αναζήτηση

# Επιστρέφει τον κόμβο στη λίστα με nodeData, προέκυψε σφάλμα εάν ο κόμβος δεν εμφανίζει def search (self, nodeData): current = self.head isPresent = False while current και isPresent is False: if current.get_data () == nodeData: isPresent = True other: current = current.get_next () if current is None: raise ValueError ('Τα δεδομένα δεν υπάρχουν στη λίστα') επιστρέφουν τρέχον

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

Διαγράφω

# Αφαιρέστε τον κόμβο από τη συνδεδεμένη λίστα επιστρέφει σφάλμα εάν ο κόμβος δεν υπάρχει def delete (self, nodeData): current = self.head sebelumnya = Κανένας isPresent = False while current και isPresent is False: if current.get_data () == nodeData: isPresent = True other: previous = current current = current.get_next () if current is None: raise ValueError ('Data not present in list') if sebelumnya is None: self.head = current.get_next () άλλο: previous.set_next ( current.get_next ())

Η μέθοδος διαγραφής διασχίζει τη λίστα με τον ίδιο τρόπο που κάνει η αναζήτηση, αλλά εκτός από την παρακολούθηση του τρέχοντος κόμβου, η μέθοδος διαγραφής θυμάται επίσης τον τελευταίο κόμβο που επισκέπτεται. Όταν η διαγραφή φτάνει τελικά στον κόμβο που θέλει να διαγράψει. Αφαιρεί απλώς αυτόν τον κόμβο από την αλυσίδα «leapfrogging».

Με αυτό εννοώ ότι όταν η μέθοδος διαγραφής φτάσει στον κόμβο που θέλει να διαγράψει, εξετάζει τον τελευταίο κόμβο που επισκέφτηκε (τον «προηγούμενο» κόμβο) και επαναφέρει τον δείκτη του προηγούμενου κόμβου. Αντί να επισημαίνετε τον κόμβο που πρόκειται να διαγραφεί σύντομα.

Θα δείξει στον επόμενο κόμβο στη γραμμή. Δεδομένου ότι κανένας κόμβος δεν δείχνει τον κακό κόμβο που διαγράφεται, καταργείται αποτελεσματικά από τη λίστα!

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

στρογγυλό διπλό έως int java

Εάν βρήκατε αυτό το άρθρο σχετικά με το 'Linked List In Python', ανατρέξτε στο Μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων εκπαιδευόμενων σε όλο τον κόσμο.

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

Εάν συναντήσετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να κάνετε όλες τις ερωτήσεις σας στην ενότητα σχολίων του 'Linked List In Python' και η ομάδα μας θα χαρεί να απαντήσει.