SPEAKER 1: Ni donu tiu solvo provu. Do ni rigardu kion niaj Struct nodo aspektos. Tie, ni vidas ni tuj havos Bool Vorto kaj struct nodo stelo Infanoj heligas alfabeto. Do unue vi povus scivolante, kial alfabeto hash difinita kiel la 27? Nu, memoru, ke ni tuj bezonas esti la uzado de la apostrofo, tiel ke Iĝos iom pri speciala kazo laŭlonge de ĉi tiu programo. OK, nun memoru, kiamaniere oni Trie efektive funkcias. Diru ni indeksante la vorto katojn, tiam el la radiko de nia Trie, Ni tuj rigardi la Infanoj tabelo, kaj ni iras por rigardi la indekso kiu respondas al la letero C. Por ke estus indekso du. Do pro tio ke, kiu donos al ni nova nodo, kaj tiam ni labori el tiu nodo. Do pro tio ke nodo, ni estas denove tuj rigardi la Infanoj tabelo, kaj ni iras rigardi indekso nulo respondi al la A en katon. Tial do ni tuj iru al tiu nodo, kaj donita ke nodo, ni iras rigardi la indekso kiu respondas al T. Kaj movanta al tiu nodo, fine, ni tute rigardis tra nia vorto kato, kaj nun Bool Vorto supozas indiki ĉu tiu vorto donita estas fakte unu vorto. Do kial ni bezonas ke speciala kazo? Nu, kio, se la vorto katastrofo Estas en nia vortaro, sed la vorto kato estas ne? Do rigardante vidi se la vorto kato estas en nia vortaro, ni iras al sukcese trarigardi la indeksoj C-A-T kaj atingi nodon, sed tio estas nur pro katastrofo okazis krei nodojn sur la vojo de C-A-T ĉiuj la vojo al la fino de la vorto. Do Bool Vorto uzas indiki ĉu tiu aparta situo reale indikas vorton. Enorde, do nun kiam ni scias kio estas Trie tuj aspekti, ni rigardu ĉe la Laŭdu funkcio. Do Laŭdu tuj resendas Bool cxar se ni sukcese aŭ sensukcese ŝarĝita vortaro kaj ĉi tiu tuj estos la vortaro ke ni volas ŝarĝi. Do unue ni tuj faros estas malferma ĝis tiu vortaro por legado. Ni devas certigi ke ni ne mankos, tial se la vortaro ne estis sukcese malfermiĝis, ĝi revenos Ne, en kiu kazo ni tuj revenu False. Sed supozante, ke ŝi sukcese malfermita, tiam ni povas efektive legas tra la vortaro. Do unue ni tuj volas fari estas ni havas ĉi malloka variablo radiko. Nun, radiko estas tuj estos nodo stelo. Ĝi estas la supera parto de nia Trie kiuj ni estas tuj estos ripetanta tra. Do unue ni tuj volas fari estas rezervi memoron por nia radiko. Rimarku ke ni uzas la Calloc funkcio, kiu estas esence la sama kiel la malloc funkcion, escepte ĝi estas garantiita redoni iun kiu estas tute zeroed eksteren. Do, se ni uzas malloc, ni bezonus iri tra ĉiuj el la montriloj en nia nodo kaj certigi ke ili estas ĉiu nula. Do Calloc faros tion por ni. Nu, ĝuste kiel malloc, ni bezonas por fari certas, ke la atribuo estas reale sukcesa. Se tiu revenis null, tiam ni bezonas fermi niajn vortaro Arkivo kaj reveni False. Do alprenanta la atribuo estis sukcesa, ni tuj uzi nodon star Kursoro persisti tra nia Trie. Do nia radika neniam tuj ŝanĝos, sed ni tuj uzi kursoron al efektive iros de nodo al nodo. Enorde, do en tiu Por buklo, ni estas legi tra la vortaro dosiero, kaj ni uzas en fgetc. Do fgetc tuj grab sola karaktero de la dosiero. Ni tuj daŭrigi grabbing karakteroj dum ni ne atingos la fino de la dosiero, do ekzistas du kazoj ni devas elteni. La unua, se la karaktero ne estis nova linio, do ni scias, se tio estis nova linio, tiam ni estas al movi antaŭen al nova vorto. Sed supozante ke ne estis nova linio, tiam tie, ni volas eltrovi la indekso ni tuj indekson en en la Filoj tabelo tiu ni rigardis antaŭe. Do kiel mi diris antaŭe, ni bezonas speciala kazo la apostrofo. Rimarku ni uzas la triargumenta operatoro ĉi tie, do ni legos ĉi kvazaŭ la karaktero ni legas en Estis apostrofo, poste ni iras al starigis indekson egalas alfabeto minus 1, kiu estos la indekso 26. Alie, se ĝi ne estis apostrofo, tiam ni tuj starigu la indekso egala al c minus unu. Do memoru reen el malposta p aroj, c minus oni tuj donu al ni la alfabeta pozicio de c, do se c estas la litero A, tiu volo donu al ni indekso nulo. Por la litero B, ĝi donus ni la indekso 1, kaj tiel plu. Do tio donas al ni la indekson en la Infanoj tabelo, ke ni volas. Nun, se tiu indekso estas aktuale nula en la Infanoj tabelo, tio signifas ke nodo ne aktuale ekzistas de tiun vojon, do ni bezonos al rezervu nodo por tiu vojo. Tio estas kion ni faras cxi tie. Do ni tuj, denove, uzu la Calloc funkcio por ke ni ne havas al nulo el ĉiuj de la montriloj, kaj ni, denove, bezonas kontroli ke Calloc ne maltrafis. Se Calloc tute mankis, do ni bezonas malŝarĝi ĉio, fermu niajn vortaro, kaj revenas False. Do supozante ke ĝi ne maltrafis, tiam tio kreos novan infanon por ni, kaj poste ni iros al tiu infano. Nia kursoro persisti malsupren al tiu infano. Nun, se ĉi tiu ne estis nula komenci kun, tiam la kursoro povas simple persisti malsupren al tiu infano sen reale devi destini ion. Tiu estas la kazo, kie ni unue okazis atribui la vorto kato, kaj tio signifas, kiam ni iros al destini katastrofo, ni ne bezonas krei nodojn por C-A-T denove. Ili jam ekzistas. OK, So what is this Else? Tio estas la kondiĉo, kie c estis backslash n, kie c estis nova linio. Tio signifas ke ni devas sukcese kompletigita vorto. Nun, kion ni volas fari, kiam ni sukcese kompletigis vorto? Ni tuj uzas tiun vorton kampo ene de nia struct nodo. Ni volas fiksi ke al Vera, por ke indikas, ke ĉi tiu nodo indikas sukcesa vorto veran vorton. Nun, turnu ke por Vera. Ni volas reagordi nia kursoron al punkto al la komenco de la Trie denove. Kaj fine, pliigo nia vortaro grandeco, kiam ni trovis alian vorton. Enorde, do ni tuj daŭre fari ke, legante en karaktero de karaktero, konstruante novan nodoj en nia Trie kaj por ĉiu vorto en la vortaro, ĝis ni finfine atingos c egalas EOF, en kiu kazo, ni rompas el la dosiero. Nu, jen estas du kazojn sub kion ni povus bati EOF. La unua estas, se tie estis eraro legado de la dosiero, do se oni eraro, ni devas fari la tipa malŝarĝi ĉio, fermi la dosieron, revenu False. Supozante ke ne estis eraro, ke nur signifas, ke ni reale batis la finon de la dosieron, en kiu kazo, ni fermis la Arkivo kaj redoni Vera ekde ni sukcese alŝutis la vortaro en nian Trie. Enorde, do nun ni kontrolu Check. Rigardante la Check funkcio, ni vidas ke Check tuj resendas Bool. Ĝi donas True se tiu vorto, ke ĝi estas aprobotaj estas en nia Trie. False alie. Do kiel ni al difini ĉu tiu vorto estas en nia Trie? Oni vidas ĉi tie ke, samkiel antaŭ, Ni tuj uzi kursoro persisti tra nia Trie. Nun, ĉi tien, ni tuj persisti super nia tuta vorto. Do ripetanta super la vorto ni estas pasis, ni tuj determinas la indekso en la Filoj tabelo tiu korespondas al vorto krampo i. Do tiu tuj serĉos ekzakte kiel Laŭdu, kie se vorto krampo i estas apostrofo, ĉar ni volas uzi indekso alfabeto minus 1 ĉar ni determinis ke estas kie ni iras stoki apostrofoj. Alie, ni tuj uzi tolower vorto krampo i. Do memoru, ke vorto povas havi arbitrajn majuskloj, do ni volas certigi, ke ni uzas minuskla versio de aferoj. Kaj tiam subtrahi el tiu minuskla a al, refoje, donu al ni la alfabeta pozicio de tiu signo. Do tiu tuj estos nia indekso en la Filoj tabelo. Kaj nun, se tio indekson en la Filoj tabelo estas nula, tio signifas ke ni ne plu povas daŭrigi ripetanta malsupren niaj Trie. Se tio estas la kazo, tiu vorto ne povas eble esti en nia Trie, ĉar se ĝi estis, ke tio signifus estus vojeto malsupren al tiu vorto, kaj vi farus neniam renkontas nula. Do malhelpi nulaj, ni revenos False. La vorto ne estas en la vortaro. Se ĝi estis ne nulaj, do ni tuj daŭrigi ripetanta, do ni tuj ĝisdatigi nian kursoron atentigi al tio apartan nodon en tiu indekso. Do ni observu la fari tion tra la tutan vorton. Supozante ni neniam batis nula, ke per ni povis trairi la tutan mondon kaj trovi nodon en nia Trie, sed ni ne tute farita ankoraŭ. Ni ne volas ĝuste redoni Vera. Ni volas reveni kursoro eraro vorto ĉar rememoru, denove, se la kato ne estas en nia vortaro kaj katastrofo estas, tiam ni sukcese akiri tra la vorto kato, sed kursoron vorto Estos False kaj ne vera. Do ni revenu kursoron vorto por indiki ĉu ĉi tiu nodo estas reale vorto, kaj tio estas por ĉekon. Do ni kontrolu Grando. Do Grando tuj esti sufiĉe facila ĉar rememoru en Laŭdu, ni estas pliigante vortaro grandeco por ĉiu vorto, kiun ni renkontas. Do Grando estas ĝuste tuj revenos vortaro grandeco, kaj tio estas ĝi. Enorde, do laste, ni devas malŝarĝi. Do malŝarĝi, ni tuj uzi rekursia funkcio por fakte plenumos cxiujn de la laboro por ni, por niaj funkcio tuj estos nomata Unloader. Kio estas Unloader faros? Oni vidas ĉi tie ke Unloader tuj persisti super ĉiuj el la infanoj en tiun apartan nodon, kaj se la infano nodo estas ne nulaj, do ni tuj malŝarĝi la infano nodo. Do tiu tuj rekursie malŝarĝi ĉiuj niaj infanoj. Iam ni estas certa, ke ĉiuj niaj infanoj estis malŝarĝitaj, ĉar ni povas liberigi nin, tiel malŝarĝi samaj. Do tio rekursie malŝarĝi la tuta Trie, kaj tiam iam tio farita, oni povas simple reveni Vera. Malŝarĝi ne povas malsukcesi, ni estas nur liberigante aferojn. Do iam ni faris liberigante ĉio, revenu Vera. Kaj tio estas ĝi. Mia nomo estas Rob, kaj ĉi estis [inaudibles].