ПРЕДСЕДНИК 1: Дајмо ово решење пробати. Дакле, хајде да погледамо шта су наши Струцт чвор ће изгледати. Ево, видимо да ћемо имати Боол Реч и чвор звезда Структ Деца у заграде абецеду. Дакле, прва ствар коју можда се питате, зашто је писмо тараба дефинише као 27? Па, сећам се да ћемо морати да руковање апостроф, тако да ће нешто бити од специјалне случај у овом програму. У реду, сада, запамтите како Трие заправо ради. Рецимо да смо индексацију реч мачке, тада из корена нашег трие, ћемо да погледате деце низ, а ми ћемо да погледамо индекс који одговара слову Ц. Дакле, то би било два индекса. Дакле с обзиром да, да ће нам дати нови чвор, а онда ћемо раде из тог чвора. Дакле, с обзиром да чвор, ми смо поново ће погледати на децу низ, и ми ћемо да погледамо индекс нула да одговара А у мачку. Дакле, онда ћемо да идемо у том чвору, и обзиром да чвор, идемо да погледате индексу који одговара за Т. и преласка на том чвору, коначно, ми смо потпуно гледали кроз наше речи мачка, а сада Боол Реч је требало да укаже да ли ово даје реч је заправо реч. Па зашто нам је потребан тај специјални случај? Па, шта ако је реч катастрофа је у нашем речнику, али реч мачка није? Дакле, у потрази да види да ли је мачка реч у нашем речнику, идемо на успешно погледати кроз индекса Ц--Т и постигну чвор, али то је само зато што се десило катастрофа створити чворови на путу од Ц-А-Т све пут до краја речи. Дакле Боол Реч се користи показују да ли ова локација заправо указује на реч. У реду, тако да сада када знамо шта Трие ће изгледати, хајде да погледамо у функцији оптерећења. Тако оптерећења ће вратити Боол за ли смо успешно или безуспешно лоадед речник и ово ће бити речник да желимо да се учита. Дакле, прва ствар коју ћемо урадити је отворен до тог речника за читање. Морамо да будемо сигурни да није пропустио, па ако није речник успешно отворен, она ће се вратити Не, у том случају ћемо врати Нетачно. Али под претпоставком да је успешно отворен, онда можемо да чита кроз речнику. Дакле, прва ствар коју ћемо Желим да урадите је да имамо ово глобална променљива корен. Сада, корен ће бити звезда чвор. То је врх наше трие да смо Биће итератинг преко. Дакле, прва ствар коју ћемо желети да урадите је издвојити меморију за наш корен. Приметимо да смо помоћу цаллоц функција, која је у основи иста као функције маллоц, осим да је то гарантовано нешто што је да се врати потпуно нулу напоље. Дакле, ако смо користили маллоц, ми би требало да проћи кроз све тројке у нашој чвор и проверите да ли сви су нула. Дакле цаллоц ће то урадити за нас. Сада, баш као маллоц, морамо да сигурни да расподела је заправо успешна. Ако се то вратио нулл, онда смо Потребно је затворити наш речник филе и врате Нетачно. Дакле, под претпоставком расподелу је успешан, ми ћемо користити чвор стар курсор на итерацију кроз нашу трие. Дакле, наш корен никада неће променити, али ми ћемо користити курсор на заправо иде од чвора до чвора. У реду, тако да у овом За петљи, ми смо читања кроз датотеку речника, и ми користимо у фгетц. Дакле фгетц ће да зграби један карактер из датотеке. Ми ћемо наставити отимања карактера док се не постигне крају фајла, тако да постоје два случаја морамо да рукује. Прво, ако лик није Нова линија, тако да знамо да ли је то било ново линија, онда ћемо о томе да пређите на нову реч. Али под претпоставком да није нова линија, затим овде, желимо да схватим Индекс ћемо индекса у Деца у низу који смо гледали раније. Дакле, као што сам раније рекао, потребно је да Посебан случај апостроф. Приметимо да смо користећи троструки оператора овде, па ћемо читати ово као да лик читамо у било апостроф, онда ћемо сет индекс једнак алфабета минус 1, који ће бити индекс 26.. Иначе, ако то није био апостроф, онда ћемо поставити индекс једнак ц минус а. Дакле, сетите се вратио из претходних п скупова, ц минус ће нам дати азбучни положај ц, па ако ц је слово, та воља дај нам индекс нула. За слово Б, он ће дати ус индекс 1, и тако даље. Дакле, ово нам даје индекс у Деца низ који желимо. Сада, ако је овај индекс је тренутно у нулл Деца низ, то значи да чвор не постоји тренутно у који пут, тако да је потребно да се издвоји чвор за тај пут. То је оно што ми овде радимо. Тако ћемо, опет, користите цаллоц функција, тако да немамо на нулу од свих показивача, и ми смо, опет, потребно је да проверите да цаллоц није пропустио. Ако цаллоц пропустио, онда морамо да истовари све, затворите наш речник, и врати Нетачно. Дакле, под претпоставком да не успеју, онда то ће створити нову дете за нас, а онда ћемо ићи на то дете. Наш курсор ће поновити до тог детета. Сада, ако то није била нула за почетак, онда курсор само може поновити до тог детета без заправо има да издвоји ништа. Ово је случај када смо се први пут десило да издвоји реч мачку, и то значи да кад идемо да издвоји Катастрофа, не треба да се створи чворова за Ц-А-Т опет. Они већ постоје. У реду, па шта је ово остало? То је стање где је ц био косих н, где је ц је нова линија. То значи да смо успешно завршен реч. Сада, шта желимо да урадимо када смо успешно завршен реч? Ми ћемо користити ову област реч унутар нашег струцт чвора. Желимо да подесите да на Труе, тако да указује да је ово указује чвор успешан реч стварна реч. Сада, да подесите на Труе. Желимо да вратите наше курсор на тачку до почетка Трие поново. И на крају, увећава наш речник величина, јер смо нашли неку другу реч. У реду, тако да ћемо да радимо да, читање карактера по карактер, изградње нових чворова у наш Трие и за сваку реч у речник, док коначно не стигнемо ц једнако ЕОФ, у том случају, ми сломити из датотеке. Сада, постоје два случаја под које смо можда погодио ЕОФ. Први је ако је било грешке читање из датотеке, тако да ако је било грешка, морамо да урадимо типичан истовари све, затворите датотеку, врати Нетачно. Под претпоставком да није било грешке, да само значи да заправо погодио крај фајл, у ком случају, ми смо затворили филе и вратите Истина, јер смо успешно учитан речник у нашу трие. У реду, хајде сада да цхецк оут Цхецк. Гледајући на контролном функцијом, видимо Проверите да ће вратити Боол. То враћа Труе ако ова реч да је то буде усвојен је у нашој трие. То враћа Фалсе другачије. Па како ћемо да се утврди да ли ова реч је у нашој трие? Ми овде видимо да, баш као и пре, ћемо користити курсор за итерацију кроз нашу трие. Сада, овде, идемо да вршите итерацију преко целе наше речи. Дакле итератинг преко речи смо прошло, идемо да се утврди индекс у низу Деца која одговара речи конзоле и. Дакле, ово ће изгледати баш као Оптерећења, где ако реч носач и је апостроф, онда желимо да користимо индекс азбука минус 1 зато што одређује да је место где ћемо за складиштење апострофе. Иначе ћемо користити толовер Реч носач ја. Дакле, запамтите ту реч може имати произвољан капитализација, и тако смо желите да се уверите да смо користећи мала верзија ствари. А онда одузмите од тога малим словима да, још једном, нам дају абецедном позиција тог карактера. Дакле, то ће бити наш индекс Деца у низу. А сада, ако је индекс у деце низ нулл, значи да смо више не може наставити итератинг доле нашег трие. Ако је то случај, та реч не може можда бити у нашем трие, јер ако то су, то би значило да ће бити путања до те речи, и ти би никад срести нулл. Дакле сусрету нулл, враћамо Нетачно. Реч није у речнику. Да није нула, онда ћемо наставити итератинг, па идемо да ажурирате наш курсор да укаже на то Посебно чвор у том индексу. Дакле, ми би то радили током цео реч. Под претпоставком да није ударио нулл, то значи ми смо били у могућности да се кроз цео свет и пронађе чвор у нашем трие, али нисмо још готови. Ми не желимо да се врате само Истина. Ми желимо да се врати курсор грешци реч јер, запамти поново, ако мачка није у наш речник и катастрофа је, онда ћемо успешно добити кроз реч мачка, али курсор реч ће бити Фалсе и није истина. Тако смо се вратили курсор реч да укаже да ли је ово чвор је заправо реч, и да је за проверу. Дакле, хајде да проверимо величина. Дакле, величина ће бити прилично лако јер, запамти у оптерећењу, ми смо увецава речник величине за свака реч коју срећемо. Дакле, величина је само да се врати речник величина, и то је то. У реду, тако да на крају, имамо истовари. Дакле Унлоад, идемо користити рекурзивни функција да заиста уради све рада за нас, тако да наши функције ће се звати Унлоадер. Шта је Унлоадер да уради? Ми овде видимо да Унлоадер ће поновити над сва деца на овај чвор, а ако је дете чвор није нулл, онда ћемо истовари дете чвор. Дакле, ово ће рекурзивно истовари све наше деце. Када смо сигурни да све наше деце су искрцани, онда смо да се ослободимо, тако растеретити себе. Дакле, ово ће рекурзивно истовари цео Трие, а онда једном то је урађено, можемо само да се врати Истина. Унлоад не може да не, ми смо само ослобађајући ствари. Дакле, када смо урадили ослобађање све, вратите Истина. И то је то. Моје име је Роб, и то је [ИНАУДИБЛЕ].