>> 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.