ROB BOWDEN: Kaixo. Nago Rob, eta dezagun hash irtenbide hau daudelarik. Beraz, hemen ari gara ezartzea joan Hash taula orokor bat. Ikusten dugun egiturari gure hash nodo taula da itxura hau egingo. Beraz, char hitz bat izan da joan tamaina luzera gehi 1 array. Ez ahaztu 1 gehienezko geroztik hiztegian hitzari 45 da pertsonaiak, eta gero goazela egiteko karaktere osagarri bat behar backslash 0. Eta gero, gure hash bakoitzean taula ontzi da gordetzeko joan a lotuta nodo zerrenda. Ez ari gara lineala hemen probak egiten. Eta beraz, ordena hurrengo lotzen ontzi, elementu, bat behar dugu egitura nodo * hurrengo. Beraz, horrek zer nodo bat itxura da. Orain, hemen adierazpena da gure hash taula. Honez 16.384 kuboak izan du, baina zenbaki hori ez da benetan axola. Eta, azkenik, ari gara joan behar du hashtable_size aldagai global, eta horrek off hasteko 0 gisa, eta hura da segimendua egingo zenbat hitz gure hiztegian ziren. Ondo da. Beraz, dezagun karga begirada bat. Beraz nabarituko karga duten, boolearra itzultzen digu. Egia itzuliko duzu arrakastaz bada kargatu eta faltsua bestela. Eta char * izar bat hartzen du hiztegi, horrek hiztegi da ireki nahi dugula. Beraz, lehenengo gauza da egin dugu. Hiztegian fopen for goaz , irakurketa eta behar goaz ziur hala bada arrakastarik izan dela NULL itzuli du, 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 hau hautsi arrazoia begizta bertan ikusiko dugu. Beraz eduki begizta, eta orain goaz nodo bakar bat malloc. Eta, jakina, txeke error behar dugu mallocing ez bada arrakasta berriro so eta 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 luzera Buffer plus Bat goazela hitza gordetzeko sartu Beraz fscanf da itzuliko 1 betiere joan arrakastaz irakurri bat gai izan zen bezala fitxategia hitza. Bai errore bat gertatzen bada edo helduko gara fitxategia amaieran, ez da itzultzeko 1 eta kasu horretan ez bada itzuli 1, ari gara, azkenik, hautsi egingo berriz, begizta hau daudelarik. Beraz, ikusi dugu behin arrakastaz dugu hitz bat irakurri sartu sarrera-> hitza, eta gero ari gara hash joan hitz hori gure hash funtzioa erabiliz. Ikus dezagun begirada bat hash funtzioa. Beraz, ez duzu benetan behar hau ulertzeko. Eta, egia esan, besterik gabe bota hau dugu hash funtzioa Internetetik. 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, zuk bat ematen du hash taula sartu indizea. Nabarituko ari garela NUM_BUCKETS by Modding beraz hash balioa itzuliko benetan hash taula sartu indize bat da eta ez du haratago indizea array mugetatik. Beraz emandako hash funtzio hori, goazen irakurri dugun hitza egiaztatu hiztegitik eta ondoren, goazen hori erabili ahal txertatu ditu Istorio hash taula sartu. Orain, hash taula hash oraingoa da lotuta hash taulan zerrenda, eta Oso posible da hori besterik ez da NULL. Gure at sarrera txertatu nahi dugu lotutako zerrenda honen hasieratik, eta beraz, gure uneko sarrera izan goaz hash zer taulan gaur egun seinalatu puntuak eta gero ari gara gordetzeko joan hash hash at taulan egungo sarrera. Beraz bi lerro hauek arrakastaz txertatu du hasieran sarrera lotuta indizea hartan zerrenda hash taula. Horrekin dugu Bukatutakoan behin, badakigu beste hitz bat aurkitu dugula horretan hiztegi eta Kontatzailea dugu berriro. Hori egitean mantendu dugun fscanf arte azkenik zerbait ez 1 ematen at puntua gogoratu behar dugula sarrera doan, beraz, hemen, bat malloced dugu Istorio eta zerbait irakurtzen saiatu ginen hiztegitik. Eta ez du behar bezala irakurri dugu hiztegitik zerbait zeinean Kasu sarrera dugula libratzeko behar dugu inoiz benetan hash taula jarri eta, azkenik, hautsi. Behin hautsi dugu, ikusi behar dugu, bai, apurtu genuen han delako zen Errorea gertatu da fitxategia irakurtzean, edo apurtu genuen iritsi garelako fitxategiaren amaieran? Errorea gertatu da bada, orduan nahi dugu itzultzeko faltsua karga ez delako arrakasta, eta prozesuan, nahi dugu dugu irakurri diren hitz guztiak deskargatu eta hiztegi itxi fitxategia. Suposatuz arrakasta genuen, orduan besterik ez dugu oraindik ere hiztegi itxi behar fitxategia, eta azkenik egia geroztik itzuli Nik ongi kargatu dugu hiztegi. Eta hori da karga. Beraz, orain begiratu, kargatutako hash taula bat eman, da itxura hau egingo. Beraz, egiaztatu, boolearra itzultzen digu, eta horrek dagoela adierazi du joan ala pasa-in char * hitza, ala pasa-Kate gure hiztegian dago. Da hiztegian hala bada, bada gure hash taula, izango da itzuliko gara egia, eta ez bada, faltsua itzuliko izango dugu. Pasa-hitza horren aurrean, ez gara hitza egiaztatu du. Orain, aitortu gauza garrantzitsu bat da duten karga, dugu bazekien hori guztia Hitzak ziren minuskulaz izango, baina hemen, ez gaude hain ziur. Gure hash funtzioa begirada bat hartzen badugu, gure hash funtzioa benetan da pertsonaia bakoitzak lowercasing Hitzaren. Beraz, kapitalizazioa kontuan hartu gabe hitza, gure hash funtzioa ez da joan edozein dela indizea berberak emango kapitalizazio da litzateke erabat minuskulaz itzuli hitzaren bertsio. Ondo da. Beraz, gure indizea da. Hash hitza honetarako mahai da. Orain, hau loop va Zerrenda lotuta gehiagoko izateko du indize hori izan zen. Beraz, konturatu sarrera hasieratzean ari gara indize hori seinalatu. Istorio ez bitartean jarraituko goaz ez berdinak NULL, eta gogoratu erakuslea eguneratzeko gure lotuta zerrendan Istorio berdinen sarrera-> hurrengoa, beraz, gure egungo sarrera puntu lotuta-zerrendako hurrengo elementua. Ondo da. Hain lotuta zerrendan sarrera bakoitzeko, strcasecmp erabili goaz. Ez da strcmp delako berriro ere, dugu gauzak kasu insensitively egin nahi. Beraz strcasecmp erabiltzen dugu hitza alderatzeko zen funtzio hori gainditu hitzaren aurka duten Istorio honetan. 0 itzultzen badu, horrek esan nahi du ez zela Partidu bat, kasu horretan, nahi dugu egia itzuliko. Arrakastaz aurkitu dugu Gure hash taula 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 taula ez dauka hitz hau. Eta hori da txeke da. Ondo da. Beraz, dezagun tamaina begirada bat. Orain, tamaina nahiko erraza da izango geroztik karga gogoratu, hitz bakoitzeko aurkitu dugu global bat gehitzen dugu hashtable_size aldakorra. Beraz tamaina funtzioa besterik ez da global hori itzuli egingo da aldakorra, eta hori da. Orain, azkenik, deskargatu behar dugu hiztegi guztia behin egiten. Beraz, nola ari gara hori egin dugu? Hementxe, ari gorako guztiak begizta dugu Gure hash taula kuboak. Beraz, ez dago NUM_BUCKETS kuboak dira. Eta lotuta gure hash zerrenda bakoitzeko mahaia, gabiltza gainean begizta joan lotutako zerrenda osoa elementu bakoitzak uzten. Orain, kontuz ibili behar dugu, beraz, hemen dugu tenporala aldagai bat hori da, izan 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 behin geroztik libratuko dugu 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 duten zerrendak lotutako guztientzat in Hash taula du, eta egiten ari gara behin horrekin, erabat Nik deskargatzen dugu Hash taula du, eta egiten ari gara. Beraz, ezinezkoa da zamaketariarena inoiz itzultzeko faltsua, eta Bukatutakoan dugunean, dugu return egia.