„Python“ programavimo kalba yra atviro kodo kalba, turinti įvairius „of-the-box“ diegimus, kurie daro ją unikalią ir lengviau išmokstamą. Nors nepalaiko susieto sąrašo sampratos, yra įvairių būdų, kaip ją įgyvendinti kitaip, kad gautumėte susietą sąrašą. Šiame straipsnyje mes sužinosime, kaip galime sukurti susietą sąrašą „Python“. Toliau pateikiamos šio tinklaraščio temos:
Pradėkime!!
Kas yra susietasis sąrašas?
Nuorodų sąrašas yra mazgų, turinčių panašų duomenų tipą, seka, kiekviename mazge yra vienas duomenų objektas ir žymeklis į kitą mazgą.
Susietas sąrašas yra linijinė duomenų struktūra su kelių mazgų rinkimu. Kur each elementas saugo savo duomenis ir žymeklį į kito elemento vietą. Paskutinė susieto sąrašo nuoroda nurodo nulį, nurodant grandinės pabaigą. Susieto sąrašo elementas vadinamas a mazgas . Pirmasis mazgas vadinamas galva .Paskutinis mazgas vadinamas uodega .
Standartinėje python bibliotekoje nėra susieto sąrašo. Nuorodų sąrašo duomenų struktūros sampratą galime įgyvendinti naudodami mazgų sąvoką.
kaip padaryti perspėjimą javascript
Dabar, kai sužinojome apie tai, kas yra susieta. Taigi pereikime prie susieto sąrašo įgyvendinimo.
Susieto sąrašo įgyvendinimas
Norėdami sukurti susietą sąrašą, sukursime mazgo objektą ir sukursime kitą klasę, kurioje bus naudojamas šis mazgo objektas.
„Node“ klasės kūrimo kodas.
Pirmiau nurodyta programa sukuria susietą sąrašą su trim duomenų elementais.
class Node (object): # Konstruktorius inicijuoti klasės kintamuosius 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 # gauti kitą reikšmę def get_next (self): return self.next_node # set next data def set_next (self, new_next): self.next_node = new_next
Nuorodų sąrašo įgyvendinimas susideda iš šių funkcijų susietame sąraše
vienas. Įdėti : Šis metodas įterpia naują mazgą į susietą sąrašą.
2. Dydis : Šis metodas grąžins susieto sąrašo dydį.
3. Paieška : Šis metodas pateiks mazgą, kuriame yra duomenys, kitaip sukels klaidą
Keturi. Ištrinti : Šis metodas ištrins mazgą, kuriame yra duomenys, kitaip sukels klaidą
Leidžia pamatyti susietų metodų sąrašą
„Init“ metodas susietame sąraše
class LinkedList (object): def __init __ (self, head = None): self.head = head
Inicijuojant a, naudojamas pradinis metodas klasė kintamasis, jei sąraše nėra mazgų, jis nėra nustatytas.
Įdėti:
def įterpimas (savarankiškai, duomenys): new_node = mazgas (duomenys) new_node.set_next (self.head) self.head = new_node
Šis įterpimo metodas ima duomenis, inicializuoja naują mazgą su pateiktais duomenimis ir įtraukia juos į sąrašą. Techniškai mazgą galite įterpti bet kurioje sąrašo vietoje, tačiau paprasčiausias būdas tai padaryti yra įdėti jį į sąrašo galvą ir nukreipti naują mazgą į seną galvą (tarsi nustumiant kitus mazgus žemyn linija).
Dydis
# Pateikia bendrą mazgų skaičių sąrašo def dydžiu (savarankiškai): dabartinis = savęs galvų skaičius = 0, o dabartinis: skaičius + = 1 dabartinis = dabartinis.žet_nextas () grąžinimo skaičius
Dydžio metodas yra labai paprastas, jis iš esmės skaičiuoja mazgus, kol nebegali rasti, ir pateikia, kiek mazgų jis rado. Metodas prasideda nuo pagrindinio mazgo, eina mazgų linija žemyn, kol pasiekia pabaigą (kai srovė bus gale, srovės nebus), stebint, kiek mazgų jis matė.
Paieška
# Grąžina mazgą sąraše, kuriame yra „nodeData“, įvyko klaida, jei mazge nėra def paieškos („self, nodeData“): current = self.head isPresent = Klaidinga, kai current ir isPresent yra klaidinga: if current.get_data () == nodeData: isPresent = Tiesa dar: dabartinis = current.get_next (), jei srovė yra None: padidinkite „ValueError“ („Duomenų nėra sąraše“) grąžinimo srovė
Paieška iš tikrųjų yra labai panaši į dydį, tačiau užuot apvažiavusi visą mazgų sąrašą, ji tikrina kiekvieną sustojimą, norėdama sužinoti, ar dabartiniame mazge yra prašomi duomenys. Jei taip, grąžina mazgą, kuriame yra tie duomenys. Jei metodas eina per visą sąrašą, bet vis tiek neranda duomenų, jis sukelia vertės klaidą ir praneša vartotojui, kad duomenų nėra sąraše.
Ištrinti
# Pašalinkite mazgą iš susieto sąrašo pateikia klaidą, jei mazgo nėra def delete (self, nodeData): current = self.head previous = Nėra isPresent = Klaidinga, o current ir isPresent yra klaidinga: if current.get_data () == nodeData: isPresent = Tiesa, kita: ankstesnė = dabartinė = dabartinė.get_next (), jei srovė yra Nėra: pakelti „ValueError“ („Duomenų nėra sąraše“), jei ankstesnė nėra „Nėra“: self.head = dabartinė.get_next () else: ankstesnė.set_next current.get_next ())
Ištrinimo metodas eina sąrašą taip pat, kaip ir paieška, tačiau be dabartinio mazgo stebėjimo, ištrinimo metodas taip pat prisimena paskutinį aplankytą mazgą. Kai ištrinti pagaliau pasiekiamas mazgas, kurį jis nori ištrinti. Tai paprasčiausiai pašalina tą mazgą iš grandinės, „peršokdamas“.
Tai turiu omenyje, kad kai ištrynimo metodas pasiekia mazgą, kurį nori ištrinti, jis žiūri į paskutinį aplankytą mazgą („ankstesnį“ mazgą) ir iš naujo nustato to ankstesnio mazgo rodyklę. Užuot nurodęs į netrukus ištrinantį mazgą.
Jis parodys kitą mazgą eilutėje. Kadangi nė vienas mazgas nerodo į prastą mazgą, kuris yra ištrinamas, jis iš tikrųjų pašalinamas iš sąrašo!
Tai atveda prie šio straipsnio pabaigos, kur mes sužinojome, kaip mes galime sukurti susietą python sąrašą su panašiu įgyvendinimu, nors python iš tikrųjų nepalaiko susieto sąrašo koncepcijos. Tikiuosi, kad jums aišku viskas, kas buvo pasidalinta su jumis šioje pamokoje.
Jei radote šį straipsnį apie „Susietą sąrašą„ Python ““, patikrinkite Patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą, pasklido po visą pasaulį.
Mes norime jums padėti kiekviename žingsnyje ir parengti mokymo programą, skirtą studentams ir specialistams, norintiems būti . Kursas yra skirtas suteikti jums pažangą pradedant programuoti „Python“ ir išmokyti jus naudotis pagrindinėmis ir pažangiomis „Python“ koncepcijomis bei įvairiomis Kaip
Jei kyla klausimų, nedvejodami užduokite visus klausimus komentarų skyriuje „Susietas sąrašas„ Python ““ ir mūsų komanda mielai atsakys.