Kuidas lingitud loendit Pythonis rakendada?



See artikkel näitab, kuidas saate Pythonis lingitud loendi luua mitmesuguste meetoditega, et värskendust lisada ja lingitud loendis olevad elemendid eemaldada.

Pythoni programmeerimiskeel on avatud lähtekoodiga keel, millel on erinevad komplektis olevad rakendused, mis muudavad selle ainulaadseks ja hõlpsamini õpitavaks. Kuigi ei toeta lingitud loendi kontseptsiooni, lingitud loendi saamiseks on sellest erinev viis läbi rakendada. Selles artiklis õpime, kuidas Pythonis lingitud loendit teha. Selles blogis käsitletakse järgmisi teemasid:

Alustagem!!





erinevus meetodi ülekoormamise ja Java-s ülekandmise vahel

Mis on lingitud loend?

Lingiloend on sarnase andmetüübiga sõlmede jada, iga sõlm sisaldab ühte andmeobjekti ja järgmise sõlme kursorit.

Lingitud loend on lineaarne andmestruktuur mitme sõlme kogumisega. Kus each-element salvestab enda andmed ja kursori järgmise elemendi asukohale. Lingitud loendi viimane link osutab nullile, näidates ahela lõppu. Lingitud loendi elementi nimetatakse a sõlm . Esimest sõlme nimetatakse pea .Viimast sõlme kutsutakse saba .
lingitud loendiga seotud loend python - edurekasStandardsel pythoni teegil pole lingitud loendit. Lingiloendi andmestruktuuri kontseptsiooni saame rakendada sõlmede mõiste abil.



Nüüd, kui saime teada, mis on seotud. Liigume siis lingitud loendi juurutamise juurde.

Lingitud loendi juurutamine

Lingitud loendi loomiseks loome sõlmeobjekti ja selle sõlmeobjekti kasutamiseks teise klassi.
Kood Node klassi loomiseks.
Ülaltoodud programm loob lingitud loendi, milles on kolm andmeelementi.

klassi sõlm (objekt): # Konstruktor klassimuutujate def __init __ algatamiseks (ise, andmed = pole, järgmine_sõlm = puudub): ise.andmed = andmed ise.next_nood = järgmine_sõlm #get data def get_andmed (ise): tagastavad ise.andmed # saada järgmine väärtus def get_next (self): return self.next_node # set next data def set_next (self, new_next): self.next_node = new_next

Lingiloendi rakendamine koosneb lingitud loendi järgmistest funktsioonidest
üks. Sisesta : See meetod lisab lingitud loendisse uue sõlme.
2. Suurus : See meetod tagastab lingitud loendi suuruse.
3. Otsing : See meetod tagastab andmeid sisaldava sõlme, muidu tekitab tõrke
Neli. Kustuta : See meetod kustutab andmeid sisaldava sõlme, muidu tekitab tõrke



Vaatame loendit Lingitud meetodid

Init-meetod lingitud loendis

klass LinkedList (objekt): def __init __ (ise, pea = pole): ise.pea = pea

A initsialiseerimiseks kasutatakse algmeetodit klass muutuja, kui loendis pole sõlme, on see seatud mitte ühele.

Sisesta:

def sisestus (ise, andmed): new_node = sõlm (data) new_node.set_next (self.head) self.head = new_node

See sisestusmeetod võtab andmeid, lähtestab antud sõlmedega uue sõlme ja lisab need loendisse. Tehniliselt saate sõlme sisestada loendisse ükskõik kuhu, kuid lihtsaim viis seda teha on asetada see loendi etteotsa ja suunata uus sõlm vana otsa poole (nagu suruks teised sõlmed joone alla).

Suurus

# Annab vastuseks loendi def-suuruses olevate sõlmede koguarvu (self): current = self.head count = 0 while current: count + = 1 current = current.get_next () return count

Suurusmeetod on väga lihtne, see loeb põhiliselt sõlmi, kuni seda enam ei leia, ja tagastab leitud sõlmede arvu. Meetod algab peasõlmest, liigub sõlmede rida allapoole, kuni see lõpuni jõuab (lõpuni jõudes pole voolu Puudub), jälgides samal ajal, kui palju sõlmi ta on näinud.

Otsing

# Annab vastuseks loendis oleva sõlme, millel on nodeData. Kui sõlm puudub def otsingu (self, nodeData) korral, ilmnes viga: current = self.head isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = Tõsi muul juhul: current = current.get_next () kui praegune on Puudub: tõsta ValueError ('Andmeid pole loendis') tagasivool

Otsing on tegelikult suurusega väga sarnane, kuid selle asemel, et läbida kogu sõlmede loend, kontrollib ta igas peatuses, kas praegusel sõlmel on nõutavad andmed. Kui jah, tagastab need andmed hoidva sõlme. Kui meetod läbib kogu loendi, kuid pole siiski andmeid leidnud, tekitab see väärtuse tõrke ja teavitab kasutajat, et andmeid pole loendis.

Kustuta

# Sõlme eemaldamine lingitud loendist tagastab tõrke, kui sõlm puudub def kustuta (ise, nodeData): current = ise.head eelmine = Puudub isPresent = Vale, kui current ja isPresent on vale: if current.get_data () == nodeData: isPresent = Tõsi muu: eelmine = praegune = praegune.get_next () kui praegune on Puudub: tõsta ValueError ('Andmeid pole loendis'), kui eelmine on Puudub: self.head = praegune.get_next () else: eelmine.set_next ( current.get_next ())

Kustutusmeetod läbib loendit samamoodi nagu otsing, kuid lisaks praeguse sõlme jälgimisele mäletab kustutamismeetod ka viimast külastatud sõlme. Kui kustutamine jõuab lõpuks sõlme, mida ta kustutada soovib. See lihtsalt eemaldab selle sõlme ahelast, hüpates selle üle.

leida massiivi java suurim element

Selle all mõtlen ma seda, et kui kustutamismeetod jõuab sõlme, mida ta kustutada soovib, vaatab see viimast külastatud sõlme (‘eelmist’ sõlme) ja lähtestab selle eelmise sõlme kursori. Selle asemel, et osutada peagi kustutatavale sõlmele.

See osutab järgmisele reas olevale sõlmele. Kuna ükski sõlme ei osuta kehvale sõlmele, mida kustutatakse, eemaldatakse see loendist!

See viib meid selle artikli lõppu, kus oleme õppinud, kuidas me saame sarnase rakendusega pythonis lingitud loendi koostada, kuigi python tegelikult ei toeta lingitud loendi kontseptsiooni. Loodan, et teil on selge kõigega, mida teiega selles õpetuses jagati.

Kui leiate, et see artikkel on jaotises „Pythoni lingitud loend” asjakohane, vaadake seda Usaldusväärne veebiõppeettevõte, mille võrgustik sisaldab üle 250 000 rahuloleva õppija, levis üle kogu maailma.

Oleme siin, et aidata teid igal sammul oma teekonnal ja koostada õppekava, mis on mõeldud üliõpilastele ja spetsialistidele, kes soovivad olla . Kursus on loodud selleks, et anda teile algus Pythoni programmeerimises ja õpetada teid nii põhi- kui ka edasijõudnute Pythoni mõistete jaoks koos erinevate võimalustega meeldib

Kui teil tekib küsimusi, küsige julgelt kõiki oma küsimusi jaotise „Linked List In Python” kommentaaride osas ja meie meeskond vastab sellele hea meelega.