>> SPEAKER 1: Adjunk ez a megoldás egy próbát.
Szóval vessünk egy pillantást, amit a Struktúra csomópont fog kinézni.
Itt azt látjuk, mi lesz, hogy egy Bool Word és a Struct csomópont csillag
Gyermekek zárójelbe ábécét.
Tehát az első dolog, amit meg lehet tudni, miért ábécé hash meghatározása 27?
Nos, ne feledjük, hogy mi lesz szüksége hogy kezelése az aposztróf, így
hogy lesz egyfajta speciális esetben az egész program.
>> OK, most már, emlékszem, hogy a Trie tényleg működik.
Mondjuk mi indexelés szót macskák, majd a gyökere a Trie,
fogunk nézni a gyerekek tömb, és meg fogjuk nézni a
index, amely megfelel a levél C. Így lenne index kettő.
Így tekintettel arra, hogy megadja nekünk egy új csomópont, és aztán majd
dolgozni, hogy a csomópont.
>> Tehát, mivel a csomópont vagyunk ismét majd nézd meg a Children tömb,
és fogunk nézni index nulla hogy megfelelnek az A a macska.
Akkor fogunk menni, hogy a csomópont, és mivel a csomópont, megyünk
hogy nézd meg az index, amely megfelel T. és áttérnek az, hogy a csomópont,
Végül, már teljesen úgy nézett a mi szó Cat, és most Bool
Word állítólag arra vonatkozóan, hogy ez adott szó valójában egy szót sem.
>> Akkor miért van szükségünk, hogy a különleges eset?
Nos, mi van, ha a szó katasztrófa van a szótár, de
a szó macska nem?
Így szeretnének látni, ha a szó macska az a szótár, megyünk
sikeresen nézd át az indexek C-A-T és eléri a csomópont, de ez
csak azért, mert katasztrófa történt létre csomópontok az út C-A-T minden
az utat, hogy a végén a szót.
Tehát Bool szót használják jelezzék, hogy ez az adott helyen valóban
azt jelzi, egy szót sem.
>> Rendben, most, hogy tudjuk, hogy mi a Trie fog kinézni, nézzük
A Load funkció.
Tehát Load fog visszatérni a Bool mert akár sikeresen vagy
sikertelenül betöltött szótár és ez lesz a szótárban
hogy szeretnénk betölteni.
Tehát az első dolog, amit meg fogunk tenni nyitva fel, hogy a szótár az olvasáshoz.
Meg kell bizonyosodnunk arról, hogy nem mulasztotta el, Tehát, ha a szótár nem
sikeresen kinyitotta, hogy vissza fog térni Nem, ebben az esetben fogunk
return false.
De feltételezve, hogy sikeresen nyitott, akkor lehet olvasni
a szótárban.
>> Tehát az első dolog, amit meg fogunk akarok, hogy itt van ez a
globális változó gyökér.
Most, gyökér lesz egy csomópont csillag.
Ez a tetején a Trie, hogy mi vagyunk fog iterációjával keresztül.
Tehát az első dolog, amit most szeretne majd tennie, hogy memóriát a mi gyökér.
>> Figyeljük meg, hogy mi a calloc funkció, ami lényegében ugyanaz
a malloc függvénye, kivéve, hogy biztos, hogy vissza valamit, ami
teljesen nullázni ki.
Tehát, ha használják Malloc, meg kellene megy át a mutató a mi
csomópont, és győződjön meg arról, hogy ők mind null.
Így calloc fog tenni, hogy a számunkra.
>> Most, mint Malloc, meg kell, hogy arról, hogy a kiosztás valójában
sikeres.
Ha ez vissza null, akkor kell zárni a szótár
fájlt, és vissza hamis.
Tehát feltételezve, hogy az elosztás sikeres, fogunk használni egy csomópont
csillag kurzor iterációkhoz keresztül Trie.
Így a gyökér soha nem fog megváltozni, de fogunk használni kurzor a
valóban megy csomópontok közötti.
>> Rendben, ebben a hurok, vagyunk olvasás révén a szótárban fájlt,
és mi használ a fgetc.
Tehát fgetc fog megragad egy karaktert a fájlból.
Megyünk is megragadta karakter, amíg nem éri el a
A fájl végére, így van két esetben kell kezelni.
Az első, ha a karakter nem volt új sor, így tudom, hogy egy új
vonal, akkor mindjárt lépni egy új szót.
De feltételezve, hogy ez nem egy új sort, majd a Itt, azt akarjuk, hogy kitaláljuk, a
index fogunk index a A gyermekek tömb
néztük korábban.
>> Szóval, mint már mondtam, meg kell speciális eset az aposztróf.
Figyeljük meg, mi a hármas operátor itt, így fogunk olvasni
ezt, ha a karakter olvassuk volt egy aposztróf, akkor megyünk
SET index egyenlő ábécé mínusz 1, melyik lesz az index 26.
Különben, ha ez nem egy aposztróf, akkor megyünk be az index
egyenlő c mínusz egy.
Így emlékszik vissza a korábbi p-készletek, c mínusz egy fog adni nekünk
abc helyzete c, tehát ha c a betű, ez az akarat
nekünk index nulla.
A B betű, ez ad nekünk az 1-es index, és így tovább.
>> Szóval ez ad nekünk az index a Gyermekek tömb, amit akarunk.
Nos, ha ez a mutató jelenleg null-ben A Children tömb, ami azt jelenti, hogy
A csomópont jelenleg nem létezik a ezen az úton, így szükséges, hogy jelöljenek ki egy
csomópont az úton.
Ez az, amit mi itt.
Így megyünk, újra használja a calloc funkció, így nem kell
nullára ki az összes mutató, és mi, ismét ellenőrizni kell, hogy calloc
nem sikerül.
Ha calloc nem sikerül, akkor meg kell kirak mindent, zárja be a
szótár és a return false.
>> Tehát, feltételezve, hogy nem sikerül, akkor Ez létrehoz egy új gyerek a számunkra,
és akkor majd megy, hogy a gyermek számára.
A kurzor iterációkhoz le, hogy a gyermek számára.
Nos, ha ez nem null kezdődik, akkor a kurzor is csak iterációkhoz
le, hogy az a gyerek, anélkül, hogy kellene kiosztani semmit.
Ez az eset áll fenn, amikor először történt kiosztani a szót macska, és
azt jelenti, hogy mikor megyünk kiosztani katasztrófa, nem kell létrehozni
csomópontok a C-A-T-újra.
Már léteznek.
>> OK, akkor mi ez a más?
Ez az az állapot, ahol c volt backslash n, ahol c egy új sort.
Ez azt jelenti, hogy sikeresen elkészült egy szót sem.
Nos, mit akarunk csinálni, amikor sikeresen befejezte egy szó?
Fogjuk használni ezt a szót, a területen belsejében a Struct csomópont.
>> Azt szeretnénk beállítani, hogy az Igaz, hogy a azt jelzi, hogy ez a csomópont jelzi
Sikeres szó tényleges szó.
Most, meg, hogy az Igaz.
Azt akarjuk állítani a kurzort a pont hogy az elején a Trie újra.
És végül, növelni a szótár méret, mert találtunk egy másik szót.
>> Rendben, akkor megyünk tovább csinálni hogy olvasás karakterről
karakter, építése új csomópontok a Trie és minden egyes szó a
szótár, míg el nem érjük c EOF egyenlő, amely esetben, szünet
ki a fájlt.
Most van két eset alatt amely talán megüt EOF.
Az első az, ha nem volt hiba olvasni a fájlt, így ha volt
egy hiba, meg kell csinálni a tipikus kirak mindent, zárja be a fájlt,
return false.
Feltételezve, hogy nem volt hiba, hogy a csak azt jelenti, hogy valóban elérje a végén
a fájlt, amely esetben zárjuk a fájlt, és vissza True mivel
sikeresen betöltötte a szótárban a mi Trie.
>> Rendben, most nézzük Kivétel.
Ami a Check funkció látjuk hogy a Check fog visszatérni a Bool.
Visszatér Igaz, ha ezt a szót, hogy ez az hogy telt a mi Trie.
Ez False egyébként.
>> Szóval, hogyan fogjuk meghatározni, hogy ez a szó a mi Trie?
Látjuk, hogy itt, csakúgy, mint korábban, fogunk használni kurzor iterációkhoz
keresztül Trie.
Most, itt, megyünk iterációkhoz mint a teljes szót.
Így az iterációt szót vagyunk telt, megyünk, hogy meghatározzák a
index a Children tömb megfelel a szót konzol i.
Tehát ez fog úgy nézzen ki, mint a Load, ahol, ha szó konzol i egy
aposztróf, akkor szeretnénk használni index ábécé mínusz 1, mert megállapítottuk,
hogy hová megyünk tárolására aposztróf.
>> Else fogjuk használni tolower szó konzol i.
Úgy emlékszem, hogy szó lehet tetszőleges nagybetűs, és így
szeretnénk, hogy győződjön meg arról, hogy mi a a kisbetűs változata dolgokat.
Majd vonjuk ki ebből a kisbetűs a, újra, nekünk az
abc pozíció , hogy a karakter.
Szóval ez lesz az index a gyermekek tömbben.
>> És most, ha az index a Children tömb null, ez azt jelenti,
már nem is iterációjával le a Trie.
Ha ez a helyzet, ez a szó nem esetleg a mi Trie, hiszen ha
arra, hogy azt jelentené, hogy lenne egy utat le ezt a szót, és akkor
soha nem találkoznak null.
Így találkozik null, visszatérünk Hamis.
A szó nem szerepel a szótárban.
Ha ez nem nulla, akkor megyünk tovább iterációjával, így megyünk
frissíteni a kurzort, hogy pont, hogy adott csomóponton abban index.
>> Így csinálom, hogy az egész a teljes szót.
Feltéve, hogy soha nem sújtotta null, azt jelenti, tudtuk, hogy az egész
világban, és megtalálni a csomópont a Trie, de mi nem egészen kész még.
Nem akarjuk, hogy csak vissza igaz.
Azt akarjuk, hogy visszatérjen a kurzor hibás szó mivel emlékszem újra, ha a macska nem
az a szótár és a katasztrófa, akkor sikeresen átvészelni
a szó macska, de a kurzor szó hamis lesz, és nem igaz.
Így visszatérünk kurzort jelző szót hogy ez a csomópont valójában egy szó,
és ennyi a csekk.
>> Szóval nézd meg méret.
Így méret lesz nagyon egyszerű mivel emlékszem a Load vagyunk
megnő szótár mérete Minden szó, hogy találkozunk.
Így méret csak megy vissza szótár méretét, és ennyi.
>> Rendben, végül, mi a memóriából.
Tehát Unload fogunk használni rekurzív függvény, hogy ténylegesen minden
A munka számunkra, így a funkció lesz az úgynevezett Unloader.
Mi Unloader fog csinálni?
Látjuk, hogy itt Unloader fog végighaladni mind a gyerekek
az adott csomópont, és ha a gyermek csomópont nem null, akkor megyünk
kirak a gyermek csomópont.
>> Így ez lesz a rekurzív távolítsa el az összes gyermekeink.
Ha nem vagyunk biztosak, hogy gyermekeink kirakodását, akkor
is szabad magunkat, így kirak magunkat.
Tehát ez rekurzívan kirak a egész Trie, majd miután ez
kész, akkor csak vissza igaz.
Unload nem teheti meg, mi csak felszabadítja a dolgokat.
Tehát, ha már kész szabaddá Mindent vissza igaz.
És ennyi.
A nevem Rob, és ez a volt [hallható].