Hur implementerar jag en länkad lista i Python?



Den här artikeln visar hur du kan skapa en länkad lista i python med olika metoder för att infoga uppdatering och ta bort elementen i den länkade listan.

Pythons programmeringsspråk är ett öppen källkodsspråk med olika out-of-the-box-implementeringar som gör det unikt och lättare att lära sig. Fastän stöder inte begreppet en länkad lista, det finns ett sätt att kringgå det genom en annan implementering för att få en länkad lista. I den här artikeln lär vi oss hur vi kan skapa en länkad lista i Python. Följande är ämnen som tas upp i den här bloggen:

Låt oss börja!!





hur man använder spyder python

Vad är länkad lista?

Länklistan är en sekvens av noder som har en liknande datatyp, varje nod innehåller ett dataobjekt och pekare till nästa nod.

En länkad lista är en linjär datastruktur med samlingen av flera noder. Där each-elementet lagrar sina egna data och en pekare till platsen för nästa element. Den sista länken i en länkad lista pekar på null, vilket anger slutet på kedjan. Ett element i en länkad lista kallas a nod . Den första noden kallas huvud .Den sista noden kallasde svans .
länkad lista - länkad lista i python - edurekaStandard python-bibliotek har ingen länkad lista. Vi kan implementera begreppet länklistdatastruktur genom att använda begreppet noder.



Nu när vi lärde oss om vad som är länkat. Så vi går vidare till att implementera en länkad lista.

Implementering av en länkad lista

För att skapa en länkad lista skapar vi ett nodobjekt och skapar en annan klass för att använda detta nodobjekt.
Kod för att skapa nodklass.
Ovanstående program skapar en länkad lista med tre dataelement.

klass Nod (objekt): # Konstruktör för att initiera klassvariabler 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å nästa värde def get_next (self): returnera self.next_node # set next data def set_next (self, new_next): self.next_node = new_next

Implementering av länklista består av följande funktioner i en länkad lista
ett. Föra in : Den här metoden infogar en ny nod i en länkad lista.
2. Storlek : Den här metoden returnerar storleken på den länkade listan.
3. Sök : Den här metoden returnerar en nod som innehåller data, annars kommer ett fel att uppstå
Fyra. Radera : Denna metod tar bort en nod som innehåller data, annars kommer ett fel att uppstå



Låt oss se metoderna för länkad lista

Initialmetod i en länkad lista

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

Init-metoden används för initialisering av a klass variabel om listan inte har några noder är den inställd på ingen.

def __init__ i python

Föra in:

def infoga (själv, data): new_node = Nod (data) new_node.set_next (self.head) self.head = new_node

Denna infogningsmetod tar data, initialiserar en ny nod med den givna informationen och lägger till den i listan. Tekniskt sett kan du infoga en nod var som helst i listan, men det enklaste sättet att göra det är att placera den i början av listan och peka den nya noden på det gamla huvudet (typ av att trycka på de andra noder längs linjen).

Storlek

# Returnerar totalt antal noder i listdef-storlek (själv): aktuell = själv. Huvudantal = 0 medan nuvarande: antal + = 1 ström = nuvarande.get_näste () returantal

Storleksmetoden är väldigt enkel, den räknar i princip noder tills den inte kan hitta längre och returnerar hur många noder den hittade. Metoden börjar vid huvudnoden, färdas längs raden av noder tills den når slutet (strömmen blir Ingen när den når slutet) och håller reda på hur många noder den har sett.

Sök

# Returnerar noden i listan med nodeData, fel uppstod om noden inte finns def-sökning (själv, nodeData): aktuell = själv.huvud isPresent = Falsk medan aktuell och isPresent är Falsk: om current.get_data () == nodeData: isPresent = True else: current = current.get_next () if current is None: höja ValueError ('Data not present in list') return current

Sökning är faktiskt mycket lik storlek, men istället för att korsa hela listan med noder kontrollerar den vid varje stopp för att se om den aktuella noden har de begärda data. Om så är fallet, returnerar noden som innehåller data. Om metoden går igenom hela listan men fortfarande inte har hittat data, ger det upp ett värdefel och meddelar användaren att data inte finns i listan.

Radera

# Ta bort noden från den länkade listan returnerar fel om noden inte finns def delete (self, nodeData): current = self.head previous = None isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = Sant annat: föregående = nuvarande ström = nuvarande.get_näste () om strömmen är ingen: höj ValueError ('Data ej närvarande i listan') om föregående är Ingen: själv.huvud = nuvarande.get_näst () annat: föregående current.get_next ())

Raderingsmetoden korsar listan på samma sätt som sökningen gör, men förutom att hålla reda på den aktuella noden kommer raderingsmetoden också ihåg att den senast besökta noden. När radera äntligen kommer till noden vill den ta bort. Det tar helt enkelt bort den noden från kedjan genom att 'hoppa över' den.

Med detta menar jag att när raderingsmetoden når den nod som den vill ta bort, tittar den på den sista noden den besökte (den 'tidigare' noden) och återställer den tidigare nodens pekare. Snarare än att peka på noden som snart ska raderas.

Den pekar på nästa nod i raden. Eftersom inga noder pekar på den dåliga noden som raderas tas den effektivt bort från listan!

Detta tar oss till slutet av den här artikeln där vi har lärt oss hur vi kan skapa en länkad lista i python med en liknande implementering även om python inte riktigt stöder begreppet en länkad lista. Jag hoppas att du är tydlig med allt som har delats med dig i denna handledning.

vad är paket i java

Om du tyckte att den här artikeln om 'Länkad lista i Python' var relevant, kolla in Ett pålitligt online-lärande företag med ett nätverk med mer än 250 000 nöjda elever spridda över hela världen.

Vi är här för att hjälpa dig med varje steg på din resa och komma med en läroplan som är utformad för studenter och yrkesverksamma som vill vara en . Kursen är utformad för att ge dig ett försprång till Python-programmering och träna dig för både kärn- och avancerade Python-koncept tillsammans med olika tycka om

Om du stöter på några frågor är du välkommen att ställa alla dina frågor i kommentarsektionen i 'Länkad lista i Python' så svarar vårt team gärna.