Hvordan implementere en koblet liste i Python?



Denne artikkelen viser hvordan du kan lage en koblet liste i python med forskjellige metoder for å sette inn oppdatering og fjerne elementene i den koblede listen.

Python-programmeringsspråk er et åpent kildespråk med forskjellige out-of-the-box implementeringer som gjør det unikt og lettere å lære. Selv om støtter ikke begrepet en koblet liste, det er en vei rundt det gjennom en annen implementering for å få en koblet liste. I denne artikkelen vil vi lære hvordan vi kan lage en koblet liste i Python. Følgende er temaene som dekkes i denne bloggen:

La oss begynne!!





Hva er koblet liste?

Koblingslisten er en sekvens av noder som har en lignende datatype, hver node inneholder ett dataobjekt og peker til neste node.

En koblet liste er en lineær datastruktur med samling av flere noder. Hvor each element lagrer sine egne data og en peker til plasseringen av neste element. Den siste lenken i en koblet liste peker mot null, noe som indikerer slutten på kjeden. Et element i en koblet liste kalles a node . Den første noden kalles hode .Den siste noden heterde hale .
koblet liste - koblet liste i python - edurekaStandard python-bibliotek har ikke en koblet liste. Vi kan implementere konseptet med koblingsliste datastruktur ved å bruke begrepet noder.



Nå som vi lærte om hva som er koblet. Så la oss gå videre til implementering av en koblet liste.

Implementering av en koblet liste

For å opprette en koblet liste oppretter vi et nodeobjekt og oppretter en annen klasse for å bruke dette nodeobjektet.
Kode for å lage Node-klasse.
Ovennevnte program oppretter en koblet liste med tre dataelementer.

class Node (object): # Constructor to initilize class variables 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 # få neste verdi def get_next (self): return self.next_node # set next data def set_next (self, new_next): self.next_node = new_next

Implementering av lenklisten består av følgende funksjonalitet i en koblet liste
en. Sett inn : Denne metoden vil sette inn en ny node i en koblet liste.
2. Størrelse : Denne metoden vil returnere størrelsen på den koblede listen.
3. Søk : Denne metoden returnerer en node som inneholder dataene, ellers vil det føre til en feil
Fire. Slett : Denne metoden vil slette en node som inneholder dataene, ellers vil det føre til en feil



Lar oss se Methods of Linked-listen

Opprinnelig metode i en koblet liste

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

Init-metoden brukes til initialisering av a klasse variabel hvis listen ikke har noen noder, er den satt til ingen.

Sett inn:

def insert (self, data): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

Denne innsettingsmetoden tar data, initialiserer en ny node med de gitte dataene, og legger dem til listen. Teknisk sett kan du sette inn en node hvor som helst i listen, men den enkleste måten å gjøre det på er å plassere den øverst på listen og peke den nye noden mot det gamle hodet (slags å skyve de andre nodene nedover linjen).

Størrelse

# Returnerer totalt antall noder i listen def størrelse (selv): gjeldende = selvtall antall teller = 0 mens gjeldende: telle + = 1 strøm = gjeldende.get_neste () retur telle

Størrelsesmetoden er veldig enkel, den teller i utgangspunktet noder til den ikke finner lenger, og returnerer hvor mange noder den fant. Metoden starter ved hodetoden, beveger seg nedover linjen av noder til den når slutten (strømmen vil være Ingen når den når slutten) og holder rede på hvor mange noder den har sett.

Søk

# Returnerer noden i listen som har nodeData, feil oppstod hvis noden ikke er til stede def-søk (selv, nodeData): gjeldende = self.head isPresent = Falsk mens gjeldende og isPresent er False: hvis gjeldende.get_data () == nodeData: isPresent = Ekte annet: gjeldende = gjeldende.get_neste () hvis gjeldende er Ingen: hev ValueError ('Data ikke til stede i listen') returstrøm

Søk er faktisk veldig lik størrelse, men i stedet for å krysse hele listen over noder, sjekker den ved hvert stopp for å se om den nåværende noden har de forespurte dataene. I så fall returnerer noden som inneholder dataene. Hvis metoden går gjennom hele listen, men fremdeles ikke har funnet dataene, reiser den en verdifeil og varsler brukeren om at dataene ikke er i listen.

Slett

# Fjern noden fra koblet liste returnerer feil 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 = Ekte annet: forrige = gjeldende strøm = gjeldende.get_neste () hvis gjeldende er Ingen: hev ValueError ('Data ikke til stede i listen') hvis forrige er Ingen: selv.hode = gjeldende.get_neste () annet: forrige.set_neste ( current.get_next ())

Slettemetoden krysser listen på samme måte som søket gjør, men i tillegg til å holde oversikt over den nåværende noden, husker slettemetoden også den siste noden som ble besøkt. Når slett endelig kommer til noden, vil den slette. Den fjerner ganske enkelt den noden fra kjeden ved å 'hoppe over den'.

Med dette mener jeg at når slettemetoden når noden den vil slette, ser den på den siste noden den besøkte (den 'forrige' noden) og tilbakestiller pekeren til den forrige noden. Snarere enn å peke på noden som snart skal slettes.

Det vil peke til neste node i linjen. Siden ingen noder peker mot den dårlige noden som blir slettet, blir den effektivt fjernet fra listen!

Dette bringer oss til slutten av denne artikkelen der vi har lært hvordan vi kan lage en koblet liste i python med en lignende implementering, selv om python egentlig ikke støtter konseptet med en koblet liste. Jeg håper du er klar med alt som har blitt delt med deg i denne opplæringen.

Hvis du fant denne artikkelen på “Linked List In Python” relevant, sjekk ut Et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden.

Vi er her for å hjelpe deg med hvert trinn på reisen og komme med en læreplan som er designet for studenter og fagpersoner som ønsker å være en . Kurset er designet for å gi deg et forsprang i Python-programmering og trene deg for både kjerne- og avanserte Python-konsepter sammen med forskjellige som

java forskjell mellom redskaper og utvidelser

Hvis du kommer over noen spørsmål, er du velkommen til å stille alle spørsmålene dine i kommentarfeltet i 'Koblet liste i Python', og teamet vårt svarer gjerne.