1 00:00:00,000 --> 00:00:12,350 >> [Music kucheza] 2 00:00:12,350 --> 00:00:13,050 >> Rob BOWDEN: Hi. 3 00:00:13,050 --> 00:00:13,640 Mimi nina Rob. 4 00:00:13,640 --> 00:00:16,210 Na hebu ufumbuzi huu nje. 5 00:00:16,210 --> 00:00:20,070 Hivyo hapa tunakwenda kutekeleza ujumla meza. 6 00:00:20,070 --> 00:00:24,090 Tunaona kwamba struct node wetu meza ni kwenda kuangalia kama hii. 7 00:00:24,090 --> 00:00:28,710 Hivyo ni kwenda kuwa na neno char safu ya ukubwa LENGTH + 1. 8 00:00:28,710 --> 00:00:32,259 Usisahau + 1, tangu kiwango cha juu neno katika kamusi ni 45 9 00:00:32,259 --> 00:00:33,130 wahusika. 10 00:00:33,130 --> 00:00:37,070 Na kisha sisi ni kwenda haja ya moja ya ziada tabia kwa backslash sifuri. 11 00:00:37,070 --> 00:00:40,870 >> Na kisha hashtable wetu katika kila ndoo ni kwenda kuhifadhi 12 00:00:40,870 --> 00:00:42,320 wanaohusishwa orodha ya nodes. 13 00:00:42,320 --> 00:00:44,420 Sisi si kufanya linear uchunguzi hapa. 14 00:00:44,420 --> 00:00:48,430 Na hivyo katika ili kuendana na ijayo hiki katika ndoo, tunahitaji 15 00:00:48,430 --> 00:00:50,390 struct nodi * ijayo. 16 00:00:50,390 --> 00:00:51,110 OK. 17 00:00:51,110 --> 00:00:53,090 Hivyo kwamba ni nini node inaonekana kama. 18 00:00:53,090 --> 00:00:56,180 >> Sasa hapa ni tamko ya hashtable yetu. 19 00:00:56,180 --> 00:00:59,640 Ni kwenda na 16,834 ndoo. 20 00:00:59,640 --> 00:01:01,910 Lakini idadi hiyo haina kweli jambo. 21 00:01:01,910 --> 00:01:05,450 Na hatimaye, tunakwenda na kimataifa variable hashtable kawaida, ambayo 22 00:01:05,450 --> 00:01:07,000 ni kwenda kuanza mbali kama zero. 23 00:01:07,000 --> 00:01:10,760 Na itakuja kwa kuweka wimbo wa jinsi maneno mengi ni katika kamusi yetu. 24 00:01:10,760 --> 00:01:13,710 >> Hivyo basi tuangalie mzigo. 25 00:01:13,710 --> 00:01:16,390 Taarifa mzigo, kuirudisha bool. 26 00:01:16,390 --> 00:01:20,530 Kurudi kweli kama ni mafanikio kubeba, na uongo vinginevyo. 27 00:01:20,530 --> 00:01:23,990 Na inachukua const char * dictionary, ambayo ni kamusi 28 00:01:23,990 --> 00:01:25,280 kwamba tunataka kufungua. 29 00:01:25,280 --> 00:01:27,170 Ili jambo la kwanza tunakwenda kufanya. 30 00:01:27,170 --> 00:01:29,500 >> Tunakwenda fopen kamusi ajili ya kusoma. 31 00:01:29,500 --> 00:01:31,680 Na tunakwenda kufanya kuhakikisha kwamba wamefanikiwa. 32 00:01:31,680 --> 00:01:35,920 Hivyo kama ni kurudi NULL, basi hatukuwa mafanikio kufungua dictionary. 33 00:01:35,920 --> 00:01:37,440 Na sisi haja ya kurudi uongo. 34 00:01:37,440 --> 00:01:41,580 Lakini kuchukua kwamba alifanya mafanikio wazi, basi tunataka kusoma 35 00:01:41,580 --> 00:01:42,400 dictionary. 36 00:01:42,400 --> 00:01:46,450 Hivyo kuweka wanaoendesha mpaka sisi kupata baadhi ya sababu ya kuvunja nje ya kitanzi hii, 37 00:01:46,450 --> 00:01:47,570 ambayo tutaweza kuona. 38 00:01:47,570 --> 00:01:48,920 Hivyo kuweka wanaoendesha. 39 00:01:48,920 --> 00:01:51,780 >> Na sasa tunakwenda malloc node moja. 40 00:01:51,780 --> 00:01:54,020 Na bila shaka tunahitaji hewa kuangalia tena. 41 00:01:54,020 --> 00:01:58,680 Hivyo kama mallocing hakuwa na kufanikiwa, basi tunataka kupakua node yoyote kwamba sisi 42 00:01:58,680 --> 00:02:02,590 kilichotokea kwa malloc kabla ya, karibu na kamusi na kurudi uongo. 43 00:02:02,590 --> 00:02:06,830 Lakini kupuuza kwamba, kuchukua sisi ilifanikiwa, kisha tunataka kutumia fscanf 44 00:02:06,830 --> 00:02:12,400 kusoma neno moja kutoka wetu kamusi ndani ya node yetu. 45 00:02:12,400 --> 00:02:17,940 Ili kukumbuka kwamba kuingia> neno ni char neno buffer ya ukubwa LENGHTH + 1 46 00:02:17,940 --> 00:02:20,300 kwamba sisi ni kwenda kuhifadhi neno in 47 00:02:20,300 --> 00:02:25,070 >> Hivyo fscanf ni kwenda na kurudi 1, kwa muda mrefu kama alikuwa na uwezo wa mafanikio 48 00:02:25,070 --> 00:02:26,750 kusoma neno kutoka faili. 49 00:02:26,750 --> 00:02:30,460 Kama ama makosa kinachotokea, au sisi kufikia mwisho wa faili, ni 50 00:02:30,460 --> 00:02:31,950 si kurudi 1. 51 00:02:31,950 --> 00:02:35,180 Katika kesi ambayo haina kurudi 1, sisi ni hatimaye kwenda kuvunja nje ya 52 00:02:35,180 --> 00:02:37,280 kitanzi hii wakati. 53 00:02:37,280 --> 00:02:42,770 Hivyo tunaona kwamba mara moja sisi kuwa na mafanikio kusoma neno katika 54 00:02:42,770 --> 00:02:48,270 kuingia> neno, kisha tunakwenda kwamba neno kwa kutumia hash kazi yetu. 55 00:02:48,270 --> 00:02:49,580 >> Hebu tuangalie hash kazi. 56 00:02:49,580 --> 00:02:52,430 57 00:02:52,430 --> 00:02:55,610 Hivyo si kweli wanahitaji kuelewa hili. 58 00:02:55,610 --> 00:02:59,460 Na kwa kweli sisi tu vunjwa hash hii kazi kutoka katika mtandao. 59 00:02:59,460 --> 00:03:04,010 Kitu tu unahitaji kutambua ni kwamba hii inahitaji const * Char neno. 60 00:03:04,010 --> 00:03:08,960 Hivyo ni kuchukua kamba kama pembejeo, na kurudi unsigned int kama pato. 61 00:03:08,960 --> 00:03:12,360 Ili wote hash kazi ni, ni inachukua katika pembejeo na anatoa 62 00:03:12,360 --> 00:03:14,490 index katika hashtable. 63 00:03:14,490 --> 00:03:18,530 >> Taarifa kwamba sisi ni moding na NUM_BUCKETS, hivyo thamani kwamba akarudi 64 00:03:18,530 --> 00:03:21,730 kweli ni index katika hashtable na haina index zaidi ya 65 00:03:21,730 --> 00:03:24,320 mipaka ya safu. 66 00:03:24,320 --> 00:03:28,060 Hivyo kutokana na kazi hiyo, tunakwenda kwa hash neno kwamba sisi kusoma 67 00:03:28,060 --> 00:03:29,390 dictionary. 68 00:03:29,390 --> 00:03:31,700 Na kisha tunakwenda kutumia kwamba hash kuingiza 69 00:03:31,700 --> 00:03:33,750 kuingia katika hashtable. 70 00:03:33,750 --> 00:03:38,520 >> Sasa hashtable hash ni sasa wanaohusishwa katika orodha ya meza. 71 00:03:38,520 --> 00:03:41,410 Na inawezekana sana kwamba ni tu null. 72 00:03:41,410 --> 00:03:44,960 Tunataka kuingiza kuingia yetu mwanzo wa orodha hii wanaohusishwa. 73 00:03:44,960 --> 00:03:48,600 Na hivyo tunakwenda na wetu wa sasa hatua ya kuingia kwa nini hashtable 74 00:03:48,600 --> 00:03:50,380 sasa anazungumzia. 75 00:03:50,380 --> 00:03:53,310 Na kisha tunakwenda kuhifadhi, katika hashtable katika 76 00:03:53,310 --> 00:03:55,350 hash, kuingia sasa. 77 00:03:55,350 --> 00:03:59,320 Hivyo mistari hizi mbili mafanikio kuingiza kuingia katika mwanzo wa 78 00:03:59,320 --> 00:04:02,260 wanaohusishwa orodha ya kwamba index katika hashtable. 79 00:04:02,260 --> 00:04:04,900 >> Mara baada ya sisi ni kosa na kwamba, tunajua kwamba sisi kupatikana neno lingine katika 80 00:04:04,900 --> 00:04:07,790 kamusi, na sisi nyongeza tena. 81 00:04:07,790 --> 00:04:13,960 Kwa hiyo sisi kuendelea kufanya kwamba mpaka fscanf hatimaye alirejea kitu mashirika yasiyo ya 1 katika 82 00:04:13,960 --> 00:04:16,950 ambayo uhakika kukumbuka kwamba tunahitaji kuingia bure. 83 00:04:16,950 --> 00:04:19,459 Hivyo hapa sisi malloced kuingia. 84 00:04:19,459 --> 00:04:21,329 Na sisi walijaribu kusoma kitu kutoka kamusi. 85 00:04:21,329 --> 00:04:23,910 Na sisi hakuwa mafanikio kusoma kitu kutoka kamusi, katika 86 00:04:23,910 --> 00:04:26,650 kesi ambayo tunahitaji kuingia bure kuwa sisi kamwe kweli kuweka katika 87 00:04:26,650 --> 00:04:29,140 hashtable, na hatimaye kuvunja. 88 00:04:29,140 --> 00:04:32,750 >> Mara baada ya sisi kuvunja nje tunahitaji kuona, vizuri, Je, sisi kuvunja nje kwa sababu kuna 89 00:04:32,750 --> 00:04:34,360 ilikuwa makosa kusoma kutoka faili? 90 00:04:34,360 --> 00:04:37,120 Au je, sisi kuvunja nje kwa sababu sisi kufikiwa mwisho wa file? 91 00:04:37,120 --> 00:04:39,480 Kama kulikuwa na makosa, kisha tunataka kurudi uongo. 92 00:04:39,480 --> 00:04:40,930 Kwa sababu mzigo hakuwa na kufanikiwa. 93 00:04:40,930 --> 00:04:43,890 Na katika mchakato tunataka kupakua maneno hayo yote sisi kusoma katika, na 94 00:04:43,890 --> 00:04:45,670 karibu faili dictionary. 95 00:04:45,670 --> 00:04:48,740 >> Kutokana hatukuwa kufanikiwa, kisha sisi tu bado haja ya karibu kamusi 96 00:04:48,740 --> 00:04:53,040 faili, na hatimaye kurudi kweli tangu sisi mafanikio kubeba dictionary. 97 00:04:53,040 --> 00:04:54,420 Na kwamba ni kwa ajili ya shehena. 98 00:04:54,420 --> 00:04:59,020 Hivyo sasa kuangalia, kutokana na hashtable kubeba, ni kwenda kuangalia kama hii. 99 00:04:59,020 --> 00:05:03,140 Ili kuangalia, kuirudisha bool, ambayo ni kwenda kuonyesha kama kupita 100 00:05:03,140 --> 00:05:07,530 katika char * neno, kama kupita katika string ni katika kamusi yetu. 101 00:05:07,530 --> 00:05:09,890 Hivyo kama ni katika kamusi, kama ni katika hashtable yetu, 102 00:05:09,890 --> 00:05:11,170 sisi kurudi kweli. 103 00:05:11,170 --> 00:05:13,380 Na kama si, sisi kurudi uongo. 104 00:05:13,380 --> 00:05:17,740 >> Kutokana na suala hili kupita katika neno, sisi ni kwenda hash neno. 105 00:05:17,740 --> 00:05:22,110 Sasa jambo muhimu kutambua ni kwamba katika mzigo sisi alijua kwamba yote ya 106 00:05:22,110 --> 00:05:23,820 maneno tunakwenda kuwa na kesi ya chini. 107 00:05:23,820 --> 00:05:25,820 Lakini hapa tuko na uhakika sana. 108 00:05:25,820 --> 00:05:29,510 Kama sisi kuangalia hash yetu kufanya kazi, hash kazi yetu kweli 109 00:05:29,510 --> 00:05:32,700 ni chini casing kila tabia neno la Mungu. 110 00:05:32,700 --> 00:05:37,940 Hivyo bila kujali mtaji wa neno, hash yetu kufanya kazi ni kurudi 111 00:05:37,940 --> 00:05:42,270 sawa index kwa chochote mtaji ni, kama ingekuwa 112 00:05:42,270 --> 00:05:45,280 kurejea kwa ajili ya kabisa lowercase toleo la neno. 113 00:05:45,280 --> 00:05:46,600 Alright. 114 00:05:46,600 --> 00:05:49,790 Hiyo ni orodha yetu ni ndani ya hashtable kwa neno hili. 115 00:05:49,790 --> 00:05:52,940 >> Sasa hii kwa kitanzi ni kwenda iterate juu ya orodha wanaohusishwa 116 00:05:52,940 --> 00:05:55,000 kwamba ilikuwa ni saa index. 117 00:05:55,000 --> 00:05:59,610 Hivyo taarifa sisi ni initializing kuingia kwa uhakika na kwamba index. 118 00:05:59,610 --> 00:06:02,750 Sisi ni kwenda kuendelea wakati kuingia! = null. 119 00:06:02,750 --> 00:06:07,770 Na kukumbuka kwamba kuhuisha pointer katika orodha yetu wanaohusishwa kuingia = kuingia> ijayo. 120 00:06:07,770 --> 00:06:14,400 Hivyo kuwa na kuingia hatua wetu wa sasa na bidhaa ijayo katika orodha wanaohusishwa. 121 00:06:14,400 --> 00:06:19,250 >> Kwa hiyo kwa kila kuingia katika orodha wanaohusishwa, sisi ni kwenda kutumia strcasecmp. 122 00:06:19,250 --> 00:06:20,330 Siyo strcomp. 123 00:06:20,330 --> 00:06:23,780 Kwa sababu mara nyingine tena, tunataka kufanya mambo kesi insensitively. 124 00:06:23,780 --> 00:06:27,870 Hivyo sisi kutumia strcasecmp kulinganisha neno kwamba ilipitishwa kwa njia hii 125 00:06:27,870 --> 00:06:31,860 kazi kinyume na neno kwamba ni katika kuingia hii. 126 00:06:31,860 --> 00:06:35,570 Kama kuirudisha zero, hiyo ina maana kulikuwa na mechi, katika kesi ambayo tunataka 127 00:06:35,570 --> 00:06:36,630 kurudi kweli. 128 00:06:36,630 --> 00:06:39,590 Sisi mafanikio kupatikana neno katika hashtable yetu. 129 00:06:39,590 --> 00:06:43,040 >> Kama kulikuwa na si mechi, basi sisi ni kwenda kwa kitanzi tena na kuangalia 130 00:06:43,040 --> 00:06:43,990 kuingia ijayo. 131 00:06:43,990 --> 00:06:47,640 Na tutaweza kuendelea looping wakati kuna ni entries katika orodha hii wanaohusishwa. 132 00:06:47,640 --> 00:06:50,160 Kile kinachotokea kama sisi kuvunja nje ya hii kwa kitanzi? 133 00:06:50,160 --> 00:06:55,110 Hiyo ina maana sisi hawakuona kuingia kwamba kuendana neno hili, katika kesi ambayo 134 00:06:55,110 --> 00:07:00,220 sisi kurudi uongo zinaonyesha kwamba yetu hashtable hakuwa vyenye neno hili. 135 00:07:00,220 --> 00:07:02,540 Na kwamba ni kuangalia. 136 00:07:02,540 --> 00:07:04,790 >> Hivyo basi tuangalie kawaida. 137 00:07:04,790 --> 00:07:06,970 Sasa ukubwa ni kwenda kuwa pretty rahisi. 138 00:07:06,970 --> 00:07:11,080 Tangu kumbuka katika mzigo, kwa kila neno sisi kupatikana, sisi incremented kimataifa 139 00:07:11,080 --> 00:07:12,880 variable hashtable kawaida. 140 00:07:12,880 --> 00:07:16,480 Hivyo ukubwa kazi ni kwenda tu kurudi variable kimataifa. 141 00:07:16,480 --> 00:07:18,150 Na hiyo ni yake. 142 00:07:18,150 --> 00:07:22,300 >> Sasa hatimaye, tunahitaji kupakua kamusi mara moja kila kitu kosa. 143 00:07:22,300 --> 00:07:25,340 Hivyo ni jinsi sisi ni kwenda kufanya hivyo? 144 00:07:25,340 --> 00:07:30,440 Haki hapa sisi ni wanaoendesha juu ya ndoo yote ya meza yetu. 145 00:07:30,440 --> 00:07:33,240 Hivyo kuna NUM_BUCKETS ndoo. 146 00:07:33,240 --> 00:07:37,410 Na kwa kila orodha wanaohusishwa katika yetu hashtable, tunakwenda kitanzi juu ya 147 00:07:37,410 --> 00:07:41,070 ukamilifu wa orodha wanaohusishwa, kumkomboa kila kipengele. 148 00:07:41,070 --> 00:07:42,900 >> Sasa tunahitaji kuwa makini. 149 00:07:42,900 --> 00:07:47,910 Kwa hiyo hapa tuna variable muda hiyo hifadhi ya pointer ijayo 150 00:07:47,910 --> 00:07:49,730 hiki katika orodha wanaohusishwa. 151 00:07:49,730 --> 00:07:52,140 Na kisha tunakwenda bure hiki sasa. 152 00:07:52,140 --> 00:07:55,990 Tunahitaji kuwa na uhakika sisi kufanya hivyo tangu sisi huwezi bure hiki sasa 153 00:07:55,990 --> 00:07:59,180 na kisha kujaribu kupata pointer ya pili, tangu mara moja tumekuwa huru yake, 154 00:07:59,180 --> 00:08:00,870 kumbukumbu inakuwa batili. 155 00:08:00,870 --> 00:08:04,990 >> Kwa hiyo, tunahitaji kuweka karibu pointer kwa hiki ijayo, basi tunaweza bure 156 00:08:04,990 --> 00:08:08,360 hiki sasa, na kisha tunaweza kuboresha hiki wetu wa sasa kwa uhakika na 157 00:08:08,360 --> 00:08:09,550 hiki ijayo. 158 00:08:09,550 --> 00:08:12,800 Tutaweza kitanzi wakati kuna mambo katika orodha hii wanaohusishwa. 159 00:08:12,800 --> 00:08:15,620 Tutaweza kufanya hivyo kwa wote wanaohusishwa orodha katika hashtable. 160 00:08:15,620 --> 00:08:19,460 Na mara moja sisi ni kosa na kwamba, tumekuwa kabisa unloaded hashtable, na 161 00:08:19,460 --> 00:08:20,190 sisi ni kosa. 162 00:08:20,190 --> 00:08:23,200 Hivyo ni vigumu kwa ipakuliwe kwa milele kurudi uongo. 163 00:08:23,200 --> 00:08:26,470 Na wakati sisi ni kosa, sisi tu kurudi kweli. 164 00:08:26,470 --> 00:08:29,000 >> Hebu kutoa ufumbuzi huu kujaribu. 165 00:08:29,000 --> 00:08:33,070 Hivyo basi tuangalie nini yetu struct node kuangalia kama. 166 00:08:33,070 --> 00:08:36,220 Hapa tunaona tunakwenda na bool neno na struct nodi * watoto 167 00:08:36,220 --> 00:08:37,470 bracket ALPHABET. 168 00:08:37,470 --> 00:08:38,929 169 00:08:38,929 --> 00:08:42,020 Hivyo jambo la kwanza unaweza kuwa na wanashangaa, kwa nini ni ALPHABET 170 00:08:42,020 --> 00:08:44,660 ed hufafanuliwa kama 27? 171 00:08:44,660 --> 00:08:47,900 Vizuri, kumbuka kwamba sisi ni kwenda haja ya kwa kuwa utunzaji apostrophe. 172 00:08:47,900 --> 00:08:51,910 Ili kwenda kuwa fulani ya kesi maalum katika mpango huu. 173 00:08:51,910 --> 00:08:54,710 >> Sasa kumbuka jinsi trie kweli kazi. 174 00:08:54,710 --> 00:08:59,380 Hebu sema sisi ni Indexing neno "Paka." Kisha kutoka mizizi ya trie, 175 00:08:59,380 --> 00:09:02,610 sisi ni kwenda kuangalia watoto safu, na sisi ni kwenda kuangalia 176 00:09:02,610 --> 00:09:08,090 index kwamba sambamba na barua C. Kwa hiyo itakuwa indexed 2. 177 00:09:08,090 --> 00:09:11,530 Hivyo kutokana na kwamba, mapenzi yake ya kwamba kutupa node mpya. 178 00:09:11,530 --> 00:09:13,820 Na kisha tutaweza kazi na kwamba nodi. 179 00:09:13,820 --> 00:09:17,770 >> Hivyo kutokana na kwamba node, tuko kwa mara nyingine tena kwenda kuangalia watoto safu. 180 00:09:17,770 --> 00:09:22,110 Na sisi ni kwenda kuangalia index zero yanahusiana na A katika paka. 181 00:09:22,110 --> 00:09:27,170 Hivyo basi sisi ni kwenda kwa kuwa node, na kutokana na kwamba node tunakwenda 182 00:09:27,170 --> 00:09:31,090 kuangalia mwisho wake ni sambamba kwa T. Na kuhamia kwenye kwamba node, 183 00:09:31,090 --> 00:09:35,530 hatimaye, tuna kabisa inaonekana kupitia neno yetu "paka." Na sasa bool 184 00:09:35,530 --> 00:09:40,960 neno zinatakiwa kuonyesha kama neno hili kutokana na ni kweli neno. 185 00:09:40,960 --> 00:09:43,470 >> Hivyo kwa nini tunahitaji kuwa kesi maalum? 186 00:09:43,470 --> 00:09:47,700 Vizuri gani ya neno "janga" ni katika kamusi yetu, lakini 187 00:09:47,700 --> 00:09:50,150 neno "cat" ni si? 188 00:09:50,150 --> 00:09:54,580 Hivyo na kuangalia ili kuona kama neno "cat" ni katika kamusi yetu, sisi ni 189 00:09:54,580 --> 00:09:59,970 kwenda kwa mafanikio kuangalia njia fahirisi C-A-T katika mkoa wa nodi. 190 00:09:59,970 --> 00:10:04,290 Lakini hiyo ni kwa sababu tu janga kilichotokea kwa kujenga nodes juu ya njia 191 00:10:04,290 --> 00:10:07,190 kutoka C-A-T, njia yote ya mwisho wa neno. 192 00:10:07,190 --> 00:10:12,020 Hivyo neno bool hutumika kuonyesha kama eneo hili hasa 193 00:10:12,020 --> 00:10:14,310 kweli inaonyesha neno. 194 00:10:14,310 --> 00:10:15,140 >> Sawa. 195 00:10:15,140 --> 00:10:19,310 Hivyo sasa kwamba sisi kujua trie ni nini kwenda kuangalia kama, hebu tuangalie 196 00:10:19,310 --> 00:10:20,730 mzigo kazi. 197 00:10:20,730 --> 00:10:24,610 Hivyo mzigo ni kwenda na kurudi bool kwa kama sisi mafanikio au 198 00:10:24,610 --> 00:10:26,720 bila mafanikio kubeba dictionary. 199 00:10:26,720 --> 00:10:30,460 Na hii ni kwenda kuwa kamusi kwamba tunataka kupakia. 200 00:10:30,460 --> 00:10:33,930 >> Kitu hivyo kwanza sisi ni kufanya ni wazi juu kwamba kamusi ajili ya kusoma. 201 00:10:33,930 --> 00:10:36,160 Na sisi kuhakikisha sisi hakuwa na kushindwa. 202 00:10:36,160 --> 00:10:39,580 Hivyo kama kamusi hakuwa mafanikio kufunguliwa, itakuwa kurudi 203 00:10:39,580 --> 00:10:42,400 null, katika kesi ambayo tuko kwenda na kurudi uongo. 204 00:10:42,400 --> 00:10:47,230 Lakini kuchukua kwamba ni mafanikio kufunguliwa, basi tunaweza kweli kusoma 205 00:10:47,230 --> 00:10:48,220 kupitia dictionary. 206 00:10:48,220 --> 00:10:50,880 >> Kitu hivyo kwanza tunakwenda wanataka kufanya ni sisi na hii 207 00:10:50,880 --> 00:10:52,500 kimataifa variable mizizi. 208 00:10:52,500 --> 00:10:56,190 Sasa mzizi ni kwenda kuwa node *. 209 00:10:56,190 --> 00:10:59,760 Ni juu ya trie yetu kwamba sisi ni kwenda kuwa iterating kupitia. 210 00:10:59,760 --> 00:11:02,660 Hivyo jambo la kwanza kwamba sisi ni kwenda wanataka kufanya ni kutenga 211 00:11:02,660 --> 00:11:04,140 kumbukumbu kwa ajili ya mizizi yetu. 212 00:11:04,140 --> 00:11:07,980 Taarifa kwamba sisi ni kutumia calloc kazi, ambayo ni sawa kimsingi 213 00:11:07,980 --> 00:11:11,500 kama malloc kazi, ila ni uhakika wa kurudi kitu ambacho ni 214 00:11:11,500 --> 00:11:13,180 kabisa alizungumzia zaidi hali ilivyo nje. 215 00:11:13,180 --> 00:11:17,290 Hivyo kama sisi kutumika malloc, tunataka haja ya kwenda kwa njia zote za kuyatumia katika maisha yetu 216 00:11:17,290 --> 00:11:20,160 node, na kuhakikisha kwamba wao uko wote null. 217 00:11:20,160 --> 00:11:22,710 Hivyo calloc kufanya kwetu hilo. 218 00:11:22,710 --> 00:11:26,330 >> Sasa tu kama malloc, sisi haja ya kufanya kuhakikisha kwamba mgao kwa kweli 219 00:11:26,330 --> 00:11:27,520 mafanikio. 220 00:11:27,520 --> 00:11:29,990 Kama hii akarudi null, kisha sisi haja ya karibu au kamusi 221 00:11:29,990 --> 00:11:32,100 faili na kurudi uongo. 222 00:11:32,100 --> 00:11:36,835 Hivyo kuchukua mgao kwamba alikuwa mafanikio, sisi ni kwenda kutumia nodi * 223 00:11:36,835 --> 00:11:40,270 mshale iterate kupitia trie yetu. 224 00:11:40,270 --> 00:11:43,890 Hivyo mizizi yetu kamwe kwenda na mabadiliko, lakini sisi ni kwenda kutumia mshale 225 00:11:43,890 --> 00:11:47,875 kweli kwenda na nodi ya nodi. 226 00:11:47,875 --> 00:11:50,940 >> Hivyo katika hii kwa kitanzi sisi ni kusoma kwenye faili dictionary. 227 00:11:50,940 --> 00:11:53,670 Na sisi ni kutumia fgetc. 228 00:11:53,670 --> 00:11:56,290 Fgetc ni kwenda kunyakua moja tabia kutoka file. 229 00:11:56,290 --> 00:11:59,370 Sisi ni kwenda kuendelea grabbing wahusika wakati sisi si kufikia 230 00:11:59,370 --> 00:12:01,570 mwisho wa faili. 231 00:12:01,570 --> 00:12:03,480 >> Kuna mambo mawili sisi haja ya kushughulikia. 232 00:12:03,480 --> 00:12:06,610 kwanza, kama tabia hakuwa line mpya. 233 00:12:06,610 --> 00:12:10,450 Hivyo sisi kujua kama ilikuwa mstari wa mwezi, kisha sisi ni juu ya kuendelea na neno jipya. 234 00:12:10,450 --> 00:12:15,240 Lakini kuchukua haikuwa line mpya, kisha hapa tunataka kufikiri 235 00:12:15,240 --> 00:12:18,380 index tunakwenda index katika kwa watoto safu kwamba 236 00:12:18,380 --> 00:12:19,810 sisi inaonekana katika kabla ya. 237 00:12:19,810 --> 00:12:23,880 >> Hivyo, kama nilivyosema hapo kabla, tunahitaji kesi maalum apostrophe. 238 00:12:23,880 --> 00:12:26,220 Taarifa sisi ni kutumia ternary operator hapa. 239 00:12:26,220 --> 00:12:29,580 Hivyo sisi ni kwenda kusoma hii kama, kama tabia ya sisi kusoma katika mara 240 00:12:29,580 --> 00:12:35,330 apostrophe, basi sisi ni kwenda kuweka index = "ALPHABET" -1, ambayo itakuwa 241 00:12:35,330 --> 00:12:37,680 kuwa index 26. 242 00:12:37,680 --> 00:12:41,130 >> Mwingine, kama siyo apostrophe, kuna tunakwenda kuweka index 243 00:12:41,130 --> 00:12:43,760 sawa na c -. 244 00:12:43,760 --> 00:12:49,030 Basi kumbuka nyuma kutoka hapo awali p-sets, c - a ni kwenda kutupa 245 00:12:49,030 --> 00:12:53,410 nafasi herufi ya C. Hivyo kama C ni barua A, hii itakuwa 246 00:12:53,410 --> 00:12:54,700 kutupa index sifuri. 247 00:12:54,700 --> 00:12:58,120 Kwa barua B, itakuwa kutoa sisi index 1, na kadhalika. 248 00:12:58,120 --> 00:13:03,010 >> Hivyo hii inatupa index katika watoto safu kwamba tunataka. 249 00:13:03,010 --> 00:13:08,890 Sasa kama ripoti hii kwa sasa ni null katika watoto, hiyo ina maana kwamba node 250 00:13:08,890 --> 00:13:11,830 haina sasa zipo kutoka kwa njia ya hiyo. 251 00:13:11,830 --> 00:13:15,160 Kwa hiyo, tunahitaji kutenga node kwa njia hiyo. 252 00:13:15,160 --> 00:13:16,550 Hiyo ni nini tutaweza kufanya hapa. 253 00:13:16,550 --> 00:13:20,690 >> Hivyo sisi ni kwenda tena kutumia calloc kazi, ili sisi hawana 254 00:13:20,690 --> 00:13:22,880 sifuri nje kuyatumia wote. 255 00:13:22,880 --> 00:13:27,240 Na sisi tena haja ya kuangalia kwamba calloc hakuwa na kushindwa. 256 00:13:27,240 --> 00:13:30,700 Kama calloc hakuwa kushindwa, basi tunahitaji ipakuliwe kila kitu, karibu yetu 257 00:13:30,700 --> 00:13:32,820 kamusi, na kurudi uongo. 258 00:13:32,820 --> 00:13:40,050 Hivyo kudhani kuwa hakuwa na kushindwa, kisha itajenga mtoto mpya kwa ajili yetu. 259 00:13:40,050 --> 00:13:41,930 Na kisha tutakwenda kwa mtoto. 260 00:13:41,930 --> 00:13:44,960 Mshale yetu iterate chini ya kwamba mtoto. 261 00:13:44,960 --> 00:13:49,330 >> Sasa kama hii ilikuwa si null kwa kuanzia, kisha mshale unaweza tu iterate 262 00:13:49,330 --> 00:13:52,590 chini ya kwamba mtoto bila ya kweli ya kuwa na kutenga kitu chochote. 263 00:13:52,590 --> 00:13:56,730 Hii ni kesi ambapo sisi kwanza kilichotokea kutenga neno "paka." Na 264 00:13:56,730 --> 00:14:00,330 hiyo ina maana wakati sisi kwenda kutenga "Janga," hatuna haja ya kuunda 265 00:14:00,330 --> 00:14:01,680 nodes kwa C-A-T tena. 266 00:14:01,680 --> 00:14:04,830 Wao tayari zipo. 267 00:14:04,830 --> 00:14:06,080 >> Ni mambo gani haya mwingine? 268 00:14:06,080 --> 00:14:10,480 Hii ni hali ambapo c mara backslash n, ambapo c alikuwa mstari mpya. 269 00:14:10,480 --> 00:14:13,710 Hii ina maana kwamba sisi kuwa na mafanikio kukamilika neno. 270 00:14:13,710 --> 00:14:16,860 Sasa nini tunataka kufanya wakati sisi mafanikio ya kumaliza neno? 271 00:14:16,860 --> 00:14:21,100 Tunakwenda kutumia uwanja hii neno ndani ya struct yetu nodi. 272 00:14:21,100 --> 00:14:23,390 Tunataka kuweka kwamba kwa kweli. 273 00:14:23,390 --> 00:14:27,150 Hivyo kwamba inaonyesha kwamba node hii inaonyesha mafanikio 274 00:14:27,150 --> 00:14:29,250 neno, neno halisi. 275 00:14:29,250 --> 00:14:30,940 >> Sasa kuweka kwamba kwa kweli. 276 00:14:30,940 --> 00:14:35,150 Tunataka upya mshale yetu kwa uhakika mwanzo wa trie tena. 277 00:14:35,150 --> 00:14:40,160 Na hatimaye, nyongeza kamusi yetu kawaida, tangu sisi kupatikana kazi nyingine. 278 00:14:40,160 --> 00:14:43,230 Hivyo sisi ni kwenda kuweka kufanya hivyo, kusoma katika tabia na tabia, 279 00:14:43,230 --> 00:14:49,150 ujenzi wa nodes mpya katika trie yetu na kwa kila neno katika kamusi, mpaka 280 00:14:49,150 --> 00:14:54,020 sisi hatimaye kufikia C! = EOF, ambayo kesi sisi kuvunja nje ya faili. 281 00:14:54,020 --> 00:14:57,050 >> Sasa kuna mambo mawili chini ya ambayo sisi tupate kuwa hit EOF. 282 00:14:57,050 --> 00:15:00,980 kwanza ni kama kulikuwa na makosa kusoma kutoka file. 283 00:15:00,980 --> 00:15:03,470 Hivyo kama kulikuwa na makosa, sisi haja ya kufanya kawaida. 284 00:15:03,470 --> 00:15:06,460 Kupakua kila kitu, karibu file, kurudi uongo. 285 00:15:06,460 --> 00:15:09,810 Kutokana kulikuwa na si kosa, kwamba tu ina maana sisi kweli hit mwisho wa 286 00:15:09,810 --> 00:15:13,750 file, katika kesi ambayo, sisi karibu faili na kurudi kweli tangu sisi 287 00:15:13,750 --> 00:15:17,330 mafanikio kubeba kamusi ndani ya trie yetu. 288 00:15:17,330 --> 00:15:20,170 >> Hivyo sasa hebu angalia nje kuangalia. 289 00:15:20,170 --> 00:15:25,156 Kuangalia kazi ya kuangalia, tunaona kuangalia kwamba ni kwenda na kurudi bool. 290 00:15:25,156 --> 00:15:29,680 Ni anarudi kweli kama neno hili ni kupitishwa ni katika trie yetu. 291 00:15:29,680 --> 00:15:32,110 Ni anarudi uongo vinginevyo. 292 00:15:32,110 --> 00:15:36,050 Hivyo ni jinsi gani kuamua kama neno hili ni katika trie yetu? 293 00:15:36,050 --> 00:15:40,190 >> Tunaona hapa kwamba, kama kabla, tunakwenda kutumia mshale iterate 294 00:15:40,190 --> 00:15:41,970 kupitia trie yetu. 295 00:15:41,970 --> 00:15:46,600 Sasa hapa tunakwenda iterate juu ya neno yetu yote. 296 00:15:46,600 --> 00:15:50,620 Hivyo iterating juu ya neno sisi ni siku za nyuma, tunakwenda kuamua 297 00:15:50,620 --> 00:15:56,400 index ndani ya watoto safu kwamba sambamba na neno bracket I. Hivyo hii 298 00:15:56,400 --> 00:15:59,670 ni kwenda kuangalia hasa kama mzigo, ambapo kama neno [i] 299 00:15:59,670 --> 00:16:03,310 ni apostrophe, basi tunataka kutumia index "ALPHABET" - 1. 300 00:16:03,310 --> 00:16:05,350 Kwa sababu sisi kuamua kwamba ni wapi tunakwenda kuhifadhi 301 00:16:05,350 --> 00:16:07,100 apostrophes. 302 00:16:07,100 --> 00:16:11,780 >> Mwingine tunakwenda kutumia neno mbili chini bracket I. Basi kumbuka neno ambayo inaweza 303 00:16:11,780 --> 00:16:13,920 na mtaji holela. 304 00:16:13,920 --> 00:16:17,540 Na hivyo tunataka kuhakikisha kwamba sisi ni kutumia toleo lowercase ya mambo. 305 00:16:17,540 --> 00:16:21,920 Na kisha Ondoa na kwamba 'kwa mara nyingine tena kutupa herufi 306 00:16:21,920 --> 00:16:23,880 nafasi ya kwamba tabia. 307 00:16:23,880 --> 00:16:27,680 Ili kwenda kuwa orodha yetu ndani ya watoto safu. 308 00:16:27,680 --> 00:16:32,420 >> Na sasa kama kwamba index ndani ya watoto safu ni null, hiyo ina maana sisi 309 00:16:32,420 --> 00:16:34,990 haiwezi kuendelea iterating chini trie yetu. 310 00:16:34,990 --> 00:16:38,870 Kama hiyo kesi, neno hili hawawezi uwezekano wa kuwa katika trie yetu. 311 00:16:38,870 --> 00:16:42,340 Tangu kama ilivyokuwa, kwamba ingekuwa maana kutakuwa na njia 312 00:16:42,340 --> 00:16:43,510 chini ya neno hilo. 313 00:16:43,510 --> 00:16:45,290 Na wewe kamwe kukutana null. 314 00:16:45,290 --> 00:16:47,850 Hivyo kukutana null, sisi kurudi uongo. 315 00:16:47,850 --> 00:16:49,840 neno ni si katika kamusi. 316 00:16:49,840 --> 00:16:53,660 Kama si null, basi sisi ni kwenda kuendelea iterating. 317 00:16:53,660 --> 00:16:57,220 >> Hivyo sisi ni kwenda huko nje mshale kwa uhakika na kwamba hasa 318 00:16:57,220 --> 00:16:59,760 node wakati huo index. 319 00:16:59,760 --> 00:17:03,150 Sisi kuendelea kufanya hivyo katika neno nzima, kuchukua 320 00:17:03,150 --> 00:17:03,950 sisi kamwe hit null. 321 00:17:03,950 --> 00:17:07,220 Hiyo ina maana tulikuwa na uwezo wa kupata njia neno nzima na kupata 322 00:17:07,220 --> 00:17:08,920 node katika kujaribu yetu. 323 00:17:08,920 --> 00:17:10,770 Lakini sisi siyo kabisa kufanyika bado. 324 00:17:10,770 --> 00:17:12,290 >> Hatutaki tu kurudi kweli. 325 00:17:12,290 --> 00:17:14,770 Tunataka kurudi mshale> neno. 326 00:17:14,770 --> 00:17:18,980 Tangu kumbuka tena, ni "cat" si katika kamusi yetu, na "janga" 327 00:17:18,980 --> 00:17:22,935 ni, basi sisi mafanikio sisi kupata kupitia neno "paka." Lakini mshale 328 00:17:22,935 --> 00:17:25,760 neno kuwa uongo na si kweli. 329 00:17:25,760 --> 00:17:30,930 Hivyo sisi kurudi mshale neno zinaonyesha kama node hii ni kweli neno. 330 00:17:30,930 --> 00:17:32,470 Na kwamba ni kwa ajili ya kuangalia. 331 00:17:32,470 --> 00:17:34,250 >> Hivyo hebu angalia nje ukubwa. 332 00:17:34,250 --> 00:17:37,350 Hivyo ukubwa ni kwenda kuwa pretty rahisi tangu, kumbuka katika mzigo, sisi ni 333 00:17:37,350 --> 00:17:41,430 incrementing kamusi kawaida kwa ajili ya kila neno kwamba sisi kukutana. 334 00:17:41,430 --> 00:17:45,350 Hivyo ukubwa ni kwenda tu kurudi kamusi kawaida. 335 00:17:45,350 --> 00:17:47,390 Na hiyo ni yake. 336 00:17:47,390 --> 00:17:50,590 >> Hivyo Mwisho tuna ipakuliwe. 337 00:17:50,590 --> 00:17:55,100 Hivyo ipakuliwe, sisi ni kwenda kutumia kazi kujirudia kwa kweli kufanya yote 338 00:17:55,100 --> 00:17:56,530 ya kazi kwa ajili yetu. 339 00:17:56,530 --> 00:17:59,340 Hivyo kazi yetu ni kwenda kuitwa juu ya mpakuzi. 340 00:17:59,340 --> 00:18:01,650 Je, ni mpakuzi kwenda kufanya nini? 341 00:18:01,650 --> 00:18:06,580 Tunaona hapa kwamba mpakuzi ni kwenda iterate juu ya yote ya watoto katika 342 00:18:06,580 --> 00:18:08,410 node fulani. 343 00:18:08,410 --> 00:18:11,750 Na kama node mtoto ni si null, kisha tunakwenda 344 00:18:11,750 --> 00:18:13,730 kupakua node mtoto. 345 00:18:13,730 --> 00:18:18,010 >> Hivyo hii ni wewe recursively kupakua watoto wetu wote. 346 00:18:18,010 --> 00:18:21,080 Mara baada ya sisi ni kuhakikisha kwamba watoto wetu wote wamekuwa unloaded, basi sisi 347 00:18:21,080 --> 00:18:25,210 inaweza bure sisi wenyewe, ili kupakua wenyewe. 348 00:18:25,210 --> 00:18:29,460 Hii kazi recursively kupakua trie nzima. 349 00:18:29,460 --> 00:18:32,850 Na kisha mara moja hiyo ni kufanyika, tunaweza tu kurudi kweli. 350 00:18:32,850 --> 00:18:34,210 Ipakuliwe hawezi kushindwa. 351 00:18:34,210 --> 00:18:35,710 Tuko tu kumkomboa mambo. 352 00:18:35,710 --> 00:18:38,870 Hivyo mara moja sisi ni kosa kumkomboa kila kitu, kurudi kweli. 353 00:18:38,870 --> 00:18:40,320 Na hiyo ni yake. 354 00:18:40,320 --> 00:18:41,080 Jina langu ni Rob. 355 00:18:41,080 --> 00:18:42,426 Na hii ilikuwa Speller. 356 00:18:42,426 --> 00:18:47,830 >> [Music kucheza]