ZVUČNIK 1: Dajmo ovo rješenje pokušati. Tako ćemo pogledati što naši Struct node će izgledati. Ovdje vidimo da ćemo imati Bool Word i Struct čvor zvijezda Djeca zagrada abecedu. Dakle, prva stvar koju možda se pitate, zašto je abeceda hash definira kao 27.? Pa, sjetite se da ćemo morati biti rukovanja apostrof, pa to će biti nešto posebno slučaj u cijelom ovom programu. OK, sada, sjetite se kako je Trie zapravo radi. Recimo da smo indeksiranje Riječ mačke, zatim iz korijena našeg trie, idemo gledati na djecu polje, a mi ćemo gledati na indeks koji odgovara na pisma C. Tako da bi indeks dva. Dakle, s obzirom da je, da će nam dati novi čvor, a onda ćemo rade od tog čvora. Dakle, s obzirom da je čvor, mi smo još jednom ide gledati na djecu polje, a mi ćemo gledati na indeks nula odgovarati A Cat. Pa onda ćemo ići u tom čvoru, as obzirom da je čvor, idemo gledati na indeksu koji odgovara na T. i kreće na tom čvoru, Konačno, potpuno smo gledali kroz naše riječi Cat, a sada Bool Riječ je trebao naznačiti da li to dao riječ je zapravo riječ. Pa zašto nam je potrebna da poseban slučaj? Pa, što ako je riječ katastrofa je u našem rječniku, ali Riječ mačka nije? Dakle, u potrazi za vidjeti ako je riječ mačka je u našem rječniku, idemo u Uspješno gledati kroz indekse C--T i doći čvor, ali to je samo zato što je katastrofa dogodilo stvoriti čvorove na putu iz C-A-T sve način kraj riječi. Dakle Bool Riječ je korišten ukazuju li ovo posebno mjesto zapravo ukazuje na riječ. U redu, tako da sada znamo što Trie će izgledati, pogledajmo na funkciju opterećenja. Dakle Load će vratiti Bool za li uspješno ili neuspješno učitava rječnik i ovo će biti rječnik da želimo učitati. Dakle, prvo što ćemo učiniti je otvoriti do tog rječnik za čitanje. Moramo se pobrinuti da ne uspiju, pa ako rječnik nije bio uspješno je otvorio, ona će se vratiti No, u tom slučaju ćemo vratiti False. No, uz pretpostavku da je uspješno otvorila, onda zapravo možemo čitati kroz rječniku. Dakle, prva stvar koju ćemo želite učiniti je da imamo ovo Globalna varijabla korijena. Sada, korijen će biti čvor zvijezda. To je vrh naše trie da smo će biti iterating putem. Dakle, prva stvar koju ćemo željeti to je alocirati memoriju za naš korijen. Uočite da smo pomoću Calloc funkcija, što je u osnovi isti kao funkcija malloc, osim što je jamčiti da se vrati nešto što je potpuno nulu out. Dakle, ako ćemo koristiti malloc, mi bi trebao proći kroz sve naputke u našim čvora i uvjerite se da oni su svi null. Dakle Calloc će to učiniti za nas. Sada, baš kao i malloc, moramo napraviti sigurni da je dodjela je zapravo uspješna. Ako se to vrati null, onda smo morati zatvoriti naš rječnik podnijeti i vratiti False. Dakle, pod pretpostavkom da je dodjela uspješna, idemo koristiti čvor glumit kursor na ponoviti kroz naše trie. Tako je naš korijen nikad neće promijeniti, ali ćemo koristiti kursor na zapravo ići od čvora do čvora. U redu, tako da u ovom Za petlju, mi smo čitanja kroz rječniku datoteku, i mi koristimo na fgetc. Dakle fgetc će zgrabite jednu lik iz spisa. Mi ćemo nastaviti grabbing likovi, dok se ne postigne kraju datoteke, tako da postoje dva slučaja moramo nositi. Prvo, ako nije lik Nova linija, tako da znamo je li to nova liniju, onda ćemo da prelazak na novu riječ. No, pod pretpostavkom da nije nova linija, a zatim ovdje, želimo shvatiti Indeks ćemo indeksa u Djeca u nizu koji Gledali smo i prije. Dakle, kao što sam već rekao, moramo Poseban slučaj apostrof. Obavijest koristimo ternarnom operatera ovdje, pa ćemo čitati ovo kao da je lik čitamo u bilo apostrof, onda ćemo postaviti indeks jednak abeceda minus 1, koja će se indeks 26. Inače, da nije bilo apostrof, onda ćemo postaviti indeksa jednaka c minus. Pa sjetite se vratio iz prethodnih p seta, c minus će nam dati abecedni položaj c, pa ako c je pismo, to će daju nam indeks nula. Za slovom B, to će dati us indeks 1, i tako dalje. Dakle, to nam daje indeks u Djeca niz koji želimo. Sada, ako je ovaj indeks je trenutno nula u Djeca polje, to znači da čvora trenutno ne postoji iz taj put, tako da ćemo morati izdvojiti čvor za taj put. To je ono što mi radimo ovdje. Tako ćemo, opet, koristite Calloc funkcija, tako da nemamo na nulu iz sve upućuje, a mi, opet, trebate provjeriti da Calloc ne uspjeti. Ako Calloc doživio neuspjeh, onda moramo iskrcati sve, zatvoriti rječnik, i vratiti False. Dakle, pod pretpostavkom da ne uspiju, onda to će stvoriti novo dijete za nas, a onda ćemo ići u tom djetetu. Naš kursor će ponoviti do tog djeteta. Sada, ako to nije bilo null za početak, zatim kursor mogu samo ponoviti do tog djeteta, bez zapravo moraju izdvojiti ništa. Ovo je slučaj gdje smo prvi put se dogodilo izdvojiti riječ mačku, a to znači da kad idemo na dodjelu Katastrofa, ne trebamo stvoriti čvorovi za C-A-T opet. Oni već postoje. OK, pa što je ovo drugo? To je stanje u kojem je c backslash n, gdje je c je nova linija. To znači da smo uspješno završio je riječ. Sada, što želimo učiniti, kada smo Uspješno završen riječ? Mi ćemo koristiti ove riječi polje unutar našeg struct čvor. Želimo postaviti da bi Istina, tako da označava da se ovaj čvor ukazuje uspješna Riječ stvarna riječ. Sada, postavite da na True. Želimo resetirati našu kursor na točku na početku trie ponovno. I na kraju, povećava, naš rječnik veličina jer smo pronašli još jednu riječ. U redu, tako da ćemo nastaviti raditi da, čitanje karaktera od strane karakter, izgradnje novih čvorova u naš Trie i za svaku riječ u rječnik, dok konačno ne dođete do c jednaka EOF, u tom slučaju, lomimo iz datoteke. Sada, postoje dva slučaja pod što smo mogli pogoditi EOF. Prvi je, ako je došlo do pogreške čitanje iz spisa, pa ako postoji pogreška, moramo napraviti tipični iskrcati sve, zatvorite datoteku, vratiti False. Pod pretpostavkom da nije bilo pogrešaka, da samo znači da mi zapravo pogodio kraj file, u kojem slučaju, možemo zatvoriti podnijeti i vratiti True, jer smo Uspješno učita rječnik u našu trie. Dobro, sad idemo check out provjera. Gledajući na check funkciju, vidimo Provjerite da će se vratiti bool. To vraća True ako je to riječ koja je bude donesen je u našoj trie. To vraća False drugačije. Pa kako ćemo utvrditi je li ova riječ u našem trie? Ovdje vidimo da je, baš kao i prije, ćemo koristiti kursor se ponoviti kroz naše trie. Sada, ovdje, idemo ponoviti tijekom cijele naše riječi. Dakle iterating iznad riječi smo prošlo, idemo utvrditi indeks u djece niz koji odgovara riječi nosača i. Dakle, to će izgledati točno kao Load, gdje li riječ bracket sam je apostrof, onda želimo koristiti indeksa abeceda minus jedan, jer smo utvrdili to je mjesto gdje idemo pohraniti apostrofe. Inače ćemo koristiti tolower Riječ nosač ja. Dakle, ne zaboravite da je riječ može imati proizvoljan kapitalizacije, i tako smo želite biti sigurni da smo pomoću mala verzija stvari. A onda oduzmite od toga malim slovima da, još jednom, da nam daju abecedni položaj tog lika. Tako da će to biti naš index Djeca u nizu. A sad, ako je indeks u djece Niz je nula, da mi znači više ne može nastaviti iterating niz naše trie. Ako je to slučaj, ta riječ ne može možda se u našem trie, jer ako je to su, to bi značilo da ne bi bilo Put prema dolje na tu riječ, a što bi Nikada se susresti null. Tako nailazi null, vraćamo False. Riječ je nema u rječniku. Da nije bilo null, onda ćemo nastaviti Ponavljanje, pa idemo ažurirati naš pokazivač ukazati na to Posebno čvor u tom indeksu. Tako smo zadržati taj događaj u cijeloj Cijeli riječ. Pod pretpostavkom da nikada pogodio null, to znači bili smo u mogućnosti da se kroz cijeli Svijet i naći čvor u našoj trie, ali nismo sasvim gotova. Mi ne želimo samo vratiti True. Želimo da se vrati kursor pogrešci riječ jer, ne zaboravite opet, ako je mačka nije u naš rječnik i katastrofa, onda ćemo uspješno proći Riječ mačka, ali kursor riječ će biti lažna i nije istina. Tako smo se vratili kursor riječ za označavanje je li to čvor je zapravo riječ, i to je to za provjeru. Tako ćemo provjeriti Veličina. Dakle, veličina će biti prilično jednostavan jer, ne zaboravite, uz punjenje, mi smo povećavanjem rječnik veličinu svaka riječ koju susrećemo. Dakle, veličina tek će se vratiti rječnik veličina, i to je to. U redu, tako da na kraju, moramo iskrcati. Dakle zasićuju ćemo koristiti rekurzivna funkcija zapravo učiniti sve dio posla za nas, tako da naše funkcije će se zvati desiliranje. Što se desiliranje će učiniti? Ovdje vidimo da desiliranje će ponoviti tijekom sva djeca na Ovaj čvor, a ako je dijete čvora nije NULL, onda ćemo iskrcati dijete čvora. Dakle, ovo će rekurzivno iskrcati sve naše djece. Jednom smo bili sigurni da su sva djeca su iskrcali, onda smo možemo osloboditi, tako rasteretiti sebe. Dakle, ovo će rekurzivno iskrcati Cijeli Trie, a zatim nakon što je to učinjeno, mi samo možemo vratiti True. Iskrcati se ne može uspjeti, da smo Samo oslobađajući stvari. Dakle, nakon što smo gotovi oslobađajući sve, vratiti True. I to je to. Moje ime je Rob, a to bio [nečujan].