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 .
Standardsel 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.