Kako implementirati povezani popis u Python?

Ovaj članak pokazuje kako možete stvoriti povezani popis u pythonu raznim metodama za umetanje ažuriranja i uklanjanje elemenata s povezanog popisa.

Programski jezik Python jezik je otvorenog koda s raznim izvanrednim implementacijama što ga čini jedinstvenim i lakšim za učenje. Iako ne podržava koncept povezanog popisa, postoji način da se to zaobiđe kroz drugu implementaciju kako bi se dobio povezani popis. U ovom ćemo članku naučiti kako možemo napraviti povezani popis u Pythonu. Slijede teme obrađene na ovom blogu:

Započnimo!!





Što je povezani popis?

Popis veza je niz čvorova koji imaju sličan tip podataka, svaki čvor sadrži jedan podatkovni objekt i pokazivač na sljedeći čvor.

Povezani popis linearna je struktura podataka s zbirkom više čvorova. Gdje eelement ach pohranjuje vlastite podatke i pokazivač na mjesto sljedećeg elementa. Posljednja karika na povezanom popisu pokazuje nulu, što označava kraj lanca. Element na povezanom popisu naziva se a čvor . Prvi čvor naziva se glava .Poziva se zadnji čvorthe rep .
povezani popis - povezani popis u python - edurekaStandardna knjižnica pythona nema povezan popis. Koncept strukture podataka popisa veza možemo implementirati pomoću koncepta čvorova.



što je sinkronizacija u javi

Sad kad smo saznali što je povezano. Pa krenimo na implementaciju povezanog popisa.

Provedba povezanog popisa

Za stvaranje povezanog popisa kreiramo objekt čvora i kreiramo drugu klasu koja će koristiti ovaj čvor objekt.
Kôd za stvaranje klase Node.
Gornji program stvara povezani popis s tri podatkovna elementa.

class Node (objekt): # Konstruktor za inicijalizaciju varijabli klase 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 # dobiti sljedeću vrijednost def get_next (self): vratiti self.next_node # postaviti sljedeće podatke def set_next (self, new_next): self.next_node = new_next

Implementacija popisa veza sastoji se od sljedeće funkcionalnosti povezanog popisa
jedan. Umetnuti : Ova će metoda umetnuti novi čvor u povezani popis.
2. Veličina : Ova metoda vraća veličinu povezanog popisa.
3. traži : Ova metoda vratit će čvor koji sadrži podatke, inače će se pojaviti pogreška
Četiri. Izbrisati : Ova metoda će izbrisati čvor koji sadrži podatke, inače će se pojaviti pogreška



Pogledajmo Metode povezanog popisa

Init metoda na povezanom popisu

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

Init metoda koristi se za inicijalizaciju a razred varijabla ako popis nema čvorove postavlja se na none.

Umetnuti:

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

Ova metoda umetanja uzima podatke, inicijalizira novi čvor s danim podacima i dodaje ga na popis. Tehnički čvor možete umetnuti bilo gdje na popis, ali najjednostavniji je način da ga postavite na čelo popisa i usmjerite novi čvor na staru glavu (nekako gurajući ostale čvorove niz liniju).

Veličina

# Vraća ukupan broj čvorova u veličini def def (self): current = self.head count = 0 dok current: count + = 1 current = current.get_next () return count

Metoda veličine je vrlo jednostavna, u osnovi broji čvorove dok više ne može pronaći i vraća koliko je čvorova pronašla. Metoda započinje na glavnom čvoru, putuje niz liniju čvorova dok ne dođe do kraja (trenutna će biti Ništa kad dođe do kraja), vodeći pritom računa koliko je čvorova vidjela.

traži

# Vraća čvor na popisu koji ima nodeData, dogodila se pogreška ako čvor nije prisutan def search (self, nodeData): current = self.head isPresent = False dok je current i isPresent False: if current.get_data () == nodeData: isPresent = Tačno ostalo: current = current.get_next () ako je current None: podići ValueError ('Podaci nisu prisutni na popisu') vratiti trenutnu

Pretraživanje je zapravo vrlo slično veličini, ali umjesto da pređe čitav popis čvorova, na svakom zaustavljanju provjerava ima li trenutni čvor tražene podatke. Ako je tako, vraća čvor koji sadrži te podatke. Ako metoda prolazi kroz čitav popis, ali još uvijek nije pronašla podatke, pojavit će se pogreška u vrijednosti i obavijestiti korisnika da se podaci ne nalaze na popisu.

Izbrisati

SQL vodič za poslužitelje za početnike
# Ukloni čvor sa povezanog popisa vraća pogrešku ako čvor nije prisutan def delete (self, nodeData): current = self.head previous = None isPresent = False dok je current i isPresent False: if current.get_data () == nodeData: isPresent = True else: previous = current current = current.get_next () ako je current None: podići ValueError ('Podaci nisu prisutni na popisu') ako je previous None: self.head = current.get_next () else: previous.set_next ( current.get_next ())

Metoda brisanja prelazi popis na isti način kao i pretraga, ali osim praćenja trenutnog čvora, metoda brisanja pamti i posljednji posjećeni čvor. Kada delete konačno stigne na čvor, želi ga izbrisati. Jednostavno uklanja taj čvor s lanca tako što ga 'preskače'.

Pod tim mislim da kada metoda brisanja dosegne čvor koji želi izbrisati, gleda posljednji čvor koji je posjetio ('prethodni' čvor) i resetira pokazivač tog prethodnog čvora. Umjesto da pokaže na čvor koji će se uskoro izbrisati.

Pokazat će na sljedeći čvor u redu. Budući da niti jedan čvor ne upućuje na loši čvor koji se briše, on se učinkovito uklanja s popisa!

To nas dovodi do kraja ovog članka, gdje smo naučili kako možemo napraviti povezani popis u pythonu sa sličnom implementacijom, iako python zapravo ne podržava koncept povezanog popisa. Nadam se da vam je jasno sve što je s vama podijeljeno u ovom vodiču.

Ako smatrate da je ovaj članak o “Povezanom popisu u Pythonu” relevantan, pogledajte Pouzdana tvrtka za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika proširila se širom svijeta.

Ovdje smo da vam pomognemo u svakom koraku na putovanju i osmislimo kurikulum koji je stvoren za studente i profesionalce koji žele biti . Tečaj je osmišljen kako bi vam pružio prednost u programiranju Pythona i osposobio vas za osnovne i napredne koncepte Pythona, zajedno s raznim Kao

koja je najbolja ideja za javu

Ako naiđete na neko pitanje, slobodno postavite sva svoja pitanja u odjeljku za komentare 'Povezani popis u Pythonu' i naš će tim rado odgovoriti.