>> SPEAKER 1: Annetaan tämä ratkaisu yrittää.
Joten katsomaan mitä Struct solmu näyttää.
Täällä näemme aiomme olla Bool Word ja Struct solmun tähti
Lapset teline aakkoset.
Joten ensimmäinen asia, saatat olla miettimättä, miksi aakkoset hash määritelty 27?
No, muistaa, että olemme menossa tarvitsevat voidaan käsittely heittomerkki, joten
että tulee olemaan jokseenkin erityinen tapauksessa koko tähän ohjelmaan.
>> OK, nyt muistan kuinka Trie todella toimii.
Sanotaan olemme indeksointi sana kissat, sitten juuri meidän Trie,
olemme menossa katsomaan lapsia array, ja olemme menossa katsomaan
indeksi, joka vastaa kirjeen C. Jotta olisi indeksin kaksi.
Niin sillä, että se antaa meille uusi solmu, ja sitten me
työskennellä, että solmu.
>> Joten koska solmu, olemme jälleen kerran menossa katsomaan Children array,
ja olemme menossa katsomaan indeksi nolla vastaamaan kissan.
Niin sitten me aiomme mennä, että solmu, ja koska solmu, aiomme
tarkastella indeksi, joka vastaa T. Ja siirrymme että solmuun,
Lopuksi, olemme täysin huolta kautta sana kissa, ja nyt Bool
Sana on tarkoitus ilmoittaa, onko Tämän tiettyä sanaa on oikeastaan ​​sana.
>> Joten miksi me tarvitsemme, että erikoistapaus?
No, mitä jos sana katastrofi on meidän sanakirja, mutta
sana kissa ei ole?
Joten katsomatta, jos sana kissa on meidän sanakirja, aiomme
onnistuneesti katsoa läpi indeksit C--T ja saavuttaa solmu, mutta se on
vain siksi katastrofi tapahtui luoda solmujen matkalla C-A-T kaikki
tapa sanan loppuun.
Joten Bool sanaa käytetään ilmoittaa, onko tässä paikassa todella
ilmaisee sana.
>> Okei, joten nyt, että me tiedämme, mitä Triestä on menossa näyttämään, katsotaanpa
klo Load-toiminto.
Joten Load aikoo palata Bool Jos me oikein tai
tuloksetta ladattu sanakirja ja tämä tulee olemaan sanakirja
että haluamme ladata.
Joten ensimmäinen asia aiomme tehdä, on avoin up, joka sanakirjan lukemiseen.
Meidän täytyy varmistaa, että meillä ei epäonnistunut, joten jos sanakirjaa ei ollut
onnistuneesti avattu, se palaa Ei, jolloin aiomme
palata False.
Mutta olettaen, että se onnistui avattu, niin voimme todella lukea
kautta sanakirja.
>> Joten ensimmäinen asia aiomme haluat tehdä, on meillä on tämä
globaali muuttuja root.
Nyt, juuri tulee olemaan solmu tähti.
Se kärkeen Trie että olemme aiotaan iteroimalla läpi.
Joten ensimmäinen asia aiomme haluavat tehdä, on varata muistia meidän root.
>> Huomaa, että käytämme calloc toiminto, joka on periaatteessa sama
kuten malloc funktio, paitsi se on taattu palata jotain, joka on
täysin nollataan.
Jos siis käytetään malloc, meidän olisi käydä läpi kaikki osoittimet meidän
solmu ja varmista, että he kaikki null.
Joten calloc tekee sen meille.
>> Nyt, aivan kuten malloc, meidän täytyy tehdä Varmista, että jako on oikeastaan
onnistunut.
Jos tämä palasi null, meidän täytyy sulkea sanakirjastamme
tiedostoon ja palauttaa False.
Joten olettaen jako on onnistunut, aiomme käyttää solmuun
tähden Cursor kerrata kautta Trie.
Joten meidän root koskaan muutu, mutta aiomme käyttää kursori
itse mennä solmusta toiseen.
>> Okei, joten tässä käytettäessä loop olemme käsittelyn kautta sanastotiedostoa,
ja käytämme klo fgetc.
Joten fgetc aikoo napata yhden hahmo tiedoston.
Aiomme jatkaa tarttumalla merkkiä vaikka emme pääse
tiedoston loppuun, joten on Kahdessa tapauksessa meidän täytyy käsitellä.
Ensimmäinen, jos merkki ei ollut Uusi linja, joten tiedämme, jos se oli uusi
linja, niin aiomme siirtyä uuden sanan.
Mutta jos se ei ollut uusi linja, niin täällä, haluamme selvittää
index aiomme indeksinä in Children array, joka
me katsoimme ennen.
>> Niin kuin aiemmin sanoin, meidän täytyy erikoistapaus heittomerkki.
Huomaa käytämme kolmen komponentin operaattori täällä, joten aiomme lukea
Tässä ikään kuin merkki luemme oli heittomerkki, niin aiomme
asettaa indeksi on aakkoset miinus 1, joka tulee indeksi 26.
Else, jos se ei pilkullisilla Sitten aiomme asettaa indeksin
yhtä suuri kuin c miinus.
Joten muistakaa takaisin edelliseen p sarjaa, c miinus aikoo antaa meille
aakkosjärjestyksessä c, joten jos c on kirjain, se
antaa meille indeksi nolla.
Kirjain B, se antaisi meille indeksi 1, ja niin edelleen.
>> Joten tämä antaa meille indeksinä Lapset array että haluamme.
Nyt, jos tämä indeksi on tällä hetkellä null Lapset array, se tarkoittaa, että
solmu ei tällä hetkellä ole alkaen että polku, joten meidän on osoitettava
solmu polun.
Sitähän me teemme täällä.
Joten aiomme, uudelleen, käytä calloc toimii niin, että meillä ei ole
hakeutua pois kaikki osoittimet, ja me, uudelleen, on tarkistettava, että calloc
ei onnistu.
Jos calloc ei onnistu, meidän purkaa kaiken, sulkea
sanakirja, ja palauttaa False.
>> Niin olettaen, että se ei ole jättänyt, niin tämä luo uuden lapsen meille,
ja sitten menemme että lapsi.
Meidän osoitin kerrata tuolle lapselle.
Nyt, jos tämä ei null aluksi, Sitten osoitin voi vain kerrata
alas, että lapsi ei itse ottaa jakaa mitään.
Tämä on tapaus, jossa ensin tapahtui jakaa sanan kissa, ja
se tarkoittaa, että kun menemme kohdentaa katastrofi, meidän ei tarvitse luoda
solmut C-A-T uudelleen.
Ne ovat jo olemassa.
>> OK, niin mikä on tämän Else?
Tämä on sairaus, jossa C kenoviiva n, missä c on uusi rivi.
Tämä tarkoittaa, että olemme onnistuneet valmistunut sana.
Nyt, mitä haluamme tehdä, kun me suorittanut sana?
Aiomme käyttää tätä sanaa alalla sisällä meidän Struct solmun.
>> Haluamme asettaa, että True, jotta osoittaa, että tämä solmu ilmaisee
menestyvä sana Varsinainen sana.
Nyt asetettu, että True.
Haluamme palauttaa meidän kohdistin pisteeseen alkuun Trie uudelleen.
Ja lopuksi, kasvattaa meidän sanakirja koko koska löysimme toisen sanan.
>> Kunnossa, joten aiomme pitää tehdä että lukeminen merkin
merkki, rakentamalla uusia solmuja meidän Trie ja jokaisen sanan
sanakirja, kunnes lopulta saavuttaa c vastaa EOF, jolloin, rikomme
pois tiedoston.
Nyt on kaksi tapausta alle jotka olisimme osuma EOF.
Ensimmäinen on, jos siellä oli virhe lukemisen tiedosto, joten jos oli
virhe, meidän täytyy tehdä tyypillinen purkaa kaiken, sulje tiedosto,
palata False.
Olettaen ei ollut virhe, joka tarkoittaa vain me itse osui lopussa
tiedosto, jolloin suljemme tiedostoon ja palauttaa True koska meillä
ladattu onnistuneesti sanakirja meidän Trie.
>> Okei, joten nyt katsotaanpa tutustu Tarkista.
Tarkasteltaessa Check-toiminto, näemme että Tarkista aikoo palata Bool.
Se palauttaa True, jos tämä sana, se on siirrellään on meidän Trie.
Se palauttaa muuten False.
>> Joten miten aiomme selvittää tämä sana on meidän Trie?
Näemme tässä, että aivan kuten ennen, aiomme käyttää kohdistin kerrata
kautta Trie.
Nyt tässä, me aiomme kerrata yli koko sanan.
Joten iteroimalla yli sana olemme kulunut, aiomme selvittää
indeksinä Lapset array, joka vastaa sana kiinnike i.
Joten tämä tulee näyttää täsmälleen samalta kuin Kuormitus, jossa jos sana kiinnike i on
heittomerkki, niin haluamme käyttää indeksiä aakkoset miinus 1 koska me määritetty
että on mihin olemme menossa tallentaa heittomerkit.
>> Else aiomme käyttää tolower sana kiinnike i.
Niin muista, että sana voi olla mielivaltainen arvo, ja niin me
haluat varmistaa, että käytämme pieniä versio asioista.
Ja vähennä siitä pieniä ja, jälleen kerran, antaa meille
aakkosjärjestyksessä kyseisen merkin.
Niin, että tulee olemaan meidän indeksi osaksi Lapset array.
>> Ja nyt, jos se indeksinä Lapset matriisi on nolla, se tarkoittaa, että me
voi enää jatkaa iteroimalla alas meidän Trie.
Jos näin on, tämä sana voi mahdollisesti olla meidän Trie, koska jos se
oli, se merkitsisi olisi polku alas, että sana, ja olisit
koskaan kohtaat null.
Joten kohtaaminen null, palaamme False.
Sanaa ei ole sanakirjassa.
Jos se ei ole tyhjä, niin aiomme jatkaa iteroimalla, joten olemme menossa
päivittämään kursorin osoittamaan, että Erityisesti solmu tuohon indeksi.
>> Joten meidän pitää tehdä, että koko koko sanan.
Olettaen emme koskaan lyönyt null, että välineet pystyimme saamaan läpi koko
maailmaa ja löytää solmun meidän Trie, mutta emme ole aivan vielä valmis.
Emme halua vain palata True.
Haluamme palata kursori virhe sana koska muistan taas, jos kissa ei ole
meidän sanakirja ja katastrofi on, niin me onnistuneesti läpi
sana kissa, mutta kursori sana on väärä ja ei ole totta.
Joten palaamme kursori tarkoittava sana onko tämä solmu on oikeastaan ​​sana,
ja se on siinä lähtöselvitykseen.
>> Joten tarkistaa koko.
Joten koko tulee olemaan melko helppoa koska muistaa Load, olemme
monesko sanakirja koko jokainen sana, että törmäämme.
Joten koko on vain aio palata sanakirjan koko, ja se on siinä.
>> Okei, joten lopuksi, meillä on Unload.
Joten Unload, aiomme käyttää rekursiivinen funktio itse tehdä kaikki
työn meille, joten meidän tehtävämme aiotaan kutsutaan Unloader.
Mitä Unloader aiot tehdä?
Näemme tässä, että Unloader on menossa kerrata hoitaakseen kaikki lasten
Tässä nimenomaisessa solmu, ja jos lapsi solmu ei ole nolla, niin aiomme
purkaa lapsi solmu.
>> Joten tämä on menossa rekursiivisesti purkaa kaikki lapsemme.
Kun olemme varmoja, että kaikki lapsemme on purettu, niin me
voi vapauttaa itsemme, niin purkaa itsestämme.
Joten tämä rekursiivisesti purkaa koko Trie, ja sitten kun se on
tehty, voimme vain palata True.
Kevennys ei voi epäonnistua, olemme vain vapauttaa asioita.
Joten kun olemme tehneet vapauttaa kaiken, return true.
Ja se on siinä.
Nimeni on Rob, ja tämä oli [äänetön].