Ako implementovať prepojený zoznam v Pythone?



Tento článok ukazuje, ako môžete vytvoriť prepojený zoznam v pythone rôznymi metódami na vloženie aktualizácie a odstránenie prvkov v prepojenom zozname.

Programovací jazyk Python je otvorený jazyk s rôznymi implementáciami, ktoré sú pripravené na okamžité použitie, vďaka čomu je jedinečný a ľahšie sa naučí. Hoci nepodporuje koncept prepojeného zoznamu, existuje spôsob, ako ho prostredníctvom inej implementácie získať, aby získal prepojený zoznam. V tomto článku sa dozvieme, ako môžeme vytvoriť prepojený zoznam v Pythone. Nasledujúce témy sú predmetom tohto blogu:

Poďme začať!!





Čo je to Prepojený zoznam?

Zoznam odkazov je postupnosť uzlov, ktoré majú podobný dátový typ, každý uzol obsahuje jeden údajový objekt a smerník na nasledujúci uzol.

Prepojený zoznam je lineárna dátová štruktúra so zbierkou viacerých uzlov. Kde eprvok ach ukladá svoje vlastné údaje a ukazovateľ na umiestnenie nasledujúceho prvku. Posledný odkaz v prepojenom zozname ukazuje na nulu, čo znamená koniec reťazca. Prvok v prepojenom zozname sa nazýva a uzol . Prvý uzol sa nazýva hlava .Posledný uzol sa voláthe chvost .
prepojený zoznam - prepojený zoznam v pythone - edurekaŠtandardná knižnica pythonu nemá prepojený zoznam. Môžeme implementovať koncept dátovej štruktúry zoznamu odkazov pomocou konceptu uzlov.



Teraz, keď sme sa dozvedeli, čo je prepojené. Poďme teda k implementácii Prepojeného zoznamu.

Implementácia prepojeného zoznamu

Na vytvorenie Prepojeného zoznamu vytvoríme objekt uzla a vytvoríme ďalšiu triedu na použitie tohto objektu uzla.
Kód na vytvorenie triedy Uzol.
Vyššie uvedený program vytvára prepojený zoznam s tromi údajovými prvkami.

uzol triedy (objekt): # Konštruktor na inicializáciu premenných triedy 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

Implementácia zoznamu odkazov pozostáva z nasledujúcich funkcií v zozname odkazov
jeden. Vložte : Táto metóda vloží nový uzol do prepojeného zoznamu.
2. Veľkosť : Táto metóda vráti veľkosť prepojeného zoznamu.
3. Vyhľadávanie : Táto metóda vráti uzol obsahujúci údaje, inak spôsobí chybu
Štyri. Odstrániť : Táto metóda odstráni uzol obsahujúci údaje, inak spôsobí chybu



Pozrime sa na zoznam Metódy prepojenia

Metóda Init v prepojenom zozname

trieda LinkedList (objekt): def __init __ (self, head = None): self.head = head

Metóda Init sa používa na inicializáciu a trieda premenná, ak zoznam nemá žiadne uzly, je nastavený na žiadny.

Vložka:

ako používať trim v jave
def insert (self, data): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

Táto metóda vkladania berie údaje, inicializuje nový uzol s danými údajmi a pridáva ich do zoznamu. Technicky môžete uzol vložiť kdekoľvek v zozname, ale najjednoduchší spôsob, ako to urobiť, je umiestniť ho na čelo zoznamu a nasmerovať nový uzol na starú hlavičku (druh tlačenia ostatných uzlov nadol po línii).

Veľkosť

# Vráti celkový počet uzlov v zozname def size (self): current = self.head count = 0 while current: count + = 1 current = current.get_next () return count

Metóda veľkosti je veľmi jednoduchá, v zásade počíta uzly, kým ich už nenájde, a vráti počet nájdených uzlov. Metóda začína v hlavnom uzle, putuje po línii uzlov, kým nedosiahne koniec (prúd bude po dosiahnutí konca žiadny), pričom sleduje počet uzlov, ktoré videla.

Vyhľadávanie

# Vráti uzol v zozname, ktorý má nodeData, vyskytla sa chyba, ak uzol nie je prítomný def search (self, nodeData): current = self.head isPresent = False, zatiaľ čo current a isPresent je False: if current.get_data () == nodeData: isPresent = Pravda iná: current = current.get_next (), ak current je None: raise ValueError ('Data not present in list') return current

Vyhľadávanie je v skutočnosti veľmi podobné veľkosti, ale namiesto prechádzania celým zoznamom uzlov kontroluje na každej zastávke, či má aktuálny uzol požadované údaje. Ak je to tak, vráti uzol obsahujúci tieto údaje. Ak metóda prechádza celým zoznamom, ale stále nenašla údaje, spôsobí chybu s hodnotou a upozorní používateľa, že údaje sa v zozname nenachádzajú.

Odstrániť

# Odstrániť uzol z prepojeného zoznamu vráti chybu, ak uzol nie je prítomný def delete (self, nodeData): current = self.head previous = None isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = True else: previous = current current = current.get_next (), ak current je None: zvýšiť ValueError ('Data not present in list'), ak previous je None: self.head = current.get_next () else: previous.set_next ( current.get_next ())

Metóda mazania prechádza zoznamom rovnakým spôsobom ako vyhľadávanie, ale okrem sledovania aktuálneho uzla si metóda mazania pamätá aj posledný navštívený uzol. Keď odstránenie konečne dorazí do uzla, ktorý chce odstrániť. Jednoducho tento uzol z reťaze odstráni „preskočením“.

Chcem tým povedať, že keď metóda odstránenia dosiahne uzol, ktorý chce odstrániť, pozrie sa na posledný uzol, ktorý navštívil („predchádzajúci“ uzol), a vynuluje ukazovateľ tohto predchádzajúceho uzla. Namiesto ukazovania na uzol, ktorý sa má čoskoro odstrániť.

Bude smerovať na ďalší uzol v rade. Pretože žiadne uzly neukazujú na zlý uzol, ktorý sa odstraňuje, je účinne odstránený zo zoznamu!

Týmto sa dostávame na koniec tohto článku, kde sme sa dozvedeli, ako môžeme vytvoriť prepojený zoznam v pythone s podobnou implementáciou, aj keď python skutočne nepodporuje koncept prepojeného zoznamu. Dúfam, že máte prehľad o všetkom, čo bolo s vami zdieľané v tomto tutoriále.

Ak sa vám zdá tento článok o „Prepojenom zozname v Pythone“ relevantný, pozrite si Dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov sa šíri po celom svete.

Sme tu, aby sme vám pomohli na každom kroku na vašej ceste a prišli s učebným plánom, ktorý je určený pre študentov a profesionálov, ktorí chcú byť . Kurz je navrhnutý tak, aby vám dal úvod do programovania v Pythone a naučil vás základné aj pokročilé koncepty Pythonu spolu s rôznymi Páči sa mi to

Ak narazíte na akékoľvek otázky, neváhajte sa ich opýtať v sekcii komentárov „Prepojený zoznam v Pythone“ a náš tím vám rád odpovie.