>> Tagapagsalita 1: ni bigyan Hayaan ito na solution sa isang try.
Kaya ipaalam sa tumagal ng isang pagtingin sa kung ano ang aming Struct node magiging hitsura.
Dito, makikita natin kami ay pagpunta sa may Bool Salita at isang Struct node star
Ang mga bata bracket alpabeto.
Kaya unang bagay na maaaring nag-iisip, bakit tinukoy ay alpabeto hash bilang 27?
Well, tandaan na kami ay pagpunta sa kailangan na paghawak ng mga kudlit, kaya
na pupuntahan na medyo ng isang espesyal na kaso sa buong programa na ito.
>> OK, ngayon, tandaan kung paano ang isang Trie talaga gumagana.
Sabihin nating naka-ini-index namin ang salitang pusa, pagkatapos ay mula sa root ng aming Trie,
kami ay pagpunta sa tumingin sa mga Bata array, at kami ay pagpunta sa tumingin sa
index na tumutugon sa titik C. Kaya na magiging index ng dalawa.
Kaya ibinigay na iyon, na ay magbibigay sa amin isang bagong node, at pagkatapos kami ay
gumagana mula sa na node.
>> Kaya ibinigay na node, kami ay isang beses muli pagpunta sa tumingin sa mga Bata array,
at kami ay pagpunta upang tumingin sa index zero upang tumugma sa A sa pusa.
Kaya pagkatapos kami ay pagpunta upang pumunta sa na node, at ibinigay na node, kami ay pagpunta
upang tumingin sa index na tumutugon sa T. At gumagalaw sa sa na node,
sa wakas, ganap namin ay tumingin sa pamamagitan ng aming salita Cat, at ngayon Bool
Salita ay dapat na ipahiwatig kung ito ibinigay na salita ay tunay na isang salita.
>> Kaya bakit kailangan namin na espesyal na kaso?
Well, kung ano kung ang salitang sakuna ay nasa aming diksyunaryo, ngunit
ang salitang pusa ay hindi?
Kaya sa naghahanap upang makita kung ang salitang pusa ay sa aming diksyonaryo, kami ay pagpunta sa
Matagumpay na tumingin sa pamamagitan ng mga indeks ng C-A-T at maabot ang isang node, ngunit iyan ay
dahil lamang nangyari sakuna sa lumikha ng mga node sa paraan mula sa C-A-T lahat
ang daan sa dulo ng salita.
Kaya Bool Salita ay ginagamit ipahiwatig kung ito partikular na lokasyon talaga
ay nagpapahiwatig ng isang salita.
>> Ang lahat ng mga karapatan, kaya ngayon na alam namin kung ano ang isang Trie ay pagpunta sa hitsura, tingnan natin hayaan
sa Mag-load ng function.
Kaya Load ay pagpunta upang magbalik ng Bool para kung namin matagumpay o
unsuccessfully load diksyunaryo at ito ay magiging diksyunaryo
na gusto naming i-load.
Kaya unang bagay na kami ay pagpunta sa gawin ay bukas up na diksyunaryo para sa pagbabasa.
Mayroon kaming upang matiyak na hindi namin ginawa mabibigo, kaya kung ang diksiyonaryo ay hindi
Matagumpay na nabuksan, at ibabalik ito Hindi, na kung saan kami ay pagpunta sa
bumalik Maling.
Ngunit sa pag-aakala na ito matagumpay binuksan, pagkatapos ay maaari naming talagang basahin
sa pamamagitan ng diksyunaryo.
>> Kaya unang bagay na kami ay pagpunta sa gusto lang gawin ay mayroon kaming na ito
global variable na ugat.
Ngayon, ugat ay magiging isang node bituin.
Ito ay sa tuktok ng aming Trie na kami pagpunta sa ma-iterating sa pamamagitan ng.
Kaya unang bagay na kami ay pagpunta sa nais na gawin ay magtalaga ng memory para sa aming mga ugat.
>> Pansinin na ginagamit namin ang Calloc function, na kung saan ay isa lamang ang parehong
bilang ang Malloc function, maliban ito ay garantisadong upang magbalik ng bagay na
ganap zeroed out.
Kaya kung ginamit namin Malloc, gusto naming i- pumunta sa pamamagitan ng lahat ng mga mungkahi ukol sa aming mga
node at matiyak na ang mga ito ay lahat null.
Kaya Calloc ay gawin iyon para sa amin.
>> Ngayon, tulad ng Malloc, kailangan naming gumawa Tiyakin na ang paglalaan ay talagang
matagumpay.
Kung ito ibinalik null, pagkatapos namin kailangan upang isara ang aming diksyunaryo
maghain at bumalik Maling.
Kaya kung ipagpalagay na ang paglalaan ay matagumpay, kami ay pagpunta sa gumamit ng isang node
lagyan ng star ang Cursor na umulit sa pamamagitan ng aming Trie.
Kaya aming mga ugat ay hindi kailanman pagpunta sa magbago, ngunit kami ay pagpunta sa gumamit ng Cursor sa
talaga pumunta mula sa node sa node.
>> Ang lahat ng mga karapatan, kaya sa ganitong Para sa loop, kami ay pagbabasa sa pamamagitan ng mga file na diksyonaryo,
at aming ginagamit sa fgetc.
Kaya fgetc ay pagpunta sa grab isang solong karakter mula sa file.
Kami ay pagpunta sa magpatuloy daklot character habang hindi namin maabot ang
magtapos ng file, kaya walang mga dalawang mga kaso na kailangan namin upang mahawakan.
Ang una, kung ang karakter ay hindi isang bagong linya, upang malaman namin kung ito ay isang bagong
linya, pagkatapos kami ay tungkol sa lumipat sa isang bagong salita.
Ngunit sa pag-aakala ay hindi ito isang bagong linya, pagkatapos ay dito, nais naming malaman kung ang
index namin ang pagpunta sa index sa sa mga bata array na
itinuturing namin ang bago.
>> Kaya tulad ng sinabi ko dati, kailangan naming i- espesyal na kaso ang kudlit.
Pansinin na aming ginagamit ang tatlong bagay operator dito, kaya kami ay pagpunta sa basahin
ito na parang ang character na binabasa namin sa noon ay isang kudlit, pagkatapos kami ay pagpunta sa
set index katumbas ng alpabeto minus 1, na kung saan ay ang magiging index 26.
Iba Pa, kung ito ay hindi isang kudlit, pagkatapos kami ay pagpunta upang itakda ang index
katumbas ng c minus isang.
Kaya tandaan pabalik mula sa mga nakaraang mga set p, c minus isang ay pagpunta sa bigyan kami ng mga
alpabetikong posisyon ng c, kaya kung c ay ang letrang A, ang kaloobang ito'y
bigyan kami ng index zero.
Para sa titik B, mas bigyan amin index 1, at iba pa.
>> Kaya ito ay nagbibigay sa amin ng index sa Ang mga bata array na gusto namin.
Ngayon, kung ito index ay kasalukuyang null sa ang mga bata array, ibig sabihin nito ay na
isang node ay kasalukuyang hindi umiiral mula sa ang path na iyon, kaya kailangan namin upang magtalaga ng isang
na node para sa ang path na iyon.
Iyon ay kung ano ang ginagawa namin dito.
Kaya kami ay pagpunta sa, muli, gamitin ang Calloc function ng sa gayon ay wala kaming
sa zero ang lahat ng mga payo, at kami, muli, kailangan upang suriin na Calloc
ay hindi mabibigo.
Kung Calloc nabigo, pagkatapos kailangan namin upang mag-ibis ang lahat ng bagay, isara ang aming
diksyonaryo, at ibalik Maling.
>> Kaya sa pag-aakala na hindi ito mabibigo, at pagkatapos ay ito ay lilikha ng bagong bata para sa atin,
at pagkatapos ay magpapatuloy kami sa bata na iyon.
Ang aming cursor ay umulit pababa sa bata na iyon.
Ngayon, kung hindi ito ay walang bisa upang magsimula sa, pagkatapos ay ang cursor maaari lamang umulit
pababa sa bata na walang tunay pagkakaroon upang magtalaga ng kahit ano.
Ito ay ang kaso kung saan unang namin ang nangyari upang maglaan ng salitang pusa, at
Nangangahulugan itong kapag tayo pupunta maglaan malaking kapahamakan, hindi namin kailangan upang lumikha ng
node para sa C-A-T muli.
Sila ay umiiral na.
>> OK, kaya kung ano ito Iba Pa?
Ito ang kalagayan kung saan c noon ay backslash n, kung saan c ay isang bagong linya.
Ang ibig sabihin nito na matagumpay na mayroon kami Nakumpleto ang isang salita.
Ngayon, ano ang gusto naming gawin kapag kami Matagumpay na nakumpleto ang isang salita?
Kami ay pagpunta sa gamitin ang salita patlang sa loob ng aming Struct node.
>> Gusto naming i-set na sa True, upang ay nagpapahiwatig na ito na node ay nagpapahiwatig ng isang
matagumpay salita isang aktwal na salita.
Ngayon, nakatakda na sa True.
Gusto naming upang i-reset ang aming cursor sa punto upang muli sa simula ng Trie.
At sa wakas, dinagdagan ng aming diksyunaryo laki dahil nakakita kami ng isa pang salita.
>> Ang lahat ng mga karapatan, kaya kami ay pagpunta upang panatilihin ang paggawa na, pagbabasa sa katangian sa pamamagitan ng
karakter, bumubuo ka ng mga bagong node sa ang aming Trie at para sa bawat salita sa
diksyonaryo, hanggang sa kami sa wakas naabot c ay katumbas ng EOF, kung saan, masira namin
out ng file.
Ngayon, mayroong dalawang mga kaso sa ilalim na maaring pindutin namin EOF.
Ang una ay kung nagkaroon ng error pagbabasa mula sa file, kaya kung nagkaroon
ng isang error, kailangan namin upang gawin ang mga tipikal alisan ng bala ang lahat ng bagay, isara ang file,
bumalik Maling.
Sa pag-aakala nagkaroon hindi isang error, na Ang ibig sabihin lang talaga pindutin namin ang katapusan ng
ang file, na kung saan, isara namin ang maghain at bumalik True mula noong namin
Matagumpay na na-load ang diksyunaryo sa aming Trie.
>> Ang lahat ng mga karapatan, kaya ngayon sabihin tingnan ang Check.
Naghahanap sa Check function, makikita natin na Check ay pagpunta upang magbalik ng Bool.
Ibinabalik nito ang True kung ang salitang ito na ito ini ang pumasa ay nasa aming Trie.
Ibinabalik nito ang Maling kung hindi man.
>> Kaya paano kami makapupunta upang matukoy kung ang salitang ito ay nasa aming Trie?
Nakakakita kami dito na, tulad ng dati, kami ay pagpunta upang gamitin ang cursor na umulit
sa pamamagitan ng aming Trie.
Ngayon, narito, ipinapadala namin ng pagpunta sa umulit lagpas sa aming buong salita.
Kaya iterating sa ibabaw ang salitang tayo lumipas, kami ay pagpunta upang matukoy ang
index sa mga bata array na tumutugon sa salita bracket i.
Kaya ito ay pagpunta upang tumingin nang eksakto tulad ng Mag-load, kung saan kung salita bracket i ay isang
kudlit, pagkatapos ay nais naming gumamit ng index alpabeto minus 1 dahil natukoy namin
na kung saan kami ay pagpunta mag-imbak apostrophes.
>> Iba Pa kami ay pagpunta sa gamitin tolower salita bracket i.
Kaya tandaan ang salitang iyon ay maaaring magkaroon ng di-makatwirang capitalization, at kaya namin
gusto mong tiyakin na ginagamit namin isang maliit na mga bersyon ng mga bagay.
At pagkatapos ay ibabawas mula sa lowercase na isang upang, sa sandaling muli, magbigay sa amin ang
alpabetikong posisyon ng na character.
Kaya na pupuntahan maging aming index sa mga bata ng array.
>> At ngayon, kung index na papunta sa mga bata array ay walang bisa, ibig sabihin namin
hindi na magpatuloy iterating down na aming Trie.
Kung iyon ang kaso, ang salitang ito ay hindi maaaring marahil maging sa aming Trie, dahil kung ito
ay, na ang magiging ibig sabihin doon ay magiging isang daanan pababa sa na salita, at ginagawa mo
hindi kailanman nakatagpo null.
Kaya Nakakaranas ng mga null, bumalik kami Maling.
Salita ay wala sa diksyonaryo.
Kung ito ay hindi null, pagkatapos kami ay pagpunta sa magpatuloy iterating, kaya kami ay pagpunta
upang i-update ang aming cursor upang tumuro sa na partikular na node sa index iyon.
>> Kaya panatilihin namin ang paggawa na sa buong ang buong salita.
Sa pag-aakala namin kailanman pindutin null, na paraan nagawa naming upang makakuha ng sa pamamagitan ng buong
mundo at makahanap ng isang node sa aming Trie, ngunit kami ay hindi masyadong pa tapos.
Hindi namin nais upang bumalik lamang True.
Gusto naming bumalik cursor error salita dahil, tandaan muli, kung pusa ay hindi
sa aming diksyunaryo at sakuna ay, Pagkatapos ay matagumpay naming makakuha ng sa pamamagitan ng
ang salitang pusa, ngunit cursor salita Magiging Maling at hindi True.
Kaya bumalik kami cursor salita upang ipahiwatig kung ito node ay talagang isang salita,
at iyon ito para sa check.
>> Kaya ni check out Sukat ng ipaalam.
Kaya Sukat ay magiging kaakit-akit sa madaling dahil, alalahanin sa Load, kami ay
incrementing laki ng diksyunaryo para sa bawat salita na nakatagpo kami.
Kaya Sukat ay lamang pagpunta upang bumalik laki ng diksyunaryo, at iyon ito.
>> Ang lahat ng mga karapatan, kaya bilang wakas, mayroon kaming mag-ibis.
Kaya mag-ibis, kami ay pagpunta sa gumamit ng isang recursive function na upang aktwal na gawin ang lahat
ng trabaho para sa amin, kaya ang aming pag-andar ay pagpunta sa tawagin Unloader.
Ano ang Unloader pagpunta sa gawin?
Nakakakita kami dito na Unloader ay pagpunta sa umulit sa ibabaw ng lahat ng mga bata sa
ang partikular na node, at kung ang bata na node ay hindi null, pagkatapos kami ay pagpunta sa
alisan ng bala ang bata node.
>> Kaya ito ay pagpunta sa recursively alisan ng bala lahat ng ating mga anak.
Sa sandaling sigurado kami na ang lahat ng ating mga anak Na-deskargado, pagkatapos namin
Maaari palayain ang ating mga sarili, upang alisan ng bala kami mismo.
Kaya ito ay recursively alisan ng bala ang buong Trie, at pagkatapos ay sa sandaling iyon
tapos na, maaari naming ibalik lamang True.
Hindi maaaring mabigo alisan ng bala, hindi namin pagbabakante lamang bagay.
Kaya sa sandaling tapos na kami pagbabakante ang lahat ng bagay, bumalik True.
At na ito.
Ang pangalan ko ay Rob, at ito ay [hindi marinig].