1 00:00:00,000 --> 00:00:11,856 2 00:00:11,856 --> 00:00:13,050 >> РОБ БОВДЕН: Здраво. 3 00:00:13,050 --> 00:00:16,210 Ја сам Роб, а тараба хајде да ово решење се. 4 00:00:16,210 --> 00:00:20,070 Дакле, овде ћемо да спроведе општи хасх табела. 5 00:00:20,070 --> 00:00:24,090 Ми видимо да струцт чвор наше хасх табела ће изгледати овако. 6 00:00:24,090 --> 00:00:28,710 Дакле, то ће имати Чар реч низ дужине величине плус 1. 7 00:00:28,710 --> 00:00:32,259 Не заборавите 1 Од максимума реч у речнику је 45 8 00:00:32,259 --> 00:00:35,110 карактера, а онда ћемо треба један додатни карактер за 9 00:00:35,110 --> 00:00:37,070 бацксласх 0. 10 00:00:37,070 --> 00:00:40,870 >> А онда наша тараба сто у свакој кашика ће за складиштење 11 00:00:40,870 --> 00:00:42,320 повезана листа чворова. 12 00:00:42,320 --> 00:00:44,420 Ми не радимо линеарни прескок овде. 13 00:00:44,420 --> 00:00:48,430 И тако, како би се повезали на следећи елемент у кофу, морамо 14 00:00:48,430 --> 00:00:51,110 струцт ноде * следећи. 15 00:00:51,110 --> 00:00:53,090 Дакле, то је оно што изгледа као чвор. 16 00:00:53,090 --> 00:00:56,180 Сада, овде је декларација наше хасх табеле. 17 00:00:56,180 --> 00:01:01,910 То ће имати 16.384 кашике, али тај број није битно. 18 00:01:01,910 --> 00:01:05,450 И на крају, ми ћемо имати глобална променљива хасхтабле_сизе, који 19 00:01:05,450 --> 00:01:08,640 ће кренути као 0, а то је ће пратити колико речи 20 00:01:08,640 --> 00:01:10,080 били у нашем речнику. 21 00:01:10,080 --> 00:01:10,760 У реду. 22 00:01:10,760 --> 00:01:13,190 >> Па хајде да погледамо оптерећења. 23 00:01:13,190 --> 00:01:16,390 Дакле, приметите да је оптерећење, она враћа боол. 24 00:01:16,390 --> 00:01:20,530 Ви се вратите труе ако је то успешно је напуњен и иначе фалсе. 25 00:01:20,530 --> 00:01:23,990 И потребно је цхар * звезда речник, који је речник 26 00:01:23,990 --> 00:01:25,280 да желимо да отворимо. 27 00:01:25,280 --> 00:01:27,170 Дакле, то је прва ствар ћемо да урадимо. 28 00:01:27,170 --> 00:01:30,420 Идемо да фопен речник за читање, а ми ћемо имати 29 00:01:30,420 --> 00:01:34,700 да се уверите да је успео тако да ако га на НУЛЛ вратио, онда нисмо 30 00:01:34,700 --> 00:01:37,440 успешно отворите речник и ми треба да се врате лажна. 31 00:01:37,440 --> 00:01:41,580 >> Али под претпоставком да је то успешно учинио отворен, онда желимо да прочитате 32 00:01:41,580 --> 00:01:42,400 речник. 33 00:01:42,400 --> 00:01:46,210 Дакле, имајте петље док не нађемо неки разлог да се пробије из овога 34 00:01:46,210 --> 00:01:47,570 петља која ћемо видети. 35 00:01:47,570 --> 00:01:51,780 Дакле, имајте петље, а сада идемо да маллоц једну чвор. 36 00:01:51,780 --> 00:01:56,800 И наравно, морамо да Еррор Цхецк опет па ако маллоцинг није успео 37 00:01:56,800 --> 00:02:00,660 и желимо да истовари било ког чвора који смо десило пре маллоц, затворите 38 00:02:00,660 --> 00:02:02,590 речник и ретурн. 39 00:02:02,590 --> 00:02:07,440 >> Али игноришући то, под претпоставком да успели, онда желимо да користимо фсцанф 40 00:02:07,440 --> 00:02:12,400 да прочита једну реч из наше дицтионари у нашу чвора. 41 00:02:12,400 --> 00:02:17,310 Дакле, запамтите да унос-> рец је знак Реч бафер величине дужине, плус 42 00:02:17,310 --> 00:02:20,300 један који ћемо држати реч унутра 43 00:02:20,300 --> 00:02:25,280 Дакле фсцанф ће вратити 1 докле као што је било у стању да успешно чита 44 00:02:25,280 --> 00:02:26,750 Реч из датотеке. 45 00:02:26,750 --> 00:02:31,030 >> Ако било грешка се дешава или стижемо крај датотеке, она неће 46 00:02:31,030 --> 00:02:34,950 врати 1 у ком случају, ако се то не деси ретурн 1, ми смо коначно ће се сломити 47 00:02:34,950 --> 00:02:37,280 из ове петље вхиле. 48 00:02:37,280 --> 00:02:42,770 Дакле, видимо да када смо успешно прочитајте реч у 49 00:02:42,770 --> 00:02:48,270 улаз-> рец, онда ћемо да размотре да реч користећи наш хеш функције. 50 00:02:48,270 --> 00:02:49,580 Хајде да погледамо хасх функција. 51 00:02:49,580 --> 00:02:52,430 52 00:02:52,430 --> 00:02:55,610 >> Тако да стварно не треба да разумем ово. 53 00:02:55,610 --> 00:02:59,460 И заиста, само смо извукли ово хасх функцију са интернета. 54 00:02:59,460 --> 00:03:04,010 Једина ствар коју треба да схватите јесте да то траје цхар * рец, 55 00:03:04,010 --> 00:03:08,960 па је потребно доста ниску као улаз и повратак непотписани инт као излаз. 56 00:03:08,960 --> 00:03:12,360 Дакле, то је све хасх функција, то је узима у улаз, то вам даје е 57 00:03:12,360 --> 00:03:14,490 индекс у хеш табели. 58 00:03:14,490 --> 00:03:18,530 Приметимо да смо Моддинг по НУМ_БУЦКЕТС па хасх вредност вратио 59 00:03:18,530 --> 00:03:21,730 заправо је индекс у хеш табели а не индекс изван 60 00:03:21,730 --> 00:03:24,320 граница низа. 61 00:03:24,320 --> 00:03:27,855 >> Дакле, с обзиром да је хасх функција, идемо да размотре реч да ми чита 62 00:03:27,855 --> 00:03:31,700 из речника, а онда ћемо користити да мора да убаците 63 00:03:31,700 --> 00:03:33,750 улазак у хеш табели. 64 00:03:33,750 --> 00:03:38,830 Сада, Хасхтабле тараба је струја повезана листа у хасх табели, и 65 00:03:38,830 --> 00:03:41,410 то је врло могуће да је управо НУЛЛ. 66 00:03:41,410 --> 00:03:45,640 Желимо да убаците наш улазак на почетком ове повезаној листи, и тако 67 00:03:45,640 --> 00:03:48,910 ћемо имати наш тренутни унос указују на оно што тренутно хасх табеле 68 00:03:48,910 --> 00:03:54,030 указује на и тада ћемо за складиштење у хасх табели на хашиш 69 00:03:54,030 --> 00:03:55,350 тренутна ставка. 70 00:03:55,350 --> 00:03:59,320 >> Дакле, ове две линије успешно убацили унос на почетку 71 00:03:59,320 --> 00:04:02,270 повезана листа у том индексу у хасх табели. 72 00:04:02,270 --> 00:04:04,900 Када смо завршили са тим, знамо да смо нашли још једну реч у 73 00:04:04,900 --> 00:04:07,800 речник и опет повећавати. 74 00:04:07,800 --> 00:04:13,960 Дакле, ми би радили да до фсцанф коначно враћа нешто нон 1 на 75 00:04:13,960 --> 00:04:18,560 која тачка запамтите да треба да слободан улаз, тако овде, ми маллоцед 76 00:04:18,560 --> 00:04:21,329 унос и покушали смо да прочитам нешто из речника. 77 00:04:21,329 --> 00:04:24,110 И нисмо успешно прочитао нешто из речника у коме 78 00:04:24,110 --> 00:04:27,440 случај треба да ослободи улаз који смо никада заправо ставити у хеш табели 79 00:04:27,440 --> 00:04:29,110 и коначно сломити. 80 00:04:29,110 --> 00:04:32,750 >> Једном ми избијају, морамо да видимо, добро, смо избити јер тамо 81 00:04:32,750 --> 00:04:35,840 Читао грешка из датотеке, или смо избити јер смо стигли 82 00:04:35,840 --> 00:04:37,120 крај датотеке? 83 00:04:37,120 --> 00:04:40,150 Ако је грешка, онда желимо да ретурн фалсе јер оптерећење није 84 00:04:40,150 --> 00:04:43,260 успети, а у процесу, желимо да истовари све речи које читамо 85 00:04:43,260 --> 00:04:45,670 у и затворите датотеку речника. 86 00:04:45,670 --> 00:04:48,740 Под претпоставком да смо успели, онда смо само и даље треба да се затворите речник 87 00:04:48,740 --> 00:04:51,970 филе, и коначно врати прави од смо успешно учитан 88 00:04:51,970 --> 00:04:53,040 речник. 89 00:04:53,040 --> 00:04:54,420 И то је то за оптерећење. 90 00:04:54,420 --> 00:04:59,020 >> Тако сада проверити, дали напуњен хасх табела, ће изгледати овако. 91 00:04:59,020 --> 00:05:02,690 Дакле провери, она враћа боол, који ће да укаже да ли 92 00:05:02,690 --> 00:05:07,530 прошло-у ​​цхар * речју, да ли прошло-у ​​стринг је у нашем речнику. 93 00:05:07,530 --> 00:05:10,530 Дакле, ако је у речнику, ако је у нашем хасх табели, ми ћемо се вратити 94 00:05:10,530 --> 00:05:13,380 истина, а ако то није, ми ћемо вратити фалсе. 95 00:05:13,380 --> 00:05:17,770 С обзиром на то прошло-у ​​реч, ми смо ће хасх реч. 96 00:05:17,770 --> 00:05:22,020 >> Сада, важна ствар је да се препознају да у оптерећењу, знали смо да су сви 97 00:05:22,020 --> 00:05:25,820 речи су бити мала слова, али овде, нисмо тако сигурни. 98 00:05:25,820 --> 00:05:29,510 Ако погледамо наше хеш функције, наша хасх функција заправо 99 00:05:29,510 --> 00:05:32,700 је ловерцасинг сваки знак речи. 100 00:05:32,700 --> 00:05:37,580 Дакле, без обзира на капитализацију реч, наша хасх функција ће 101 00:05:37,580 --> 00:05:42,270 врати исти индекс за шта год капитализација је јер би имали 102 00:05:42,270 --> 00:05:45,280 вратила за потпуно мала слова верзија речи. 103 00:05:45,280 --> 00:05:45,950 У реду. 104 00:05:45,950 --> 00:05:47,410 >> Дакле, то је наш индекс. 105 00:05:47,410 --> 00:05:49,790 То је хеш табела за ову реч. 106 00:05:49,790 --> 00:05:52,940 Сада, ово за петљу иде до преко повезану листу 107 00:05:52,940 --> 00:05:55,000 који је био на том индексу. 108 00:05:55,000 --> 00:05:59,630 Дакле, ми смо приметили иницијализација унос да укаже на тај индекс. 109 00:05:59,630 --> 00:06:03,480 Ми ћемо наставити док унос не није једнако НУЛЛ, и не заборавите да 110 00:06:03,480 --> 00:06:08,350 ажурирање показивач у нашој повезаној листи Унос једнако ентри-> следећу, па имају 111 00:06:08,350 --> 00:06:13,840 наша тренутна улазна тачка за Следећа ставка у повезаној листи. 112 00:06:13,840 --> 00:06:14,400 У реду. 113 00:06:14,400 --> 00:06:19,150 >> Дакле, за сваки унос у повезаној листи, ћемо користити стрцасецмп. 114 00:06:19,150 --> 00:06:23,780 То није стрцмп јер опет, ми Желим да радим ствари случај инсенситивели. 115 00:06:23,780 --> 00:06:28,830 Дакле, ми користимо стрцасецмп упоредити реч који је усвојен на овој функцији 116 00:06:28,830 --> 00:06:31,860 против речи да је у овом запису. 117 00:06:31,860 --> 00:06:35,570 Уколико се врати 0, то значи да је било утакмица, у том случају ми желимо да 118 00:06:35,570 --> 00:06:36,630 ретурн труе. 119 00:06:36,630 --> 00:06:39,590 Успешно фоунд реч у нашем хасх табеле. 120 00:06:39,590 --> 00:06:43,040 >> Ако није било утакмица, онда смо ће петљу поново и погледајте 121 00:06:43,040 --> 00:06:43,990 следећи унос. 122 00:06:43,990 --> 00:06:47,640 И ми ћемо наставити петље док тамо су ставке у овој повезаној листи. 123 00:06:47,640 --> 00:06:50,160 Шта се дешава ако се сломити од овога за петљу? 124 00:06:50,160 --> 00:06:55,110 То значи да нисмо пронашли унос који упарен ову реч, у ком случају 125 00:06:55,110 --> 00:07:00,220 враћамо лажно указују на то да наш хасх табела не садржи ову реч. 126 00:07:00,220 --> 00:07:01,910 И то је то за проверу. 127 00:07:01,910 --> 00:07:02,540 У реду. 128 00:07:02,540 --> 00:07:04,790 >> Па хајде да погледамо величине. 129 00:07:04,790 --> 00:07:09,280 Сада, величина ће бити прилично једноставан јер запамтите у оптерећења, за сваку реч 130 00:07:09,280 --> 00:07:12,880 смо ми повећава глобална променљива хасхтабле_сизе. 131 00:07:12,880 --> 00:07:15,830 Дакле, величина функција је само ће да се врате да глобална 132 00:07:15,830 --> 00:07:18,150 променљива, и то је то. 133 00:07:18,150 --> 00:07:22,300 >> Сада коначно, морамо да истовари речник једном све то ради. 134 00:07:22,300 --> 00:07:25,340 Па како ћемо то урадити? 135 00:07:25,340 --> 00:07:30,440 Управо овде, ми смо петље преко свега кашике нашег хасх табеле. 136 00:07:30,440 --> 00:07:33,240 Дакле, постоје НУМ_БУЦКЕТС кашике. 137 00:07:33,240 --> 00:07:37,490 И за сваку повезане листе у нашој хасх сто, идемо на петљи преко 138 00:07:37,490 --> 00:07:41,070 целовитост повезане листе ослобађајући сваки елемент. 139 00:07:41,070 --> 00:07:46,070 Сада, морамо да будемо опрезни, па ево нас имају привремену променљиву која је 140 00:07:46,070 --> 00:07:49,740 складиштење показивач на следећи елемент у повезаној листи. 141 00:07:49,740 --> 00:07:52,140 А онда ћемо бесплатно тренутни елемент. 142 00:07:52,140 --> 00:07:55,990 >> Морамо бити сигурни да радимо ово, јер ми Не могу само да ослободе елемента струје 143 00:07:55,990 --> 00:07:59,260 а затим покушајте да приступите следећи показивач јер кад смо га ослободили 144 00:07:59,260 --> 00:08:00,870 меморија постаје неважећи. 145 00:08:00,870 --> 00:08:04,990 Дакле, морамо да око показивач на Следећи елемент, онда можемо ослободити 146 00:08:04,990 --> 00:08:08,360 струја елеменат, а онда можемо да ажурирате наш тренутни елемент да укаже на 147 00:08:08,360 --> 00:08:09,590 Следећи елемент. 148 00:08:09,590 --> 00:08:12,770 >> Ми ћемо петља док постоје елементи у овом повезаној листи. 149 00:08:12,770 --> 00:08:16,450 Ми ћемо то урадити за све повезане листе у хасх табела, и кад смо урадили 150 00:08:16,450 --> 00:08:20,180 са тим, ми смо потпуно истоварен хасх табела, и готови смо. 151 00:08:20,180 --> 00:08:24,050 Дакле, то је немогуће да се икада истоварује ретурн фалсе, а када смо завршили, ми 152 00:08:24,050 --> 00:08:25,320 вратио само истина. 153 00:08:25,320 --> 00:08:27,563