>> РОБ БОВДЕН: Здраво.
Ја сам Роб, а тараба хајде да ово решење се.
Дакле, овде ћемо да спроведе општи хасх табела.
Ми видимо да струцт чвор наше хасх табела ће изгледати овако.
Дакле, то ће имати Чар реч низ дужине величине плус 1.
Не заборавите 1 Од максимума реч у речнику је 45
карактера, а онда ћемо треба један додатни карактер за
бацксласх 0.
>> А онда наша тараба сто у свакој кашика ће за складиштење
повезана листа чворова.
Ми не радимо линеарни прескок овде.
И тако, како би се повезали на следећи елемент у кофу, морамо
струцт ноде * следећи.
Дакле, то је оно што изгледа као чвор.
Сада, овде је декларација наше хасх табеле.
То ће имати 16.384 кашике, али тај број није битно.
И на крају, ми ћемо имати глобална променљива хасхтабле_сизе, који
ће кренути као 0, а то је ће пратити колико речи
били у нашем речнику.
У реду.
>> Па хајде да погледамо оптерећења.
Дакле, приметите да је оптерећење, она враћа боол.
Ви се вратите труе ако је то успешно је напуњен и иначе фалсе.
И потребно је цхар * звезда речник, који је речник
да желимо да отворимо.
Дакле, то је прва ствар ћемо да урадимо.
Идемо да фопен речник за читање, а ми ћемо имати
да се уверите да је успео тако да ако га на НУЛЛ вратио, онда нисмо
успешно отворите речник и ми треба да се врате лажна.
>> Али под претпоставком да је то успешно учинио отворен, онда желимо да прочитате
речник.
Дакле, имајте петље док не нађемо неки разлог да се пробије из овога
петља која ћемо видети.
Дакле, имајте петље, а сада идемо да маллоц једну чвор.
И наравно, морамо да Еррор Цхецк опет па ако маллоцинг није успео
и желимо да истовари било ког чвора који смо десило пре маллоц, затворите
речник и ретурн.
>> Али игноришући то, под претпоставком да успели, онда желимо да користимо фсцанф
да прочита једну реч из наше дицтионари у нашу чвора.
Дакле, запамтите да унос-> рец је знак Реч бафер величине дужине, плус
један који ћемо држати реч унутра
Дакле фсцанф ће вратити 1 докле као што је било у стању да успешно чита
Реч из датотеке.
>> Ако било грешка се дешава или стижемо крај датотеке, она неће
врати 1 у ком случају, ако се то не деси ретурн 1, ми смо коначно ће се сломити
из ове петље вхиле.
Дакле, видимо да када смо успешно прочитајте реч у
улаз-> рец, онда ћемо да размотре да реч користећи наш хеш функције.
Хајде да погледамо хасх функција.
>> Тако да стварно не треба да разумем ово.
И заиста, само смо извукли ово хасх функцију са интернета.
Једина ствар коју треба да схватите јесте да то траје цхар * рец,
па је потребно доста ниску као улаз и повратак непотписани инт као излаз.
Дакле, то је све хасх функција, то је узима у улаз, то вам даје е
индекс у хеш табели.
Приметимо да смо Моддинг по НУМ_БУЦКЕТС па хасх вредност вратио
заправо је индекс у хеш табели а не индекс изван
граница низа.
>> Дакле, с обзиром да је хасх функција, идемо да размотре реч да ми чита
из речника, а онда ћемо користити да мора да убаците
улазак у хеш табели.
Сада, Хасхтабле тараба је струја повезана листа у хасх табели, и
то је врло могуће да је управо НУЛЛ.
Желимо да убаците наш улазак на почетком ове повезаној листи, и тако
ћемо имати наш тренутни унос указују на оно што тренутно хасх табеле
указује на и тада ћемо за складиштење у хасх табели на хашиш
тренутна ставка.
>> Дакле, ове две линије успешно убацили унос на почетку
повезана листа у том индексу у хасх табели.
Када смо завршили са тим, знамо да смо нашли још једну реч у
речник и опет повећавати.
Дакле, ми би радили да до фсцанф коначно враћа нешто нон 1 на
која тачка запамтите да треба да слободан улаз, тако овде, ми маллоцед
унос и покушали смо да прочитам нешто из речника.
И нисмо успешно прочитао нешто из речника у коме
случај треба да ослободи улаз који смо никада заправо ставити у хеш табели
и коначно сломити.
>> Једном ми избијају, морамо да видимо, добро, смо избити јер тамо
Читао грешка из датотеке, или смо избити јер смо стигли
крај датотеке?
Ако је грешка, онда желимо да ретурн фалсе јер оптерећење није
успети, а у процесу, желимо да истовари све речи које читамо
у и затворите датотеку речника.
Под претпоставком да смо успели, онда смо само и даље треба да се затворите речник
филе, и коначно врати прави од смо успешно учитан
речник.
И то је то за оптерећење.
>> Тако сада проверити, дали напуњен хасх табела, ће изгледати овако.
Дакле провери, она враћа боол, који ће да укаже да ли
прошло-у ​​цхар * речју, да ли прошло-у ​​стринг је у нашем речнику.
Дакле, ако је у речнику, ако је у нашем хасх табели, ми ћемо се вратити
истина, а ако то није, ми ћемо вратити фалсе.
С обзиром на то прошло-у ​​реч, ми смо ће хасх реч.
>> Сада, важна ствар је да се препознају да у оптерећењу, знали смо да су сви
речи су бити мала слова, али овде, нисмо тако сигурни.
Ако погледамо наше хеш функције, наша хасх функција заправо
је ловерцасинг сваки знак речи.
Дакле, без обзира на капитализацију реч, наша хасх функција ће
врати исти индекс за шта год капитализација је јер би имали
вратила за потпуно мала слова верзија речи.
У реду.
>> Дакле, то је наш индекс.
То је хеш табела за ову реч.
Сада, ово за петљу иде до преко повезану листу
који је био на том индексу.
Дакле, ми смо приметили иницијализација унос да укаже на тај индекс.
Ми ћемо наставити док унос не није једнако НУЛЛ, и не заборавите да
ажурирање показивач у нашој повезаној листи Унос једнако ентри-> следећу, па имају
наша тренутна улазна тачка за Следећа ставка у повезаној листи.
У реду.
>> Дакле, за сваки унос у повезаној листи, ћемо користити стрцасецмп.
То није стрцмп јер опет, ми Желим да радим ствари случај инсенситивели.
Дакле, ми користимо стрцасецмп упоредити реч који је усвојен на овој функцији
против речи да је у овом запису.
Уколико се врати 0, то значи да је било утакмица, у том случају ми желимо да
ретурн труе.
Успешно фоунд реч у нашем хасх табеле.
>> Ако није било утакмица, онда смо ће петљу поново и погледајте
следећи унос.
И ми ћемо наставити петље док тамо су ставке у овој повезаној листи.
Шта се дешава ако се сломити од овога за петљу?
То значи да нисмо пронашли унос који упарен ову реч, у ком случају
враћамо лажно указују на то да наш хасх табела не садржи ову реч.
И то је то за проверу.
У реду.
>> Па хајде да погледамо величине.
Сада, величина ће бити прилично једноставан јер запамтите у оптерећења, за сваку реч
смо ми повећава глобална променљива хасхтабле_сизе.
Дакле, величина функција је само ће да се врате да глобална
променљива, и то је то.
>> Сада коначно, морамо да истовари речник једном све то ради.
Па како ћемо то урадити?
Управо овде, ми смо петље преко свега кашике нашег хасх табеле.
Дакле, постоје НУМ_БУЦКЕТС кашике.
И за сваку повезане листе у нашој хасх сто, идемо на петљи преко
целовитост повезане листе ослобађајући сваки елемент.
Сада, морамо да будемо опрезни, па ево нас имају привремену променљиву која је
складиштење показивач на следећи елемент у повезаној листи.
А онда ћемо бесплатно тренутни елемент.
>> Морамо бити сигурни да радимо ово, јер ми Не могу само да ослободе елемента струје
а затим покушајте да приступите следећи показивач јер кад смо га ослободили
меморија постаје неважећи.
Дакле, морамо да око показивач на Следећи елемент, онда можемо ослободити
струја елеменат, а онда можемо да ажурирате наш тренутни елемент да укаже на
Следећи елемент.
>> Ми ћемо петља док постоје елементи у овом повезаној листи.
Ми ћемо то урадити за све повезане листе у хасх табела, и кад смо урадили
са тим, ми смо потпуно истоварен хасх табела, и готови смо.
Дакле, то је немогуће да се икада истоварује ретурн фалсе, а када смо завршили, ми
вратио само истина.