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