1 00:00:00,000 --> 00:00:12,350 >> [Daqq tal-mużika] 2 00:00:12,350 --> 00:00:13,050 >> ROB BOWDEN: Hi. 3 00:00:13,050 --> 00:00:13,640 Jien Rob. 4 00:00:13,640 --> 00:00:16,210 U ejja din is-soluzzjoni out. 5 00:00:16,210 --> 00:00:20,070 Allura hawnhekk aħna qed tmur biex jimplimentaw tabella ġenerali. 6 00:00:20,070 --> 00:00:24,090 Naraw li l-node Istituzzjonjijiet ta 'tagħna tabella hija ser teżamina bħal dan. 7 00:00:24,090 --> 00:00:28,710 Allura li għaddej biex ikollhom kelma char firxa ta 'daqs TUL + 1. 8 00:00:28,710 --> 00:00:32,259 Tinsiex l + 1, peress li l-massimu kelma fid-dizzjunarju huwa 45 9 00:00:32,259 --> 00:00:33,130 karattri. 10 00:00:33,130 --> 00:00:37,070 U allura aħna qed tmur għall-bżonn waħda extra karattru għall-zero backslash. 11 00:00:37,070 --> 00:00:40,870 >> U mbagħad hashtable tagħna f'kull barmil se taħżen 12 00:00:40,870 --> 00:00:42,320 lista marbuta ta 'nodes. 13 00:00:42,320 --> 00:00:44,420 Aħna mhux qed jagħmlu lineari probing hawn. 14 00:00:44,420 --> 00:00:48,430 U dan sabiex link għall-ieħor element fil-barmil, għandna bżonn 15 00:00:48,430 --> 00:00:50,390 node Struct * jmiss. 16 00:00:50,390 --> 00:00:51,110 OK. 17 00:00:51,110 --> 00:00:53,090 Allura dan huwa dak node Dehra. 18 00:00:53,090 --> 00:00:56,180 >> Issa hawnhekk huwa d-dikjarazzjoni ta hashtable tagħna. 19 00:00:56,180 --> 00:00:59,640 Huwa ser ikollhom 16834 bramel. 20 00:00:59,640 --> 00:01:01,910 Imma dak in-numru ma verament kwistjoni. 21 00:01:01,910 --> 00:01:05,450 U fl-aħħarnett, aħna qed tmur biex ikollhom l- globali daqs hashtable varjabbli, li 22 00:01:05,450 --> 00:01:07,000 se jibda off bħala zero. 23 00:01:07,000 --> 00:01:10,760 U li għaddej biex iżommu kont ta 'kif ħafna kliem huma fil-dizzjunarju tagħna. 24 00:01:10,760 --> 00:01:13,710 >> Mela ejja tagħti ħarsa lejn tagħbija. 25 00:01:13,710 --> 00:01:16,390 Avviż li tagħbija, dan jirritorna a bool. 26 00:01:16,390 --> 00:01:20,530 Inti tirritorna veru jekk kien b'suċċess mgħobbija, u falza mod ieħor. 27 00:01:20,530 --> 00:01:23,990 U li tieħu char dizzjunarju * const, li hija l-dizzjunarju 28 00:01:23,990 --> 00:01:25,280 li aħna rridu li tiftaħ. 29 00:01:25,280 --> 00:01:27,170 Allura dak hu l-ewwel ħaġa aħna qed tmur biex tagħmel. 30 00:01:27,170 --> 00:01:29,500 >> Aħna ser fopen l- dizzjunarju għall-qari. 31 00:01:29,500 --> 00:01:31,680 U aħna qed tmur biex ikollhom jagħmlu ċert li hija rnexxielha. 32 00:01:31,680 --> 00:01:35,920 Mela jekk huwa lura NULL, allura aħna ma miftuħa b'suċċess-dizzjunarju. 33 00:01:35,920 --> 00:01:37,440 U għandna bżonn li jirritornaw falza. 34 00:01:37,440 --> 00:01:41,580 Iżda jekk wieħed jassumi li għamlet b'suċċess miftuħa, allura aħna trid taqra l- 35 00:01:41,580 --> 00:01:42,400 dizzjunarju. 36 00:01:42,400 --> 00:01:46,450 Sabiex iżommu looping sakemm insibu xi raġuni għal break out ta 'dan loop, 37 00:01:46,450 --> 00:01:47,570 li aħna ser tara. 38 00:01:47,570 --> 00:01:48,920 Sabiex iżommu looping. 39 00:01:48,920 --> 00:01:51,780 >> U issa aħna qed tmur biex malloc node wieħed. 40 00:01:51,780 --> 00:01:54,020 U ovvjament għandna bżonn għall-arja erġa 'ċċekkja. 41 00:01:54,020 --> 00:01:58,680 Mela jekk mallocing ma tirnexxi, allura irridu li jħottu kwalunkwe node li aħna 42 00:01:58,680 --> 00:02:02,590 ġara malloc qabel, tagħlaq il- dizzjunarju u r-ritorn foloz. 43 00:02:02,590 --> 00:02:06,830 Iżda jinjora li, jekk wieħed jassumi aħna irnexxielu, allura irridu li jużaw fscanf 44 00:02:06,830 --> 00:02:12,400 biex jaqraw kelma waħda minn tagħna dizzjunarju fis node tagħna. 45 00:02:12,400 --> 00:02:17,940 Mela ftakar li d-dħul> kelma hija l-char buffer kelma ta 'daqs LENGHTH + 1 46 00:02:17,940 --> 00:02:20,300 li aħna qed tmur biex jaħżnu l-kelma pulzieri 47 00:02:20,300 --> 00:02:25,070 >> Allura fscanf se jirritorna 1, sakemm kif kien kapaċi b'suċċess 48 00:02:25,070 --> 00:02:26,750 aqra kelma mill-fajl. 49 00:02:26,750 --> 00:02:30,460 Jekk la l-iżball iseħħ, jew aħna jilħqu t-tmiem tal-file, 50 00:02:30,460 --> 00:02:31,950 mhux se terġa 'lura 1. 51 00:02:31,950 --> 00:02:35,180 F'liema każ ma ritorn 1, aħna qed finalment se break out ta ' 52 00:02:35,180 --> 00:02:37,280 dan loop waqt. 53 00:02:37,280 --> 00:02:42,770 Allura naraw li ladarba aħna rnexxielna aqra kelma in 54 00:02:42,770 --> 00:02:48,270 dħul> kelma, allura aħna qed tmur biex dak kelma li jużaw funzjoni hash tagħna. 55 00:02:48,270 --> 00:02:49,580 >> Ejja tagħti ħarsa lejn il-funzjoni hash. 56 00:02:49,580 --> 00:02:52,430 57 00:02:52,430 --> 00:02:55,610 Allura inti ma verament bżonn biex jifhmu dan. 58 00:02:55,610 --> 00:02:59,460 U fil-fatt aħna biss jinġibed dan hash jiffunzjonaw mill-internet. 59 00:02:59,460 --> 00:03:04,010 L-unika ħaġa li għandek bżonn biex jirrikonoxxu hija li dan jieħu const char * kelma. 60 00:03:04,010 --> 00:03:08,960 Allura huwa tieħu string bħala input, u jirritorna int mhux iffirmat bħala output. 61 00:03:08,960 --> 00:03:12,360 Hekk li kollox funzjoni hash, huwa jieħu fil input u tagħtik 62 00:03:12,360 --> 00:03:14,490 indiċi fil-hashtable. 63 00:03:14,490 --> 00:03:18,530 >> Avviż li aħna qed moding mill NUM_BUCKETS, hekk li l-valur lura 64 00:03:18,530 --> 00:03:21,730 attwalment huwa indiċi fil-hashtable u ma indiċi lil hinn mill- 65 00:03:21,730 --> 00:03:24,320 limiti ta 'l-array. 66 00:03:24,320 --> 00:03:28,060 Allura peress li funzjoni, aħna qed tmur biex hash-kelma li naqraw l- 67 00:03:28,060 --> 00:03:29,390 dizzjunarju. 68 00:03:29,390 --> 00:03:31,700 U allura aħna qed tmur għall-użu li hash li daħħal il- 69 00:03:31,700 --> 00:03:33,750 dħul fl-hashtable. 70 00:03:33,750 --> 00:03:38,520 >> Hash issa hashtable hija l-kurrent marbuta lista fit-tabella. 71 00:03:38,520 --> 00:03:41,410 U huwa ferm possibbli li huwa biss NULL. 72 00:03:41,410 --> 00:03:44,960 Aħna rridu li daħħal id-dħul tagħna fl- bidu ta 'din il-lista marbuta. 73 00:03:44,960 --> 00:03:48,600 U hekk aħna qed tmur biex ikollhom attwali tagħna punt ta 'dħul għal dak l-hashtable 74 00:03:48,600 --> 00:03:50,380 bħalissa punti li. 75 00:03:50,380 --> 00:03:53,310 U allura aħna qed tmur biex jaħżnu, fil-hashtable fil- 76 00:03:53,310 --> 00:03:55,350 hash, l-entrata attwali. 77 00:03:55,350 --> 00:03:59,320 Allura dawn iż-żewġ linji b'suċċess daħħal id-dħul fil-bidu tal- 78 00:03:59,320 --> 00:04:02,260 lista marbuta f'dak l-indiċi fil-hashtable. 79 00:04:02,260 --> 00:04:04,900 >> Ladarba aħna qed isir ma 'dan, nafu li sibna kelma oħra fil- 80 00:04:04,900 --> 00:04:07,790 dizzjunarju, u aħna inkrement darb'oħra. 81 00:04:07,790 --> 00:04:13,960 Allura aħna iżommu tagħmel li sakemm fscanf finalment lura xi ħaġa non-1 fi 82 00:04:13,960 --> 00:04:16,950 li punt ftakar li għandna bżonn biex ħielsa dħul. 83 00:04:16,950 --> 00:04:19,459 Allura up here we malloced dħul. 84 00:04:19,459 --> 00:04:21,329 U aħna ppruvaw biex taqra xi ħaġa mill-dizzjunarju. 85 00:04:21,329 --> 00:04:23,910 U aħna ma taqra b'suċċess xi ħaġa mill-dizzjunarju, fil- 86 00:04:23,910 --> 00:04:26,650 f'liema każ għandna bżonn biex ħielsa-dħul li aħna qatt ma attwalment tqiegħed fil- 87 00:04:26,650 --> 00:04:29,140 hashtable, u finalment break. 88 00:04:29,140 --> 00:04:32,750 >> Ladarba aħna break out jeħtieġ li naraw, ukoll, aħna ma break out għaliex hemm 89 00:04:32,750 --> 00:04:34,360 kien żball qari mill-fajl? 90 00:04:34,360 --> 00:04:37,120 Jew ma we break out għaliex aħna laħqu t-tmiem tal-fajl? 91 00:04:37,120 --> 00:04:39,480 Jekk kien hemm żball, imbagħad irridu li jirritornaw falza. 92 00:04:39,480 --> 00:04:40,930 Minħabba tagħbija ma rnexxilhomx. 93 00:04:40,930 --> 00:04:43,890 U fil-proċess irridu li jħottu il-kliem kollha li naqraw fil-, u 94 00:04:43,890 --> 00:04:45,670 jagħlaq il-fajl dizzjunarju. 95 00:04:45,670 --> 00:04:48,740 >> Jekk wieħed jassumi aħna ma tirnexxi, allura aħna biss xorta jeħtieġ li tagħlaq il-dizzjunarju 96 00:04:48,740 --> 00:04:53,040 fajl, u finalment jirritorna veru peress li aħna mgħobbija b'suċċess-dizzjunarju. 97 00:04:53,040 --> 00:04:54,420 U li hu għal tagħbija. 98 00:04:54,420 --> 00:04:59,020 Allura issa check, mogħtija hashtable mgħobbija, se teżamina bħal dan. 99 00:04:59,020 --> 00:05:03,140 Sabiex jiċċekkjaw, huwa jirritorna bool, li hija ser tindika jekk l-għadda 100 00:05:03,140 --> 00:05:07,530 fil char * kelma, jekk il għaddiet fil string huwa dizzjunarju tagħna. 101 00:05:07,530 --> 00:05:09,890 Hekk jekk huwa fl-dizzjunarju, jekk dan ikun fl hashtable tagħna, 102 00:05:09,890 --> 00:05:11,170 aħna se terġa 'lura veru. 103 00:05:11,170 --> 00:05:13,380 U jekk mhuwiex, aħna se terġa 'lura falza. 104 00:05:13,380 --> 00:05:17,740 >> Minħabba dan għadda fil-kelma, aħna qed ser hash-kelma. 105 00:05:17,740 --> 00:05:22,110 Issa ħaġa importanti li jirrikonoxxu hija li fit-tagħbija aħna kien jaf li kollha ta 'l- 106 00:05:22,110 --> 00:05:23,820 kliem aħna qed tmur biex tkun żgħira. 107 00:05:23,820 --> 00:05:25,820 Imma hawn aħna mhux qed hekk żgur. 108 00:05:25,820 --> 00:05:29,510 Jekk nieħdu ħarsa lejn funzjoni hash tagħna, funzjoni hash tagħna attwalment 109 00:05:29,510 --> 00:05:32,700 huwa casing inqas kull karattru tal-kelma. 110 00:05:32,700 --> 00:05:37,940 Allura irrispettivament mill-kapitalizzazzjoni ta ' kelma, funzjoni hash tagħna huwa r-ritorn 111 00:05:37,940 --> 00:05:42,270 l-istess indiċi għal kwalunkwe l- kapitalizzazzjoni huwa, kif kien ikun 112 00:05:42,270 --> 00:05:45,280 lura għal kollox lowercase verżjoni tal-kelma. 113 00:05:45,280 --> 00:05:46,600 Alright. 114 00:05:46,600 --> 00:05:49,790 C'est indiċi tagħna hija fil- hashtable għal din il-kelma. 115 00:05:49,790 --> 00:05:52,940 >> Issa dan għal loop se jtenni fuq il-lista marbuta 116 00:05:52,940 --> 00:05:55,000 li kienet f'dak l-indiċi. 117 00:05:55,000 --> 00:05:59,610 Allura avviż aħna initializing dħul għall-punt li l-indiċi. 118 00:05:59,610 --> 00:06:02,750 Aħna ser tkompli filwaqt li dħul! = NULL. 119 00:06:02,750 --> 00:06:07,770 U ftakar li taġġorna l-pointer fl-entrata tagħna marbuta lista = dħul> jmiss. 120 00:06:07,770 --> 00:06:14,400 Allura jkollhom punt tagħna entrata attwali biex il-punt li jmiss fil-lista marbuta. 121 00:06:14,400 --> 00:06:19,250 >> Allura għal kull entrata fil-lista marbuta, aħna qed tmur għall-użu strcasecmp. 122 00:06:19,250 --> 00:06:20,330 Mhuwiex strcomp. 123 00:06:20,330 --> 00:06:23,780 Minħabba darb'oħra, irridu tagħmel affarijiet każ insensitively. 124 00:06:23,780 --> 00:06:27,870 Allura aħna nużaw strcasecmp biex iqabblu l- kelma li kien mgħoddi permezz ta 'dan 125 00:06:27,870 --> 00:06:31,860 funzjoni kontra l-kelma li huwa f'din l-entrata. 126 00:06:31,860 --> 00:06:35,570 Jekk dan jirritorna żero, dan ifisser li kien hemm taqbila, f'liema każ rridu 127 00:06:35,570 --> 00:06:36,630 ritorn vera. 128 00:06:36,630 --> 00:06:39,590 Aħna b'suċċess sabet il- kelma hashtable tagħna. 129 00:06:39,590 --> 00:06:43,040 >> Jekk ma kienx hemm taqbila, allura aħna qed ser loop darb'oħra u ħarsa lejn il- 130 00:06:43,040 --> 00:06:43,990 dħul li jmiss. 131 00:06:43,990 --> 00:06:47,640 U aħna ser tkompli looping filwaqt li hemm iskrizzjonijiet f'din il-lista marbuta. 132 00:06:47,640 --> 00:06:50,160 X'jiġri jekk aħna break minn dan għal loop? 133 00:06:50,160 --> 00:06:55,110 Dan ifisser li aħna ma sabx ta 'dħul li mqabbla din il-kelma, f'liema każ 134 00:06:55,110 --> 00:07:00,220 nerġgħu lura falza li tindika li tagħna hashtable ma kinitx tinkludi din il-kelma. 135 00:07:00,220 --> 00:07:02,540 U li l-verifika. 136 00:07:02,540 --> 00:07:04,790 >> Mela ejja tagħti ħarsa lejn id-daqs. 137 00:07:04,790 --> 00:07:06,970 Issa daqs se tkun pjuttost sempliċi. 138 00:07:06,970 --> 00:07:11,080 Peress tiftakar fit-tagħbija, għal kull kelma sibna, aħna jiżdied globali 139 00:07:11,080 --> 00:07:12,880 daqs hashtable varjabbli. 140 00:07:12,880 --> 00:07:16,480 Allura l-funzjoni daqs huwa biss se li jirritornaw varjabbli globali. 141 00:07:16,480 --> 00:07:18,150 U thats it. 142 00:07:18,150 --> 00:07:22,300 >> Issa finalment, għandna bżonn li jħottu l- dizzjunarju ladarba kollox isir. 143 00:07:22,300 --> 00:07:25,340 Allura kif huma aħna se tagħmel dan? 144 00:07:25,340 --> 00:07:30,440 Dritt hawn aħna qed looping fuq bramel kollha tal-mejda tagħna. 145 00:07:30,440 --> 00:07:33,240 Allura hemm bramel NUM_BUCKETS. 146 00:07:33,240 --> 00:07:37,410 U għal kull lista marbuta tagħna hashtable, aħna qed tmur biex jiffurmaw ingassa 147 00:07:37,410 --> 00:07:41,070 l-intier tal-lista marbuta, ħelsien kull element. 148 00:07:41,070 --> 00:07:42,900 >> Issa għandna bżonn li tkun attenta. 149 00:07:42,900 --> 00:07:47,910 Allura hawnhekk għandna varjabbli temporanju thats ħażna l-pointer għall-ieħor 150 00:07:47,910 --> 00:07:49,730 element fil-lista marbuta. 151 00:07:49,730 --> 00:07:52,140 U allura aħna qed tmur għall-free l-element attwali. 152 00:07:52,140 --> 00:07:55,990 Għandna bżonn biex tkun ċert nagħmlu dan peress li aħna tista 'mhux biss ħielsa l-element attwali 153 00:07:55,990 --> 00:07:59,180 u mbagħad jippruvaw jaċċessaw l-pointer li jmiss, peress li ladarba konna meħlusa dan, 154 00:07:59,180 --> 00:08:00,870 il-memorja ssir invalida. 155 00:08:00,870 --> 00:08:04,990 >> Għalhekk għandna bżonn li jżommu madwar pointer biex l-element li jmiss, allura nistgħu ħielsa l- 156 00:08:04,990 --> 00:08:08,360 element attwali, u allura nistgħu taġġorna element attwali tagħna għall-punt li 157 00:08:08,360 --> 00:08:09,550 l-element li jmiss. 158 00:08:09,550 --> 00:08:12,800 Aħna ser loop filwaqt li hemm elementi f'din il-lista marbuta. 159 00:08:12,800 --> 00:08:15,620 Aħna ser tagħmel dan għal kulħadd marbuta listi fil-hashtable. 160 00:08:15,620 --> 00:08:19,460 U ladarba aħna qed isir ma 'dan, aħna ħadthom kompletament jinħattu l hashtable, u 161 00:08:19,460 --> 00:08:20,190 aħna qed isir. 162 00:08:20,190 --> 00:08:23,200 Allura huwa impossibbli għall jħottu li qatt ritorn foloz. 163 00:08:23,200 --> 00:08:26,470 U meta aħna qed isir, aħna biss ritorn vera. 164 00:08:26,470 --> 00:08:29,000 >> Ejjew nagħtu din is-soluzzjoni jipprova. 165 00:08:29,000 --> 00:08:33,070 Mela ejja tagħti ħarsa lejn dak tagħna node Struct se look like. 166 00:08:33,070 --> 00:08:36,220 Hawnhekk naraw aħna qed tmur biex ikollhom bool kelma u node Istituzzjonjijiet * tfal 167 00:08:36,220 --> 00:08:37,470 ALPHABET bracket. 168 00:08:37,470 --> 00:08:38,929 169 00:08:38,929 --> 00:08:42,020 Allura l-ewwel ħaġa li inti jista 'jkun mintix, għaliex huwa ALPHABET 170 00:08:42,020 --> 00:08:44,660 ed definita bħala 27? 171 00:08:44,660 --> 00:08:47,900 Ukoll, ftakar li aħna qed tmur għall-ħtieġa li għandu jittratta l-apostrophe. 172 00:08:47,900 --> 00:08:51,910 Allura li għaddej biex tkun kemmxejn ta ' Każ speċjali matul dan il-programm. 173 00:08:51,910 --> 00:08:54,710 >> Issa ftakar kif trie attwalment xogħlijiet. 174 00:08:54,710 --> 00:08:59,380 Ejja ngħidu aħna qed indiċjar-kelma "qtates." Imbagħad mill-għeruq ta 'trie, 175 00:08:59,380 --> 00:09:02,610 aħna qed tmur biex tħares lejn it-tfal array, u aħna qed tmur biex tħares lejn il- 176 00:09:02,610 --> 00:09:08,090 indiċi li tikkorrispondi għall-ittra C. Allura li se jiġu indiċjati 2. 177 00:09:08,090 --> 00:09:11,530 Allura peress li, li se agħtina node ġdid. 178 00:09:11,530 --> 00:09:13,820 U allura aħna ser jaħdmu minn dak node. 179 00:09:13,820 --> 00:09:17,770 >> Allura peress li node, aħna qed darb'oħra ser tħares lejn il-firxa tfal. 180 00:09:17,770 --> 00:09:22,110 U aħna qed tmur biex tħares lejn indiċi żero li jikkorrispondu għall-A fil-qtates. 181 00:09:22,110 --> 00:09:27,170 Mela allura aħna qed tmur biex tmur f'dak node, u minħabba li node aħna qed tmur 182 00:09:27,170 --> 00:09:31,090 li tħares lejn l-aħħar huwa tikkorrispondi li T. U jimxu fuq dak node, 183 00:09:31,090 --> 00:09:35,530 fl-aħħarnett, aħna għandna kompletament ħarsu permezz ta 'kelma tagħna "qattus." U issa bool 184 00:09:35,530 --> 00:09:40,960 kelma suppost jindikaw jekk din il-kelma mogħtija hija attwalment kelma. 185 00:09:40,960 --> 00:09:43,470 >> Allura għaliex għandna bżonn li każ speċjali? 186 00:09:43,470 --> 00:09:47,700 Ukoll dak tal-kelma "katastrofi" huwa dizzjunarju tagħna, iżda l- 187 00:09:47,700 --> 00:09:50,150 kelma "qattus" hija le? 188 00:09:50,150 --> 00:09:54,580 Hekk u tfittex biex tara jekk il-kelma "qattus" huwa dizzjunarju tagħna, aħna qed 189 00:09:54,580 --> 00:09:59,970 ser tfittex b'suċċess permezz l-indiċi C-A-T fir-reġjun node. 190 00:09:59,970 --> 00:10:04,290 Imma dak li biss minħabba katastrofi ġara biex joħolqu lymph fuq il-mod 191 00:10:04,290 --> 00:10:07,190 minn C-A-T, it-triq kollha li l-aħħar tal-kelma. 192 00:10:07,190 --> 00:10:12,020 Allura bool kelma hija użata biex tindika jekk dan il-post partikolari 193 00:10:12,020 --> 00:10:14,310 fil-fatt jindika kelma. 194 00:10:14,310 --> 00:10:15,140 >> Kull dritt. 195 00:10:15,140 --> 00:10:19,310 Allura issa li nafu dak li trie huwa ser look like, ejja nħarsu lejn l- 196 00:10:19,310 --> 00:10:20,730 tagħbija funzjoni. 197 00:10:20,730 --> 00:10:24,610 Allura tagħbija se jirritornaw bool għal kemm aħna b'suċċess jew 198 00:10:24,610 --> 00:10:26,720 mingħajr suċċess mgħobbija-dizzjunarju. 199 00:10:26,720 --> 00:10:30,460 U dan se jkun l-dizzjunarju li rridu tagħbija. 200 00:10:30,460 --> 00:10:33,930 >> Allura l-ewwel ħaġa li aħna qed tagħmel huwa miftuħ up li dizzjunarju għall-qari. 201 00:10:33,930 --> 00:10:36,160 U rridu niżguraw aħna ma jonqsu. 202 00:10:36,160 --> 00:10:39,580 Allura jekk il-dizzjunarju ma kienx miftuħa b'suċċess, din se terġa 'lura 203 00:10:39,580 --> 00:10:42,400 null, f'liema każ aħna qed ser jirritornaw falza. 204 00:10:42,400 --> 00:10:47,230 Iżda jekk wieħed jassumi li dan b'suċċess miftuħa, allura nistgħu fil-fatt taqra 205 00:10:47,230 --> 00:10:48,220 permezz tal-dizzjunarju. 206 00:10:48,220 --> 00:10:50,880 >> Allura l-ewwel ħaġa li aħna qed tmur biex trid tagħmel hu li għandna dan 207 00:10:50,880 --> 00:10:52,500 root varjabbli globali. 208 00:10:52,500 --> 00:10:56,190 Issa għeruq huwa se tkun node *. 209 00:10:56,190 --> 00:10:59,760 Hu l-quċċata ta 'trie tagħna li aħna qed ser jiġu mtennija permezz. 210 00:10:59,760 --> 00:11:02,660 Allura l-ewwel ħaġa li aħna qed tmur li trid tagħmel hu li jallokaw 211 00:11:02,660 --> 00:11:04,140 memorja għall-għeruq tagħna. 212 00:11:04,140 --> 00:11:07,980 Avviż li aħna qed tuża l-calloc funzjoni, li huwa bażikament l-istess 213 00:11:07,980 --> 00:11:11,500 bħala l-funzjoni malloc, ħlief huwa garantit li jirritornaw xi ħaġa li hija 214 00:11:11,500 --> 00:11:13,180 kompletament zeroed out. 215 00:11:13,180 --> 00:11:17,290 Allura jekk aħna użati malloc, għandna bżonn biex jmorru kollha permezz ta 'l-pointers fil tagħna 216 00:11:17,290 --> 00:11:20,160 node, u kun żgur li dawn qed kollha null. 217 00:11:20,160 --> 00:11:22,710 Allura calloc se tagħmel dan għalina. 218 00:11:22,710 --> 00:11:26,330 >> Issa bħad malloc, hemm bżonn li nagħmlu żgur li l-allokazzjoni kien effettivament 219 00:11:26,330 --> 00:11:27,520 suċċess. 220 00:11:27,520 --> 00:11:29,990 Jekk dan lura null, allura aħna bżonn li tagħlaq jew dizzjunarju 221 00:11:29,990 --> 00:11:32,100 fajl u r-ritorn foloz. 222 00:11:32,100 --> 00:11:36,835 Allura jekk wieħed jassumi li allokazzjoni kienet suċċess, aħna qed tmur biex tuża node * 223 00:11:36,835 --> 00:11:40,270 cursor li jtenni permezz trie tagħna. 224 00:11:40,270 --> 00:11:43,890 Allura għeruq tagħna qatt se jibdlu, imma aħna qed tmur biex jużaw cursor biex 225 00:11:43,890 --> 00:11:47,875 fil-fatt imorru minn node biex node. 226 00:11:47,875 --> 00:11:50,940 >> Allura f'dan għat loop aħna qed qari permezz tal-fajl dizzjunarju. 227 00:11:50,940 --> 00:11:53,670 U aħna qed tuża fgetc. 228 00:11:53,670 --> 00:11:56,290 Fgetc se grab wieħed karattru mill-fajl. 229 00:11:56,290 --> 00:11:59,370 Aħna ser tkompli ħtif karattri filwaqt li aħna ma jilħqu l- 230 00:11:59,370 --> 00:12:01,570 tmiem tal-file. 231 00:12:01,570 --> 00:12:03,480 >> Hemm żewġ każijiet għandna bżonn biex jimmaniġġaw. 232 00:12:03,480 --> 00:12:06,610 L-ewwel, jekk il-karattru ma kienx linja ġdida. 233 00:12:06,610 --> 00:12:10,450 Hekk nafu jekk kienx linja ġdida, allura aħna qed dwar li jimxu fuq kelma ġdida. 234 00:12:10,450 --> 00:12:15,240 Iżda jekk wieħed jassumi li ma kienx linja ġdida, allura hawn irridu insemmu l- 235 00:12:15,240 --> 00:12:18,380 indiċi aħna qed tmur għall-indiċi fi fil-firxa tfal li 236 00:12:18,380 --> 00:12:19,810 ħarisna lejn qabel. 237 00:12:19,810 --> 00:12:23,880 >> Allura, bħal I said qabel, għandna bżonn li każ speċjali tal-apostrophe. 238 00:12:23,880 --> 00:12:26,220 Avviż aħna qed tuża l-ternarji operatur hawn. 239 00:12:26,220 --> 00:12:29,580 Allura aħna qed tmur biex taqra dan bħala, jekk l-karattru naqraw fil kienet 240 00:12:29,580 --> 00:12:35,330 apostrophe, allura aħna qed tmur biex jistabbilixxu indiċi = "ALPHABET" -1, li se 241 00:12:35,330 --> 00:12:37,680 jkun l-indiċi 26. 242 00:12:37,680 --> 00:12:41,130 >> Else, jekk ma kienx apostrophe, hemm aħna qed tmur biex jistabbilixxu l-indiċi 243 00:12:41,130 --> 00:12:43,760 daqs c - a. 244 00:12:43,760 --> 00:12:49,030 Mela ftakar lura minn qabel kienu p-settijiet, c - a se tagħtina l- 245 00:12:49,030 --> 00:12:53,410 pożizzjoni alfabetika tal C. Mela jekk C hija l-ittra A, dan se 246 00:12:53,410 --> 00:12:54,700 agħtina indiċi żero. 247 00:12:54,700 --> 00:12:58,120 Għall-ittra B, se tagħti lilna l-indiċi 1, u l-bqija. 248 00:12:58,120 --> 00:13:03,010 >> Allura dan jagħtina l-indiċi fil- tfal array li rridu. 249 00:13:03,010 --> 00:13:08,890 Issa jekk dan l-indiċi bħalissa null it-tfal, li jfisser li node 250 00:13:08,890 --> 00:13:11,830 ma jeżistix bħalissa minn dik it-triq. 251 00:13:11,830 --> 00:13:15,160 Għalhekk għandna bżonn li jiġu allokati a node għal dik it-triq. 252 00:13:15,160 --> 00:13:16,550 Dak hu li aħna ser nagħmlu hawnhekk. 253 00:13:16,550 --> 00:13:20,690 >> Allura aħna qed tmur biex għal darb'oħra tuża l-calloc funzjoni, sabiex inkunu ma jkollhom 254 00:13:20,690 --> 00:13:22,880 żero l-pointers. 255 00:13:22,880 --> 00:13:27,240 U aħna napprovaw bżonn li jiċċekkja li calloc ma naqasx. 256 00:13:27,240 --> 00:13:30,700 Jekk calloc ma jonqsu, allura għandna bżonn li jħottu kollox, qrib tagħna 257 00:13:30,700 --> 00:13:32,820 dizzjunarju, u r-ritorn foloz. 258 00:13:32,820 --> 00:13:40,050 Allura jekk wieħed jassumi li ma ifallu, din se toħloq tifel ġdid għalina. 259 00:13:40,050 --> 00:13:41,930 U allura aħna se jmorru għal dak tat-tfal. 260 00:13:41,930 --> 00:13:44,960 Cursor tagħna se jtenni stabbiliti għal dak it-tifel. 261 00:13:44,960 --> 00:13:49,330 >> Issa jekk dan ma kienx null biex jibdew, allura l-cursor tista 'biss ittenni 262 00:13:49,330 --> 00:13:52,590 stabbiliti għal dak it-tifel mingħajr ma attwalment jkollu jalloka xejn. 263 00:13:52,590 --> 00:13:56,730 Dan huwa l-każ fejn aħna l-ewwel li ġara jallokaw il-kelma "qattus." U 264 00:13:56,730 --> 00:14:00,330 dan ifisser li meta immorru biex jallokaw "Katastrofi," aħna ma bżonn li jinħoloq 265 00:14:00,330 --> 00:14:01,680 nodes għal C-A-T mill-ġdid. 266 00:14:01,680 --> 00:14:04,830 Huma diġà jeżistu. 267 00:14:04,830 --> 00:14:06,080 >> X'inhu dan ieħor? 268 00:14:06,080 --> 00:14:10,480 Din hija l-kundizzjoni fejn c kienet backslash n, fejn c kienet linja ġdida. 269 00:14:10,480 --> 00:14:13,710 Dan ifisser li aħna rnexxielna temm kelma. 270 00:14:13,710 --> 00:14:16,860 Issa dak li rridu nagħmlu meta aħna temmew kelma? 271 00:14:16,860 --> 00:14:21,100 Aħna ser jużaw dan il-qasam kelma ġewwa tal node Struct tagħna. 272 00:14:21,100 --> 00:14:23,390 Aħna rridu li jistabbilixxu li biex veru. 273 00:14:23,390 --> 00:14:27,150 Allura li jindika li dan node jindika suċċess 274 00:14:27,150 --> 00:14:29,250 kelma, kelma attwali. 275 00:14:29,250 --> 00:14:30,940 >> Issa stabbilit li biex veru. 276 00:14:30,940 --> 00:14:35,150 Irridu reset cursor tagħna għall-punt għall-bidu tal-trie darb'oħra. 277 00:14:35,150 --> 00:14:40,160 U fl-aħħarnett, inkrement dizzjunarju tagħna daqs, peress li aħna sabu xogħol ieħor. 278 00:14:40,160 --> 00:14:43,230 Allura aħna qed tmur biex iżommu tagħmel dan, qari fil-karattru minn karattru, 279 00:14:43,230 --> 00:14:49,150 kostruzzjoni lymph ġodda fil trie tagħna u għal kull kelma fil-dizzjunarju, sakemm 280 00:14:49,150 --> 00:14:54,020 aħna finalment jilħqu C! = EOF, li fih każ aħna break out tal-fajl. 281 00:14:54,020 --> 00:14:57,050 >> Issa hemm żewġ każijiet taħt li aħna jista 'jkollha hit EOF. 282 00:14:57,050 --> 00:15:00,980 L-ewwel huwa jekk kien hemm żball qari mill-fajl. 283 00:15:00,980 --> 00:15:03,470 Allura jekk kien hemm żball, aħna bżonn tagħmel l-tipiċi. 284 00:15:03,470 --> 00:15:06,460 Jħottu kollox, qrib il-fajl, ritorn foloz. 285 00:15:06,460 --> 00:15:09,810 Jekk wieħed jassumi li ma kien hemm żball, dak ifisser biss għandna attwalment laqat il-aħħar ta ' 286 00:15:09,810 --> 00:15:13,750 il-fajl, f'liema każ, aħna qrib il- fajl u r-ritorn vera peress li aħna 287 00:15:13,750 --> 00:15:17,330 dizzjunarju mgħobbija b'suċċess fis trie tagħna. 288 00:15:17,330 --> 00:15:20,170 >> Allura issa ejja check out check. 289 00:15:20,170 --> 00:15:25,156 Ħarsa lejn il-funzjoni kontroll, naraw dak il-kontroll se jirritornaw bool. 290 00:15:25,156 --> 00:15:29,680 Dan jirritorna minnu jekk din il-kelma li huwa jiġu mgħoddija huwa trie tagħna. 291 00:15:29,680 --> 00:15:32,110 Dan jirritorna falza mod ieħor. 292 00:15:32,110 --> 00:15:36,050 Allura kif inti jiddeterminaw jekk din il-kelma hija fil trie tagħna? 293 00:15:36,050 --> 00:15:40,190 >> Naraw hawnhekk li, bħal qabel, aħna qed tmur biex jużaw cursor biex jtenni 294 00:15:40,190 --> 00:15:41,970 permezz trie tagħna. 295 00:15:41,970 --> 00:15:46,600 Issa hawnhekk aħna qed tmur biex jtenni fuq kelma tagħna kollu. 296 00:15:46,600 --> 00:15:50,620 Allura mtennija fuq il-kelma aħna passat, aħna qed tmur biex tiddetermina l- 297 00:15:50,620 --> 00:15:56,400 indiċi fil-firxa tfal li jikkorrispondi għall-kelma bracket I. Allura dan 298 00:15:56,400 --> 00:15:59,670 hija ser tfittex eżattament bħal tagħbija, fejn jekk kelma [i] 299 00:15:59,670 --> 00:16:03,310 huwa apostrophe, allura irridu tuża indiċi "ALPHABET" - 1. 300 00:16:03,310 --> 00:16:05,350 Għaliex aħna determinati li din huwa fejn aħna qed tmur biex jaħżnu 301 00:16:05,350 --> 00:16:07,100 apostrophes. 302 00:16:07,100 --> 00:16:11,780 >> Else aħna qed tmur biex tuża żewġ kelma t'isfel bracket I. Sabiex tiftakar din il-kelma tista ' 303 00:16:11,780 --> 00:16:13,920 jkollhom kapitalizzazzjoni arbitrarja. 304 00:16:13,920 --> 00:16:17,540 U hekk irridu niżguraw li aħna qed permezz ta 'verżjoni zghar ta' affarijiet. 305 00:16:17,540 --> 00:16:21,920 U mbagħad naqqas minn dak 'a' għal darba darb'oħra tagħtina l alfabetiku 306 00:16:21,920 --> 00:16:23,880 pożizzjoni ta 'dan il-karattru. 307 00:16:23,880 --> 00:16:27,680 Allura li għaddej biex tkun indiċi tagħna fil-firxa tfal. 308 00:16:27,680 --> 00:16:32,420 >> U issa jekk f'dak l-indiċi fil-tfal array huwa null, dan ifisser li aħna 309 00:16:32,420 --> 00:16:34,990 m'għadhomx jistgħu jkomplu jiġu mtennija down trie tagħna. 310 00:16:34,990 --> 00:16:38,870 Jekk dan huwa l-każ, din il-kelma ma tistax possibbilment fil trie tagħna. 311 00:16:38,870 --> 00:16:42,340 Peress li kieku kien, li kieku jfissirx ikun hemm passaġġ 312 00:16:42,340 --> 00:16:43,510 stabbiliti għal din il-kelma. 313 00:16:43,510 --> 00:16:45,290 U int qatt ser tiltaqa null. 314 00:16:45,290 --> 00:16:47,850 Allura jiltaqgħu null, nerġgħu lura falza. 315 00:16:47,850 --> 00:16:49,840 Il-kelma mhijiex fid-dizzjunarju. 316 00:16:49,840 --> 00:16:53,660 Jekk ma jkunx null, allura aħna qed se tkompli mtennija. 317 00:16:53,660 --> 00:16:57,220 >> Allura aħna qed tmur hemmhekk cursor għall-punt li dak partikulari 318 00:16:57,220 --> 00:16:59,760 node f'dak l-indiċi. 319 00:16:59,760 --> 00:17:03,150 Aħna iżommu tagħmel li matul il-kelma kollu, jekk wieħed jassumi 320 00:17:03,150 --> 00:17:03,950 aħna qatt hit null. 321 00:17:03,950 --> 00:17:07,220 Dan ifisser li aħna kienu kapaċi jiksbu permezz il-kelma kollu u jsibu 322 00:17:07,220 --> 00:17:08,920 a node fl jipprova tagħna. 323 00:17:08,920 --> 00:17:10,770 Iżda aħna mhux qed pjuttost isir s'issa. 324 00:17:10,770 --> 00:17:12,290 >> Aħna ma jridux biss jirritornaw veru. 325 00:17:12,290 --> 00:17:14,770 Aħna rridu li jirritornaw cursor> kelma. 326 00:17:14,770 --> 00:17:18,980 Peress li tiftakar darb'oħra, huwa "qattus" ma dizzjunarju tagħna, u "katastrofi" 327 00:17:18,980 --> 00:17:22,935 huwa, allura aħna se b'suċċess nikbru permezz tal-kelma "qattus." Iżda cursor 328 00:17:22,935 --> 00:17:25,760 kelma se tkun falza u mhux veru. 329 00:17:25,760 --> 00:17:30,930 Allura aħna ritorn kelma cursor biex jindikaw jekk dan node huwa attwalment kelma. 330 00:17:30,930 --> 00:17:32,470 U li huwa għal kontroll. 331 00:17:32,470 --> 00:17:34,250 >> Mela ejja check out daqs. 332 00:17:34,250 --> 00:17:37,350 Allura daqs se tkun pjuttost faċli peress li, ftakar fit-tagħbija, aħna qed 333 00:17:37,350 --> 00:17:41,430 inkrementazzjoni daqs dizzjunarju għal kull kelma li aħna jiltaqgħu. 334 00:17:41,430 --> 00:17:45,350 Allura daqs huwa biss se ritorn daqs dizzjunarju. 335 00:17:45,350 --> 00:17:47,390 U thats it. 336 00:17:47,390 --> 00:17:50,590 >> Allura fl-aħħar għandna jħottu. 337 00:17:50,590 --> 00:17:55,100 Allura jħottu, aħna qed tmur biex tuża funzjoni jirrikorri għall-fatt jagħmlu kollha 338 00:17:55,100 --> 00:17:56,530 tax-xogħol għalina. 339 00:17:56,530 --> 00:17:59,340 Allura funzjoni tagħna se jiġi msejjaħ unloader. 340 00:17:59,340 --> 00:18:01,650 X'inhu unloader se jagħmlu? 341 00:18:01,650 --> 00:18:06,580 Naraw hawnhekk li unloader se jtenni fuq kollha tat-tfal fil- 342 00:18:06,580 --> 00:18:08,410 dan node partikolari. 343 00:18:08,410 --> 00:18:11,750 U jekk il-node wild ma jkunx null, allura aħna qed tmur biex 344 00:18:11,750 --> 00:18:13,730 jħottu l-node tfal. 345 00:18:13,730 --> 00:18:18,010 >> Allura dan huwa inti recursively jħottu kollha tat-tfal tagħna. 346 00:18:18,010 --> 00:18:21,080 Ladarba aħna qed żgur li kollha tat-tfal tagħna ikunu mniżżla, allura aħna 347 00:18:21,080 --> 00:18:25,210 jistgħu ħielsa lilna nfusna, hekk jħottu nfusna. 348 00:18:25,210 --> 00:18:29,460 Dan se taħdem recursively jħottu l trie kollu. 349 00:18:29,460 --> 00:18:32,850 U mbagħad darba li isir, nistgħu biss ritorn vera. 350 00:18:32,850 --> 00:18:34,210 Jħottu ma tistax tonqos. 351 00:18:34,210 --> 00:18:35,710 Aħna biss ħelsien affarijiet. 352 00:18:35,710 --> 00:18:38,870 Allura ladarba aħna qed isir ħelsien kollox, ritorn vera. 353 00:18:38,870 --> 00:18:40,320 U thats it. 354 00:18:40,320 --> 00:18:41,080 Jisimni Rob. 355 00:18:41,080 --> 00:18:42,426 U dan kien speller. 356 00:18:42,426 --> 00:18:47,830 >> [Daqq tal-mużika]