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ó].