Jak implementovat propojený seznam v Pythonu?



Tento článek ukazuje, jak můžete vytvořit propojený seznam v pythonu pomocí různých metod pro vložení aktualizace a odebrání prvků v propojeném seznamu.

Programovací jazyk Python je open-source jazyk s různými implementacemi připravenými k okamžitému použití, díky nimž je jedinečný a snáze se učí. Ačkoli nepodporuje koncept propojeného seznamu, existuje způsob, jak jej přes jinou implementaci získat propojený seznam. V tomto článku se naučíme, jak vytvořit propojený seznam v Pythonu. Následující témata se zabývají tímto blogem:

Pojďme začít!!





Co je to propojený seznam?

Seznam odkazů je posloupnost uzlů, které mají podobný datový typ, každý uzel obsahuje jeden datový objekt a ukazatel na další uzel.

Propojený seznam je lineární datová struktura se sbírkou více uzlů. Kde eprvek ach ukládá svá vlastní data a ukazatel na umístění dalšího prvku. Poslední odkaz v propojeném seznamu ukazuje na null, což označuje konec řetězce. Prvek v propojeném seznamu se nazývá a uzel . První uzel se nazývá hlava .Poslední uzel je volánthe ocas .
propojený seznam - propojený seznam v pythonu - edurekaStandardní knihovna pythonu nemá propojený seznam. Můžeme implementovat koncept datové struktury seznamu odkazů pomocí konceptu uzlů.



Nyní, když jsme se dozvěděli, co je propojeno. Pojďme tedy k implementaci propojeného seznamu.

Implementace propojeného seznamu

Pro vytvoření propojeného seznamu vytvoříme objekt uzlu a vytvoříme další třídu pro použití tohoto objektu uzlu.
Kód pro vytvoření třídy uzlu.
Výše uvedený program vytvoří propojený seznam se třemi datovými prvky.

class Node (object): # Konstruktor pro inicializaci proměnných třídy 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

Implementace seznamu odkazů se skládá z následujících funkcí v seznamu odkazů
jeden. Vložit : Tato metoda vloží nový uzel do propojeného seznamu.
2. Velikost : Tato metoda vrátí velikost propojeného seznamu.
3. Vyhledávání : Tato metoda vrátí uzel obsahující data, jinak vyvolá chybu
Čtyři. Vymazat : Tato metoda odstraní uzel obsahující data, jinak vyvolá chybu



Podívejme se na seznam Metod propojených

Metoda Init v propojeném seznamu

třída LinkedList (objekt): def __init __ (self, head = None): self.head = head

Metoda Init se používá pro inicializaci a třída proměnná, pokud seznam nemá žádné uzly, je nastaven na none.

Vložit:

anonymní třída v Javě]
def insert (self, data): new_node = Node (data) new_node.set_next (self.head) self.head = new_node

Tato metoda vložení přebírá data, inicializuje nový uzel s danými daty a přidá je do seznamu. Technicky můžete uzel vložit kamkoli v seznamu, ale nejjednodušší způsob, jak to udělat, je umístit jej na začátek seznamu a nasměrovat nový uzel na starou hlavu (druh tlačení ostatních uzlů dolů po řádku).

Velikost

# Vrátí celkový počet uzlů v seznamu def size (self): current = self.head count = 0 while current: count + = 1 current = current.get_next () return count

Metoda velikosti je velmi jednoduchá, v zásadě počítá uzly, dokud ji již nemůže najít, a vrací, kolik uzlů našla. Metoda začíná v hlavním uzlu, cestuje po linii uzlů, dokud nedosáhne konce (aktuální bude None, když dosáhne konce), přičemž sleduje, kolik uzlů viděl.

Vyhledávání

# Vrátí uzel v seznamu, který má nodeData, došlo k chybě, pokud není k dispozici uzel def search (self, nodeData): current = self.head isPresent = False, zatímco current a isPresent je False: if current.get_data () == nodeData: isPresent = True else: current = current.get_next (), pokud current je None: zvýšit hodnotu ValueError ('Data not present in list') vrátit aktuální

Hledání je ve skutečnosti velmi podobné velikosti, ale místo procházení celým seznamem uzlů kontroluje na každé zastávce, aby zjistil, zda má aktuální uzel požadovaná data. Pokud ano, vrátí uzel obsahující tato data. Pokud metoda prochází celým seznamem, ale stále nenalezla data, vyvolá chybu hodnoty a upozorní uživatele, že data nejsou v seznamu.

Vymazat

# Odebrat uzel z propojeného seznamu vrátí chybu, pokud uzel není přítomen 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 (), pokud current je None: zvýšit ValueError ('Data nejsou v seznamu'), pokud předchozí je None: self.head = current.get_next () else: previous.set_next ( current.get_next ())

Metoda mazání prochází seznam stejným způsobem jako vyhledávání, ale kromě sledování aktuálního uzlu si metoda mazání pamatuje také poslední navštívený uzel. Když odstranění konečně dorazí na uzel, který chce odstranit. Jednoduše odstraní tento uzel z řetězce tím, že jej „přeskočí“.

Tím mám na mysli, že když metoda odstranění dosáhne uzlu, který chce odstranit, podívá se na poslední uzel, který navštívil („předchozí“ uzel), a resetuje ukazatel předchozího uzlu. Spíše než ukazovat na uzel, který bude brzy odstraněn.

Ukáže na další uzel v řadě. Vzhledem k tomu, že žádné uzly neodkazují na špatný uzel, který je mazán, je efektivně odstraněn ze seznamu!

Tím se dostáváme na konec tohoto článku, kde jsme se naučili, jak vytvořit propojený seznam v pythonu s podobnou implementací, i když python skutečně nepodporuje koncept propojeného seznamu. Doufám, že máte jasno se vším, co bylo s vámi v tomto tutoriálu sdíleno.

Pokud shledáte tento článek jako „Propojený seznam v Pythonu“ relevantní, podívejte se na Důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě.

Jsme tu, abychom vám pomohli s každým krokem na vaší cestě a vytvořili osnovy určené pro studenty a profesionály, kteří chtějí být . Kurz je navržen tak, aby vám poskytl náskok v programování v Pythonu a naučil vás základní i pokročilé koncepty Pythonu spolu s různými jako

Pokud narazíte na jakékoli dotazy, neváhejte se zeptat na všechny své dotazy v sekci komentářů v „Propojeném seznamu v Pythonu“ a náš tým vám rád odpoví.