1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> HOPARLÖR 1: Gəlin verək Bu həll bir cəhd. 3 00:00:03,070 --> 00:00:07,130 Belə ki, nə bizim nəzər salaq Struct node kimi görünür. 4 00:00:07,130 --> 00:00:11,040 Burada, biz olacaq bax Bool Word və Struct node ulduz 5 00:00:11,040 --> 00:00:12,990 Uşaqlar əlifba sıraya. 6 00:00:12,990 --> 00:00:18,720 Belə ki, ilk şey merak bilər niyə əlifba hash 27 kimi müəyyən olunur? 7 00:00:18,720 --> 00:00:22,540 Yaxşı, biz lazım olacaq ki, xatırlayıram apostrof user, belə etmək 8 00:00:22,540 --> 00:00:25,610 ki, bir xüsusi qədər olacaq Bu proqram boyunca halda. 9 00:00:25,610 --> 00:00:28,780 >> OK, indi xatırlayıram necə Trie həqiqətən işləyir. 10 00:00:28,780 --> 00:00:33,420 Biz sözü pişik indeksasiyası etdiyiniz deyirlər, sonra bizim Trie kökündən, 11 00:00:33,420 --> 00:00:36,670 Biz Uşaqlar baxmaq olacaq array, və biz baxmaq olacaq 12 00:00:36,670 --> 00:00:42,250 Məktubda uyğun index C. Belə ki, index iki olardı. 13 00:00:42,250 --> 00:00:46,400 Belə ki, bizə verəcək verilir yeni node, sonra biz will 14 00:00:46,400 --> 00:00:47,880 ki node çalışır. 15 00:00:47,880 --> 00:00:51,830 >> Belə ki node verilmiş, biz bir daha istəyirik Uşaq array baxmaq üçün gedir, 16 00:00:51,830 --> 00:00:56,170 və biz index sıfır baxmaq olacaq pişik A uyğun. 17 00:00:56,170 --> 00:01:01,240 Beləliklə biz ki node getmək olacaq, ki node verilmiş, gedirik 18 00:01:01,240 --> 00:01:05,170 uyğun indeksi baxmaq T. Və node hərəkət üçün 19 00:01:05,170 --> 00:01:09,590 nəhayət, biz tamamilə baxdı Bizim söz Cat vasitəsilə və indi Bool 20 00:01:09,590 --> 00:01:15,020 Word olub-olmadığını göstərir ehtimal edilir Bu söz əslində bir söz. 21 00:01:15,020 --> 00:01:17,530 >> Belə ki, niyə biz xüsusi halda lazımdır? 22 00:01:17,530 --> 00:01:21,680 Yaxşı, nə sözü fəlakət bizim lüğət, lakin 23 00:01:21,680 --> 00:01:24,120 sözü pişik deyil? 24 00:01:24,120 --> 00:01:29,030 Belə ki, söz pişik olmadığını görmek üçün axtarır bizim lüğət, biz olacaq 25 00:01:29,030 --> 00:01:34,880 uğurla göstəriciləri nəzərdən C-A-T və bir node çatmaq, lakin var 26 00:01:34,880 --> 00:01:39,760 fəlakət baş yalnız çünki C-A-T yolunda qovşaqlarının yaratmaq bütün 27 00:01:39,760 --> 00:01:41,250 Sözün sonuna yol. 28 00:01:41,250 --> 00:01:46,520 Belə ki, Bool Word olub göstərir istifadə olunur bu yer həqiqətən 29 00:01:46,520 --> 00:01:48,370 bir söz göstərir. 30 00:01:48,370 --> 00:01:52,920 >> Bütün hüquqlar, belə ki, indi biz bilirik ki, nə Trie nin baxaq kimi baxmaq gedir 31 00:01:52,920 --> 00:01:54,800 Yük funksiyası. 32 00:01:54,800 --> 00:01:58,670 Belə ki, Load bir Bool qayıtmaq üçün gedir olub biz uğurla və ya 33 00:01:58,670 --> 00:02:03,020 uğursuz dolu lüğət və Bu lüğət olacaq 34 00:02:03,020 --> 00:02:04,520 biz yüklemek üçün istəyirəm ki,. 35 00:02:04,520 --> 00:02:08,310 Biz nə olacaq, belə ki, ilk şey açıqdır oxu üçün lüğət up. 36 00:02:08,310 --> 00:02:12,060 Biz uğursuz etməyib əmin etmək lazımdır, belə lüğət deyil, əgər 37 00:02:12,060 --> 00:02:15,280 uğurla açıldı, o qayıdacaq Xeyr, hansı halda biz olacaq 38 00:02:15,280 --> 00:02:16,340 Asma qayıtmaq. 39 00:02:16,340 --> 00:02:21,290 Amma hərfinin uğurla açdı, sonra biz, həqiqətən oxuya bilərsiniz 40 00:02:21,290 --> 00:02:22,310 Lüğət vasitəsilə. 41 00:02:22,310 --> 00:02:24,940 >> Biz olacaq Belə ki, ilk şey etmək istəyirəm ki, biz bu var 42 00:02:24,940 --> 00:02:26,560 qlobal dəyişən kök. 43 00:02:26,560 --> 00:02:30,250 İndi, kök bir node ulduz olacaq. 44 00:02:30,250 --> 00:02:33,830 Biz istəyirik ki, bizim Trie üst var vasitəsilə iterating olacaq. 45 00:02:33,830 --> 00:02:38,200 Biz istəyirik olacaq Belə ki, ilk şey bunu bizim kök üçün yaddaş ayrılması deyil. 46 00:02:38,200 --> 00:02:42,040 >> Biz calloc istifadə edirik ki, görürsünüz əsasən eyni olan funksiyası, 47 00:02:42,040 --> 00:02:45,560 Bu Malloc funksiyası kimi, başqa bu ki, bir şey geri zəmanət 48 00:02:45,560 --> 00:02:47,240 tamamilə həyata zeroed. 49 00:02:47,240 --> 00:02:51,350 Biz malloc istifadə əgər Belə ki, biz lazımdır olan göstəricilər bütün vasitəsilə getmək bizim 50 00:02:51,350 --> 00:02:54,220 node və əmin olun onlar bütün null istəyirik. 51 00:02:54,220 --> 00:02:56,780 Belə ki, calloc bizim üçün bunu edəcək. 52 00:02:56,780 --> 00:03:00,390 >> İndi, yalnız malloc kimi, biz etmək lazımdır ayrılması həqiqətən əmin 53 00:03:00,390 --> 00:03:01,580 müvəffəqiyyətli. 54 00:03:01,580 --> 00:03:04,060 Bu null döndü, onda biz bizim lüğət bağlamaq lazımdır 55 00:03:04,060 --> 00:03:06,170 fayl və False qayıtmaq. 56 00:03:06,170 --> 00:03:11,040 Belə ki, ayrılması fərz uğurlu, biz bir node istifadə etmək olacaq 57 00:03:11,040 --> 00:03:14,340 təkrarlamaq Kursor ulduz bizim Trie vasitəsilə. 58 00:03:14,340 --> 00:03:17,950 Belə ki, bizim kök dəyişdirmək üçün gedir heç, lakin biz Kursor istifadə etmək olacaq 59 00:03:17,950 --> 00:03:20,770 həqiqətən node node getmək. 60 00:03:20,770 --> 00:03:25,000 >> Bütün hüquqlar, belə ki, bu loop üçün, biz , lüğət faylı vasitəsilə oxu 61 00:03:25,000 --> 00:03:26,965 və biz fgetc da istifadə edirik. 62 00:03:26,965 --> 00:03:30,360 Belə ki, fgetc bir qamarlamaq üçün gedir fayl character. 63 00:03:30,360 --> 00:03:33,430 Biz qənimətçilik davam edirik simvol biz çata bilməyən isə 64 00:03:33,430 --> 00:03:37,540 fayl başa, belə var biz idarə etmək üçün lazım olan iki hallarda. 65 00:03:37,540 --> 00:03:41,640 Ilk, karakter deyil, əgər bir bir yeni idi əgər yeni xətt, biz bilirik 66 00:03:41,640 --> 00:03:44,480 line, sonra biz üzrəyik yeni bir söz keçin. 67 00:03:44,480 --> 00:03:49,300 Amma sonra, yeni bir xətt idi fərz burada, biz anlamaq istəyirəm 68 00:03:49,300 --> 00:03:52,440 index biz daxil index olacaq Uşaqların array ki, 69 00:03:52,440 --> 00:03:53,890 biz əvvəl baxdı. 70 00:03:53,890 --> 00:03:57,950 >> Mən əvvəl bildirib, belə ki, kimi, biz lazım xüsusi halda apostrof. 71 00:03:57,950 --> 00:04:01,040 Biz ternary operator istifadə etdiyiniz bildiriş burada, belə ki, biz oxumaq olacaq 72 00:04:01,040 --> 00:04:05,500 bu biz oxumaq xarakter kimi bir apostrof, sonra biz olacaq 73 00:04:05,500 --> 00:04:11,740 əlifba minus bərabər index müəyyən 1, olan index 26 olacaq. 74 00:04:11,740 --> 00:04:15,190 Başqa, bu apostrof deyil, əgər, sonra biz index müəyyən olacaq 75 00:04:15,190 --> 00:04:17,820 c minus a bərabərdir. 76 00:04:17,820 --> 00:04:23,090 Belə ki, geri əvvəlki p dəstləri xatırlayıram, c minus bir bizə vermək niyyətindədir 77 00:04:23,090 --> 00:04:27,470 əlifba c mövqeyi, əgər c məktub A, bu iradə 78 00:04:27,470 --> 00:04:28,770 bizə index sıfır verir. 79 00:04:28,770 --> 00:04:32,180 Hərfi B üçün, verəcək belə bizə indeksi 1, və. 80 00:04:32,180 --> 00:04:37,070 >> Belə ki, bu bizə indeksi verir Biz istəyirik ki, uşaqlar array. 81 00:04:37,070 --> 00:04:42,540 İndi bu göstərici hazırda null əgər Uşaq array, o deməkdir ki, 82 00:04:42,540 --> 00:04:47,470 bir node hazırda olan mövcud deyil ki yol, belə ki, biz ayrılması lazımdır 83 00:04:47,470 --> 00:04:49,220 ki, yol üçün node. 84 00:04:49,220 --> 00:04:50,610 Yəni burada nə var. 85 00:04:50,610 --> 00:04:54,650 Belə ki, biz, yenə calloc istifadə etmək olacaq funksiyası yoxdur ki, 86 00:04:54,650 --> 00:05:00,130 göstəricilər bütün həyata sıfıra, və biz, daha ki, calloc yoxlamaq lazımdır 87 00:05:00,130 --> 00:05:01,300 uğursuz olmadı. 88 00:05:01,300 --> 00:05:04,760 Calloc uğursuz oldu, onda biz lazım hər şeyi boşaltmaq, yaxın bizim 89 00:05:04,760 --> 00:05:06,880 lüğət və False qayıtmaq. 90 00:05:06,880 --> 00:05:14,110 >> Belə ki, sonra, bilmirlər ki, fərz Bu, bizim üçün yeni bir uşaq yaradacaq 91 00:05:14,110 --> 00:05:16,000 və sonra biz uşaq gedəcək. 92 00:05:16,000 --> 00:05:19,030 Bizim kursor təkrarlamaq edəcək ki, uşaq aşağı. 93 00:05:19,030 --> 00:05:23,390 İndi, bu ilə başlamaq null deyil, əgər, sonra kursor yalnız təkrarlamaq olar 94 00:05:23,390 --> 00:05:26,650 həqiqətən olmadan uşaq aşağı bir şey ayırmaq üçün olan. 95 00:05:26,650 --> 00:05:30,790 Bu, bizim ilk baş belədir sözü pişik ayrılması və 96 00:05:30,790 --> 00:05:34,390 biz ayrılması getmək zaman o deməkdir ki, fəlakət, biz yaratmaq lazım deyil 97 00:05:34,390 --> 00:05:35,720 yenə C-A-T qovşaqlarının. 98 00:05:35,720 --> 00:05:37,620 Onlar artıq mövcuddur. 99 00:05:37,620 --> 00:05:40,140 >> OK, belə ki, bu Else nədir? 100 00:05:40,140 --> 00:05:44,600 Bu c olduğu şərtdir c a yeni xətt olduğu backslash n. 101 00:05:44,600 --> 00:05:47,780 Bu biz uğurla o deməkdir ki, bir söz başa. 102 00:05:47,780 --> 00:05:51,020 İndi biz nə istəyirsiniz zaman uğurla bir söz başa? 103 00:05:51,020 --> 00:05:55,250 Biz bu söz sahəsində istifadə etmək olacaq Bizim Struct node daxilində. 104 00:05:55,250 --> 00:06:00,570 >> Biz True ki qurmaq istəyirəm ki, belə Bu node göstərir ki, göstərir bir 105 00:06:00,570 --> 00:06:03,320 uğurlu söz faktiki söz. 106 00:06:03,320 --> 00:06:05,050 İndi True üçün seçin. 107 00:06:05,050 --> 00:06:09,210 Biz nöqtəyə kursor yenidən istəyirəm yenidən Trie əvvəlinə. 108 00:06:09,210 --> 00:06:13,510 Və nəhayət, bizim lüğət arttırmayı biz başqa söz tapılmadı ölçüsü bəri. 109 00:06:13,510 --> 00:06:16,450 >> Bütün hüquqlar, belə ki, biz bunu saxlamaq olacaq ki, xarakter oxu 110 00:06:16,450 --> 00:06:21,960 xarakter, yeni qovşaqlarının tikintisi bizim Trie və hər bir söz üçün 111 00:06:21,960 --> 00:06:26,810 lüğət, biz nəhayət c çatana qədər , biz qırmaq olan halda EOF bərabərdir 112 00:06:26,810 --> 00:06:28,100 fayl həyata. 113 00:06:28,100 --> 00:06:31,110 İndi iki hallarda altında var biz EOF hit ola biləcək. 114 00:06:31,110 --> 00:06:35,680 Bir səhv var idi, əgər ilk var idi, əgər fayl oxu, belə ki, 115 00:06:35,680 --> 00:06:39,280 bir səhv, biz tipik etmək lazımdır , hər şeyi boşaltmaq faylı bağlamaq, 116 00:06:39,280 --> 00:06:40,520 Asma qayıtmaq. 117 00:06:40,520 --> 00:06:43,870 , Bir səhv var idi hərfinin yalnız biz həqiqətən sonunda hit deməkdir 118 00:06:43,870 --> 00:06:47,820 fayl olan halda, biz yaxın fayl və True qayıtmaq bəri biz 119 00:06:47,820 --> 00:06:51,010 uğurla lüğət yüklü bizim Trie daxil. 120 00:06:51,010 --> 00:06:54,240 >> Bütün hüquqlar, belə ki, indi edək Check kontrol. 121 00:06:54,240 --> 00:06:58,780 Check funksiyası baxaraq, biz görürük ki, Check Bir Bool geri gedir. 122 00:06:58,780 --> 00:07:03,740 Bu söz ki, əgər True qaytarır keçib bizim Trie edir. 123 00:07:03,740 --> 00:07:06,170 Bu başqa False qaytarır. 124 00:07:06,170 --> 00:07:10,110 >> Belə ki, necə biz müəyyən etmək gedir Bu söz bizim Trie edir? 125 00:07:10,110 --> 00:07:14,270 Biz burada görürük ki, əvvəl kimi, biz təkrarlamaq kursor istifadə etmək olacaq 126 00:07:14,270 --> 00:07:16,010 bizim Trie vasitəsilə. 127 00:07:16,010 --> 00:07:20,650 İndi burada, biz təkrarlamaq olacaq bizim bütün söz üzərində. 128 00:07:20,650 --> 00:07:24,680 Belə ki, biz söz üzərində iterating keçdi, biz müəyyən etmək olacaq 129 00:07:24,680 --> 00:07:29,280 index Uşaq array daxil söz bracket i uyğundur. 130 00:07:29,280 --> 00:07:34,150 Belə ki, bu məhz kimi baxmaq gedir Load, burada sözü bracket i bir əgər 131 00:07:34,150 --> 00:07:38,110 apostrof, sonra biz index istifadə etmək istədiyiniz 1 minus əlifba biz müəyyən çünki 132 00:07:38,110 --> 00:07:41,160 hara getdiyimizi ki, Apostrophes saxlamaq üçün. 133 00:07:41,160 --> 00:07:44,440 >> Else biz tolower istifadə etmək olacaq söz bracket i. 134 00:07:44,440 --> 00:07:48,270 Belə ki, ola bilər ki, sözü xatırlayıram ixtiyari kapitallaşdırılması və biz 135 00:07:48,270 --> 00:07:51,590 biz istifadə etdiyiniz əmin etmək istəyirəm şeyi bir kiçik versiyası. 136 00:07:51,590 --> 00:07:55,300 Və sonra kiçik-dən çıxmaq a, bir dəfə daha, bizə vermək 137 00:07:55,300 --> 00:07:57,940 əlifba mövqeyi ki, xarakter. 138 00:07:57,940 --> 00:08:01,740 Belə ki, bizim index olacaq Uşaq massivinə. 139 00:08:01,740 --> 00:08:06,480 >> İndi, əgər uşaqlar daxil index array null ki, we deməkdir 140 00:08:06,480 --> 00:08:09,050 artıq iterating davam edə bilər bizim Trie aşağı. 141 00:08:09,050 --> 00:08:13,320 Ki, işi varsa, bu söz ola bilməz bəlkə, bizim Trie ola bəri əgər 142 00:08:13,320 --> 00:08:18,000 ki, bir olacaq deməkdir edildi yol aşağı ki, söz və siz ki 143 00:08:18,000 --> 00:08:19,350 null qarşılaşma heç vaxt. 144 00:08:19,350 --> 00:08:21,910 Belə null qarşılaşmadan, biz yalan. 145 00:08:21,910 --> 00:08:23,810 Söz lüğətdə yoxdur. 146 00:08:23,810 --> 00:08:28,200 Bu null deyil, onda biz olacaq Iterating davam, belə ki, biz gedirik 147 00:08:28,200 --> 00:08:33,150 ki, qeyd etmək bizim kursor yeniləmə ki, index da xüsusi node. 148 00:08:33,150 --> 00:08:36,659 >> Beləliklə, biz ərzində bunu saxlamaq bütün söz. 149 00:08:36,659 --> 00:08:40,630 , Biz null hit heç vaxt hərfinin vasitələri Biz bütün vasitəsilə əldə edə bildik 150 00:08:40,630 --> 00:08:44,840 dünya və Trie bir node tapmaq, lakin biz olduqca hələ həyata deyilik. 151 00:08:44,840 --> 00:08:46,350 Biz yalnız True qayıtmaq istəmirəm. 152 00:08:46,350 --> 00:08:51,400 Biz kursor səhv söz qayıtmaq istəyirəm pişik deyil bəri, yenidən xatırlamaq 153 00:08:51,400 --> 00:08:55,140 bizim lüğət və fəlakət edir sonra biz uğurla vasitəsilə əldə edəcək 154 00:08:55,140 --> 00:08:59,810 sözü pişik, lakin kursor söz Asma və True olacaq. 155 00:08:59,810 --> 00:09:04,990 Beləliklə, biz göstərir kursor söz qayıtmaq olmadığını, bu node həqiqətən bir söz, 156 00:09:04,990 --> 00:09:06,530 ki, çek üçün var. 157 00:09:06,530 --> 00:09:08,310 >> Belə ki, ölçüsü kontrol imkan. 158 00:09:08,310 --> 00:09:11,410 Belə ki, Size olduqca asan olacaq ildən, yük xatırlayıram, biz istəyirik 159 00:09:11,410 --> 00:09:15,480 üçün lüğət ölçüsü incrementing Biz qarşılaşırıq ki, hər bir söz. 160 00:09:15,480 --> 00:09:20,820 Belə ki, Size yalnız qayıtmaq üçün gedir Lüğət ölçüsü, və bu. 161 00:09:20,820 --> 00:09:24,650 >> Bütün hüquqlar, belə nəhayət, biz boşaltmaq var. 162 00:09:24,650 --> 00:09:29,050 Belə ki, boşaltmaq, biz istifadə etmək olacaq bir əslində bütün etmək üçün recursive funksiyası 163 00:09:29,050 --> 00:09:33,390 bizə, belə ki, bizim funksiyası üçün iş azad etməyə çağırıb olacaq. 164 00:09:33,390 --> 00:09:35,830 Nə azad etməyə nə gedir? 165 00:09:35,830 --> 00:09:40,640 Biz azad etməyə gedir burada bax uşaqların bütün təkrarlamaq 166 00:09:40,640 --> 00:09:45,810 bu node, və əgər uşaq node null deyil, sonra biz olacaq 167 00:09:45,810 --> 00:09:47,760 uşaq node boşaltmaq. 168 00:09:47,760 --> 00:09:52,070 >> Belə ki, bu recursively gedir bizim uşaqlar bütün boşaltmaq. 169 00:09:52,070 --> 00:09:55,140 Biz əmin deyilik dəfə bizim uşaqlar bütün boşaldılır olub, sonra biz 170 00:09:55,140 --> 00:09:58,830 özümüzü azad, belə ki, özümüz boşaltmaq bilər. 171 00:09:58,830 --> 00:10:04,550 Belə ki, bu recursively boşaltmaq edəcək bütün Trie, və sonra bir dəfə 172 00:10:04,550 --> 00:10:06,910 görülən, biz yalnız True qayıda bilər. 173 00:10:06,910 --> 00:10:09,770 Boşaltmaq biz istəyirik, uğursuz bilməz yalnız şeyi azad. 174 00:10:09,770 --> 00:10:12,985 Belə ki, bir dəfə biz azad tamamlayın hər şey, True qayıtmaq. 175 00:10:12,985 --> 00:10:14,380 Və bu. 176 00:10:14,380 --> 00:10:16,792 My name Rob və bu [işitilemez] idi. 177 00:10:16,792 --> 00:10:21,888