>> ALTAVEU 1: Anem a donar-li aquesta solució una oportunitat.
Així que donem una ullada al nostre Node d'estructura es veurà així.
Aquí, veiem que tindrem un Bool Paraula i una estrella node d'estructura
Nens acorchetan alfabet.
Així que el primer que potser es pregunti, Per què és de hash alfabet defineix com 27?
Bé, recordeu que nosaltres necessitarem estar manejant l'apòstrof, per
que serà una mena especial cas a través d'aquest programa.
>> Bé, ara, recordes com 1 Trie realment funciona.
Diguem que estem indexant la paraula gats, a continuació, a partir de l'arrel de la nostra Trie,
anem a mirar els nens matriu, i anem a mirar el
índex que correspon a la lletra C. Així que seria índex de dues.
Així que tenint en compte que, que ens donarà un nou node, i després anem a
treballar des d'aquest node.
>> Així que tenint en compte que el node, estem un cop més va a mirar la matriu infantil,
i anem a buscar en l'índex zero per correspondre a la A en el gat.
Així que anirem a aquest node, i atès que el node, anem
per buscar en l'índex que correspon T. I de passar a aquest node,
finalment, ens hem mirat del tot a través del nostre gat de paraula, i ara Bool
Paraula se suposa que ha d'indicar si aquesta paraula donada és en realitat una paraula.
>> Llavors, per què necessitem aquest cas especial?
Bé, i si la paraula catàstrofe és al diccionari, però
la paraula gat no ho és?
Així que en mirar per veure si la paraula gat és al diccionari, anem a
buscar amb èxit a través dels índexs C-A-T i arribar a un node, però això és
només perquè la catàstrofe va ocórrer a crear nodes en el camí de C-A-T tot
el camí fins al final de la paraula.
Així Bool s'utilitza Word indicar si aquest lloc en particular en realitat
indica una paraula.
>> Molt bé, així que ara que sabem el que és un Trie es va a semblar, donem una ullada
en la funció de càrrega.
Així que la càrrega es va a tornar un Bool Perquè si estem amb èxit o
diccionari i carregat, sense èxit, això serà el diccionari
que volem carregar.
Així que el primer que farem és obrir fins a aquest diccionari per llegir.
Hem de assegurar-nos que no fracassem, pel que si el diccionari no era
obert amb èxit, tornarà No, en aquest cas anem a
tornarà False.
Però suposant que èxit obert, llavors podem realment llegir
a través del diccionari.
>> Així que el primer que anem a volem fer és que tenim aquesta
arrel variable global.
Ara, l'arrel serà una estrella de node.
És el cim de la nostra Trie que estem va a recórrer en iteració.
Així que el primer que anem a voler fer és assignar memòria per a la nostra arrel.
>> Noteu que estem fent servir la calloc funció, que és bàsicament la mateixa
com la funció malloc, excepte que és garantit per tornar una cosa que és
completament portat a zero.
Així que si utilitzem malloc, necessitaríem passar per tots els punters en la nostra
node i assegureu-vos que són tots nuls.
Així calloc ho farà per nosaltres.
>> Ara, igual que malloc, hem de fer Assegureu-vos que l'assignació és en realitat
reeixida.
Si això retorna null, llavors hagi de tancar el nostre diccionari
presentar i tornar Fals.
Així que assumint que l'assignació es èxit, utilitzarem un node
protagonitzar Cursor per repetir a través del nostre Trie.
Així que la nostra arrel mai canviarà, però utilitzarem el cursor per
en realitat anar d'un node a un altre.
>> Molt bé, així que en aquest bucle, estem llegir el fitxer de diccionari,
i estem utilitzant al fgetc.
Així fgetc va a agafar un sol caràcter de l'arxiu.
Anem a continuar amb l'acaparament caràcters, mentre que no arriben fins a la
final de l'arxiu, de manera que cal 2 casos hem de manejar.
El primer, si el personatge no era un nova línia, de manera que sabia si era un nou
línia, llavors estem a punt de passar a una nova paraula.
Però suposant que no era una nova línia, a continuació, aquí, volem esbrinar el
Índex anem a índex en en la matriu de nens que
miràvem abans.
>> Així que com he dit abans, hem de cas especial l'apòstrof.
Noteu que estem utilitzant l'operador ternari aquí, així que llegirem
això com si el personatge es llegeix en era un apòstrof, a continuació, anem a
setembre índex igual a menys alfabet 1, que serà l'índex de 26.
Si no, si no fos un apòstrof, a continuació, establirem l'índex
igual a C menys un.
Així que recorda de nou a partir de conjunts p anteriors, c, menys una que ens donarà la
posició alfabètica de c, de manera que si c és la lletra A, aquesta voluntat
donar-nos l'índex zero.
Perquè la lletra B, donaria ens l'índex 1, i així successivament.
>> Així que això ens dóna l'índex a la Nens matriu que volem.
Ara bé, si aquest índex és actualment nul · la en la matriu de nens, que significa que
un node no existeix en l'actualitat de aquest camí, així que hem de assignar una
node per aquest camí.
Això és el que fem aquí.
Així que anem a, de nou, utilitzeu el calloc funció de manera que no tenim
posar a zero tots els punters, i nosaltres, de nou, la necessitat de comprovar que calloc
no va fallar.
Si calloc va deixar, llavors necessitem per descarregar tot, tancar la nostra
diccionari, i tornarà False.
>> Així que suposant que no va fallar, llavors això crearà un nou fill per a nosaltres,
i després anirem a aquest nen.
El nostre cursor iterará a aquest nen.
Ara bé, si això no fos nul, per començar, a continuació, el cursor només es pot repetir
a aquest nen sense arribar a haver de assignar res.
Aquest és el cas en què primer va passar per assignar la paraula gat, i
això vol dir que quan anem a assignar catàstrofe, que no necessitem per crear
nodes per a C-A-T de nou.
Ja existeixen.
>> OK, llavors què és aquesta cosa?
Aquesta és la condició en la que C era barra invertida n, on c és una línia.
Això vol dir que tenim èxit completat una paraula.
Ara, què és el que volem fer quan completat amb èxit una paraula?
Utilitzarem aquest camp la paraula dins del nostre node d'estructura.
>> Volem establir que en True, de manera que indica que aquest node indica un
paraula èxit una paraula real.
Ara, ajust que a True.
Volem restablir la nostra cursor fins al punt al començament de la Trie de nou.
I, finalment, incrementar el nostre diccionari mida ja que trobem una paraula més.
>> Molt bé, així que seguirem fent que, en la lectura de caràcter per
caràcter, la construcció de nous nodes en nostra Trie i per a cada paraula en el
diccionari, fins que finalment arribem c és igual a EOF, en aquest cas, trenquem
fora de l'arxiu.
Ara, hi ha dos casos en virtut que podríem haver colpejat EOF.
La primera és si hi va haver un error llegint l'arxiu, així que si hi havia
un error, hem de fer la típica descarregar tot, tancar l'arxiu,
tornarà False.
Suposant que no era un error, que simplement vol dir que realment va colpejar el final de
l'arxiu, en aquest cas, es tanca el presentar i tornar True, ja que
carregat amb èxit el diccionari en la nostra Trie.
>> Molt bé, així que ara anem a Pagament Pagament.
Quant a la funció de comprovació, veiem Comprovar que es va a tornar un Bool.
Retorna True si aquesta paraula que és que passa és en la nostra Trie.
Retorna False en cas contrari.
>> Llavors, com anem a determinar si aquesta paraula és en la nostra Trie?
Veiem aquí que, igual que abans, farem servir el cursor per iterar
a través del nostre Trie.
Ara, aquí, repetirem llarg de tota la nostra paraula.
Així iteració en la paraula som passat, anem a determinar la
índex en la matriu nens que correspon al suport de la paraula i.
Així que això serà exactament com Càrrega, en la qual si el suport paraula i és un
apòstrof, llavors volem utilitzar l'índex alfabet menys 1 perquè vam determinar
aquí és on anem per emmagatzemar apòstrofs.
>> Else utilitzarem tolower suport de la paraula i.
Així que recordi que la paraula pot tenir arbitrària capitalització, per la qual cosa
voldrà assegurar-se que estem utilitzant una versió en minúscules de les coses.
I després restar d'aquesta minúscula a per, un cop més, ens la donarà
posició alfabètic d'aquest caràcter.
Així que serà el nostre índex en la matriu de la Infància.
>> I ara, si aquest índex en els nens matriu és nul, això significa que
ja no pot continuar la iteració baixar la Trie.
Si aquest és el cas, aquesta paraula no pot possiblement estar en la nostra Trie, ja que si
van ser, això significaria que hi hauria una ruta d'accés a aquesta paraula, i ho faria
Mai trobada nul.
Així que trobar nul, tornem Fals.
La paraula no és al diccionari.
Si no fos nul, llavors anem a continuar la iteració, pel que anem
actualitzar el nostre cursor per assenyalar que en particular node en aquest índex.
>> Així que seguim fent que al llarg la paraula sencera.
Suposant que mai colpegem nul, que els mitjans hem estat capaços d'obtenir a través de la totalitat de
món i trobar un node a la nostra Trie, però no hem acabat encara.
No volem simplement tornar True.
Volem tornar Paraula d'error cursor des de llavors, recordar de nou, si el gat no és
en el diccionari i la catàstrofe és, llavors anem a aconseguir amb èxit a través de
la paraula gat, però la paraula cursor serà falsa i no és cert.
Així que tornem cursor paraula per indicar si aquest node és en realitat una paraula,
i això és tot per xec.
>> Així que anem a veure Mida.
Així Mida serà bastant fàcil ja que, recorda, en càrrega, estem
incrementant la mida del diccionari per cada paraula que ens trobem.
Així Mida és només tornarà mida del diccionari, i això és tot.
>> Molt bé, així que, finalment, tenim a Baixa.
Així Unload, anem a utilitzar una funció recursiva per fer realitat tots
part del treball per nosaltres, pel que la nostra funció es va a cridar Descarregador.
Què està Descarregador farem?
Veiem aquí que Descarregador va a iterar sobre tots els infants en
aquest node particular, i si el nen node no és nul, llavors anem a
descarregar el node secundari.
>> Així que això va a forma recursiva descarregar tots els nostres nens.
Quan estiguem segurs que tots els nostres nens s'han descarregat, llavors
pot alliberar-nos, per descarregar a nosaltres mateixos.
Així que aquest serà de forma recursiva descarregar el tota Trie i, a continuació, una vegada que és
fet, només podem tornar True.
Unload no pot fallar, estem simplement alliberant coses.
Així que un cop haguem acabat alliberant tot, tornar TRUE.
I això és tot.
El meu nom és Rob, i això va ser [inaudible].