[Musika jotzen] ROB BOWDEN: Kaixo. Rob naiz. Eta dezagun irtenbide hau daudelarik. Beraz, hemen ari gara ezartzea joan taula orokor bat. Ikusten dugun egiturari gure nodo taula da itxura hau egingo. Beraz, char hitz bat izan da joan tamaina LUZERA + 1 array. Ez ahaztu du + 1, geroztik gehienezko hiztegian hitzari 45 da pertsonaiak. Eta gero ari gara bat estra behar du backslash zero da pertsonaia. Eta gero, gure bakoitzean hash ontzi da gordetzeko joan a lotuta nodo zerrenda. Ez gara lineala hemen probak egiten. Eta beraz, ordena hurrengo lotzen ontzi, elementu, bat behar dugu egitura nodo * hurrengo. Ados. Beraz, horrek zer nodo bat itxura da. Orain hemen adierazpena da gure hash of. Honez 16.834 kuboak izan. Baina zenbaki hori ez da benetan axola. Eta, azkenik, ari gara joan behar du hash taula global aldagai tamaina, zein off hasteko zero gisa joan. Eta hori nola segimendua joan hitz asko gure hiztegi daude. Beraz, dezagun karga begirada bat. Nabarituko karga duten, boolearra itzultzen digu. Egia itzuliko duzu arrakastaz bada kargatu eta faltsua bestela. Eta eraikiak bat char * hiztegi hartzen du, horrek hiztegiaren da ireki nahi dugula. Beraz, lehenengo gauza da egin dugu. Fopen goaz du irakurtzeko hiztegi. Eta ari gara egin behar joan Ziur arrakastarik duten. NULL itzuli beraz, bada, orduan ez genuen Arrakastaz ireki Hiztegian. Eta faltsua itzuliko behar dugu. Baina suposatuz arrakastaz egin duela irekia, eta gero irakurri nahi dugu hiztegi. Beraz eduki begizta batzuk aurkitu arte arrazoia begizta hori hautsi, eta hori dugu ikusten. Beraz eduki begizta. Eta orain ari gara joan nodo bakar bat malloc. Eta, jakina, ez dugu behar airean begiratu berriro. Beraz mallocing ez bada arrakasta, ondoren edozein nodo dugun deskargatu nahi dugu malloc gertatu aurretik, itxi hiztegi eta itzultzeko faltsua. Baina hori ez ikusi egingo zaio, suposatuz dugu arrakastarik izan, orduan fscanf erabili nahi dugu hitz bakar bat irakurri gure gure nodo sartu hiztegia. Beraz, gogoratu sarrera> hitz hori karakterra da Hitz tamaina Iraupena + 1 bufferra ari garela hitza gordetzeko sartu joan Beraz fscanf da itzultzeko 1, betiere joan hura arrakastaz gai izan zen bezala hitz bat irakurri fitxategitik. Bai errore bat gertatzen bada, edo dugu lerro amaierara iristeko, hura ez itzultzeko 1. Kasu horretan, ez du itzuliko 1, azkenik ari gara hautsi joan berriz, begizta hau. Beraz, ikusi dugu behin arrakastaz dugu hitz bat irakurri sartu sarrera> Hitz, gero, esaten ari gara joan hitza gure hash funtzioa erabiliz. Ikus dezagun begirada bat hash funtzioa. Beraz, ez duzu benetan behar hau ulertzeko. Eta benetan bota besterik ez dugu hash honetan Internetetik funtzionatu. Du aitortu behar duzun gauza bakarra da hori char * hitz bat hartzen du. Beraz, kate bat hartu du sarrera gisa, eta unsigned int bat itzuli irteera gisa. Beraz, hash funtzio bat guztia da da, da sarrera bat hartzen du, eta ematen dizu bat hash sartu indizea. Nabarituko ari garela NUM_BUCKETS by moding, beraz, balio hori itzuli benetan hash sartu indize bat da eta ez du haratago indizea array mugetatik. Beraz, emandako funtzio hori, goazen irakurri dugun hitza egiaztatu du hiztegi. Eta gero ari gara erabili joan hash horretara sartu Istorio hash sartu. Orain hash taula hash oraingoa da lotutako zerrenda taulan. Eta oso posible da besterik NULL dela. Gure at sarrera txertatu nahi dugu lotutako zerrenda honen hasieran. Eta horrela ari gara gure oraingoa izan da joan Istorio zer hash puntu Une seinalatzen. Eta gero ari gara gordetzeko joan, at hash taula batean hash, uneko sarrera. Beraz bi lerro hauek arrakastaz txertatu du hasieran sarrera lotuta indizea hartan zerrenda hash taula batean. Horrekin dugu Bukatutakoan behin, badakigu beste hitz bat aurkitu dugula horretan hiztegi, eta berriro Kontatzailea dugu. Hori egitean mantendu dugun fscanf arte azkenik zerbait ez 1 itzuli at puntua gogoratu Istorio libratzeko behar dugu. Beraz hemen sarrera bat malloced dugu. Eta zerbait irakurtzen saiatu ginen hiztegitik. Eta ez du behar bezala irakurri dugu hiztegitik zerbait, in kasu horretan sarrera libratzeko behar dugu garela inoiz benetan jarri hash taula, eta, azkenik, hautsi. Behin hautsi dugu ikusi behar dugu, bai, apurtu genuen han delako zen Errorea gertatu da fitxategia irakurtzean? Edo ez hautsi dugulako dugu lerro amaierara iritsi? Errorea gertatu da bada, orduan faltsua itzuli nahi dugu. Delako karga ez zuen arrakasta. Eta prozesuan deskargatu nahi dugu horretan irakurri dugu hitz guztiak, eta hiztegi itxi fitxategia. Suposatuz arrakasta genuen, orduan besterik ez dugu oraindik ere hiztegi itxi behar fitxategia, eta azkenik egia itzuliko geroztik dugu zuzen kargatu Hiztegian. Eta hori da karga. Beraz, orain begiratu, kargatutako hash taula bat eman, da itxura hau egingo. Beraz, egiaztatu, boolearra itzultzen digu, hau da, gainditu duen ala ez adierazteko joan char * hitza, gainditu ala katean gure hiztegian dago. Hala bada dago hiztegian bertan, bada gure hash taula batean, egia itzuliko izango dugu. Eta ez bada, faltsua itzuliko izango dugu. Hori hitza gainditu, gaude hitza egiaztatu du. Orain arte ezagutzen gauza garrantzitsu bat da duten karga dugu bazekien guztia hitzak minuskulaz egon goaz. Baina hemen ez gaude hain ziur. Gure hash funtzioa begirada bat hartzen badugu, gure hash funtzioa benetan txikiagoa karterra pertsonaia bakoitza Hitzaren. Beraz, kapitalizazioa kontuan hartu gabe hitza, gure hash funtzioa bueltan da edozein dela indizea bera kapitalizazio da, litzateke erabat minuskulaz bat itzuli hitzaren bertsio. Bale. Hori da gure indizean sartu da Hitz honen HashTableItxia. Orain hau loop da, joan lotuta zerrendan batetik bestera joateko du indize hori izan zen. Beraz, konturatu sarrera hasieratzean ari gara indize hori seinalatu. Jarraituko dugu sarrera = NULL bitartean. Eta gogoan izan erakuslea eguneratzeari gure lotutako zerrenda entry = sarrera> hurrengoa. Beraz, gure uneko sarrera puntu lotuta zerrendan hurrengo elementua. Hain lotuta zerrendan sarrera bakoitzeko, strcasecmp erabili goaz. Ez da StrComp. Berriro ere, nahi dugulako egin insensitively gauzak kasu. Beraz strcasecmp erabiltzen dugu alderatu du hitz hori honen bidez onartu zen hitzaren aurkako funtzioa duten sarrera honetan. Zero itzultzen bada, horrek esan nahi du ez zela Partidu bat, kasu horretan, nahi dugu egia itzuliko. Arrakastaz aurkitu dugu gure hash hitza. Ez zen partida bat izanez gero, ondoren gara begizta berriro joan eta begiratu Hurrengo sarrera. Eta begizta jarraituko dugu han berriz lotutako zerrenda honetako sarrerak dira. Zer gertatzen apurtzen badugu hau daudelarik loop? Horrek esan nahi ez dugu sarrera bat aurkituko duten datorren hitz hori, eta kasu horretan faltsua adierazi itzuliko gara, gure hash ez dauka hitz hau. Eta hori txeke bat. Beraz, dezagun tamaina begirada bat. Orain tamaina da nahiko erraza izango. Geroztik karga gogoratu, hitz bakoitzeko , aurkitu genuen global bat gehitzen dugu hash taula aldagai tamaina. Beraz tamaina funtzioa besterik ez da joan aldagai global itzultzeko. Eta hori da. Orain, azkenik, deskargatu behar dugu hiztegi guztia behin egiten. Beraz, nola ari gara hori egin dugu? Hementxe ari gorako begizta dugu Gure mahaian kubo guztiak. Beraz, ez dago NUM_BUCKETS kuboak dira. Eta lotuta zerrenda bakoitzeko gure hash, ari gara gorako begizta joan lotutako zerrenda osoa, elementu bakoitzak uzten. Orain kontu handiz ibili behar dugu. Beraz, hemen aldi baterako aldagai bat dugu hori erakusleak gordetzeko hurrengo lotuta zerrendan elementu. Eta gero ari gara doan joan uneko elementua. Ziur hau egin dugu geroztik dugun izan behar dugu ezin besterik egungo elementu askatzea eta saiatu hurrengo erakuslea sartzeko, Nik libratuko dugu behin geroztik, memoria baliogabe bihurtzen da. Beraz, inguruan mantentzeko erakuslea behar dugu hurrengo elementua, eta ondoren askatu ahal dugu egungo elementu, eta gero eguneratu ahal izango dugu egungo gure nahi seinalatu elementu hurrengo elementua. Begizta dugu daude bitartean elementuak lotutako zerrenda honetan. Egin dugu hori guztia lotuta hash en zerrendak. Eta behin hori egin ari gara, dugu guztiz deskargatzen hash taula du, eta Bukatutakoan dugu. Beraz, ezinezkoa da hustuketa egiteko inoiz itzuliko faltsua. Eta Bukatutakoan dugunean, dugu return egia. Dezagun ematen saiatu irtenbide hau. Beraz, dezagun zein den gure begirada bat egitura nodo itxura. Hemen ikusten dugu bool izan goaz hitza eta egitura nodo * haurrentzat parentesi ALPHABET. Beraz, lehen agian izango duzu gauza galdetzen, zergatik da ALPHABET ed 27 bezala definitzen? Beno, gogoratzen ari garela behar joan egon apostrofeari manipulazioa. Beraz, zertxobait bat izango da Programa honetan zehar kasu berezia. Orain gogoratzen trie bat nola benetan funtzionatzen. Demagun hitza indexatzeko ari gara "Katuak." Ondoren trie erro batetik, haurrei begiratu goaz array, eta ari gara hemen begiratu letraren dagokion indizea C. Beraz indexatuko dela 2. Beraz, ematen duen, borondate horren nodo berri bat ematen diguten. Eta ondoren dugu nodo horretan lan egingo. Beraz emandako nodo hori, berriro ere gaude haur array begiratu egingo. Eta ari gara indizea zero begiratu katu A dagozkie. Beraz, ondoren ari gara Nodo hori joango gara, eta emandako nodo goaz amaiera begiratu dagokio bat da T. Eta mugitzea nodo horretan, nahi azkenik, erabat begiratu dugu bidez gure hitza "katu". Eta orain bool Hitz suposatzen da ala ez adierazten hitza eman hau da, benetan hitz bat. Beraz, zergatik ez, kasu berezi hori behar dugu? Beno hitza zer dagoen "katastrofe" gure hiztegian dago, baina hitza "katua" ez da? Beraz, eta ikusi bilatzen bada hitza "katu" gure hiztegian, gaude bidez arrakastaz begiratzen joan indizeak eskualde nodo in C-A-T. Baina hori bakarrik delako katastrofe gertatu bidean nodoak sortzeko C-A-T-tik, modu guztiak hitzaren amaieran. Beraz, hitza boolearra behar den ala ez adierazteko erabiltzen da kokapena zehatz honetan benetan hitz bat adierazten du. Ondo da. Beraz, gaur egun ezagutzen dugun zer trie da itxura, dezagun begiratu at kargatu funtzioa. Beraz, karga da boolearra itzuli egingo da Arrakastaz dugu edo ala arrakastarik hiztegia kargatu. Eta hau da hiztegi izango da kargatu nahi dugun. Beraz, lehenengo gauza egin gara irekita dago irakurtzeko hiztegi hori sortu. Eta ziurtatu behar dugu ez genuen huts. Hiztegian ez zen hala bada ondo ireki, itzuliko da nulua, kasu horretan gaude faltsua itzuli egingo da. Baina suposatuz dela arrakastaz ireki, ondoren, benetan irakurri ahal Hiztegi bitartez. Beraz, lehenengo gauza goaz Egin nahi hori dugu erro aldagai global. Orain root nodo bat izango da *. Gure trie goiko duten gara da egon errepikatzean den igaro. Beraz, goazen lehen gauza da egin nahi den esleitu gure erro memoria. Nabarituko calloc erabiltzen ari garela funtzioa, hau da, funtsean, gauza bera malloc funtzioa bezala, salbu da hau da zerbait itzultzeko bermatuta erabat zeroed daudelarik. Beraz malloc erabiliko bagenitu, ez genuke behar in erakusleak guztietan barrena joan gure nodoa, eta ziurtatu null guztiak ari dira. Beraz calloc egin egingo dela guretzat. Orain besterik malloc bezala, egin behar dugu ziur esleipena izan zen benetan arrakastatsua. Hau itzuli nulua bada, orduan dugu ixteko edo hiztegi behar fitxategia eta itzultzeko faltsua. Beraz, esleipena dela suposatuz zen arrakastatsua, nodo bat erabili * goaz kurtsorea gure trie bidez batetik bestera joateko. Beraz, gure sustraiak inoiz aldatu egingo da, baina ari gara kurtsorea erabili joan benetan joan nodo nodo. Beraz, hau loop irakurtzen ari gara hiztegi-fitxategi bidez. Eta fgetc erabiltzen ari gara. Fgetc da bakar bat hartzen joan fitxategia karaktere. Grabbing jarraitzeko goaz karaktereak ez dugu iritsi bitartean lerro amaierara. Bi kasuetan kudeatzeko behar dugu daude. Lehenengoan, bada pertsonaiaren ez zen lerro berri bat. Beraz, badakigu lerro berri bat bada, orduan mugitu hitz berri bati buruz ari gara. Baina suposatuz ez zen linea berri bat, ondoren Hemen irudikatu nahi dugu Indize gabiltza indizea joan sartu haurrak array duten begiratu aurretik dugu. Beraz, lehen esan bezala, behar dugu kasu berezia apostrofeari. Nabarituko hirutarra erabiltzen ari gara operadorea hemen. Beraz, hau da, gero irakurtzeko joan Pertsonaia batean irakurri dugu zen apostrophe, orduan ari gara 'ezarrita joan indizea = "ALPHABET" -1, egingo den indizea 26 izango da. Bestela, ez zen apostrofoa bada, ez dago indizea ezarri goaz c berdina - a. Beraz, gogoratu aurrez p-multzo atzera, c - bat gurekin emateko va C. posizio alfabetikoa Beraz bada C gutun bat da, borondate hau indizea zero ematen diguten. B gutun-kodea, izango da eman gurekin indizea 1 da, eta abar. Beraz, hau sartu indizea ematen digu haurrak array nahi dugula. Orain Indize hau nulua da bada haurrak, horrek esan nahi du nodo ez da gaur egun existitzen bide horretatik aurrera. Beraz esleitu behar dugu bide horretan nodo bat. Hau da, zer egin dugu hemen. Beraz, calloc berriro erabili joan funtzioa, beraz, ez dugu nahi zeron dituzten erakusleak guztian. Eta berriro behar dugu berriro egiaztatu calloc ez zuela huts egin. Calloc huts egin bada, orduan behar dugu guztia jaisteko, ixteko gure hiztegi, eta itzuli faltsua. Beraz suposatuz zuen ez dela huts egin, eta gero hau beste ume bat sortuko da guretzat. Eta ondoren egingo duten ume joan ginen. Gure kurtsorea batetik bestera joateko egingo Umea zela behera. Orain hau ez zela nulua bada honekin hasteko, ondoren kurtsorea besterik batetik bestera joateko daiteke behera haur hori benetan gabe ezer esleitu beharrik. Kasu hauetan gertatzen lehen gertatu dena da hitza esleitu "katu". Eta horrek esan nahi du noiz esleitu goaz "Katastrofe", ez dugu sortu C-A-T nodo berriro. Dagoeneko existitzen dira. Zer da hau bestela? Honetan baldintza non c zen da backslash n, non c linea berri bat izan zen. Horrek esan nahi arrakastaz dugula hitz bat osatu. Orain zer egin nahi dugunean ongi burutu da hitz bat? Hitz eremu hori erabiltzeko goaz Gure egitura nodo barruan. Duten ezartzeko egia nahi dugu. Beraz, horrek adierazten duen nodo honetan arrakastatsu bat adierazten hitza, benetako hitza bat. Orain ezarri duten egia da. Gure kurtsorea berrezartzeko puntua nahi dugu trie hasieran berriro. Eta, azkenik, Kontatzailea gure dictionary tamaina, beste lan bat aurkitu dugu geroztik. Beraz, hori egiten jarraitzea, pertsonaia egindako pertsonaiak irakurketa, eta nodo berria eraikitzeko gure trie Hitz bakoitzeko hiztegian, arte azkenik iritsiko gara C = EOF, eta bertan, Kasu apurtu fitxategian daudelarik dugu. Gaur egun, bi kasuetan pean daude bertan dugu EOF hit liteke. Lehenengoa da akats bat izan zen bada fitxategia irakurtzean. Errorea gertatu da hala bada, dugu tipikoa egin behar. Deskargatu dena, itxi fitxategia, itzultzeko faltsua. Ez zen errore bat suposatuz, hori besterik gabe esan nahi benetan hit dugu amaieran fitxategia, eta kasu horretan, itxi dugu fitxategia eta egia itzuliko geroztik dugu zuzen kargatu hiztegia gure trie sartu. Beraz, gaur egun utzi check out check. Txeke funtzioa begira, ikusiko dugu txeke hori bool bat itzuli du. Egia itzultzen du hitz hori da hori bada ari gainditu gure trie da. Faltsua itzultzen du bestela. Beraz, nola ari zaren ala ez zehazteko hitz hau gure trie da? Hemen ikusten dugu, zertxobait lehenago bezala, kurtsorea erabili batetik bestera joateko goaz gure trie bidez. Orain hemen ari gara batetik bestera joateko joan gure hitz osoa baino gehiago. Beraz, hitza iragan garen baino gehiago errepikatzean, zehazteko goaz du Indize haurrak array sartu duten hitza parentesi I. dagokio Beraz, hau da zehazki itxura joan karga, non gero word [i] da apostrofoa, ondoren, nahi dugun indizea "ALPHABET" erabili - 1. Zehaztuko dugu delako hori da non ari gara gordetzeko joan apostrophes. Bestela gabiltza txikiagoa bi hitza erabili joan parentesi I. Beraz, gogoratu, hitz hori, ahal kapitalizazio arbitrarioa izan. Eta, beraz, ziur Oraindik dugu egin nahi dugu minuskulaz gauza bertsio bat erabiliz. Eta, ondoren, behin 'a' bati kentzen berriro ematen diguten alfabetikoan du izaera duten posizioa. Beraz, gure indizea izango da haurrak array sartu. Eta orain bada indizea duten haurrak sartu array nulua da, horrek esan nahi dugu Jada jarraitu ahal errepikatzean gure trie behera. Hori horrela bada, hitz hori ezin seguru asko, gure trie izango da. Balitz, hori litzateke geroztik esan nahi ez bide bat izango litzateke hitz hori behera. Eta inoiz ez zenuke topo nulua. Beraz null topatzea, faltsua itzuliko gara. Hitza ez dago hiztegian. Ez balitz nulua bada, orduan gaude errepikatzean jarraitu egingo. Beraz, han kurtsorea joan den jakin seinalatu Indize hartan nodoa. Horretan zehar egiten mantendu dugu du hitz osoa, suposatuz inoiz hit dugu nulua. Horrek esan nahi bidez lortzeko gai izan ginen du hitz osoa, eta aurki Gure saiatu lotune bat. Baina ez nahiko oraindik egin dugu. Ez dugu nahi, besterik gabe itzultzeko egia. Kurtsore> hitza itzuli nahi dugu. Gogoratzen geroztik berriro, "katua" da, ez da gure hiztegian, eta "katastrofe" da, eta gero egingo dugu arrakastaz lortuko dugu bidez hitza "katu". Baina kurtsorea Hitz faltsuak eta ez da egia izango. Beraz, kurtsorea hitzaren itzultzeko dugun adierazi ala nodo hau da, benetan hitz bat. Eta hori da txeke da. Hargatik begiratu tamaina. Beraz tamaina nahiko erraza izango da geroztik, karga gogoratu, gaude hiztegi tamaina incrementing egiteko dugu topo hitz bakoitza. Beraz tamaina besterik ez da joan itzultzeko hiztegi tamaina. Eta hori da. Beraz, azkenik hustuketa egin dugu. Beraz, deskargatu, erabili goaz bat funtzioa errekurtsiboa benetan egiten denak Gurekin lan du. Beraz, gure eginkizun da, joan egon unloader deitu. Zer da unloader egin? Hemen ikusten dugu unloader hori joan den batetik bestera joateko baino gehiago ume guztiek at nodo zehatz honetan. Eta umea nodoa ez den kasuetan nulua, ondoren goazela umea nodoa jaisteko. Beraz, hau da errekurtsiboki deskargatu dituzun Gure seme-alaben guztiak. Behin gaude ziur gure seme-alaben guztiak dute deskargatzen dira, orduan dugu geure burua askatu ahal, beraz deskargatu geure burua. Hau errekurtsiboki lan egingo du deskargatu trie osoa. Eta gero, behin hori egin, besterik ez dugu itzuli ahal egia. Hustuketa ezin huts egin. Ari gauzak libre uzten dugu. Beraz, behin Bukatutakoan dugu askatzeaz guztia, itzultzeko egia. Eta hori da. Nire izena Rob da. Eta hau speller zen. [Musika jotzen]