1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> SPIKA 1: Hebu kutoa hii ufumbuzi kujaribu. 3 00:00:03,070 --> 00:00:07,130 Hivyo basi tuangalie nini yetu Struct node kuangalia kama. 4 00:00:07,130 --> 00:00:11,040 Hapa, tunaona tunakwenda na Bool neno na nyota node Struct 5 00:00:11,040 --> 00:00:12,990 Watoto mabano alfabeti. 6 00:00:12,990 --> 00:00:18,720 Kitu hivyo kwanza unaweza kuwa anashangaa, kwa nini alfabeti hash hufafanuliwa kama 27? 7 00:00:18,720 --> 00:00:22,540 Vizuri, kumbuka kwamba sisi ni kwenda haja ya kwa kuwa utunzaji apostrophe, hivyo 8 00:00:22,540 --> 00:00:25,610 ambayo inaenda kuwa fulani maalum kesi katika mpango huu. 9 00:00:25,610 --> 00:00:28,780 >> Sawa, sasa, kumbuka jinsi Trie kweli kazi. 10 00:00:28,780 --> 00:00:33,420 Hebu sema sisi ni Indexing paka neno, kisha kutoka mizizi ya Trie yetu, 11 00:00:33,420 --> 00:00:36,670 tunakwenda kuangalia watoto safu, na sisi ni kwenda kuangalia 12 00:00:36,670 --> 00:00:42,250 index kwamba sambamba na barua C. Kwa hiyo itakuwa index mbili. 13 00:00:42,250 --> 00:00:46,400 Hivyo kutokana na kwamba, hii itatupa node mpya, na kisha tutaweza 14 00:00:46,400 --> 00:00:47,880 kazi na kwamba nodi. 15 00:00:47,880 --> 00:00:51,830 >> Hivyo kutokana na kwamba node, tuko kwa mara nyingine tena kwenda kuangalia watoto safu, 16 00:00:51,830 --> 00:00:56,170 na sisi ni kwenda kuangalia index zero yanahusiana na A katika paka. 17 00:00:56,170 --> 00:01:01,240 Hivyo basi sisi ni kwenda kwa kuwa node, na kutokana na kwamba node, tunakwenda 18 00:01:01,240 --> 00:01:05,170 kuangalia index kwamba sambamba kwa T. Na kuhamia kwenye kwamba node, 19 00:01:05,170 --> 00:01:09,590 hatimaye, tuna kabisa inaonekana kupitia neno wetu Cat, na sasa bool 20 00:01:09,590 --> 00:01:15,020 Neno zinatakiwa kuonyesha kama neno hili kutokana na ni kweli neno. 21 00:01:15,020 --> 00:01:17,530 >> Hivyo kwa nini tunahitaji kuwa kesi maalum? 22 00:01:17,530 --> 00:01:21,680 Naam, ni nini kama neno janga ni katika kamusi yetu, lakini 23 00:01:21,680 --> 00:01:24,120 neno paka si? 24 00:01:24,120 --> 00:01:29,030 Hivyo katika kuangalia ili kuona kama neno paka ni katika kamusi yetu, tunakwenda 25 00:01:29,030 --> 00:01:34,880 mafanikio kuangalia njia fahirisi C-A-T na kufikia node, lakini hiyo ni 26 00:01:34,880 --> 00:01:39,760 tu kwa sababu janga kilichotokea kwa kujenga nodes juu ya njia ya kutoka C-A-T wote 27 00:01:39,760 --> 00:01:41,250 njia ya mwisho wa neno. 28 00:01:41,250 --> 00:01:46,520 Hivyo bool neno hutumiwa kuonyesha kama eneo hili hasa kwa kweli 29 00:01:46,520 --> 00:01:48,370 inaonyesha neno. 30 00:01:48,370 --> 00:01:52,920 >> Yote ya haki, hivyo sasa kwamba sisi kujua nini a Trie ni kwenda kuangalia kama, hebu tuangalie 31 00:01:52,920 --> 00:01:54,800 katika mzigo kazi. 32 00:01:54,800 --> 00:01:58,670 Hivyo Load ni kwenda na kurudi bool kwa kama sisi mafanikio au 33 00:01:58,670 --> 00:02:03,020 bila mafanikio kubeba kamusi na hii ni kwenda kuwa kamusi 34 00:02:03,020 --> 00:02:04,520 kwamba tunataka kupakia. 35 00:02:04,520 --> 00:02:08,310 Kitu hivyo kwanza tunakwenda kufanya ni wazi juu kwamba kamusi ajili ya kusoma. 36 00:02:08,310 --> 00:02:12,060 Tuna kuhakikisha sisi hakuwa na kushindwa, hivyo kama kamusi hakuwa 37 00:02:12,060 --> 00:02:15,280 mafanikio kufunguliwa, itakuwa kurudi No, katika kesi ambayo tunakwenda 38 00:02:15,280 --> 00:02:16,340 kurudi uongo. 39 00:02:16,340 --> 00:02:21,290 Lakini kuchukua kwamba ni mafanikio kufunguliwa, basi tunaweza kweli kusoma 40 00:02:21,290 --> 00:02:22,310 kupitia dictionary. 41 00:02:22,310 --> 00:02:24,940 >> Kitu hivyo kwanza tunakwenda wanataka kufanya ni sisi na hii 42 00:02:24,940 --> 00:02:26,560 kimataifa variable mizizi. 43 00:02:26,560 --> 00:02:30,250 Sasa, mzizi ni kwenda kuwa nyota wa nodi. 44 00:02:30,250 --> 00:02:33,830 Ni juu ya Trie yetu kwamba sisi ni kwenda kuwa iterating kupitia. 45 00:02:33,830 --> 00:02:38,200 Kitu hivyo kwanza tunakwenda kutaka kufanya ni kutenga kumbukumbu kwa ajili ya mizizi yetu. 46 00:02:38,200 --> 00:02:42,040 >> Taarifa kwamba sisi ni kutumia Calloc kazi, ambayo ni sawa kimsingi 47 00:02:42,040 --> 00:02:45,560 kama kazi malloc, ila ni uhakika wa kurudi kitu ambacho ni 48 00:02:45,560 --> 00:02:47,240 kabisa alizungumzia zaidi hali ilivyo nje. 49 00:02:47,240 --> 00:02:51,350 Hivyo kama sisi kutumika malloc, tunataka haja ya kwenda kwa njia zote za kuyatumia katika maisha yetu 50 00:02:51,350 --> 00:02:54,220 node na kuhakikisha kwamba wao uko wote null. 51 00:02:54,220 --> 00:02:56,780 Hivyo Calloc kufanya kwetu hilo. 52 00:02:56,780 --> 00:03:00,390 >> Sasa, kama malloc, sisi haja ya kufanya kuhakikisha kwamba mgao wa kweli 53 00:03:00,390 --> 00:03:01,580 mafanikio. 54 00:03:01,580 --> 00:03:04,060 Kama hii akarudi null, kisha sisi haja ya karibu kamusi yetu 55 00:03:04,060 --> 00:03:06,170 faili na kurudi uongo. 56 00:03:06,170 --> 00:03:11,040 Hivyo kuchukua mgao ilikuwa mafanikio, sisi ni kwenda kutumia node 57 00:03:11,040 --> 00:03:14,340 nyota Mshale iterate kupitia Trie yetu. 58 00:03:14,340 --> 00:03:17,950 Hivyo mizizi yetu kamwe kwenda na mabadiliko, lakini sisi ni kwenda kutumia mshale 59 00:03:17,950 --> 00:03:20,770 kweli kwenda na nodi ya nodi. 60 00:03:20,770 --> 00:03:25,000 >> Haki ya wote, hivyo katika hii Kwa kitanzi, sisi ni kusoma kwa njia ya kamusi file, 61 00:03:25,000 --> 00:03:26,965 na sisi ni kutumia katika fgetc. 62 00:03:26,965 --> 00:03:30,360 Hivyo fgetc ni kwenda kunyakua moja tabia kutoka file. 63 00:03:30,360 --> 00:03:33,430 Sisi ni kwenda kuendelea grabbing wahusika wakati sisi si kufikia 64 00:03:33,430 --> 00:03:37,540 mwisho wa file, hivyo kuna kesi mbili sisi haja ya kushughulikia. 65 00:03:37,540 --> 00:03:41,640 kwanza, kama tabia alikuwa si line mpya, hivyo sisi kujua kama ilikuwa mpya 66 00:03:41,640 --> 00:03:44,480 line, kisha sisi ni juu ya kuendelea na neno jipya. 67 00:03:44,480 --> 00:03:49,300 Lakini kuchukua haikuwa line mpya, kisha hapa, tunataka kufikiri 68 00:03:49,300 --> 00:03:52,440 index tunakwenda index katika katika Watoto safu kwamba 69 00:03:52,440 --> 00:03:53,890 sisi inaonekana katika kabla ya. 70 00:03:53,890 --> 00:03:57,950 >> Hivyo kama nilivyosema hapo kabla, tunahitaji kesi maalum apostrophe. 71 00:03:57,950 --> 00:04:01,040 Taarifa sisi ni kutumia operator ternary hapa, hivyo sisi ni kwenda kusoma 72 00:04:01,040 --> 00:04:05,500 hii kama tabia ya sisi kusoma katika mara apostrophe, basi tunakwenda 73 00:04:05,500 --> 00:04:11,740 kuweka index sawa na alfabeti minus 1, ambayo itakuwa index 26. 74 00:04:11,740 --> 00:04:15,190 Mwingine, kama siyo apostrophe, kisha tunakwenda kuweka index 75 00:04:15,190 --> 00:04:17,820 sawa na c minus a. 76 00:04:17,820 --> 00:04:23,090 Basi kumbuka nyuma kutoka p seti ya awali, c minus a ni kwenda kutupa 77 00:04:23,090 --> 00:04:27,470 nafasi herufi ya c, hivyo kama c ni barua A, dhamira hii ya 78 00:04:27,470 --> 00:04:28,770 kutupa index sifuri. 79 00:04:28,770 --> 00:04:32,180 Kwa barua B, ingekuwa kutoa sisi index 1, na kadhalika. 80 00:04:32,180 --> 00:04:37,070 >> Hivyo hii inatupa index katika Watoto safu kwamba tunataka. 81 00:04:37,070 --> 00:04:42,540 Sasa, kama ripoti hii kwa sasa ni null katika Watoto safu, hiyo ina maana kwamba 82 00:04:42,540 --> 00:04:47,470 node haina sasa zipo kutoka njia hiyo, hivyo tunahitaji kutenga 83 00:04:47,470 --> 00:04:49,220 node kwa njia hiyo. 84 00:04:49,220 --> 00:04:50,610 Hiyo ni nini sisi kufanya hapa. 85 00:04:50,610 --> 00:04:54,650 Hivyo sisi ni kwenda, tena, matumizi Calloc kazi ili hatuna 86 00:04:54,650 --> 00:05:00,130 kwa sifuri nje ya kuyatumia, na sisi, tena, haja ya kuangalia kwamba Calloc 87 00:05:00,130 --> 00:05:01,300 hakuwa na kushindwa. 88 00:05:01,300 --> 00:05:04,760 Kama Calloc hakuwa kushindwa, basi tunahitaji ipakuliwe kila kitu, karibu yetu 89 00:05:04,760 --> 00:05:06,880 kamusi, na kurudi uongo. 90 00:05:06,880 --> 00:05:14,110 >> Hivyo kudhani kuwa hakuwa na kushindwa, kisha itajenga mtoto mpya kwa ajili yetu, 91 00:05:14,110 --> 00:05:16,000 na kisha tutakwenda kwa mtoto. 92 00:05:16,000 --> 00:05:19,030 Mshale yetu iterate chini ya kwamba mtoto. 93 00:05:19,030 --> 00:05:23,390 Sasa, kama hii ilikuwa si null kwa kuanzia, kisha mshale unaweza tu iterate 94 00:05:23,390 --> 00:05:26,650 chini ya kwamba mtoto bila ya kweli ya kuwa na kutenga kitu chochote. 95 00:05:26,650 --> 00:05:30,790 Hii ni kesi ambapo sisi kwanza kilichotokea kutenga neno paka, na 96 00:05:30,790 --> 00:05:34,390 hiyo ina maana wakati sisi kwenda kutenga janga, hatuna haja ya kuunda 97 00:05:34,390 --> 00:05:35,720 nodes kwa C-A-T tena. 98 00:05:35,720 --> 00:05:37,620 Wao tayari zipo. 99 00:05:37,620 --> 00:05:40,140 >> OK, hivyo ni nini Else hii? 100 00:05:40,140 --> 00:05:44,600 Hii ni hali ambapo c mara backslash n, ambapo c alikuwa mstari mpya. 101 00:05:44,600 --> 00:05:47,780 Hii ina maana kwamba sisi kuwa na mafanikio kukamilika neno. 102 00:05:47,780 --> 00:05:51,020 Sasa, je, tunataka kufanya wakati sisi mafanikio ya kumaliza neno? 103 00:05:51,020 --> 00:05:55,250 Tunakwenda kutumia uwanja hii neno ndani ya Struct yetu nodi. 104 00:05:55,250 --> 00:06:00,570 >> Tunataka kuweka kwamba kwa kweli, ili inaonyesha kwamba node hii inaonyesha 105 00:06:00,570 --> 00:06:03,320 mafanikio neno neno halisi. 106 00:06:03,320 --> 00:06:05,050 Sasa, kuweka kwamba kwa kweli. 107 00:06:05,050 --> 00:06:09,210 Tunataka upya mshale yetu kwa uhakika mwanzo wa Trie tena. 108 00:06:09,210 --> 00:06:13,510 Na hatimaye, nyongeza kamusi yetu ukubwa tangu sisi kupatikana neno mwingine. 109 00:06:13,510 --> 00:06:16,450 >> Haki ya wote, hivyo sisi ni kwenda kuendelea kufanya kwamba, kusoma katika tabia kwa 110 00:06:16,450 --> 00:06:21,960 tabia ya, ujenzi wa nodes mpya katika Trie yetu na kwa kila neno katika 111 00:06:21,960 --> 00:06:26,810 kamusi, mpaka sisi hatimaye kufikia c sawa na EOF, katika kesi ambayo, sisi kuvunja 112 00:06:26,810 --> 00:06:28,100 nje ya faili. 113 00:06:28,100 --> 00:06:31,110 Sasa, kuna mambo mawili chini ya ambayo sisi tupate kuwa hit EOF. 114 00:06:31,110 --> 00:06:35,680 kwanza ni kama kulikuwa na makosa kusoma kutoka file, hivyo kama kulikuwa na 115 00:06:35,680 --> 00:06:39,280 makosa, tunahitaji kufanya kawaida kupakua kila kitu, karibu faili, 116 00:06:39,280 --> 00:06:40,520 kurudi uongo. 117 00:06:40,520 --> 00:06:43,870 Kutokana kulikuwa na si kosa, kwamba tu ina maana sisi kweli hit mwisho wa 118 00:06:43,870 --> 00:06:47,820 file, katika kesi ambayo, sisi karibu faili na kurudi kweli tangu sisi 119 00:06:47,820 --> 00:06:51,010 mafanikio kubeba kamusi ndani ya Trie yetu. 120 00:06:51,010 --> 00:06:54,240 >> Yote ya haki, hivyo sasa hebu kuangalia nje Check. 121 00:06:54,240 --> 00:06:58,780 Kuangalia Check kazi, tunaona kwamba Check ni kwenda na kurudi bool. 122 00:06:58,780 --> 00:07:03,740 Kuirudisha kweli kama neno hili ni kupitishwa ni katika Trie yetu. 123 00:07:03,740 --> 00:07:06,170 Kuirudisha uongo vinginevyo. 124 00:07:06,170 --> 00:07:10,110 >> Hivyo ni jinsi sisi ni kwenda kuamua kama neno hili ni katika Trie yetu? 125 00:07:10,110 --> 00:07:14,270 Tunaona hapa kwamba, kama kabla, tunakwenda kutumia mshale iterate 126 00:07:14,270 --> 00:07:16,010 kupitia Trie yetu. 127 00:07:16,010 --> 00:07:20,650 Sasa, hapa, tunakwenda iterate juu ya neno yetu yote. 128 00:07:20,650 --> 00:07:24,680 Hivyo iterating juu ya neno sisi ni kupita, tunakwenda kuamua 129 00:07:24,680 --> 00:07:29,280 index katika Watoto safu kwamba sambamba na neno bracket i. 130 00:07:29,280 --> 00:07:34,150 Hivyo hii ni kwenda kuangalia hasa kama Mzigo, ambapo kama neno bracket i ni 131 00:07:34,150 --> 00:07:38,110 apostrophe, basi tunataka kutumia index alfabeti minus 1 kwa sababu sisi kuamua 132 00:07:38,110 --> 00:07:41,160 kwamba ni wapi tunakwenda kuhifadhi apostrophes. 133 00:07:41,160 --> 00:07:44,440 >> Mwingine tunakwenda kutumia tolower neno bracket i. 134 00:07:44,440 --> 00:07:48,270 Basi kumbuka neno ambayo yanaweza kuwa na holela mtaji, na hivyo sisi 135 00:07:48,270 --> 00:07:51,590 unataka kuhakikisha kwamba sisi ni kutumia toleo lowercase ya mambo. 136 00:07:51,590 --> 00:07:55,300 Na kisha Ondoa na kwamba lowercase a kwa mara nyingine tena, kutupa 137 00:07:55,300 --> 00:07:57,940 nafasi herufi ya kwamba tabia. 138 00:07:57,940 --> 00:08:01,740 Ili kwenda kuwa orodha yetu ndani ya Watoto safu. 139 00:08:01,740 --> 00:08:06,480 >> Na sasa, kama kwamba index katika Watoto safu ni null, hiyo ina maana sisi 140 00:08:06,480 --> 00:08:09,050 haiwezi kuendelea iterating chini Trie yetu. 141 00:08:09,050 --> 00:08:13,320 Kama hiyo kesi, neno hili hawawezi uwezekano wa kuwa katika Trie yetu, kwani kama ni 142 00:08:13,320 --> 00:08:18,000 walikuwa, ambayo ina maana kutakuwa na njia chini ya neno hilo, na wewe ungekuwa 143 00:08:18,000 --> 00:08:19,350 kamwe kukutana null. 144 00:08:19,350 --> 00:08:21,910 Hivyo kukutana null, sisi kurudi uongo. 145 00:08:21,910 --> 00:08:23,810 neno ni si katika kamusi. 146 00:08:23,810 --> 00:08:28,200 Kama si null, kisha tunakwenda kuendelea iterating, hivyo tunakwenda 147 00:08:28,200 --> 00:08:33,150 update mshale yetu kwa uhakika na kwamba node hasa katika kwamba index. 148 00:08:33,150 --> 00:08:36,659 >> Kwa hiyo sisi kuendelea kufanya kwamba katika neno nzima. 149 00:08:36,659 --> 00:08:40,630 Kutokana sisi kamwe hit null, kwamba njia tulikuwa na uwezo wa kupata njia nzima 150 00:08:40,630 --> 00:08:44,840 duniani na kutafuta node katika Trie yetu, lakini sisi siyo kabisa kufanyika bado. 151 00:08:44,840 --> 00:08:46,350 Hatutaki tu kurudi kweli. 152 00:08:46,350 --> 00:08:51,400 Tunataka kurudi mshale makosa neno tangu, kumbuka tena, kama paka ni si 153 00:08:51,400 --> 00:08:55,140 katika kamusi yetu na janga ni, basi sisi mafanikio kupata njia 154 00:08:55,140 --> 00:08:59,810 neno paka, lakini mshale neno itakuwa uongo na si kweli. 155 00:08:59,810 --> 00:09:04,990 Hivyo sisi kurudi mshale neno zinaonyesha kama node hii ni kweli neno, 156 00:09:04,990 --> 00:09:06,530 na hiyo ni kwa ajili ya kuangalia. 157 00:09:06,530 --> 00:09:08,310 >> Hivyo hebu angalia nje Size. 158 00:09:08,310 --> 00:09:11,410 Hivyo kawaida ni kwenda kuwa pretty rahisi tangu, kumbuka katika Load, sisi ni 159 00:09:11,410 --> 00:09:15,480 incrementing kamusi kawaida kwa ajili ya kila neno kwamba sisi kukutana. 160 00:09:15,480 --> 00:09:20,820 Hivyo ukubwa ni kwenda tu kurudi kamusi kawaida, na hiyo ni yake. 161 00:09:20,820 --> 00:09:24,650 >> Haki ya wote, hivyo mwisho, tuna ipakuliwe. 162 00:09:24,650 --> 00:09:29,050 Hivyo ipakuliwe, sisi ni kwenda kutumia kazi kujirudia kwa kweli kufanya yote 163 00:09:29,050 --> 00:09:33,390 ya kazi kwa ajili yetu, hivyo kazi yetu ni kwenda kuitwa mpakuzi. 164 00:09:33,390 --> 00:09:35,830 Je, ni mpakuzi kwenda kufanya nini? 165 00:09:35,830 --> 00:09:40,640 Tunaona hapa kwamba mpakuzi ni kwenda iterate juu ya yote ya watoto katika 166 00:09:40,640 --> 00:09:45,810 node fulani, na kama mtoto node ni si null, kisha tunakwenda 167 00:09:45,810 --> 00:09:47,760 kupakua node mtoto. 168 00:09:47,760 --> 00:09:52,070 >> Hivyo hii ni kwenda recursively kupakua watoto wetu wote. 169 00:09:52,070 --> 00:09:55,140 Mara baada ya sisi ni kuhakikisha kwamba watoto wetu wote wamekuwa unloaded, basi sisi 170 00:09:55,140 --> 00:09:58,830 inaweza bure sisi wenyewe, ili kupakua wenyewe. 171 00:09:58,830 --> 00:10:04,550 Hivyo hii itakuwa recursively kupakua nzima Trie, na kisha mara moja kwamba 172 00:10:04,550 --> 00:10:06,910 kufanyika, tunaweza tu kurudi kweli. 173 00:10:06,910 --> 00:10:09,770 Ipakuliwe hawezi kushindwa, sisi ni tu kumkomboa mambo. 174 00:10:09,770 --> 00:10:12,985 Hivyo mara moja sisi ni kosa kumkomboa kila kitu, kurudi kweli. 175 00:10:12,985 --> 00:10:14,380 Na hiyo ni yake. 176 00:10:14,380 --> 00:10:16,792 Jina langu ni Rob, na hii mara [inaudible]. 177 00:10:16,792 --> 00:10:21,888