>> Oratè 1: Se pou yo bay sa a solisyon yon eseye.
Se konsa, kite a pran yon gade nan sa ki nou Konstri ne ap gade tankou.
Isit la, nou wè nou pral gen yon Bouleen Pawòl ak yon etwal ne struct
Timoun bracket alfabè a.
Se konsa, premye bagay ou ka mande, poukisa se alfabè hash defini kòm 27?
Oke, sonje ke nou ap ale nan bezwen yo dwe manyen apostwòf a, se konsa
ki k ap pase yo dwe yon ti jan nan yon espesyal ka nan tout pwogram sa a.
>> OK, kounye a, sonje ki jan yon Trye aktyèlman ap travay.
Se pou nou di nou ap Indexing mo chat yo, Lè sa a, soti nan rasin lan nan trye nou an,
nou pral gade nan timoun yo etalaj, e nou pral fè yon gade nan la
endèks ki koresponn ak lèt ​​la C. Se konsa, ki ta ka endèks de.
Se konsa, bay sa, ki pral ban nou yon nouvo ne, ak Lè sa a, nou pral
travay nan ki ne.
>> Se konsa, bay yo ke ne, nou yon lòt fwa ankò ale nan gade nan etalaj la Timoun,
e nou pral fè yon gade nan endèks zewo koresponn ak yon an nan chat.
Se konsa, Lè sa a, nou pral pou yo ale nan ki ne, ak bay sa ne, nou pwal
fè yon gade nan endèks la ki koresponn T. Apre sa, deplase sou ak sa yo ki ne,
finalman, nou te konplètman gade nan Cat pawòl Bondye nou an, epi kounye a bouleen
Se pawòl Bondye sipoze endike si mo sa a bay se aktyèlman yon mo.
>> Se konsa, poukisa nou bezwen ki ka espesyal?
Oke, sa si katastwòf pawòl Bondye a se nan diksyonè nou an, men
chat la mo se pa?
Se konsa, nan je l 'nan wè si chat la mo se an nan diksyonè nou yo, nou ap ale nan
avèk siksè gade nan endis yo C-A-T, epi rive nan yon ne, men sa a
sèlman paske katastwòf rive kreye nœuds sou wout la soti nan C-A-T tout
wout la nan fen a nan mo a.
Se konsa, bouleen Pawòl ki itilize endike si kote sa a an patikilye aktyèlman
endike yon mo.
>> Tout dwa, se konsa kounye a ke nou konnen ki sa yon Trye ki pral gade tankou, se pou yo gade
nan fonksyon an chaj.
Se konsa, chaj ki pral retounen yon bouleen pou si nou avèk siksè oswa
diksyonè san siksè chaje ak sa a se pral fè diksyonè a
ke nou vle chaje.
Se konsa, premye bagay nou pral fè se louvri sa ki diksyonè pou lekti.
Nou dwe asire w ke nou pa t 'echwe, Se konsa, si diksyonè a pa t '
avèk siksè louvri, li pral retounen Pa gen, nan ka sa a nou pral
retounen Fo.
Men, an konsideran ke li avèk siksè louvri, lè sa a nou ka aktyèlman li
nan diksyonè a.
>> Se konsa, premye bagay nou pral vle fè se nou gen sa a
mondyal rasin varyab.
Koulye a, rasin a pwal yon etwal ne.
Li nan tèt la nan trye nou an ke nou ap yo pral iteration nan.
Se konsa, premye bagay nou pral vle fè se asiyen memwa pou rasin nou an.
>> Remake nou ap lè l sèvi avèk Calloc la fonksyon, ki se fondamantalman menm bagay la tou
kòm fonksyon an malok, eksepte li a garanti yo retounen yon bagay ki
konplètman zero deyò.
Se konsa, si nou itilize malok, nou ta bezwen ale nan tout nan pwent yo nan nou an
ne ak asire w ke yo ap tout nil.
Se konsa, Calloc pral fè sa pou nou.
>> Koulye a, jis tankou malok, nou bezwen fè asire w ke alokasyon an la aktyèlman
siksè.
Si sa a tounen nil, lè sa a nou ap oblije fèmen pòt diksyonè nou an
ranpli epi retounen Fo.
Se konsa, an konsideran alokasyon an te siksè, nou pral sèvi ak yon ne
zetwal flèch repňte nan trye nou an.
Se konsa, rasin nou an pa janm ale nan chanje, men nou ap ale nan sèvi ak flèch
aktyèlman ale nan ne ne.
>> Tout dwa, se konsa nan sa a pou bouk, nou se lekti atravè dosye a diksyonè,
e nou lè l sèvi avèk nan fgetc.
Se konsa, fgetc ki pral gen tan pwan yon sèl N. nan dosye a.
Nou pral kontinye arachman karaktè pandan ke nou pa rive nan
fini nan dosye a, se konsa gen de ka nou bezwen okipe.
Premye a, si karaktè a pa t 'yon nouvo liy, se konsa nou konnen si se te yon nouvo
liy, Lè sa a, nou ap sou yo deplase sou yon nouvo mo.
Men, an konsideran li pa t 'yon liy nouvo, Lè sa a, isit la, nou vle konnen nan
endèks nou pral endèks nan nan etalaj la Timoun ki
nou te etidye anvan.
>> Se konsa, tankou mwen te di anvan, nou bezwen ka espesyal apostwòf la.
Avi nou ap lè l sèvi avèk operatè a tèrsyèr isit la, se konsa nou ap ale nan li
sa a kòm si karaktè a nou li nan te yon apostwòf, lè sa a nou pral
mete endèks egal a alfabè mwens 1, ki pral endèks la 26.
Lòt Bagay, si li pa t 'yon apostwòf, Lè sa a, nou pral mete endèks la
egal a c mwens yon.
Se konsa, sonje tounen soti nan kouche p anvan, c mwens yon ki pral ban nou an
alfabetik pozisyon nan c, Se konsa, si c se lèt A a, yo pral sa a
ban nou endèks zewo.
Pou lèt la B, li ta bay nou endèks la 1, ak sou sa.
>> Se konsa, sa a ba nou endèks la nan la Timoun etalaj ke nou vle.
Koulye a, si sa a endèks se kounye a nil nan etalaj la Timoun, sa vle di
yon ne pa ki egziste kounye a soti nan ki chemen, se konsa nou bezwen asiyen yon
ne pou sa chemen.
Sa a ki sa nou fè isit la.
Se konsa, nou ap ale nan, ankò, sèvi ak Calloc la fonksyon pou ke nou pa jwenn okenn
a zewo soti tout nan pwent yo, epi nou, ankò, bezwen yo tcheke ki Calloc
pa t 'febli.
Si Calloc t rate, lè sa a nou bezwen dechaje tout bagay, fèmen nou an
diksyonè, epi retounen Fo.
>> Se konsa, an konsideran ke li pa t 'echwe, Lè sa a, sa a pral kreye yon timoun nouvo pou nou,
ak Lè sa a, nou pral ale nan ke pitit.
Kurseur nou yo ap repňte desann nan sa timoun nan.
Koulye a, si sa a pa t 'nil yo kòmanse avèk yo, Lè sa a, kurseur nan ka jis repňte
desann nan ke pitit san yo pa aktyèlman li te gen asiyen anyen.
Sa a se ka a kote nou te rive premye asiyen chat la pawòl, ak
sa vle di lè nou ale nan asiyen katastwòf, nou pa bezwen yo kreye
nœuds pou C-A-T ankò.
Yo deja egziste.
>> OK, se konsa sa ki Lòt Bagay sa a?
Sa a se kondisyon an kote c te antislach n, kote c te yon liy nouvo.
Sa vle di ke nou gen avèk siksè ranpli yon mo.
Koulye a, ki sa nou vle fè lè nou konplete avèk siksè yon mo?
Nou pral itilize sa a jaden mo andedan nan ne struct nou an.
>> Nou vle mete ke yo Vrè, se konsa ke endike ke ne sa a endike yon
mo yon mo aktyèl siksè.
Koulye a, mete ke yo Vrè.
Nou vle Reyajiste kurseur nou an nan pwen nan konmansman an nan trye la ankò.
E finalman, enkreman diksyonè nou an gwosè depi nou te jwenn yon lòt mo.
>> Tout dwa, se konsa nou ap ale nan kontinye ap fè sa a, lekti nan karaktè pa
karaktè, konstwi nouvo nœuds nan trye nou yo ak pou chak mo nan la
diksyonè, jouk nou finalman rive nan c egal èof, nan ka sa, nou kraze
soti nan dosye a.
Koulye a, ki te gen de ka ki poko gen ki nou ka gen frape èof.
Premye a se si te gen yon erè li nan dosye a, se konsa si te gen
yon erè, nou bezwen fè tipik la dechaje tout bagay, fèmen dosye a,
retounen Fo.
Si nou sipoze gen pa t 'yon erè, ki jis vle di nou aktyèlman frape nan fen
dosye a, nan ki ka, nou fèmen a ranpli epi retounen Vrè depi nou
avèk siksè chaje diksyonè a nan trye nou an.
>> Tout dwa, se konsa kounye a kite a tcheke deyò chèk la.
Gade nan fonksyon an Tcheke, nou wè ki Tcheke ki pral retounen yon bouleen.
Li retounen Vrè si mo sa a ke li nan ke yo te pase se nan trye nou an.
Li retounen Fo otreman.
>> Se konsa, kouman nou pral detèmine si mo sa a se nan trye nou an?
Nou wè isit la ke, jis tankou anvan, nou pral sèvi ak kurseur repňte
nan trye nou an.
Koulye a, isit la, nou ap ale nan repňte sou tout pawòl nou yo.
Se konsa, iteration sou pawòl Bondye a nou se te pase, nou pral detèmine a
endèks nan etalaj la Timoun ki koresponn ak mo bracket mwen.
Se konsa, sa a ki pral gade egzakteman tankou Chaj, kote si bracket mo mwen se yon
apostwòf, lè sa a nou vle sèvi ak endèks alfabè mwens 1 paske nou detèmine
ki se kote nou pral nan magazen apostrof.
>> Lòt Bagay nou pral sèvi ak toloe mo bracket mwen.
Se konsa, sonje mo sa a ka gen abitrè lèt majiskil, ak pou nou
vle asire nou ke nou ap itilize yon vèsyon miniskil de bagay sa yo.
Lè sa a, fè soustraksyon de sa miniskil yon a, yon lòt fwa ankò, ban nou an
alfabetik pozisyon nan ki karaktè.
Se konsa, ki k ap pase yo dwe endèks nou nan etalaj la Timoun.
>> Epi, koulye a, si sa endèks nan timoun yo etalaj se nil, sa vle di nou
pa kapab kontinye iteration desann trye nou an.
Si sa a, se ka a, mo sa a pa kapab petèt dwe nan trye nou an, depi si li
yo te, ki ta vle di ke ta gen yon chemen desann nan mo sa a, epi ou ta
pa janm rankontre nil.
Se konsa, rankontre nil, nou retounen Fo.
Pawòl Bondye a se pa an nan diksyonè a.
Si se pa t nil, lè sa a nou pral kontinye iteration, se konsa nou pral
nan aktyalizasyon kurseur nou an nan pwen ak sa yo ki ne patikilye nan ki Konpayi paran yo.
>> Se konsa, nou kontinye ap fè sa nan tout tout mo a.
Si nou sipoze nou pa janm frape nil, sa vle di nou te kapab jwenn nan tout la
mond epi jwenn yon ne nan trye nou an, men nou pa ap byen fè ankò.
Nou pa vle jis retounen Vrè.
Nou vle retounen kurseur mo erè depi, sonje ankò, si chat se pa
an nan diksyonè nou yo ak katastwòf se, Lè sa a, nou pral avèk siksè jwenn nan
chat la mo, Men, pawòl kurseur yo pral Fo ak pa vre.
Se konsa, nou retounen mo kurseur yo endike si wi ou non ne sa a se aktyèlman yon mo,
e ke sa a li pou chèk la.
>> Se konsa, kite a tcheke deyò Size.
Se konsa, Size a pwal trè fasil depi, sonje nan chaj, nou
incrementing diksyonè gwosè pou chak mo ke nou rankontre.
Se konsa, Size se jis ale nan retounen diksyonè gwosè, e ke sa a li.
>> Tout dwa, se konsa Finalman, nou gen dechaje.
Se konsa, dechaje, nou ap ale nan sèvi ak yon fonksyon repetitif ki aktyèlman fè tout
nan travay la pou nou, se konsa fonksyon nou ki pral yo dwe rele decharjeur.
Ki sa ki decharjeur pral fè?
Nou wè isit la ke decharjeur ki pral repňte sou tout timoun yo nan
ne sa a an patikilye, epi si timoun nan ne se pa nil, lè sa a nou pral
dechaje ne nan timoun.
>> Se konsa, sa a ki pral recursive dechaje tout pitit nou yo.
Yon fwa nou ap asire w ke tout timoun nou yo yo te chaje, lè sa a nou
ka nou libere tèt nou, se konsa dechaje ourself.
Se konsa, sa a pral recursive dechaje la tout trye, ak Lè sa a, yon fwa sa a, se
fè, nou ka jis retounen Vrè.
Debake pa ka echwe, nou ap jis libere bagay sa yo.
Se konsa, yon fwa nou ap fè libere tout bagay, retounen Vrè.
Epi sa a, li.
Non mwen se Rob, ak sa a te [fèbl].