>> SPEAKER 1: Dajmo ta rešitev poskusiti.
Torej, vzemimo si oglejte, kaj naše Struct vozlišče bo izgledal.
Tukaj vidimo, da bomo imeli Bool Beseda in vozlišče zvezda Struct
Otroci oklepati abecedo.
Torej prva stvar, ki jo morda sprašujete, Zakaj se abeceda hash opredeljena kot 27?
No, ne pozabite, da bomo potrebovali da se ravnanje opuščaj, tako
da se dogaja, da se nekoliko posebna Primer v celotnem programu.
>> OK, zdaj se spominjam, kako Trie dejansko deluje.
Recimo, da smo indeksiranje besedo mačke, potem iz korenin naše Trsta,
bomo pogled na otroke matrika, in gremo pogledati
Indeks, ki ustreza črko C. tako da bi indeks dva.
Torej, glede na to, da nam bo dala novo vozlišče, nato pa se bomo
delati iz tega vozlišča.
>> Torej, glede na to vozlišče, smo še enkrat bo pogled na paleto otroke,
in bomo pogled na indeks ničelni ustrezati A v mačka.
Potem smo šli na to vozlišče, in glede na to, da je vozlišče, gremo
pogled na indeks, ki ustreza na T. in se gibljejo na to vozlišče,
Nazadnje smo popolnoma videti skozi našo besedo Cat, in zdaj Bool
Beseda naj bi kazali, ali ta dana beseda je pravzaprav beseda.
>> Torej, zakaj potrebujemo to poseben primer?
No, kaj pa če je beseda katastrofa V našem slovarju, vendar
Beseda mačka ne?
Torej, je videti, da vidim, če je beseda mačka v našem slovarju, bomo
Uspešno odmisliti indeksov C--T in doseči vozlišče, ampak to je
Samo zato, ker katastrofa se je zgodilo ustvariti vozlišča na poti od C-A-T vse
Tako na koncu besede.
Torej je Bool Beseda uporablja navesti, ali To posebno mesto dejansko
označuje besedo.
>> Vse je v redu, tako da zdaj, da vemo, kaj Trie bo videti, pa si poglejmo
v funkciji obremenitve.
Torej obremenitev se bo vrnil bool Za ugotovitev, ali smo uspešno ali
neuspešno naložen slovar in To se bo slovar
ki jih želimo naložiti.
Torej prva stvar, bomo storiti je odprt do tega slovarja za branje.
Moramo zagotoviti, nismo ne, tako da, če slovarju ni bilo
uspešno odprta, se bo vrnil Ne, v tem primeru bomo
vrne False.
Vendar ob predpostavki, da je uspešno odprt, potem lahko dejansko prebral
s pomočjo slovarja.
>> Torej prva stvar, ki jo bomo želite storiti, je, moramo to
Globalna spremenljivka korenina.
Zdaj, korenina se bo vozlišče zvezda.
To je vrh naše Trsta, da smo bodo ponavljanjem skozi.
Torej prva stvar, ki jo boste želeli, da storiti je rezervirati pomnilnika za naše korenine.
>> Opazimo, da smo s pomočjo Calloc funkcija, ki je v bistvu enak
kot funkcije malloc, razen, da je zagotovljeno, da se vrnete nekaj, kar je
popolnoma nulo.
Torej, če smo uporabili malloc, bi morali iti skozi vse napotke v našem
vozlišče in poskrbite, da oni so vsi null.
Tako da bo Calloc naredil za nas.
>> Zdaj, tako kot malloc, moramo narediti zagotoviti, da dodelitev je dejansko
uspešna.
Če je ta vrnil nič, potem smo morali zapreti naše slovar
datoteko in vrne False.
Torej, ob predpostavki, da je porazdelitev uspešna, bomo uporabili vozlišča
zvezda kurzor za ponovitev preko našega Trsta.
Torej, naša korenina nikoli ne bo spremenilo, ampak bomo uporabili kurzor na
dejansko šel od vozlišča do vozlišča.
>> Vse je v redu, tako da v to zanko, smo branje skozi slovarju datoteko
in smo ga uporabljate na fgetc.
Torej fgetc se dogaja, da zgrabite single lik iz spisa.
Bomo še naprej vzbujajoči znakov, medtem ko mi ne dosežejo
konec datoteke, tako da so dva primera, ki jih moramo obvladovati.
Prvič, če ni bilo znakov Nova linija, tako da vemo, če je bil nov
linijo, potem bomo kmalu premakniti na novo besedo.
Vendar ob predpostavki, da ni bilo novo linijo, nato pa Tukaj smo želeli ugotoviti,
Indeks bomo indeksa v v matriki Otroci, ki
smo pogledal prej.
>> Torej, kot sem rekel prej, moramo Poseben primer opuščaj.
Opazili smo, da uporabljate trikomponentne operaterja tukaj, tako da gremo, da se glasi
to, kot če znak beremo v bilo opuščaj, potem pa gremo na
nastavite indeks enak abecedi minusom 1, ki bo indeks 26.
Drugega, če ne bi bilo opuščaj, potem bomo nastavili indeks
enako c minus.
Torej, se spomnite nazaj od prejšnjih p sklopov, c minus se dogaja, da nam
abecedni položaj c, tako da, če c je pismo, bo to
nam indeks zero.
Za črko B, bi dal us indeks 1, in tako naprej.
>> Torej, to nam daje indeksa na Otroci niz, ki ga želimo.
Zdaj, če je ta indeks trenutno null leta matrika Otroci, to pomeni, da
vozlišče trenutno ne obstaja od da je pot, zato moramo nameniti
vozlišče za to pot.
To je tisto, kar delamo tukaj.
Torej bomo spet uporabite Calloc delujejo tako, da nimamo
nič od vseh kazalcev, in mi, še enkrat, morate preveriti, da Calloc
ni propadel.
Če Calloc pa ne, potem moramo raztovarjanje vse, zatiskati
slovar, in vrne False.
>> Torej, ob predpostavki, da ne bo propadel, potem To bo ustvarilo nov otroka za nas,
in potem bomo šli na tega otroka.
Naša kazalec se bo Ponovil do tega otroka.
Zdaj, če to ni bilo null na začetku, Nato kazalec lahko samo Ponovil
do tega otroka, ne da bi dejansko ob dodeliti ničesar.
To je primer, ko sva se prvič zgodilo dodeliti besedo mačka, in
to pomeni, da ko gremo dodeliti katastrofa, nam ni treba ustvariti
vozlišča za C-A-T znova.
Že obstajajo.
>> OK, kaj je to drugega?
To je pogoj, kjer je c backslash n, kjer je c nova linija.
To pomeni, da smo uspešno končan besedo.
Zdaj, kaj želimo narediti, ko smo Uspešno zaključen besedo?
Bomo uporabili to besedo polje znotraj našega Struct vozlišča.
>> Želimo določiti, da Res je, da označuje, da vozlišče označuje
Uspešno beseda dejansko beseda.
Zdaj pa nastavite, da True.
Želimo ponastaviti našo kazalec na točko na začetku Trsta znova.
In končno, prirastek našo zbirko velikost, saj smo našli drugo besedo.
>> Vse je v redu, tako da bomo vztrajati početje da je branje v karakterju, ki ga
lik, gradnji novih vozlišč v naša Trie in za vsako besedo v
slovar, dokler ne bomo na koncu dosegli c enak EOF, v tem primeru smo zlomiti
iz spisa.
Sedaj je na voljo v dveh primerih pod ki bi lahko zadeli smo EOF.
Prvi je, če je prišlo do napake branje iz datoteke, tako da če ne bi bilo
napaka, moramo storiti tipično razkladanje vse, zaprite datoteko
vrne False.
Ob predpostavki, da ni bilo napak, da samo pomeni, da smo dejansko prizadela konec
datoteka, v tem primeru smo blizu datoteko in vrne True, saj smo
uspešno naložen slovar v naši Trsta.
>> V redu, zdaj pa odjaviti Check.
Če pogledamo na Preverite funkcije, vidimo, Preverite, da se bo vrnil bool.
Vrne True, če je to beseda, ki je prevalili je v našem Trsta.
Vrne False drugače.
>> Torej, kako bomo ugotoviti, ali ta beseda je v našem Trsta?
Vidimo tukaj, da, tako kot prej, bomo uporabili kazalec za ponovitev
preko našega Trsta.
Zdaj, tukaj, bomo Ponovil nad našo celotno besedo.
Torej ponavljanjem nad besedo smo opravili, bomo ugotoviti,
indeks v paleto Otroci, ki ustreza besedo držala i.
Torej, to bo videti natanko tako kot Obremenitev, kjer, če beseda nosilec i
opuščaj, nato pa želimo uporabiti indeks abeceda minus 1, ker smo ugotovili,
da je, če gremo Shranjevanje opuščaj.
>> Sicer bomo uporabili tolower Beseda nosilec i.
Torej, ne pozabite, da je beseda ima lahko samovoljno kapitalizacija, in tako smo
želijo zagotoviti, da bomo s pomočjo male črke različica stvari.
In nato odšteje od te male črke da, še enkrat, da nam
po abecednem vrstnem redu te značaja.
Tako, da se dogaja, da je naš indeks v matriki otrok.
>> In zdaj, če je indeks v Otroci Niz je nična, to pomeni, da
ne deluje več ponavljanjem navzdol našega Trsta.
Če je temu tako, ta beseda ne more možnosti, da v naši Trsta, saj če
so bili, bi to pomenilo, da bi bilo Pot do te besede, in bi jo
nikoli ne naletijo na null.
Tako srečujejo null vrnemo False.
Besede ni v slovarju.
Če ne bi bilo nič, potem pa gremo na naprej ponavljanjem, zato bomo
posodobiti svoj kazalec, da kaže, da je Zlasti vozlišče v tem indeksu.
>> Tako smo vztrajati početje, ki v celotnem celotna beseda.
Ob predpostavki, da ne bomo nikoli udaril null, da sredstva smo lahko dobili skozi celoten
svet in najti vozlišče v naši Trsta, vendar nismo še čisto končano.
Mi ne želimo le vrnitev True.
Želimo, da se vrnete kazalec napake besedo saj se spomnite spet, če mačka ni
v našem slovarju, in katastrofa je, potem bomo uspešno priti skozi
beseda mačka, ampak kazalec beseda bo False in ni res.
Torej se bomo vrnili kazalec besedo, ki označuje ali je to vozlišče pravzaprav beseda,
in da je za pregled.
>> Torej, kaj je odjaviti Size.
Torej Velikost se bo precej enostavno saj se spomnite na obremenitve, smo
povečevanje obsega slovarja za vsaka beseda, ki jo srečamo.
Torej Velikost je le, da bo vrnitev slovar velikost, in to je to.
>> Vse je v redu, tako da na koncu imamo raztovoriti.
Torej raztovoriti, bomo uporabili rekurzivna funkcija dejansko storiti vse
dela za nas, tako da naše delovanje se dogaja, da se imenuje razkladalec.
Kaj je razkladalec storili?
Vidimo tukaj, da razkladalec bo Ponovil skozi vse otroke na
To zlasti vozlišča, in če je otrok vozlišče ni nič, potem pa gremo na
raztovoriti vozlišče otrok.
>> Torej, to se dogaja, da rekurzivno raztovarjanje vseh naših otrok.
Ko smo prepričani, da so vsi naši otroci so raztovorili, nato pa smo
Lahko se osvobodimo, tako razkladanje Sebe.
Tako da bo to rekurzivno razkladanje Celoten Trie, in potem, ko je to
narediti, lahko samo vrne True.
Raztovoriti ne more izogniti, smo samo sprostitev stvari.
Torej, ko smo končali sprostitev Vse, vrne True.
In to je to.
Moje ime je Rob, in to je bil [neslišno].