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