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