Sådan implementeres en sammenkædet liste i Python?



Denne artikel viser, hvordan du kan oprette en linket liste i python med forskellige metoder til at indsætte opdatering og fjerne elementerne i den linkede liste.

Python-programmeringssprog er et open source-sprog med forskellige out-of-the-box-implementeringer, der gør det unikt og lettere at lære. Selvom understøtter ikke begrebet en sammenkædet liste, der er en vej rundt gennem en anden implementering for at få en sammenkædet liste. I denne artikel lærer vi, hvordan vi kan oprette en linket liste i Python. Følgende er de emner, der er dækket af denne blog:

Lad os begynde!!





streng til dato konvertering i java

Hvad er sammenkædet liste?

Linklisten er en sekvens af noder med en lignende datatype, hver node indeholder et dataobjekt og markør til den næste node.

En sammenkædet liste er en lineær datastruktur med samling af flere noder. Hvor each element gemmer sine egne data og en markør til placeringen af ​​det næste element. Det sidste link i en sammenkædet liste peger på null, hvilket indikerer slutningen af ​​kæden. Et element i en sammenkædet liste kaldes a knude . Den første knude kaldes hoved .Den sidste knude kaldesdet hale .
linket liste - linket liste i python - edurekaStandard python-bibliotek har ikke en sammenkædet liste. Vi kan implementere begrebet datalagring med linklister ved hjælp af begrebet noder.



Nu hvor vi lærte om, hvad der er forbundet. Så lad os gå videre til implementering af en linket liste.

Implementering af en sammenkædet liste

Til oprettelse af en sammenkædet liste opretter vi et node-objekt og opretter en anden klasse til at bruge dette node-objekt.
Kode til oprettelse af Node-klasse.
Ovenstående program opretter en sammenkædet liste med tre dataelementer.

klasse Node (objekt): # Konstruktør til at initialisere klassevariabler def __init __ (selv, data = Ingen, næste_node = Ingen): self.data = data self.next_node = næste_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

Implementering af linklisten består af følgende funktionalitet i en linket liste
en. Indsæt : Denne metode indsætter en ny node i en linket liste.
2. Størrelse : Denne metode returnerer størrelsen på den linkede liste.
3. Søg : Denne metode returnerer en node, der indeholder dataene, ellers vil der opstå en fejl
Fire. Slet : Denne metode sletter en node, der indeholder dataene, ellers vil der opstå en fejl



Lad os se metoderne til sammenkædet liste

Indledende metode i en sammenkædet liste

class LinkedList (object): def __init __ (self, head = None): self.head = head

Init-metoden bruges til initialisering af a klasse variabel, hvis listen ikke har nogen noder, er den indstillet til ingen.

Indsæt:

def indsæt (selv, data): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

Denne indsætningsmetode tager data, initialiserer en ny node med de givne data og føjer dem til listen. Teknisk set kan du indsætte en node hvor som helst på listen, men den enkleste måde at gøre det på er at placere den øverst på listen og pege den nye node på det gamle hoved (slags at skubbe de andre noder ned ad linjen).

Størrelse

# Returnerer det samlede antal knudepunkter i listen def størrelse (selv): nuværende = self.head antal = 0 mens nuværende: count + = 1 strøm = current.get_next () return count

Størrelsesmetoden er meget enkel, den tæller dybest set noder, indtil den ikke kan finde længere, og returnerer, hvor mange noder den fandt. Metoden starter ved hovednoden, bevæger sig ned ad linjen af ​​noder, indtil den når slutningen (strømmen vil være Ingen, når den når slutningen), mens den holder styr på, hvor mange noder den har set.

Søg

# Returnerer noden på listen, der har nodeData, der opstod en fejl, hvis noden ikke er til stede def-søgning (selv, nodeData): nuværende = self.head isPresent = Falsk, mens nuværende og isPresent er Falsk: hvis current.get_data () == nodeData: isPresent = Sandt andet: nuværende = nuværende.get_næste () hvis strøm er Ingen: hæve ValueError ('Data ikke til stede i listen') returstrøm

Søgning ligner faktisk størrelse, men i stedet for at krydse hele listen over noder kontrolleres det ved hvert stop for at se, om den aktuelle node har de ønskede data. Hvis ja, returnerer noden, der indeholder disse data. Hvis metoden går gennem hele listen, men stadig ikke har fundet dataene, rejser den en værdifejl og underretter brugeren om, at dataene ikke er på listen.

Slet

# Fjern noden fra den sammenkædede liste returnerer fejl, hvis noden ikke er til stede def delete (self, nodeData): current = self.head previous = None isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = Sandt andet: forrige = aktuel strøm = nuværende.get_næste () hvis strøm er ingen: hæve ValueError ('Data ikke til stede i listen') hvis forrige er Ingen: self.head = nuværende.get_næste () andet: forrige.set_næste ( current.get_next ())

Sletningsmetoden krydser listen på samme måde som søgningen gør, men ud over at holde styr på den aktuelle knude husker sletningsmetoden også den sidste node, der er besøgt. Når slet endelig ankommer til noden, vil det slettes. Det fjerner simpelthen den knude fra kæden ved at 'springe den igennem'.

Med dette mener jeg, at når sletningsmetoden når den node, den ønsker at slette, ser den på den sidste node, den besøgte (den 'forrige' node) og nulstiller den tidligere node's markør. I stedet for at pege på den knude, der snart skal slettes.

Det peger på den næste node i linjen. Da ingen noder peger på den dårlige knude, der slettes, fjernes den effektivt fra listen!

Dette bringer os til slutningen af ​​denne artikel, hvor vi har lært, hvordan vi kan oprette en sammenkædet liste i python med en lignende implementering, selvom python ikke rigtig understøtter begrebet en sammenkædet liste. Jeg håber, du er klar med alt, hvad der er delt med dig i denne vejledning.

Hvis du fandt denne artikel om 'Linked List In Python' relevant, skal du tjekke Et betroet online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden.

Vi er her for at hjælpe dig med hvert trin på din rejse og komme med en læseplan, der er designet til studerende og fagfolk, der ønsker at være en . Kurset er designet til at give dig et forspring i Python-programmering og træne dig til både kerne- og avancerede Python-koncepter sammen med forskellige synes godt om

Hvis du støder på spørgsmål, er du velkommen til at stille alle dine spørgsmål i kommentarfeltet i 'Linked List In Python', og vores team vil med glæde svare.

cloudera certificeret udvikler til apache hadoop