1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> Gjuha 1: Le të japim kjo zgjidhje provoni. 3 00:00:03,070 --> 00:00:07,130 Pra, le të marrin një vështrim në atë tona Nyje struct do të duket si. 4 00:00:07,130 --> 00:00:11,040 Këtu, ne shohim ne do të kemi një Bool Word dhe një yll struct nyje 5 00:00:11,040 --> 00:00:12,990 Fëmijët kllapa alfabet. 6 00:00:12,990 --> 00:00:18,720 Gjëja e parë kështu që ju mund të pyesin, pse është e hash alfabeti përcaktuar si 27? 7 00:00:18,720 --> 00:00:22,540 E pra, mos harroni se ne do të duhet për të trajtimin e apostrof, kështu 8 00:00:22,540 --> 00:00:25,610 që do të jetë disi e një të veçantë rast në të gjithë këtë program. 9 00:00:25,610 --> 00:00:28,780 >> OK, tani, mos harroni se si një Trie në të vërtetë punon. 10 00:00:28,780 --> 00:00:33,420 Le të thonë se ne jemi duke indeksimin macet fjalë, pastaj nga rrënja e Trie tonë, 11 00:00:33,420 --> 00:00:36,670 ne do të shikojmë në Fëmijëve array, dhe ne do të shohim në 12 00:00:36,670 --> 00:00:42,250 Indeksi që korrespondon me letrën C. Kështu që do të jetë indeksi dy. 13 00:00:42,250 --> 00:00:46,400 Pra duke pasur parasysh se, që do të na japë një nyje të re, dhe pastaj ne do të 14 00:00:46,400 --> 00:00:47,880 punojnë nga ajo nyje. 15 00:00:47,880 --> 00:00:51,830 >> Pra, duke pasur parasysh se nyjen, ne jemi edhe një herë duke shkuar për të parë në grup Fëmijëve, 16 00:00:51,830 --> 00:00:56,170 dhe ne do të shohim në indeksin zero të korrespondojnë me A në mace. 17 00:00:56,170 --> 00:01:01,240 Pra, atëherë ne jemi duke shkuar për të shkuar në atë nyje, dhe duke pasur parasysh se nyjen, ne jemi duke shkuar 18 00:01:01,240 --> 00:01:05,170 për të parë në indeksin që korrespondon të T. Dhe të lëvizin për në atë nyje, 19 00:01:05,170 --> 00:01:09,590 më në fund, ne kemi shikuar plotësisht përmes Cat tonë fjalë, dhe tani bool 20 00:01:09,590 --> 00:01:15,020 Fjala është menduar për të treguar nëse kjo fjalë e dhënë është në të vërtetë një fjalë. 21 00:01:15,020 --> 00:01:17,530 >> Pra, pse nuk kemi nevojë për këtë rast të veçantë? 22 00:01:17,530 --> 00:01:21,680 E pra, çfarë nëse katastrofë fjala është në fjalorin tonë, por 23 00:01:21,680 --> 00:01:24,120 fjala mace nuk është? 24 00:01:24,120 --> 00:01:29,030 Pra, në kërkim për të parë nëse fjala është cat në fjalorin tonë, ne do të 25 00:01:29,030 --> 00:01:34,880 sukses shoh nga treguesit e C-A-T dhe për të arritur një nyje, por kjo është 26 00:01:34,880 --> 00:01:39,760 vetëm për shkak katastrofë ka ndodhur me krijuar nyjet në rrugën nga C-A-T gjitha 27 00:01:39,760 --> 00:01:41,250 rruga për në fund të fjalës. 28 00:01:41,250 --> 00:01:46,520 Pra bool Fjala është përdorur tregojnë nëse këtë vend të veçantë në të vërtetë 29 00:01:46,520 --> 00:01:48,370 tregon një fjalë. 30 00:01:48,370 --> 00:01:52,920 >> Në rregull, kështu që tani që ne e dimë se çfarë një Trie do të duken si, le të shohim 31 00:01:52,920 --> 00:01:54,800 në funksion Load. 32 00:01:54,800 --> 00:01:58,670 Pra Load do të kthejë një bool Sepse ne sukses apo 33 00:01:58,670 --> 00:02:03,020 ngarkuar pa sukses fjalor dhe kjo do të jetë fjalor 34 00:02:03,020 --> 00:02:04,520 që ne duam të ngarkesës. 35 00:02:04,520 --> 00:02:08,310 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. 36 00:02:08,310 --> 00:02:12,060 Ne duhet të sigurohemi që ne nuk dështojnë, kështu që nëse fjalor nuk ishte 37 00:02:12,060 --> 00:02:15,280 u hap me sukses, ajo do të kthehet Jo, në këtë rast ne do të 38 00:02:15,280 --> 00:02:16,340 kthimit të rreme. 39 00:02:16,340 --> 00:02:21,290 Por, duke supozuar se ajo me sukses hapur, atëherë ne në fakt mund të lexoni 40 00:02:21,290 --> 00:02:22,310 përmes fjalorit. 41 00:02:22,310 --> 00:02:24,940 >> Pra gjëja e parë që ne jemi duke shkuar për doni të bëni është të kemi këtë 42 00:02:24,940 --> 00:02:26,560 rrënjë globale ndryshueshme. 43 00:02:26,560 --> 00:02:30,250 Tani, rrënjë do të jetë një yll nyje. 44 00:02:30,250 --> 00:02:33,830 Është maja e Trie sonë se ne jemi do të iterating përmes. 45 00:02:33,830 --> 00:02:38,200 Pra gjëja e parë që ne do të duan të bëni është të siguroj kujtesë për rrënjë tonë. 46 00:02:38,200 --> 00:02:42,040 >> Vini re se ne jemi duke përdorur Calloc funksion, e cila është në thelb njëjtë 47 00:02:42,040 --> 00:02:45,560 si funksion malloc, përveç se është garantuara për të kthyer diçka që është 48 00:02:45,560 --> 00:02:47,240 zeroed krejtësisht jashtë. 49 00:02:47,240 --> 00:02:51,350 Pra, nëse kemi përdorur malloc, ne do të duhet të kalojnë nëpër të gjitha pointers në tonë 50 00:02:51,350 --> 00:02:54,220 nyjë dhe të sigurohemi se ata janë të gjithë null. 51 00:02:54,220 --> 00:02:56,780 Pra Calloc do të bëjë atë për ne. 52 00:02:56,780 --> 00:03:00,390 >> Tani, ashtu si malloc, ne kemi nevojë për të bërë i sigurt se ndarja e vërtetë 53 00:03:00,390 --> 00:03:01,580 suksesshëm. 54 00:03:01,580 --> 00:03:04,060 Nëse kjo kthye null, atëherë ne nevojë për të mbyllur fjalorin tonë 55 00:03:04,060 --> 00:03:06,170 paraqesë dhe të kthehet False. 56 00:03:06,170 --> 00:03:11,040 Pra, duke supozuar shpërndarjen u suksesshme, ne jemi duke shkuar për të përdorur një nyje 57 00:03:11,040 --> 00:03:14,340 yll kursorin për të iterate përmes Trie tonë. 58 00:03:14,340 --> 00:03:17,950 Pra rrënjë tonë kurrë nuk do të ndryshojë, por ne jemi duke shkuar për të përdorur kursorin për të 59 00:03:17,950 --> 00:03:20,770 në fakt shkojnë nga nyje në nyje. 60 00:03:20,770 --> 00:03:25,000 >> Në rregull, kështu që në këtë Për loop, ne jemi leximit nëpërmjet dosjes fjalor, 61 00:03:25,000 --> 00:03:26,965 dhe ne jemi duke përdorur në fgetc. 62 00:03:26,965 --> 00:03:30,360 Pra fgetc do të kap një të vetme karakter nga file. 63 00:03:30,360 --> 00:03:33,430 Ne jemi duke shkuar për të vazhduar grabbing karaktere ndërsa ne nuk e arrijnë 64 00:03:33,430 --> 00:03:37,540 fund të dosjes, kështu që ka dy raste ne kemi nevojë për të trajtuar. 65 00:03:37,540 --> 00:03:41,640 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 66 00:03:41,640 --> 00:03:44,480 line, atëherë ne jemi gati për të lëvizin për në një fjalë të re. 67 00:03:44,480 --> 00:03:49,300 Por duke supozuar se nuk ishte një linjë e re, atëherë këtu, ne duam të kuptoj se 68 00:03:49,300 --> 00:03:52,440 Indeksi ne do të indeksit në në rrjet Fëmijët që 69 00:03:52,440 --> 00:03:53,890 kemi shikuar në para. 70 00:03:53,890 --> 00:03:57,950 >> Pra, si kam thënë më parë, ne kemi nevojë për të rast i veçantë apostrof. 71 00:03:57,950 --> 00:04:01,040 Vini re që ne jemi duke përdorur operatorin tresh këtu, kështu që ne jemi duke shkuar për të lexuar 72 00:04:01,040 --> 00:04:05,500 kjo sikur karakteri lexojmë në ishte një apostrof, atëherë ne do të 73 00:04:05,500 --> 00:04:11,740 vendosur indeks të barabartë për të alfabetit minus 1, e cila do të jetë indeksi 26. 74 00:04:11,740 --> 00:04:15,190 Tjetër, në qoftë se ajo nuk ishte një apostrof, atëherë ne jemi duke shkuar për të vendosur indeksin 75 00:04:15,190 --> 00:04:17,820 barabartë me C minus. 76 00:04:17,820 --> 00:04:23,090 Pra mbani mend prapa nga grupe mëparshme p, c minus një do të na japë 77 00:04:23,090 --> 00:04:27,470 Pozita alfabetik i c, kështu që nëse c është shkronja A, kjo do të 78 00:04:27,470 --> 00:04:28,770 na japin indeksin zero. 79 00:04:28,770 --> 00:04:32,180 Për të letrës B, ajo do të japë na indeksi 1, dhe kështu me radhë. 80 00:04:32,180 --> 00:04:37,070 >> Pra, kjo na jep indeksin në Fëmijët array që ne duam. 81 00:04:37,070 --> 00:04:42,540 Tani, në qoftë se ky indeks është aktualisht null në array Fëmijët, që do të thotë se 82 00:04:42,540 --> 00:04:47,470 një nyje nuk ekzistojnë aktualisht nga se rruga, kështu që ne duhet të ndajë një 83 00:04:47,470 --> 00:04:49,220 nyje për atë rrugë. 84 00:04:49,220 --> 00:04:50,610 Kjo është ajo që ne bëjmë këtu. 85 00:04:50,610 --> 00:04:54,650 Pra, ne jemi duke shkuar për të, përsëri, përdorni Calloc funksion në mënyrë që ne nuk kemi 86 00:04:54,650 --> 00:05:00,130 në zero nga të gjitha pointers, dhe ne, përsëri, duhet të kontrolloni se Calloc 87 00:05:00,130 --> 00:05:01,300 nuk dështojnë. 88 00:05:01,300 --> 00:05:04,760 Nëse Calloc ka dështojnë, atëherë ne kemi nevojë për të shkarkuar çdo gjë, të mbyllur tonë 89 00:05:04,760 --> 00:05:06,880 fjalor, dhe të kthehen False. 90 00:05:06,880 --> 00:05:14,110 >> Pra, duke supozuar se ajo nuk dështojnë, atëherë kjo do të krijojë një fëmijë të ri për ne, 91 00:05:14,110 --> 00:05:16,000 dhe atëherë ne do të shkojnë për atë fëmijë. 92 00:05:16,000 --> 00:05:19,030 Kursori ynë do të iterate poshtë për atë fëmijë. 93 00:05:19,030 --> 00:05:23,390 Tani, në qoftë se kjo nuk ishte null për të filluar me, pastaj kursori mund vetëm të iterate 94 00:05:23,390 --> 00:05:26,650 poshtë për këtë fëmijë të vërtetë pa pasur nevojë të ndajë asgjë. 95 00:05:26,650 --> 00:05:30,790 Ky është rasti ku ne ka ndodhur e parë të ndajë fjalën mace, dhe 96 00:05:30,790 --> 00:05:34,390 që do të thotë kur të shkojmë për të alokuar katastrofë, ne nuk kemi nevojë për të krijuar 97 00:05:34,390 --> 00:05:35,720 nyje për C-A-T përsëri. 98 00:05:35,720 --> 00:05:37,620 Ata tashmë ekzistojnë. 99 00:05:37,620 --> 00:05:40,140 >> OK, kështu që çfarë është kjo Else? 100 00:05:40,140 --> 00:05:44,600 Kjo është gjendja ku c është backslash n, ku c është një linjë e re. 101 00:05:44,600 --> 00:05:47,780 Kjo do të thotë se ne kemi sukses përfunduar një fjalë. 102 00:05:47,780 --> 00:05:51,020 Tani, ajo që duam të bëjmë, kur ne përfunduar me sukses një fjalë? 103 00:05:51,020 --> 00:05:55,250 Ne jemi duke shkuar për të përdorur këtë fushë fjalën brenda nyjeve tonë struct. 104 00:05:55,250 --> 00:06:00,570 >> Ne duam të vendosur që të Vërtetë, në mënyrë që tregon se kjo nyje tregon një 105 00:06:00,570 --> 00:06:03,320 Fjala e suksesshme një fjalë aktual. 106 00:06:03,320 --> 00:06:05,050 Tani, të vendosur që të Vërtetë. 107 00:06:05,050 --> 00:06:09,210 Ne duam të rivendosur kursorin tonë për pikë në fillim të Trie perseri. 108 00:06:09,210 --> 00:06:13,510 Dhe së fundi, rritje fjalorin tonë Madhësia pasi kemi gjetur një tjetër fjalë. 109 00:06:13,510 --> 00:06:16,450 >> Në rregull, kështu që ne do të vazhdojmë të bëjmë që, duke lexuar në karakter nga 110 00:06:16,450 --> 00:06:21,960 karakter, ndërtimin nyje të reja në Trie tonë dhe për çdo fjalë në 111 00:06:21,960 --> 00:06:26,810 fjalor, deri sa të arrijë në fund të c barabartë EOF, në të cilin rast, ne të thyer 112 00:06:26,810 --> 00:06:28,100 nga file. 113 00:06:28,100 --> 00:06:31,110 Tani, ka dy raste nën të cilat ne mund të ketë goditur EOF. 114 00:06:31,110 --> 00:06:35,680 E para është nëse ka pasur një gabim leximi nga file, kështu që nëse ka pasur 115 00:06:35,680 --> 00:06:39,280 një gabim, ne duhet të bëjmë tipike shkarkoj çdo gjë, të mbyllur dosjen, 116 00:06:39,280 --> 00:06:40,520 kthimit të rreme. 117 00:06:40,520 --> 00:06:43,870 Duke supozuar se nuk ishte një gabim, që thjesht do të thotë që ne të vërtetë goditi në fund të 118 00:06:43,870 --> 00:06:47,820 fotografi, në të cilin rast, ne mbyllim paraqesë dhe të kthehet vërtetë që kemi 119 00:06:47,820 --> 00:06:51,010 ngarkuar me sukses fjalorin në Trie tonë. 120 00:06:51,010 --> 00:06:54,240 >> Të gjithë të drejtë, kështu që tani le të shikoni Kontrollo. 121 00:06:54,240 --> 00:06:58,780 Duke parë në funksion Kontrollo, ne shohim Kontrolloni se do të kthehet një bool. 122 00:06:58,780 --> 00:07:03,740 Ajo kthen vërtetë nëse kjo fjalë që është e duke u kaluar është në Trie tonë. 123 00:07:03,740 --> 00:07:06,170 Ajo kthehet False ndryshe. 124 00:07:06,170 --> 00:07:10,110 >> Pra, si do të shkojmë për të përcaktuar nëse kjo fjalë është në Trie tonë? 125 00:07:10,110 --> 00:07:14,270 Ne shohim këtu se, ashtu si më parë, ne jemi duke shkuar për të përdorur kursorin për të iterate 126 00:07:14,270 --> 00:07:16,010 përmes Trie tonë. 127 00:07:16,010 --> 00:07:20,650 Tani, këtu, ne do të iterate mbi gjithë fjalën tonë. 128 00:07:20,650 --> 00:07:24,680 Pra iterating fjalën ne jemi kaluar, ne jemi duke shkuar për të përcaktuar 129 00:07:24,680 --> 00:07:29,280 Indeksi në grup Fëmijët që korrespondon me fjalën kllapa i. 130 00:07:29,280 --> 00:07:34,150 Pra, kjo do të duket tamam si Load, ku në qoftë se fjala simboli i është një 131 00:07:34,150 --> 00:07:38,110 apostrof, atëherë ne duam të përdorim indeksin Alfabeti minus 1, sepse ne kemi vendosur 132 00:07:38,110 --> 00:07:41,160 kjo është ajo ku ne jemi duke shkuar për të ruajtur apostrofat. 133 00:07:41,160 --> 00:07:44,440 >> Tjetër ne jemi duke shkuar për të përdorur tolower kllapa fjala i. 134 00:07:44,440 --> 00:07:48,270 Pra, mos harroni se fjala mund të ketë arbitrare kapitalizimin, dhe kështu që ne 135 00:07:48,270 --> 00:07:51,590 doni të bëni të sigurtë që ne jemi duke përdorur një version me të vogla të gjëra. 136 00:07:51,590 --> 00:07:55,300 Dhe pastaj të zbriten nga ajo Fjala një për të, edhe një herë, të na japin 137 00:07:55,300 --> 00:07:57,940 Pozicioni alfabetik e atë karakter. 138 00:07:57,940 --> 00:08:01,740 Kështu që do të jetë indeksi tonë në grup të Fëmijëve. 139 00:08:01,740 --> 00:08:06,480 >> Dhe tani, në qoftë se indeksi në Fëmijëve array është null, që do të thotë ne 140 00:08:06,480 --> 00:08:09,050 mund të vazhdojë më iterating poshtë Trie tonë. 141 00:08:09,050 --> 00:08:13,320 Në qoftë se është e rastit, kjo fjalë nuk mund të të jetë ndoshta në Trie tonë, pasi nëse ajo 142 00:08:13,320 --> 00:08:18,000 u, që do të thotë se do të ishte një rruga deri në atë fjalë, dhe ju do të 143 00:08:18,000 --> 00:08:19,350 nuk ndeshen null. 144 00:08:19,350 --> 00:08:21,910 Pra ndeshi null, ne kthehemi False. 145 00:08:21,910 --> 00:08:23,810 Fjala nuk është në fjalor. 146 00:08:23,810 --> 00:08:28,200 Po të mos ishte i pavlefshëm, atëherë ne do të vazhdojnë iterating, kështu që ne jemi duke shkuar 147 00:08:28,200 --> 00:08:33,150 për të rinovuar kursorin tonë që të tregojnë për atë nyje të veçantë në atë indeks. 148 00:08:33,150 --> 00:08:36,659 >> Pra, ne të vazhdojmë të bëjmë atë në të gjithë e gjithë fjala. 149 00:08:36,659 --> 00:08:40,630 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ë 150 00:08:40,630 --> 00:08:44,840 bota dhe për të gjetur një nyje në Trie tonë, por ne nuk jemi duke bërë mjaft ende. 151 00:08:44,840 --> 00:08:46,350 Ne nuk duam të vetëm të kthehen vërtetë. 152 00:08:46,350 --> 00:08:51,400 Ne duam të kthehen kursorin gabim fjalën që, mos harroni përsëri, në qoftë se macja nuk është e 153 00:08:51,400 --> 00:08:55,140 në fjalorin tonë dhe katastrofa është, atëherë ne do të të marrë me sukses përmes 154 00:08:55,140 --> 00:08:59,810 cat fjalë, por fjala kursori do të jenë të rreme dhe nuk vërtetë. 155 00:08:59,810 --> 00:09:04,990 Pra, ne kthehemi fjalë kursorin për të treguar nëse kjo nyje është në të vërtetë një fjalë, 156 00:09:04,990 --> 00:09:06,530 dhe kjo është ajo për kontroll. 157 00:09:06,530 --> 00:09:08,310 >> Pra, le të shikoni Size. 158 00:09:08,310 --> 00:09:11,410 Pra, Madhësia do të jetë goxha e lehtë që, mos harroni në Ngarkesë, ne jemi 159 00:09:11,410 --> 00:09:15,480 bën rritjen madhësinë fjalor për çdo fjalë që hasim. 160 00:09:15,480 --> 00:09:20,820 Pra Size është vetëm do të kthehen Madhësia fjalor, dhe kjo është ajo. 161 00:09:20,820 --> 00:09:24,650 >> Në rregull, kështu që së fundi, ne kemi zbraz. 162 00:09:24,650 --> 00:09:29,050 Pra shkarkoj, ne do të përdorë funksion recursive të bëjë në fakt të gjithë 163 00:09:29,050 --> 00:09:33,390 e punës për ne, kështu funksionin tonë do të të quhet unloader. 164 00:09:33,390 --> 00:09:35,830 Çfarë është unloader do të bëni? 165 00:09:35,830 --> 00:09:40,640 Ne shohim këtu se unloader do të iterate mbi të gjithë fëmijët në 166 00:09:40,640 --> 00:09:45,810 kjo nyje të veçantë, dhe në qoftë se fëmija nyje nuk është null, atëherë ne do të 167 00:09:45,810 --> 00:09:47,760 shkarkoj nyjen e fëmijëve. 168 00:09:47,760 --> 00:09:52,070 >> Pra, kjo do të Recursively shkarkoj gjithë fëmijët tanë. 169 00:09:52,070 --> 00:09:55,140 Pasi ne jemi të sigurt që të gjithë fëmijët tanë janë shkarkuar, atëherë ne 170 00:09:55,140 --> 00:09:58,830 mund të lirë veten, kështu shkarkoj ourself. 171 00:09:58,830 --> 00:10:04,550 Pra, kjo do të Recursively të shkarkoj tërë Trie, dhe pastaj një herë kjo është 172 00:10:04,550 --> 00:10:06,910 bërë, ne vetëm mund të kthehen vërtetë. 173 00:10:06,910 --> 00:10:09,770 Shkarkoj nuk mund të dështojë, ne jemi vetëm liruar gjëra. 174 00:10:09,770 --> 00:10:12,985 Pra, një herë ne jemi duke bërë liruar çdo gjë, kthehen vërtetë. 175 00:10:12,985 --> 00:10:14,380 Dhe kjo është ajo. 176 00:10:14,380 --> 00:10:16,792 Emri im është Rob, dhe kjo ishte [e padëgjueshme]. 177 00:10:16,792 --> 00:10:21,888