1 00:00:00,000 --> 00:00:12,350 >> [Musika jotzen] 2 00:00:12,350 --> 00:00:13,050 >> ROB BOWDEN: Kaixo. 3 00:00:13,050 --> 00:00:13,640 Rob naiz. 4 00:00:13,640 --> 00:00:16,210 Eta dezagun irtenbide hau daudelarik. 5 00:00:16,210 --> 00:00:20,070 Beraz, hemen ari gara ezartzea joan taula orokor bat. 6 00:00:20,070 --> 00:00:24,090 Ikusten dugun egiturari gure nodo taula da itxura hau egingo. 7 00:00:24,090 --> 00:00:28,710 Beraz, char hitz bat izan da joan tamaina LUZERA + 1 array. 8 00:00:28,710 --> 00:00:32,259 Ez ahaztu du + 1, geroztik gehienezko hiztegian hitzari 45 da 9 00:00:32,259 --> 00:00:33,130 pertsonaiak. 10 00:00:33,130 --> 00:00:37,070 Eta gero ari gara bat estra behar du backslash zero da pertsonaia. 11 00:00:37,070 --> 00:00:40,870 >> Eta gero, gure bakoitzean hash ontzi da gordetzeko joan a 12 00:00:40,870 --> 00:00:42,320 lotuta nodo zerrenda. 13 00:00:42,320 --> 00:00:44,420 Ez gara lineala hemen probak egiten. 14 00:00:44,420 --> 00:00:48,430 Eta beraz, ordena hurrengo lotzen ontzi, elementu, bat behar dugu 15 00:00:48,430 --> 00:00:50,390 egitura nodo * hurrengo. 16 00:00:50,390 --> 00:00:51,110 Ados. 17 00:00:51,110 --> 00:00:53,090 Beraz, horrek zer nodo bat itxura da. 18 00:00:53,090 --> 00:00:56,180 >> Orain hemen adierazpena da gure hash of. 19 00:00:56,180 --> 00:00:59,640 Honez 16.834 kuboak izan. 20 00:00:59,640 --> 00:01:01,910 Baina zenbaki hori ez da benetan axola. 21 00:01:01,910 --> 00:01:05,450 Eta, azkenik, ari gara joan behar du hash taula global aldagai tamaina, zein 22 00:01:05,450 --> 00:01:07,000 off hasteko zero gisa joan. 23 00:01:07,000 --> 00:01:10,760 Eta hori nola segimendua joan hitz asko gure hiztegi daude. 24 00:01:10,760 --> 00:01:13,710 >> Beraz, dezagun karga begirada bat. 25 00:01:13,710 --> 00:01:16,390 Nabarituko karga duten, boolearra itzultzen digu. 26 00:01:16,390 --> 00:01:20,530 Egia itzuliko duzu arrakastaz bada kargatu eta faltsua bestela. 27 00:01:20,530 --> 00:01:23,990 Eta eraikiak bat char * hiztegi hartzen du, horrek hiztegiaren da 28 00:01:23,990 --> 00:01:25,280 ireki nahi dugula. 29 00:01:25,280 --> 00:01:27,170 Beraz, lehenengo gauza da egin dugu. 30 00:01:27,170 --> 00:01:29,500 >> Fopen goaz du irakurtzeko hiztegi. 31 00:01:29,500 --> 00:01:31,680 Eta ari gara egin behar joan Ziur arrakastarik duten. 32 00:01:31,680 --> 00:01:35,920 NULL itzuli beraz, bada, orduan ez genuen Arrakastaz ireki Hiztegian. 33 00:01:35,920 --> 00:01:37,440 Eta faltsua itzuliko behar dugu. 34 00:01:37,440 --> 00:01:41,580 Baina suposatuz arrakastaz egin duela irekia, eta gero irakurri nahi dugu 35 00:01:41,580 --> 00:01:42,400 hiztegi. 36 00:01:42,400 --> 00:01:46,450 Beraz eduki begizta batzuk aurkitu arte arrazoia begizta hori hautsi, 37 00:01:46,450 --> 00:01:47,570 eta hori dugu ikusten. 38 00:01:47,570 --> 00:01:48,920 Beraz eduki begizta. 39 00:01:48,920 --> 00:01:51,780 >> Eta orain ari gara joan nodo bakar bat malloc. 40 00:01:51,780 --> 00:01:54,020 Eta, jakina, ez dugu behar airean begiratu berriro. 41 00:01:54,020 --> 00:01:58,680 Beraz mallocing ez bada arrakasta, ondoren edozein nodo dugun deskargatu nahi dugu 42 00:01:58,680 --> 00:02:02,590 malloc gertatu aurretik, itxi hiztegi eta itzultzeko faltsua. 43 00:02:02,590 --> 00:02:06,830 Baina hori ez ikusi egingo zaio, suposatuz dugu arrakastarik izan, orduan fscanf erabili nahi dugu 44 00:02:06,830 --> 00:02:12,400 hitz bakar bat irakurri gure gure nodo sartu hiztegia. 45 00:02:12,400 --> 00:02:17,940 Beraz, gogoratu sarrera> hitz hori karakterra da Hitz tamaina Iraupena + 1 bufferra 46 00:02:17,940 --> 00:02:20,300 ari garela hitza gordetzeko sartu joan 47 00:02:20,300 --> 00:02:25,070 >> Beraz fscanf da itzultzeko 1, betiere joan hura arrakastaz gai izan zen bezala 48 00:02:25,070 --> 00:02:26,750 hitz bat irakurri fitxategitik. 49 00:02:26,750 --> 00:02:30,460 Bai errore bat gertatzen bada, edo dugu lerro amaierara iristeko, hura 50 00:02:30,460 --> 00:02:31,950 ez itzultzeko 1. 51 00:02:31,950 --> 00:02:35,180 Kasu horretan, ez du itzuliko 1, azkenik ari gara hautsi joan 52 00:02:35,180 --> 00:02:37,280 berriz, begizta hau. 53 00:02:37,280 --> 00:02:42,770 Beraz, ikusi dugu behin arrakastaz dugu hitz bat irakurri sartu 54 00:02:42,770 --> 00:02:48,270 sarrera> Hitz, gero, esaten ari gara joan hitza gure hash funtzioa erabiliz. 55 00:02:48,270 --> 00:02:49,580 >> Ikus dezagun begirada bat hash funtzioa. 56 00:02:49,580 --> 00:02:52,430 57 00:02:52,430 --> 00:02:55,610 Beraz, ez duzu benetan behar hau ulertzeko. 58 00:02:55,610 --> 00:02:59,460 Eta benetan bota besterik ez dugu hash honetan Internetetik funtzionatu. 59 00:02:59,460 --> 00:03:04,010 Du aitortu behar duzun gauza bakarra da hori char * hitz bat hartzen du. 60 00:03:04,010 --> 00:03:08,960 Beraz, kate bat hartu du sarrera gisa, eta unsigned int bat itzuli irteera gisa. 61 00:03:08,960 --> 00:03:12,360 Beraz, hash funtzio bat guztia da da, da sarrera bat hartzen du, eta ematen dizu bat 62 00:03:12,360 --> 00:03:14,490 hash sartu indizea. 63 00:03:14,490 --> 00:03:18,530 >> Nabarituko ari garela NUM_BUCKETS by moding, beraz, balio hori itzuli 64 00:03:18,530 --> 00:03:21,730 benetan hash sartu indize bat da eta ez du haratago indizea 65 00:03:21,730 --> 00:03:24,320 array mugetatik. 66 00:03:24,320 --> 00:03:28,060 Beraz, emandako funtzio hori, goazen irakurri dugun hitza egiaztatu du 67 00:03:28,060 --> 00:03:29,390 hiztegi. 68 00:03:29,390 --> 00:03:31,700 Eta gero ari gara erabili joan hash horretara sartu 69 00:03:31,700 --> 00:03:33,750 Istorio hash sartu. 70 00:03:33,750 --> 00:03:38,520 >> Orain hash taula hash oraingoa da lotutako zerrenda taulan. 71 00:03:38,520 --> 00:03:41,410 Eta oso posible da besterik NULL dela. 72 00:03:41,410 --> 00:03:44,960 Gure at sarrera txertatu nahi dugu lotutako zerrenda honen hasieran. 73 00:03:44,960 --> 00:03:48,600 Eta horrela ari gara gure oraingoa izan da joan Istorio zer hash puntu 74 00:03:48,600 --> 00:03:50,380 Une seinalatzen. 75 00:03:50,380 --> 00:03:53,310 Eta gero ari gara gordetzeko joan, at hash taula batean 76 00:03:53,310 --> 00:03:55,350 hash, uneko sarrera. 77 00:03:55,350 --> 00:03:59,320 Beraz bi lerro hauek arrakastaz txertatu du hasieran sarrera 78 00:03:59,320 --> 00:04:02,260 lotuta indizea hartan zerrenda hash taula batean. 79 00:04:02,260 --> 00:04:04,900 >> Horrekin dugu Bukatutakoan behin, badakigu beste hitz bat aurkitu dugula horretan 80 00:04:04,900 --> 00:04:07,790 hiztegi, eta berriro Kontatzailea dugu. 81 00:04:07,790 --> 00:04:13,960 Hori egitean mantendu dugun fscanf arte azkenik zerbait ez 1 itzuli at 82 00:04:13,960 --> 00:04:16,950 puntua gogoratu Istorio libratzeko behar dugu. 83 00:04:16,950 --> 00:04:19,459 Beraz hemen sarrera bat malloced dugu. 84 00:04:19,459 --> 00:04:21,329 Eta zerbait irakurtzen saiatu ginen hiztegitik. 85 00:04:21,329 --> 00:04:23,910 Eta ez du behar bezala irakurri dugu hiztegitik zerbait, in 86 00:04:23,910 --> 00:04:26,650 kasu horretan sarrera libratzeko behar dugu garela inoiz benetan jarri 87 00:04:26,650 --> 00:04:29,140 hash taula, eta, azkenik, hautsi. 88 00:04:29,140 --> 00:04:32,750 >> Behin hautsi dugu ikusi behar dugu, bai, apurtu genuen han delako 89 00:04:32,750 --> 00:04:34,360 zen Errorea gertatu da fitxategia irakurtzean? 90 00:04:34,360 --> 00:04:37,120 Edo ez hautsi dugulako dugu lerro amaierara iritsi? 91 00:04:37,120 --> 00:04:39,480 Errorea gertatu da bada, orduan faltsua itzuli nahi dugu. 92 00:04:39,480 --> 00:04:40,930 Delako karga ez zuen arrakasta. 93 00:04:40,930 --> 00:04:43,890 Eta prozesuan deskargatu nahi dugu horretan irakurri dugu hitz guztiak, eta 94 00:04:43,890 --> 00:04:45,670 hiztegi itxi fitxategia. 95 00:04:45,670 --> 00:04:48,740 >> Suposatuz arrakasta genuen, orduan besterik ez dugu oraindik ere hiztegi itxi behar 96 00:04:48,740 --> 00:04:53,040 fitxategia, eta azkenik egia itzuliko geroztik dugu zuzen kargatu Hiztegian. 97 00:04:53,040 --> 00:04:54,420 Eta hori da karga. 98 00:04:54,420 --> 00:04:59,020 Beraz, orain begiratu, kargatutako hash taula bat eman, da itxura hau egingo. 99 00:04:59,020 --> 00:05:03,140 Beraz, egiaztatu, boolearra itzultzen digu, hau da, gainditu duen ala ez adierazteko joan 100 00:05:03,140 --> 00:05:07,530 char * hitza, gainditu ala katean gure hiztegian dago. 101 00:05:07,530 --> 00:05:09,890 Hala bada dago hiztegian bertan, bada gure hash taula batean, 102 00:05:09,890 --> 00:05:11,170 egia itzuliko izango dugu. 103 00:05:11,170 --> 00:05:13,380 Eta ez bada, faltsua itzuliko izango dugu. 104 00:05:13,380 --> 00:05:17,740 >> Hori hitza gainditu, gaude hitza egiaztatu du. 105 00:05:17,740 --> 00:05:22,110 Orain arte ezagutzen gauza garrantzitsu bat da duten karga dugu bazekien guztia 106 00:05:22,110 --> 00:05:23,820 hitzak minuskulaz egon goaz. 107 00:05:23,820 --> 00:05:25,820 Baina hemen ez gaude hain ziur. 108 00:05:25,820 --> 00:05:29,510 Gure hash funtzioa begirada bat hartzen badugu, gure hash funtzioa benetan 109 00:05:29,510 --> 00:05:32,700 txikiagoa karterra pertsonaia bakoitza Hitzaren. 110 00:05:32,700 --> 00:05:37,940 Beraz, kapitalizazioa kontuan hartu gabe hitza, gure hash funtzioa bueltan da 111 00:05:37,940 --> 00:05:42,270 edozein dela indizea bera kapitalizazio da, litzateke 112 00:05:42,270 --> 00:05:45,280 erabat minuskulaz bat itzuli hitzaren bertsio. 113 00:05:45,280 --> 00:05:46,600 Bale. 114 00:05:46,600 --> 00:05:49,790 Hori da gure indizean sartu da Hitz honen HashTableItxia. 115 00:05:49,790 --> 00:05:52,940 >> Orain hau loop da, joan lotuta zerrendan batetik bestera joateko 116 00:05:52,940 --> 00:05:55,000 du indize hori izan zen. 117 00:05:55,000 --> 00:05:59,610 Beraz, konturatu sarrera hasieratzean ari gara indize hori seinalatu. 118 00:05:59,610 --> 00:06:02,750 Jarraituko dugu sarrera = NULL bitartean. 119 00:06:02,750 --> 00:06:07,770 Eta gogoan izan erakuslea eguneratzeari gure lotutako zerrenda entry = sarrera> hurrengoa. 120 00:06:07,770 --> 00:06:14,400 Beraz, gure uneko sarrera puntu lotuta zerrendan hurrengo elementua. 121 00:06:14,400 --> 00:06:19,250 >> Hain lotuta zerrendan sarrera bakoitzeko, strcasecmp erabili goaz. 122 00:06:19,250 --> 00:06:20,330 Ez da StrComp. 123 00:06:20,330 --> 00:06:23,780 Berriro ere, nahi dugulako egin insensitively gauzak kasu. 124 00:06:23,780 --> 00:06:27,870 Beraz strcasecmp erabiltzen dugu alderatu du hitz hori honen bidez onartu zen 125 00:06:27,870 --> 00:06:31,860 hitzaren aurkako funtzioa duten sarrera honetan. 126 00:06:31,860 --> 00:06:35,570 Zero itzultzen bada, horrek esan nahi du ez zela Partidu bat, kasu horretan, nahi dugu 127 00:06:35,570 --> 00:06:36,630 egia itzuliko. 128 00:06:36,630 --> 00:06:39,590 Arrakastaz aurkitu dugu gure hash hitza. 129 00:06:39,590 --> 00:06:43,040 >> Ez zen partida bat izanez gero, ondoren gara begizta berriro joan eta begiratu 130 00:06:43,040 --> 00:06:43,990 Hurrengo sarrera. 131 00:06:43,990 --> 00:06:47,640 Eta begizta jarraituko dugu han berriz lotutako zerrenda honetako sarrerak dira. 132 00:06:47,640 --> 00:06:50,160 Zer gertatzen apurtzen badugu hau daudelarik loop? 133 00:06:50,160 --> 00:06:55,110 Horrek esan nahi ez dugu sarrera bat aurkituko duten datorren hitz hori, eta kasu horretan 134 00:06:55,110 --> 00:07:00,220 faltsua adierazi itzuliko gara, gure hash ez dauka hitz hau. 135 00:07:00,220 --> 00:07:02,540 Eta hori txeke bat. 136 00:07:02,540 --> 00:07:04,790 >> Beraz, dezagun tamaina begirada bat. 137 00:07:04,790 --> 00:07:06,970 Orain tamaina da nahiko erraza izango. 138 00:07:06,970 --> 00:07:11,080 Geroztik karga gogoratu, hitz bakoitzeko , aurkitu genuen global bat gehitzen dugu 139 00:07:11,080 --> 00:07:12,880 hash taula aldagai tamaina. 140 00:07:12,880 --> 00:07:16,480 Beraz tamaina funtzioa besterik ez da joan aldagai global itzultzeko. 141 00:07:16,480 --> 00:07:18,150 Eta hori da. 142 00:07:18,150 --> 00:07:22,300 >> Orain, azkenik, deskargatu behar dugu hiztegi guztia behin egiten. 143 00:07:22,300 --> 00:07:25,340 Beraz, nola ari gara hori egin dugu? 144 00:07:25,340 --> 00:07:30,440 Hementxe ari gorako begizta dugu Gure mahaian kubo guztiak. 145 00:07:30,440 --> 00:07:33,240 Beraz, ez dago NUM_BUCKETS kuboak dira. 146 00:07:33,240 --> 00:07:37,410 Eta lotuta zerrenda bakoitzeko gure hash, ari gara gorako begizta joan 147 00:07:37,410 --> 00:07:41,070 lotutako zerrenda osoa, elementu bakoitzak uzten. 148 00:07:41,070 --> 00:07:42,900 >> Orain kontu handiz ibili behar dugu. 149 00:07:42,900 --> 00:07:47,910 Beraz, hemen aldi baterako aldagai bat dugu hori erakusleak gordetzeko hurrengo 150 00:07:47,910 --> 00:07:49,730 lotuta zerrendan elementu. 151 00:07:49,730 --> 00:07:52,140 Eta gero ari gara doan joan uneko elementua. 152 00:07:52,140 --> 00:07:55,990 Ziur hau egin dugu geroztik dugun izan behar dugu ezin besterik egungo elementu askatzea 153 00:07:55,990 --> 00:07:59,180 eta saiatu hurrengo erakuslea sartzeko, Nik libratuko dugu behin geroztik, 154 00:07:59,180 --> 00:08:00,870 memoria baliogabe bihurtzen da. 155 00:08:00,870 --> 00:08:04,990 >> Beraz, inguruan mantentzeko erakuslea behar dugu hurrengo elementua, eta ondoren askatu ahal dugu 156 00:08:04,990 --> 00:08:08,360 egungo elementu, eta gero eguneratu ahal izango dugu egungo gure nahi seinalatu elementu 157 00:08:08,360 --> 00:08:09,550 hurrengo elementua. 158 00:08:09,550 --> 00:08:12,800 Begizta dugu daude bitartean elementuak lotutako zerrenda honetan. 159 00:08:12,800 --> 00:08:15,620 Egin dugu hori guztia lotuta hash en zerrendak. 160 00:08:15,620 --> 00:08:19,460 Eta behin hori egin ari gara, dugu guztiz deskargatzen hash taula du, eta 161 00:08:19,460 --> 00:08:20,190 Bukatutakoan dugu. 162 00:08:20,190 --> 00:08:23,200 Beraz, ezinezkoa da hustuketa egiteko inoiz itzuliko faltsua. 163 00:08:23,200 --> 00:08:26,470 Eta Bukatutakoan dugunean, dugu return egia. 164 00:08:26,470 --> 00:08:29,000 >> Dezagun ematen saiatu irtenbide hau. 165 00:08:29,000 --> 00:08:33,070 Beraz, dezagun zein den gure begirada bat egitura nodo itxura. 166 00:08:33,070 --> 00:08:36,220 Hemen ikusten dugu bool izan goaz hitza eta egitura nodo * haurrentzat 167 00:08:36,220 --> 00:08:37,470 parentesi ALPHABET. 168 00:08:37,470 --> 00:08:38,929 169 00:08:38,929 --> 00:08:42,020 Beraz, lehen agian izango duzu gauza galdetzen, zergatik da ALPHABET 170 00:08:42,020 --> 00:08:44,660 ed 27 bezala definitzen? 171 00:08:44,660 --> 00:08:47,900 Beno, gogoratzen ari garela behar joan egon apostrofeari manipulazioa. 172 00:08:47,900 --> 00:08:51,910 Beraz, zertxobait bat izango da Programa honetan zehar kasu berezia. 173 00:08:51,910 --> 00:08:54,710 >> Orain gogoratzen trie bat nola benetan funtzionatzen. 174 00:08:54,710 --> 00:08:59,380 Demagun hitza indexatzeko ari gara "Katuak." Ondoren trie erro batetik, 175 00:08:59,380 --> 00:09:02,610 haurrei begiratu goaz array, eta ari gara hemen begiratu 176 00:09:02,610 --> 00:09:08,090 letraren dagokion indizea C. Beraz indexatuko dela 2. 177 00:09:08,090 --> 00:09:11,530 Beraz, ematen duen, borondate horren nodo berri bat ematen diguten. 178 00:09:11,530 --> 00:09:13,820 Eta ondoren dugu nodo horretan lan egingo. 179 00:09:13,820 --> 00:09:17,770 >> Beraz emandako nodo hori, berriro ere gaude haur array begiratu egingo. 180 00:09:17,770 --> 00:09:22,110 Eta ari gara indizea zero begiratu katu A dagozkie. 181 00:09:22,110 --> 00:09:27,170 Beraz, ondoren ari gara Nodo hori joango gara, eta emandako nodo goaz 182 00:09:27,170 --> 00:09:31,090 amaiera begiratu dagokio bat da T. Eta mugitzea nodo horretan, nahi 183 00:09:31,090 --> 00:09:35,530 azkenik, erabat begiratu dugu bidez gure hitza "katu". Eta orain bool 184 00:09:35,530 --> 00:09:40,960 Hitz suposatzen da ala ez adierazten hitza eman hau da, benetan hitz bat. 185 00:09:40,960 --> 00:09:43,470 >> Beraz, zergatik ez, kasu berezi hori behar dugu? 186 00:09:43,470 --> 00:09:47,700 Beno hitza zer dagoen "katastrofe" gure hiztegian dago, baina 187 00:09:47,700 --> 00:09:50,150 hitza "katua" ez da? 188 00:09:50,150 --> 00:09:54,580 Beraz, eta ikusi bilatzen bada hitza "katu" gure hiztegian, gaude 189 00:09:54,580 --> 00:09:59,970 bidez arrakastaz begiratzen joan indizeak eskualde nodo in C-A-T. 190 00:09:59,970 --> 00:10:04,290 Baina hori bakarrik delako katastrofe gertatu bidean nodoak sortzeko 191 00:10:04,290 --> 00:10:07,190 C-A-T-tik, modu guztiak hitzaren amaieran. 192 00:10:07,190 --> 00:10:12,020 Beraz, hitza boolearra behar den ala ez adierazteko erabiltzen da kokapena zehatz honetan 193 00:10:12,020 --> 00:10:14,310 benetan hitz bat adierazten du. 194 00:10:14,310 --> 00:10:15,140 >> Ondo da. 195 00:10:15,140 --> 00:10:19,310 Beraz, gaur egun ezagutzen dugun zer trie da itxura, dezagun begiratu at 196 00:10:19,310 --> 00:10:20,730 kargatu funtzioa. 197 00:10:20,730 --> 00:10:24,610 Beraz, karga da boolearra itzuli egingo da Arrakastaz dugu edo ala 198 00:10:24,610 --> 00:10:26,720 arrakastarik hiztegia kargatu. 199 00:10:26,720 --> 00:10:30,460 Eta hau da hiztegi izango da kargatu nahi dugun. 200 00:10:30,460 --> 00:10:33,930 >> Beraz, lehenengo gauza egin gara irekita dago irakurtzeko hiztegi hori sortu. 201 00:10:33,930 --> 00:10:36,160 Eta ziurtatu behar dugu ez genuen huts. 202 00:10:36,160 --> 00:10:39,580 Hiztegian ez zen hala bada ondo ireki, itzuliko da 203 00:10:39,580 --> 00:10:42,400 nulua, kasu horretan gaude faltsua itzuli egingo da. 204 00:10:42,400 --> 00:10:47,230 Baina suposatuz dela arrakastaz ireki, ondoren, benetan irakurri ahal 205 00:10:47,230 --> 00:10:48,220 Hiztegi bitartez. 206 00:10:48,220 --> 00:10:50,880 >> Beraz, lehenengo gauza goaz Egin nahi hori dugu 207 00:10:50,880 --> 00:10:52,500 erro aldagai global. 208 00:10:52,500 --> 00:10:56,190 Orain root nodo bat izango da *. 209 00:10:56,190 --> 00:10:59,760 Gure trie goiko duten gara da egon errepikatzean den igaro. 210 00:10:59,760 --> 00:11:02,660 Beraz, goazen lehen gauza da egin nahi den esleitu 211 00:11:02,660 --> 00:11:04,140 gure erro memoria. 212 00:11:04,140 --> 00:11:07,980 Nabarituko calloc erabiltzen ari garela funtzioa, hau da, funtsean, gauza bera 213 00:11:07,980 --> 00:11:11,500 malloc funtzioa bezala, salbu da hau da zerbait itzultzeko bermatuta 214 00:11:11,500 --> 00:11:13,180 erabat zeroed daudelarik. 215 00:11:13,180 --> 00:11:17,290 Beraz malloc erabiliko bagenitu, ez genuke behar in erakusleak guztietan barrena joan gure 216 00:11:17,290 --> 00:11:20,160 nodoa, eta ziurtatu null guztiak ari dira. 217 00:11:20,160 --> 00:11:22,710 Beraz calloc egin egingo dela guretzat. 218 00:11:22,710 --> 00:11:26,330 >> Orain besterik malloc bezala, egin behar dugu ziur esleipena izan zen benetan 219 00:11:26,330 --> 00:11:27,520 arrakastatsua. 220 00:11:27,520 --> 00:11:29,990 Hau itzuli nulua bada, orduan dugu ixteko edo hiztegi behar 221 00:11:29,990 --> 00:11:32,100 fitxategia eta itzultzeko faltsua. 222 00:11:32,100 --> 00:11:36,835 Beraz, esleipena dela suposatuz zen arrakastatsua, nodo bat erabili * goaz 223 00:11:36,835 --> 00:11:40,270 kurtsorea gure trie bidez batetik bestera joateko. 224 00:11:40,270 --> 00:11:43,890 Beraz, gure sustraiak inoiz aldatu egingo da, baina ari gara kurtsorea erabili joan 225 00:11:43,890 --> 00:11:47,875 benetan joan nodo nodo. 226 00:11:47,875 --> 00:11:50,940 >> Beraz, hau loop irakurtzen ari gara hiztegi-fitxategi bidez. 227 00:11:50,940 --> 00:11:53,670 Eta fgetc erabiltzen ari gara. 228 00:11:53,670 --> 00:11:56,290 Fgetc da bakar bat hartzen joan fitxategia karaktere. 229 00:11:56,290 --> 00:11:59,370 Grabbing jarraitzeko goaz karaktereak ez dugu iritsi bitartean 230 00:11:59,370 --> 00:12:01,570 lerro amaierara. 231 00:12:01,570 --> 00:12:03,480 >> Bi kasuetan kudeatzeko behar dugu daude. 232 00:12:03,480 --> 00:12:06,610 Lehenengoan, bada pertsonaiaren ez zen lerro berri bat. 233 00:12:06,610 --> 00:12:10,450 Beraz, badakigu lerro berri bat bada, orduan mugitu hitz berri bati buruz ari gara. 234 00:12:10,450 --> 00:12:15,240 Baina suposatuz ez zen linea berri bat, ondoren Hemen irudikatu nahi dugu 235 00:12:15,240 --> 00:12:18,380 Indize gabiltza indizea joan sartu haurrak array duten 236 00:12:18,380 --> 00:12:19,810 begiratu aurretik dugu. 237 00:12:19,810 --> 00:12:23,880 >> Beraz, lehen esan bezala, behar dugu kasu berezia apostrofeari. 238 00:12:23,880 --> 00:12:26,220 Nabarituko hirutarra erabiltzen ari gara operadorea hemen. 239 00:12:26,220 --> 00:12:29,580 Beraz, hau da, gero irakurtzeko joan Pertsonaia batean irakurri dugu zen 240 00:12:29,580 --> 00:12:35,330 apostrophe, orduan ari gara 'ezarrita joan indizea = "ALPHABET" -1, egingo den 241 00:12:35,330 --> 00:12:37,680 indizea 26 izango da. 242 00:12:37,680 --> 00:12:41,130 >> Bestela, ez zen apostrofoa bada, ez dago indizea ezarri goaz 243 00:12:41,130 --> 00:12:43,760 c berdina - a. 244 00:12:43,760 --> 00:12:49,030 Beraz, gogoratu aurrez p-multzo atzera, c - bat gurekin emateko va 245 00:12:49,030 --> 00:12:53,410 C. posizio alfabetikoa Beraz bada C gutun bat da, borondate hau 246 00:12:53,410 --> 00:12:54,700 indizea zero ematen diguten. 247 00:12:54,700 --> 00:12:58,120 B gutun-kodea, izango da eman gurekin indizea 1 da, eta abar. 248 00:12:58,120 --> 00:13:03,010 >> Beraz, hau sartu indizea ematen digu haurrak array nahi dugula. 249 00:13:03,010 --> 00:13:08,890 Orain Indize hau nulua da bada haurrak, horrek esan nahi du nodo 250 00:13:08,890 --> 00:13:11,830 ez da gaur egun existitzen bide horretatik aurrera. 251 00:13:11,830 --> 00:13:15,160 Beraz esleitu behar dugu bide horretan nodo bat. 252 00:13:15,160 --> 00:13:16,550 Hau da, zer egin dugu hemen. 253 00:13:16,550 --> 00:13:20,690 >> Beraz, calloc berriro erabili joan funtzioa, beraz, ez dugu nahi 254 00:13:20,690 --> 00:13:22,880 zeron dituzten erakusleak guztian. 255 00:13:22,880 --> 00:13:27,240 Eta berriro behar dugu berriro egiaztatu calloc ez zuela huts egin. 256 00:13:27,240 --> 00:13:30,700 Calloc huts egin bada, orduan behar dugu guztia jaisteko, ixteko gure 257 00:13:30,700 --> 00:13:32,820 hiztegi, eta itzuli faltsua. 258 00:13:32,820 --> 00:13:40,050 Beraz suposatuz zuen ez dela huts egin, eta gero hau beste ume bat sortuko da guretzat. 259 00:13:40,050 --> 00:13:41,930 Eta ondoren egingo duten ume joan ginen. 260 00:13:41,930 --> 00:13:44,960 Gure kurtsorea batetik bestera joateko egingo Umea zela behera. 261 00:13:44,960 --> 00:13:49,330 >> Orain hau ez zela nulua bada honekin hasteko, ondoren kurtsorea besterik batetik bestera joateko daiteke 262 00:13:49,330 --> 00:13:52,590 behera haur hori benetan gabe ezer esleitu beharrik. 263 00:13:52,590 --> 00:13:56,730 Kasu hauetan gertatzen lehen gertatu dena da hitza esleitu "katu". Eta 264 00:13:56,730 --> 00:14:00,330 horrek esan nahi du noiz esleitu goaz "Katastrofe", ez dugu sortu 265 00:14:00,330 --> 00:14:01,680 C-A-T nodo berriro. 266 00:14:01,680 --> 00:14:04,830 Dagoeneko existitzen dira. 267 00:14:04,830 --> 00:14:06,080 >> Zer da hau bestela? 268 00:14:06,080 --> 00:14:10,480 Honetan baldintza non c zen da backslash n, non c linea berri bat izan zen. 269 00:14:10,480 --> 00:14:13,710 Horrek esan nahi arrakastaz dugula hitz bat osatu. 270 00:14:13,710 --> 00:14:16,860 Orain zer egin nahi dugunean ongi burutu da hitz bat? 271 00:14:16,860 --> 00:14:21,100 Hitz eremu hori erabiltzeko goaz Gure egitura nodo barruan. 272 00:14:21,100 --> 00:14:23,390 Duten ezartzeko egia nahi dugu. 273 00:14:23,390 --> 00:14:27,150 Beraz, horrek adierazten duen nodo honetan arrakastatsu bat adierazten 274 00:14:27,150 --> 00:14:29,250 hitza, benetako hitza bat. 275 00:14:29,250 --> 00:14:30,940 >> Orain ezarri duten egia da. 276 00:14:30,940 --> 00:14:35,150 Gure kurtsorea berrezartzeko puntua nahi dugu trie hasieran berriro. 277 00:14:35,150 --> 00:14:40,160 Eta, azkenik, Kontatzailea gure dictionary tamaina, beste lan bat aurkitu dugu geroztik. 278 00:14:40,160 --> 00:14:43,230 Beraz, hori egiten jarraitzea, pertsonaia egindako pertsonaiak irakurketa, 279 00:14:43,230 --> 00:14:49,150 eta nodo berria eraikitzeko gure trie Hitz bakoitzeko hiztegian, arte 280 00:14:49,150 --> 00:14:54,020 azkenik iritsiko gara C = EOF, eta bertan, Kasu apurtu fitxategian daudelarik dugu. 281 00:14:54,020 --> 00:14:57,050 >> Gaur egun, bi kasuetan pean daude bertan dugu EOF hit liteke. 282 00:14:57,050 --> 00:15:00,980 Lehenengoa da akats bat izan zen bada fitxategia irakurtzean. 283 00:15:00,980 --> 00:15:03,470 Errorea gertatu da hala bada, dugu tipikoa egin behar. 284 00:15:03,470 --> 00:15:06,460 Deskargatu dena, itxi fitxategia, itzultzeko faltsua. 285 00:15:06,460 --> 00:15:09,810 Ez zen errore bat suposatuz, hori besterik gabe esan nahi benetan hit dugu amaieran 286 00:15:09,810 --> 00:15:13,750 fitxategia, eta kasu horretan, itxi dugu fitxategia eta egia itzuliko geroztik dugu 287 00:15:13,750 --> 00:15:17,330 zuzen kargatu hiztegia gure trie sartu. 288 00:15:17,330 --> 00:15:20,170 >> Beraz, gaur egun utzi check out check. 289 00:15:20,170 --> 00:15:25,156 Txeke funtzioa begira, ikusiko dugu txeke hori bool bat itzuli du. 290 00:15:25,156 --> 00:15:29,680 Egia itzultzen du hitz hori da hori bada ari gainditu gure trie da. 291 00:15:29,680 --> 00:15:32,110 Faltsua itzultzen du bestela. 292 00:15:32,110 --> 00:15:36,050 Beraz, nola ari zaren ala ez zehazteko hitz hau gure trie da? 293 00:15:36,050 --> 00:15:40,190 >> Hemen ikusten dugu, zertxobait lehenago bezala, kurtsorea erabili batetik bestera joateko goaz 294 00:15:40,190 --> 00:15:41,970 gure trie bidez. 295 00:15:41,970 --> 00:15:46,600 Orain hemen ari gara batetik bestera joateko joan gure hitz osoa baino gehiago. 296 00:15:46,600 --> 00:15:50,620 Beraz, hitza iragan garen baino gehiago errepikatzean, zehazteko goaz du 297 00:15:50,620 --> 00:15:56,400 Indize haurrak array sartu duten hitza parentesi I. dagokio Beraz, hau 298 00:15:56,400 --> 00:15:59,670 da zehazki itxura joan karga, non gero word [i] 299 00:15:59,670 --> 00:16:03,310 da apostrofoa, ondoren, nahi dugun indizea "ALPHABET" erabili - 1. 300 00:16:03,310 --> 00:16:05,350 Zehaztuko dugu delako hori da non ari gara gordetzeko joan 301 00:16:05,350 --> 00:16:07,100 apostrophes. 302 00:16:07,100 --> 00:16:11,780 >> Bestela gabiltza txikiagoa bi hitza erabili joan parentesi I. Beraz, gogoratu, hitz hori, ahal 303 00:16:11,780 --> 00:16:13,920 kapitalizazio arbitrarioa izan. 304 00:16:13,920 --> 00:16:17,540 Eta, beraz, ziur Oraindik dugu egin nahi dugu minuskulaz gauza bertsio bat erabiliz. 305 00:16:17,540 --> 00:16:21,920 Eta, ondoren, behin 'a' bati kentzen berriro ematen diguten alfabetikoan du 306 00:16:21,920 --> 00:16:23,880 izaera duten posizioa. 307 00:16:23,880 --> 00:16:27,680 Beraz, gure indizea izango da haurrak array sartu. 308 00:16:27,680 --> 00:16:32,420 >> Eta orain bada indizea duten haurrak sartu array nulua da, horrek esan nahi dugu 309 00:16:32,420 --> 00:16:34,990 Jada jarraitu ahal errepikatzean gure trie behera. 310 00:16:34,990 --> 00:16:38,870 Hori horrela bada, hitz hori ezin seguru asko, gure trie izango da. 311 00:16:38,870 --> 00:16:42,340 Balitz, hori litzateke geroztik esan nahi ez bide bat izango litzateke 312 00:16:42,340 --> 00:16:43,510 hitz hori behera. 313 00:16:43,510 --> 00:16:45,290 Eta inoiz ez zenuke topo nulua. 314 00:16:45,290 --> 00:16:47,850 Beraz null topatzea, faltsua itzuliko gara. 315 00:16:47,850 --> 00:16:49,840 Hitza ez dago hiztegian. 316 00:16:49,840 --> 00:16:53,660 Ez balitz nulua bada, orduan gaude errepikatzean jarraitu egingo. 317 00:16:53,660 --> 00:16:57,220 >> Beraz, han kurtsorea joan den jakin seinalatu 318 00:16:57,220 --> 00:16:59,760 Indize hartan nodoa. 319 00:16:59,760 --> 00:17:03,150 Horretan zehar egiten mantendu dugu du hitz osoa, suposatuz 320 00:17:03,150 --> 00:17:03,950 inoiz hit dugu nulua. 321 00:17:03,950 --> 00:17:07,220 Horrek esan nahi bidez lortzeko gai izan ginen du hitz osoa, eta aurki 322 00:17:07,220 --> 00:17:08,920 Gure saiatu lotune bat. 323 00:17:08,920 --> 00:17:10,770 Baina ez nahiko oraindik egin dugu. 324 00:17:10,770 --> 00:17:12,290 >> Ez dugu nahi, besterik gabe itzultzeko egia. 325 00:17:12,290 --> 00:17:14,770 Kurtsore> hitza itzuli nahi dugu. 326 00:17:14,770 --> 00:17:18,980 Gogoratzen geroztik berriro, "katua" da, ez da gure hiztegian, eta "katastrofe" 327 00:17:18,980 --> 00:17:22,935 da, eta gero egingo dugu arrakastaz lortuko dugu bidez hitza "katu". Baina kurtsorea 328 00:17:22,935 --> 00:17:25,760 Hitz faltsuak eta ez da egia izango. 329 00:17:25,760 --> 00:17:30,930 Beraz, kurtsorea hitzaren itzultzeko dugun adierazi ala nodo hau da, benetan hitz bat. 330 00:17:30,930 --> 00:17:32,470 Eta hori da txeke da. 331 00:17:32,470 --> 00:17:34,250 >> Hargatik begiratu tamaina. 332 00:17:34,250 --> 00:17:37,350 Beraz tamaina nahiko erraza izango da geroztik, karga gogoratu, gaude 333 00:17:37,350 --> 00:17:41,430 hiztegi tamaina incrementing egiteko dugu topo hitz bakoitza. 334 00:17:41,430 --> 00:17:45,350 Beraz tamaina besterik ez da joan itzultzeko hiztegi tamaina. 335 00:17:45,350 --> 00:17:47,390 Eta hori da. 336 00:17:47,390 --> 00:17:50,590 >> Beraz, azkenik hustuketa egin dugu. 337 00:17:50,590 --> 00:17:55,100 Beraz, deskargatu, erabili goaz bat funtzioa errekurtsiboa benetan egiten denak 338 00:17:55,100 --> 00:17:56,530 Gurekin lan du. 339 00:17:56,530 --> 00:17:59,340 Beraz, gure eginkizun da, joan egon unloader deitu. 340 00:17:59,340 --> 00:18:01,650 Zer da unloader egin? 341 00:18:01,650 --> 00:18:06,580 Hemen ikusten dugu unloader hori joan den batetik bestera joateko baino gehiago ume guztiek at 342 00:18:06,580 --> 00:18:08,410 nodo zehatz honetan. 343 00:18:08,410 --> 00:18:11,750 Eta umea nodoa ez den kasuetan nulua, ondoren goazela 344 00:18:11,750 --> 00:18:13,730 umea nodoa jaisteko. 345 00:18:13,730 --> 00:18:18,010 >> Beraz, hau da errekurtsiboki deskargatu dituzun Gure seme-alaben guztiak. 346 00:18:18,010 --> 00:18:21,080 Behin gaude ziur gure seme-alaben guztiak dute deskargatzen dira, orduan dugu 347 00:18:21,080 --> 00:18:25,210 geure burua askatu ahal, beraz deskargatu geure burua. 348 00:18:25,210 --> 00:18:29,460 Hau errekurtsiboki lan egingo du deskargatu trie osoa. 349 00:18:29,460 --> 00:18:32,850 Eta gero, behin hori egin, besterik ez dugu itzuli ahal egia. 350 00:18:32,850 --> 00:18:34,210 Hustuketa ezin huts egin. 351 00:18:34,210 --> 00:18:35,710 Ari gauzak libre uzten dugu. 352 00:18:35,710 --> 00:18:38,870 Beraz, behin Bukatutakoan dugu askatzeaz guztia, itzultzeko egia. 353 00:18:38,870 --> 00:18:40,320 Eta hori da. 354 00:18:40,320 --> 00:18:41,080 Nire izena Rob da. 355 00:18:41,080 --> 00:18:42,426 Eta hau speller zen. 356 00:18:42,426 --> 00:18:47,830 >> [Musika jotzen]