>> Gjuha 1: Le të japim kjo zgjidhje provoni.
Pra, le të marrin një vështrim në atë tona Nyje struct do të duket si.
Këtu, ne shohim ne do të kemi një Bool Word dhe një yll struct nyje
Fëmijët kllapa alfabet.
Gjëja e parë kështu që ju mund të pyesin, pse është e hash alfabeti përcaktuar si 27?
E pra, mos harroni se ne do të duhet për të trajtimin e apostrof, kështu
që do të jetë disi e një të veçantë rast në të gjithë këtë program.
>> OK, tani, mos harroni se si një Trie në të vërtetë punon.
Le të thonë se ne jemi duke indeksimin macet fjalë, pastaj nga rrënja e Trie tonë,
ne do të shikojmë në Fëmijëve array, dhe ne do të shohim në
Indeksi që korrespondon me letrën C. Kështu që do të jetë indeksi dy.
Pra duke pasur parasysh se, që do të na japë një nyje të re, dhe pastaj ne do të
punojnë nga ajo nyje.
>> Pra, duke pasur parasysh se nyjen, ne jemi edhe një herë duke shkuar për të parë në grup Fëmijëve,
dhe ne do të shohim në indeksin zero të korrespondojnë me A në mace.
Pra, atëherë ne jemi duke shkuar për të shkuar në atë nyje, dhe duke pasur parasysh se nyjen, ne jemi duke shkuar
për të parë në indeksin që korrespondon të T. Dhe të lëvizin për në atë nyje,
më në fund, ne kemi shikuar plotësisht përmes Cat tonë fjalë, dhe tani bool
Fjala është menduar për të treguar nëse kjo fjalë e dhënë është në të vërtetë një fjalë.
>> Pra, pse nuk kemi nevojë për këtë rast të veçantë?
E pra, çfarë nëse katastrofë fjala është në fjalorin tonë, por
fjala mace nuk është?
Pra, në kërkim për të parë nëse fjala është cat në fjalorin tonë, ne do të
sukses shoh nga treguesit e C-A-T dhe për të arritur një nyje, por kjo është
vetëm për shkak katastrofë ka ndodhur me krijuar nyjet në rrugën nga C-A-T gjitha
rruga për në fund të fjalës.
Pra bool Fjala është përdorur tregojnë nëse këtë vend të veçantë në të vërtetë
tregon një fjalë.
>> Në rregull, kështu që tani që ne e dimë se çfarë një Trie do të duken si, le të shohim
në funksion Load.
Pra Load do të kthejë një bool Sepse ne sukses apo
ngarkuar pa sukses fjalor dhe kjo do të jetë fjalor
që ne duam të ngarkesës.
Pra gjëja e parë që ne jemi duke shkuar për të bërë është e hapur up këtë fjalor për lexim.
Ne duhet të sigurohemi që ne nuk dështojnë, kështu që nëse fjalor nuk ishte
u hap me sukses, ajo do të kthehet Jo, në këtë rast ne do të
kthimit të rreme.
Por, duke supozuar se ajo me sukses hapur, atëherë ne në fakt mund të lexoni
përmes fjalorit.
>> Pra gjëja e parë që ne jemi duke shkuar për doni të bëni është të kemi këtë
rrënjë globale ndryshueshme.
Tani, rrënjë do të jetë një yll nyje.
Është maja e Trie sonë se ne jemi do të iterating përmes.
Pra gjëja e parë që ne do të duan të bëni është të siguroj kujtesë për rrënjë tonë.
>> Vini re se ne jemi duke përdorur Calloc funksion, e cila është në thelb njëjtë
si funksion malloc, përveç se është garantuara për të kthyer diçka që është
zeroed krejtësisht jashtë.
Pra, nëse kemi përdorur malloc, ne do të duhet të kalojnë nëpër të gjitha pointers në tonë
nyjë dhe të sigurohemi se ata janë të gjithë null.
Pra Calloc do të bëjë atë për ne.
>> Tani, ashtu si malloc, ne kemi nevojë për të bërë i sigurt se ndarja e vërtetë
suksesshëm.
Nëse kjo kthye null, atëherë ne nevojë për të mbyllur fjalorin tonë
paraqesë dhe të kthehet False.
Pra, duke supozuar shpërndarjen u suksesshme, ne jemi duke shkuar për të përdorur një nyje
yll kursorin për të iterate përmes Trie tonë.
Pra rrënjë tonë kurrë nuk do të ndryshojë, por ne jemi duke shkuar për të përdorur kursorin për të
në fakt shkojnë nga nyje në nyje.
>> Në rregull, kështu që në këtë Për loop, ne jemi leximit nëpërmjet dosjes fjalor,
dhe ne jemi duke përdorur në fgetc.
Pra fgetc do të kap një të vetme karakter nga file.
Ne jemi duke shkuar për të vazhduar grabbing karaktere ndërsa ne nuk e arrijnë
fund të dosjes, kështu që ka dy raste ne kemi nevojë për të trajtuar.
E para, në qoftë se karakteri nuk ishte një linjë e re, kështu që ne e dimë nëse kjo ishte një e re
line, atëherë ne jemi gati për të lëvizin për në një fjalë të re.
Por duke supozuar se nuk ishte një linjë e re, atëherë këtu, ne duam të kuptoj se
Indeksi ne do të indeksit në në rrjet Fëmijët që
kemi shikuar në para.
>> Pra, si kam thënë më parë, ne kemi nevojë për të rast i veçantë apostrof.
Vini re që ne jemi duke përdorur operatorin tresh këtu, kështu që ne jemi duke shkuar për të lexuar
kjo sikur karakteri lexojmë në ishte një apostrof, atëherë ne do të
vendosur indeks të barabartë për të alfabetit minus 1, e cila do të jetë indeksi 26.
Tjetër, në qoftë se ajo nuk ishte një apostrof, atëherë ne jemi duke shkuar për të vendosur indeksin
barabartë me C minus.
Pra mbani mend prapa nga grupe mëparshme p, c minus një do të na japë
Pozita alfabetik i c, kështu që nëse c është shkronja A, kjo do të
na japin indeksin zero.
Për të letrës B, ajo do të japë na indeksi 1, dhe kështu me radhë.
>> Pra, kjo na jep indeksin në Fëmijët array që ne duam.
Tani, në qoftë se ky indeks është aktualisht null në array Fëmijët, që do të thotë se
një nyje nuk ekzistojnë aktualisht nga se rruga, kështu që ne duhet të ndajë një
nyje për atë rrugë.
Kjo është ajo që ne bëjmë këtu.
Pra, ne jemi duke shkuar për të, përsëri, përdorni Calloc funksion në mënyrë që ne nuk kemi
në zero nga të gjitha pointers, dhe ne, përsëri, duhet të kontrolloni se Calloc
nuk dështojnë.
Nëse Calloc ka dështojnë, atëherë ne kemi nevojë për të shkarkuar çdo gjë, të mbyllur tonë
fjalor, dhe të kthehen False.
>> Pra, duke supozuar se ajo nuk dështojnë, atëherë kjo do të krijojë një fëmijë të ri për ne,
dhe atëherë ne do të shkojnë për atë fëmijë.
Kursori ynë do të iterate poshtë për atë fëmijë.
Tani, në qoftë se kjo nuk ishte null për të filluar me, pastaj kursori mund vetëm të iterate
poshtë për këtë fëmijë të vërtetë pa pasur nevojë të ndajë asgjë.
Ky është rasti ku ne ka ndodhur e parë të ndajë fjalën mace, dhe
që do të thotë kur të shkojmë për të alokuar katastrofë, ne nuk kemi nevojë për të krijuar
nyje për C-A-T përsëri.
Ata tashmë ekzistojnë.
>> OK, kështu që çfarë është kjo Else?
Kjo është gjendja ku c është backslash n, ku c është një linjë e re.
Kjo do të thotë se ne kemi sukses përfunduar një fjalë.
Tani, ajo që duam të bëjmë, kur ne përfunduar me sukses një fjalë?
Ne jemi duke shkuar për të përdorur këtë fushë fjalën brenda nyjeve tonë struct.
>> Ne duam të vendosur që të Vërtetë, në mënyrë që tregon se kjo nyje tregon një
Fjala e suksesshme një fjalë aktual.
Tani, të vendosur që të Vërtetë.
Ne duam të rivendosur kursorin tonë për pikë në fillim të Trie perseri.
Dhe së fundi, rritje fjalorin tonë Madhësia pasi kemi gjetur një tjetër fjalë.
>> Në rregull, kështu që ne do të vazhdojmë të bëjmë që, duke lexuar në karakter nga
karakter, ndërtimin nyje të reja në Trie tonë dhe për çdo fjalë në
fjalor, deri sa të arrijë në fund të c barabartë EOF, në të cilin rast, ne të thyer
nga file.
Tani, ka dy raste nën të cilat ne mund të ketë goditur EOF.
E para është nëse ka pasur një gabim leximi nga file, kështu që nëse ka pasur
një gabim, ne duhet të bëjmë tipike shkarkoj çdo gjë, të mbyllur dosjen,
kthimit të rreme.
Duke supozuar se nuk ishte një gabim, që thjesht do të thotë që ne të vërtetë goditi në fund të
fotografi, në të cilin rast, ne mbyllim paraqesë dhe të kthehet vërtetë që kemi
ngarkuar me sukses fjalorin në Trie tonë.
>> Të gjithë të drejtë, kështu që tani le të shikoni Kontrollo.
Duke parë në funksion Kontrollo, ne shohim Kontrolloni se do të kthehet një bool.
Ajo kthen vërtetë nëse kjo fjalë që është e duke u kaluar është në Trie tonë.
Ajo kthehet False ndryshe.
>> Pra, si do të shkojmë për të përcaktuar nëse kjo fjalë është në Trie tonë?
Ne shohim këtu se, ashtu si më parë, ne jemi duke shkuar për të përdorur kursorin për të iterate
përmes Trie tonë.
Tani, këtu, ne do të iterate mbi gjithë fjalën tonë.
Pra iterating fjalën ne jemi kaluar, ne jemi duke shkuar për të përcaktuar
Indeksi në grup Fëmijët që korrespondon me fjalën kllapa i.
Pra, kjo do të duket tamam si Load, ku në qoftë se fjala simboli i është një
apostrof, atëherë ne duam të përdorim indeksin Alfabeti minus 1, sepse ne kemi vendosur
kjo është ajo ku ne jemi duke shkuar për të ruajtur apostrofat.
>> Tjetër ne jemi duke shkuar për të përdorur tolower kllapa fjala i.
Pra, mos harroni se fjala mund të ketë arbitrare kapitalizimin, dhe kështu që ne
doni të bëni të sigurtë që ne jemi duke përdorur një version me të vogla të gjëra.
Dhe pastaj të zbriten nga ajo Fjala një për të, edhe një herë, të na japin
Pozicioni alfabetik e atë karakter.
Kështu që do të jetë indeksi tonë në grup të Fëmijëve.
>> Dhe tani, në qoftë se indeksi në Fëmijëve array është null, që do të thotë ne
mund të vazhdojë më iterating poshtë Trie tonë.
Në qoftë se është e rastit, kjo fjalë nuk mund të të jetë ndoshta në Trie tonë, pasi nëse ajo
u, që do të thotë se do të ishte një rruga deri në atë fjalë, dhe ju do të
nuk ndeshen null.
Pra ndeshi null, ne kthehemi False.
Fjala nuk është në fjalor.
Po të mos ishte i pavlefshëm, atëherë ne do të vazhdojnë iterating, kështu që ne jemi duke shkuar
për të rinovuar kursorin tonë që të tregojnë për atë nyje të veçantë në atë indeks.
>> Pra, ne të vazhdojmë të bëjmë atë në të gjithë e gjithë fjala.
Duke supozuar ne kurrë nuk e goditi null, që do të thotë ne kemi qenë në gjendje për të marrë nëpër të gjithë
bota dhe për të gjetur një nyje në Trie tonë, por ne nuk jemi duke bërë mjaft ende.
Ne nuk duam të vetëm të kthehen vërtetë.
Ne duam të kthehen kursorin gabim fjalën që, mos harroni përsëri, në qoftë se macja nuk është e
në fjalorin tonë dhe katastrofa është, atëherë ne do të të marrë me sukses përmes
cat fjalë, por fjala kursori do të jenë të rreme dhe nuk vërtetë.
Pra, ne kthehemi fjalë kursorin për të treguar nëse kjo nyje është në të vërtetë një fjalë,
dhe kjo është ajo për kontroll.
>> Pra, le të shikoni Size.
Pra, Madhësia do të jetë goxha e lehtë që, mos harroni në Ngarkesë, ne jemi
bën rritjen madhësinë fjalor për çdo fjalë që hasim.
Pra Size është vetëm do të kthehen Madhësia fjalor, dhe kjo është ajo.
>> Në rregull, kështu që së fundi, ne kemi zbraz.
Pra shkarkoj, ne do të përdorë funksion recursive të bëjë në fakt të gjithë
e punës për ne, kështu funksionin tonë do të të quhet unloader.
Çfarë është unloader do të bëni?
Ne shohim këtu se unloader do të iterate mbi të gjithë fëmijët në
kjo nyje të veçantë, dhe në qoftë se fëmija nyje nuk është null, atëherë ne do të
shkarkoj nyjen e fëmijëve.
>> Pra, kjo do të Recursively shkarkoj gjithë fëmijët tanë.
Pasi ne jemi të sigurt që të gjithë fëmijët tanë janë shkarkuar, atëherë ne
mund të lirë veten, kështu shkarkoj ourself.
Pra, kjo do të Recursively të shkarkoj tërë Trie, dhe pastaj një herë kjo është
bërë, ne vetëm mund të kthehen vërtetë.
Shkarkoj nuk mund të dështojë, ne jemi vetëm liruar gjëra.
Pra, një herë ne jemi duke bërë liruar çdo gjë, kthehen vërtetë.
Dhe kjo është ajo.
Emri im është Rob, dhe kjo ishte [e padëgjueshme].