1 00:00:00,000 --> 00:00:12,350 >> [MUSIC PLAYING] 2 00:00:12,350 --> 00:00:13,050 >> Rob Bowden: Hi. 3 00:00:13,050 --> 00:00:13,640 Mən Rob deyiləm. 4 00:00:13,640 --> 00:00:16,210 Və bu həll bildirin. 5 00:00:16,210 --> 00:00:20,070 Belə ki, burada biz həyata olacaq ümumi masa. 6 00:00:20,070 --> 00:00:24,090 Biz görürük ki, bizim bu struct node masa bu kimi baxmaq edir. 7 00:00:24,090 --> 00:00:28,710 Belə ki, bir char söz var olacaq Ölçülər Uzunluğu + 1 array. 8 00:00:28,710 --> 00:00:32,259 Ki, + 1 unutmayın ildən maksimum Lüğətə söz 45 9 00:00:32,259 --> 00:00:33,130 simvol. 10 00:00:33,130 --> 00:00:37,070 Və sonra biz bir əlavə lazım olacaq backslash sıfır üçün character. 11 00:00:37,070 --> 00:00:40,870 >> Və sonra hər bizim hashtable bucket saxlamaq üçün gedir bir 12 00:00:40,870 --> 00:00:42,320 qovşaqlarının bağlı siyahı. 13 00:00:42,320 --> 00:00:44,420 Biz burada probing xətti məşğul deyil. 14 00:00:44,420 --> 00:00:48,430 Və sifariş növbəti keçid bucket element, biz lazımdır 15 00:00:48,430 --> 00:00:50,390 struct node * Növbəti. 16 00:00:50,390 --> 00:00:51,110 OK. 17 00:00:51,110 --> 00:00:53,090 Belə ki, bir node kimi görünür nə. 18 00:00:53,090 --> 00:00:56,180 >> İndi burada elan edir Bizim hashtable edir. 19 00:00:56,180 --> 00:00:59,640 Bu 16.834 buketler var olacaq. 20 00:00:59,640 --> 00:01:01,910 Amma ki sayı həqiqətən etməz. 21 00:01:01,910 --> 00:01:05,450 Və nəhayət, biz olacaq qlobal dəyişən hashtable ölçüsü olan 22 00:01:05,450 --> 00:01:07,000 sıfır kimi başlamaq niyyətindədir. 23 00:01:07,000 --> 00:01:10,760 Və necə takip olacaq çox söz bizim lüğət var. 24 00:01:10,760 --> 00:01:13,710 >> Belə ki, yük bir nəzər salaq. 25 00:01:13,710 --> 00:01:16,390 Ki, yük edək, bir bool qaytarır. 26 00:01:16,390 --> 00:01:20,530 Uğurla, əgər doğru qayıtmaq dolu və saxta başqa. 27 00:01:20,530 --> 00:01:23,990 Və bu, bir const char * lüğət edir lüğət olan 28 00:01:23,990 --> 00:01:25,280 açmaq istəyirəm. 29 00:01:25,280 --> 00:01:27,170 Belə ki, ilk şey biz nə olacaq. 30 00:01:27,170 --> 00:01:29,500 >> Biz fopen olacaq oxumaq üçün lüğət. 31 00:01:29,500 --> 00:01:31,680 Və biz etmək olacaq Bu nail əmin olun. 32 00:01:31,680 --> 00:01:35,920 Bu NULL geri Belə ki, əgər, sonra biz etmədik uğurla lüğət açmaq. 33 00:01:35,920 --> 00:01:37,440 Və biz saxta qayıtmaq lazımdır. 34 00:01:37,440 --> 00:01:41,580 Amma bu uğurla etdi ki, fərz açıq, sonra biz oxumaq istəyirəm 35 00:01:41,580 --> 00:01:42,400 lüğət. 36 00:01:42,400 --> 00:01:46,450 Biz bəzi tapmaq qədər loop saxlamaq Bu loop çıxmaq üçün səbəb, 37 00:01:46,450 --> 00:01:47,570 biz görəcəksiniz olan. 38 00:01:47,570 --> 00:01:48,920 Belə ki, loop saxlamaq. 39 00:01:48,920 --> 00:01:51,780 >> İndi biz olacaq bir node malloc. 40 00:01:51,780 --> 00:01:54,020 Və əlbəttə biz lazım hava yenidən yoxlamaq. 41 00:01:54,020 --> 00:01:58,680 Belə ki, mallocing müvəffəqiyyətli ola bilmədi, onda biz ki, biz hər hansı bir node boşaltmaq istəyirəm 42 00:01:58,680 --> 00:02:02,590 əvvəl malloc nə oldu da, yaxın lüğət və saxta qayıtmaq. 43 00:02:02,590 --> 00:02:06,830 Amma məhəl fərz biz nail, sonra biz fscanf istifadə etmək istədiyiniz 44 00:02:06,830 --> 00:02:12,400 bir tək söz oxumaq bizim bizim node daxil lüğət. 45 00:02:12,400 --> 00:02:17,940 Belə ki, giriş> sözü xatırlayıram char + 1 size LENGHTH söz bufer 46 00:02:17,940 --> 00:02:20,300 biz daxil söz saxlamaq olacaq ki, 47 00:02:20,300 --> 00:02:25,070 >> Belə ki, fscanf kimi uzun, 1 qayıtmaq üçün gedir Bu edə uğurla idi 48 00:02:25,070 --> 00:02:26,750 faylı bir sözü oxumaq. 49 00:02:26,750 --> 00:02:30,460 Bir səhv və ya olur, ya biz fayl sonuna çatmaq, bu 50 00:02:30,460 --> 00:02:31,950 1 qayıtmaq olmaz. 51 00:02:31,950 --> 00:02:35,180 Bu, 1 qayıtmaq deyil halda biz nəhayət çıxmaq olacaq 52 00:02:35,180 --> 00:02:37,280 bu isə loop. 53 00:02:37,280 --> 00:02:42,770 Beləliklə, biz görürük ki, biz uğurla dəfə bir sözü oxumaq 54 00:02:42,770 --> 00:02:48,270 entry> söz, sonra biz olacaq bizim hash funksiyası istifadə edərək, söz. 55 00:02:48,270 --> 00:02:49,580 >> Nin bir nəzər salaq hash funksiyası. 56 00:02:49,580 --> 00:02:52,430 57 00:02:52,430 --> 00:02:55,610 Beləliklə, siz həqiqətən ehtiyac yoxdur Bu anlamaq üçün. 58 00:02:55,610 --> 00:02:59,460 Və həqiqətən biz yalnız bu hash çıxardı internet fəaliyyət göstərir. 59 00:02:59,460 --> 00:03:04,010 Siz tanımaq lazımdır yalnız şey bu bir const char * söz edir ki,. 60 00:03:04,010 --> 00:03:08,960 Belə ki, daxil bir simli alaraq, və oldu çıxış kimi bir imzasız int qaytarılması. 61 00:03:08,960 --> 00:03:12,360 Belə ki, bütün bir hash funksiyası olunur, bu bir giriş edir və bir verir 62 00:03:12,360 --> 00:03:14,490 Bu hashtable daxil index. 63 00:03:14,490 --> 00:03:18,530 >> Biz NUM_BUCKETS tərəfindən moding edirik ki, görürsünüz, ki, dəyəri döndü 64 00:03:18,530 --> 00:03:21,730 əslində hashtable daxil index edir və nə kənarda deyil index 65 00:03:21,730 --> 00:03:24,320 serialın həddi. 66 00:03:24,320 --> 00:03:28,060 Belə ki funksiyası, biz gedirik verilir biz oxumaq söz hash üçün 67 00:03:28,060 --> 00:03:29,390 lüğət. 68 00:03:29,390 --> 00:03:31,700 Və sonra biz istifadə etmək olacaq daxil olan Hash 69 00:03:31,700 --> 00:03:33,750 Bu hashtable daxil giriş. 70 00:03:33,750 --> 00:03:38,520 >> İndi hashtable hash, cari Cədvəldə siyahısını əlaqəli. 71 00:03:38,520 --> 00:03:41,410 Və bu çox mümkün yalnız NULL ki. 72 00:03:41,410 --> 00:03:44,960 Biz bizim giriş əlavə etmək istəyirsiniz Bu bağlı siyahı başlayan. 73 00:03:44,960 --> 00:03:48,600 Və belə ki, biz cari olacaq nə hashtable giriş nöqtəsi 74 00:03:48,600 --> 00:03:50,380 Hal-hazırda göstərir. 75 00:03:50,380 --> 00:03:53,310 Və sonra biz, saxlamaq olacaq Bu da hashtable da 76 00:03:53,310 --> 00:03:55,350 hash, cari giriş. 77 00:03:55,350 --> 00:03:59,320 Belə ki, bu iki xətləri uğurla daxil nın başında giriş 78 00:03:59,320 --> 00:04:02,260 ki, index at bağlı siyahı Bu hashtable da. 79 00:04:02,260 --> 00:04:04,900 >> Biz ilə tamamlayın sonra, biz bilirik biz başqa söz aşkar ki, 80 00:04:04,900 --> 00:04:07,790 lüğət, və biz yenə arttırmayı. 81 00:04:07,790 --> 00:04:13,960 Beləliklə, biz bunu saxlamaq fscanf qədər nəhayət qeyri-1 bir şey döndü 82 00:04:13,960 --> 00:04:16,950 olan point unutmayın ki biz giriş azad etmək lazımdır. 83 00:04:16,950 --> 00:04:19,459 Belə ki, burada biz bir giriş malloced. 84 00:04:19,459 --> 00:04:21,329 Və biz bir şey oxumaq üçün cəhd lüğət. 85 00:04:21,329 --> 00:04:23,910 Və biz uğurla oxumaq etməyib in lüğət bir şey, 86 00:04:23,910 --> 00:04:26,650 biz giriş azad etmək lazımdır, bu halda biz, həqiqətən, istismara heç vaxt 87 00:04:26,650 --> 00:04:29,140 hashtable, və nəhayət qırmaq. 88 00:04:29,140 --> 00:04:32,750 >> Biz çıxmaq bir dəfə biz görmək lazımdır, yaxşı, çünki orada çıxmaq etməyib 89 00:04:32,750 --> 00:04:34,360 bir səhv faylı oxuyur? 90 00:04:34,360 --> 00:04:37,120 Yoxsa biz çıxmaq idi, çünki biz fayl sona gəlindi? 91 00:04:37,120 --> 00:04:39,480 Bir səhv sonra, var idi biz saxta qayıtmaq istəyirəm. 92 00:04:39,480 --> 00:04:40,930 Yük müvəffəqiyyətli ola bilmədi, çünki. 93 00:04:40,930 --> 00:04:43,890 Və prosesdə biz boşaltmaq istəyirəm bütün biz oxumaq sözlər, və 94 00:04:43,890 --> 00:04:45,670 lüğət fayl bağlayın. 95 00:04:45,670 --> 00:04:48,740 >> Biz nail ola bildimi etsək, onda biz yalnız hələ lüğət bağlamaq lazımdır 96 00:04:48,740 --> 00:04:53,040 fayl, və nəhayət doğru geri bəri biz uğurla lüğət yükləndi. 97 00:04:53,040 --> 00:04:54,420 Və yük üçün var. 98 00:04:54,420 --> 00:04:59,020 Belə ki, indi bir dolu hashtable verilmiş, yoxlamaq bu kimi baxmaq edir. 99 00:04:59,020 --> 00:05:03,140 Belə olan bir bool qaytarır, yoxlamaq keçdi olub-olmadığını göstərin gedir 100 00:05:03,140 --> 00:05:07,530 char * sözlə, olub keçdi simli bizim lüğət edir. 101 00:05:07,530 --> 00:05:09,890 , Lüğətdə Yəni əgər bu, bizim hashtable olduğu halda, 102 00:05:09,890 --> 00:05:11,170 biz doğru qayıdacaq. 103 00:05:11,170 --> 00:05:13,380 Bu deyil, əgər, biz yalan qayıdacaqlar. 104 00:05:13,380 --> 00:05:17,740 >> Bu söz keçdi nəzərə alaraq, biz istəyirik sözü hash gedir. 105 00:05:17,740 --> 00:05:22,110 İndi tanımaq üçün əhəmiyyətli bir şeydir yük biz bilirdik ki, ki, bütün 106 00:05:22,110 --> 00:05:23,820 biz aşağı halda olacaq sözləri. 107 00:05:23,820 --> 00:05:25,820 Lakin burada biz belə əmin deyilik. 108 00:05:25,820 --> 00:05:29,510 Biz hash funksiyası nəzər varsa, həqiqətən, bizim hash funksiyası 109 00:05:29,510 --> 00:05:32,700 lower casing hər bir xarakter deyil Sözün. 110 00:05:32,700 --> 00:05:37,940 Belə ki, asılı olmayaraq Kapitallaşma söz, bizim hash funksiyası geri 111 00:05:37,940 --> 00:05:42,270 Bu nə üçün eyni index kapitalizasiyası var ki kimi, 112 00:05:42,270 --> 00:05:45,280 tamamilə kiçik qayıtdı Sözün versiyası. 113 00:05:45,280 --> 00:05:46,600 Alright. 114 00:05:46,600 --> 00:05:49,790 Yəni bizim index daxil edir Bu söz hashtable. 115 00:05:49,790 --> 00:05:52,940 >> İndi loop üçün gedir bağlı siyahı üzərində təkrarlamaq 116 00:05:52,940 --> 00:05:55,000 ki, index idi. 117 00:05:55,000 --> 00:05:59,610 Beləliklə, biz giriş başlatılıyor fark ki, index qeyd etmək. 118 00:05:59,610 --> 00:06:02,750 Biz davam edirik giriş! = NULL isə. 119 00:06:02,750 --> 00:06:07,770 Və xatırlayıram ki, bu göstərici yenilənməsi növbəti bizim bağlı siyahısı giriş = entry>. 120 00:06:07,770 --> 00:06:14,400 Belə ki, bizim cari giriş nöqtəsi var bağlı siyahıda növbəti maddə. 121 00:06:14,400 --> 00:06:19,250 >> Belə ki bağlı siyahı hər giriş üçün, biz strcasecmp istifadə etmək olacaq. 122 00:06:19,250 --> 00:06:20,330 Bu strcomp deyil. 123 00:06:20,330 --> 00:06:23,780 Bir daha, biz istəyirik, çünki insensitively şey işi yoxdur. 124 00:06:23,780 --> 00:06:27,870 Beləliklə, biz müqayisə etmək strcasecmp istifadə Bu vasitəsilə köçürdü söz 125 00:06:27,870 --> 00:06:31,860 sözünə qarşı funksiyası Bu giriş edir. 126 00:06:31,860 --> 00:06:35,570 Sıfır qaytarır ki, var idi deməkdir biz istədiyiniz halda bir matç, 127 00:06:35,570 --> 00:06:36,630 doğru geri. 128 00:06:36,630 --> 00:06:39,590 Biz uğurla tapıldı Bizim hashtable söz. 129 00:06:39,590 --> 00:06:43,040 >> Bir matç yox idi, onda biz istəyirik yenidən loop gedən və baxmaq 130 00:06:43,040 --> 00:06:43,990 növbəti giriş. 131 00:06:43,990 --> 00:06:47,640 Və biz isə orada loop davam edəcəyik bu bağlı siyahısında entries var. 132 00:06:47,640 --> 00:06:50,160 Biz qırmaq əgər nə olur loop üçün bu həyata? 133 00:06:50,160 --> 00:06:55,110 Yəni biz bir giriş tapmadı deməkdir ki, olan halda, bu söz eşleşen 134 00:06:55,110 --> 00:07:00,220 biz göstərir yalan qayıtmaq ki, bizim hashtable bu söz yox idi. 135 00:07:00,220 --> 00:07:02,540 Və bir çek var. 136 00:07:02,540 --> 00:07:04,790 >> Belə ki, ölçüsü bir nəzər salaq. 137 00:07:04,790 --> 00:07:06,970 İndi ölçüsü olduqca sadə olacaq. 138 00:07:06,970 --> 00:07:11,080 Ci ildən hər bir söz üçün, yük xatırlayıram biz qlobal artırılacağını tapıldı 139 00:07:11,080 --> 00:07:12,880 dəyişən hashtable ölçüsü. 140 00:07:12,880 --> 00:07:16,480 Belə ki, ölçüsü funksiyası yalnız gedir qlobal dəyişən qayıtmaq üçün. 141 00:07:16,480 --> 00:07:18,150 Və bu. 142 00:07:18,150 --> 00:07:22,300 >> İndi, nəhayət, biz boşaltmaq lazımdır lüğət hər şey həyata bir dəfə. 143 00:07:22,300 --> 00:07:25,340 Belə ki, necə biz bunu edəcəyik? 144 00:07:25,340 --> 00:07:30,440 Burada biz üzərində loop edirik bizim masa bütün buketler. 145 00:07:30,440 --> 00:07:33,240 Belə ki, NUM_BUCKETS buketler var. 146 00:07:33,240 --> 00:07:37,410 Və hər bağlıdır siyahısı üçün bizim hashtable, biz artıq loop olacaq 147 00:07:37,410 --> 00:07:41,070 bağlı siyahı bütövlükdə, hər element azad. 148 00:07:41,070 --> 00:07:42,900 >> İndi biz diqqətli olmaq lazımdır. 149 00:07:42,900 --> 00:07:47,910 Belə ki, burada biz bir müvəqqəti dəyişən var ki, növbəti göstərici saxlanılması oldu 150 00:07:47,910 --> 00:07:49,730 bağlı siyahısında element. 151 00:07:49,730 --> 00:07:52,140 Və sonra biz pulsuz olacaq cari element. 152 00:07:52,140 --> 00:07:55,990 Biz bəri bunu əmin olmaq lazımdır yalnız cari element azad edə bilməz 153 00:07:55,990 --> 00:07:59,180 və sonra növbəti pointer daxil olmaq üçün cəhd edin, bir dəfə bəri biz azad etdik, 154 00:07:59,180 --> 00:08:00,870 yaddaş etibarsız olur. 155 00:08:00,870 --> 00:08:04,990 >> Beləliklə, biz bir pointer ətrafında saxlamaq lazımdır növbəti element, sonra biz azad edə bilər 156 00:08:04,990 --> 00:08:08,360 cari element, sonra biz təkmilləşdirə bilər qeyd etmək bizim cari element 157 00:08:08,360 --> 00:08:09,550 növbəti element. 158 00:08:09,550 --> 00:08:12,800 Biz elementləri loop var lazımdır isə bu bağlı siyahısında. 159 00:08:12,800 --> 00:08:15,620 Biz bütün bağlı ki edəcəyik Bu hashtable siyahıları. 160 00:08:15,620 --> 00:08:19,460 Biz ilə tamamlayın Və bir dəfə biz etdik tamamilə hashtable boşaldılır və 161 00:08:19,460 --> 00:08:20,190 biz tamamlayın. 162 00:08:20,190 --> 00:08:23,200 Belə ki, boşaltmaq üçün mümkün deyil Heç yalan qayıtmaq. 163 00:08:23,200 --> 00:08:26,470 Və biz tamamlayın zaman, biz yalnız doğru qayıdın. 164 00:08:26,470 --> 00:08:29,000 >> Bu həll keçir edək. 165 00:08:29,000 --> 00:08:33,070 Belə ki, nə bizim nəzər salaq struct node kimi görünür. 166 00:08:33,070 --> 00:08:36,220 Burada biz bir bool olacaq bax söz və struct node * uşaqlar 167 00:08:36,220 --> 00:08:37,470 bracket ALPHABET. 168 00:08:37,470 --> 00:08:38,929 169 00:08:38,929 --> 00:08:42,020 Siz ola bilər, belə ki, ilk şey merak, niyə ALPHABET edir 170 00:08:42,020 --> 00:08:44,660 ed 27 kimi müəyyən? 171 00:08:44,660 --> 00:08:47,900 Yaxşı, biz lazım olacaq ki, xatırlayıram apostrof idarə edilə. 172 00:08:47,900 --> 00:08:51,910 Belə ki, bir qədər bir olacaq Bu proqram ərzində xüsusi halda. 173 00:08:51,910 --> 00:08:54,710 >> İndi xatırlayıram necə bir trie həqiqətən işləyir. 174 00:08:54,710 --> 00:08:59,380 Biz söz indeksasiyası etdiyiniz deyirlər "Cats." Sonra trie kökündən, 175 00:08:59,380 --> 00:09:02,610 biz uşaqlar baxmaq olacaq array, və biz baxmaq olacaq 176 00:09:02,610 --> 00:09:08,090 Məktubda uyğun index 2 dizine olacaq C. Belə ki. 177 00:09:08,090 --> 00:09:11,530 Belə verilmiş ki, ki, iradə bizə yeni node verir. 178 00:09:11,530 --> 00:09:13,820 Və sonra biz node işləmək lazımdır. 179 00:09:13,820 --> 00:09:17,770 >> Belə ki node verilmiş, biz bir daha istəyirik uşaqlar array baxmaq üçün gedir. 180 00:09:17,770 --> 00:09:22,110 Və biz index sıfır baxmaq olacaq pişik A uyğun. 181 00:09:22,110 --> 00:09:27,170 Beləliklə biz ki node getmək olacaq, ki, node verilmiş gedirik 182 00:09:27,170 --> 00:09:31,090 sonunda baxmaq üçün bir qarşılıq var T. Və node hərəkət üçün 183 00:09:31,090 --> 00:09:35,530 nəhayət, biz tamamilə baxdı vasitəsilə söz "pişik". İndi bool 184 00:09:35,530 --> 00:09:40,960 söz olub-olmadığını göstərir ehtimal edilir Bu söz əslində bir söz. 185 00:09:40,960 --> 00:09:43,470 >> Belə ki, niyə biz xüsusi halda lazımdır? 186 00:09:43,470 --> 00:09:47,700 Yaxşı nə sözü "fəlakət" bizim lüğət, lakin 187 00:09:47,700 --> 00:09:50,150 sözü "pişik" deyil? 188 00:09:50,150 --> 00:09:54,580 Belə ki, görmək üçün axtarır əgər sözü "pişik" bizim lüğət, biz etdiyiniz 189 00:09:54,580 --> 00:09:59,970 uğurla vasitəsilə baxmaq üçün gedir region node indeksləri C-A-T. 190 00:09:59,970 --> 00:10:04,290 Amma ki, yalnız, çünki fəlakət yolda qovşaqlarının yaratmaq oldu 191 00:10:04,290 --> 00:10:07,190 C-A-T, bütün yol Sözün sonu. 192 00:10:07,190 --> 00:10:12,020 Belə ki, bool sözü olub-olmadığını göstərir üçün istifadə olunur bu yer 193 00:10:12,020 --> 00:10:14,310 həqiqətən bir söz göstərir. 194 00:10:14,310 --> 00:10:15,140 >> Bütün hüquqlar. 195 00:10:15,140 --> 00:10:19,310 Belə ki, indi biz trie nə bilirik ki, kimi baxmaq niyyətində, ən baxaq 196 00:10:19,310 --> 00:10:20,730 funksiyası yük. 197 00:10:20,730 --> 00:10:24,610 Belə ki, yük bir bool qayıtmaq üçün gedir olub biz uğurla və ya 198 00:10:24,610 --> 00:10:26,720 uğursuz lüğət yükləndi. 199 00:10:26,720 --> 00:10:30,460 Və bu lüğət olacaq biz yüklemek üçün istəyirəm ki,. 200 00:10:30,460 --> 00:10:33,930 >> Biz nə istəyirik Belə ki, ilk şey açıqdır oxu üçün lüğət up. 201 00:10:33,930 --> 00:10:36,160 Və biz əmin etmək lazımdır biz uğursuz olmadı. 202 00:10:36,160 --> 00:10:39,580 Lüğət deyil əgər uğurla açıldı, o qayıdacaq 203 00:10:39,580 --> 00:10:42,400 null olan halda biz istəyirik yalan qayıtmaq olacaq. 204 00:10:42,400 --> 00:10:47,230 Amma hərfinin uğurla açdı, sonra biz, həqiqətən oxuya bilərsiniz 205 00:10:47,230 --> 00:10:48,220 Lüğət vasitəsilə. 206 00:10:48,220 --> 00:10:50,880 >> Biz olacaq Belə ki, ilk şey etmək istəyirəm ki, biz bu var 207 00:10:50,880 --> 00:10:52,500 qlobal dəyişən kök. 208 00:10:52,500 --> 00:10:56,190 İndi root * bir node olacaq. 209 00:10:56,190 --> 00:10:59,760 Biz istəyirik ki, bizim trie üst var vasitəsilə iterating olacaq. 210 00:10:59,760 --> 00:11:02,660 Gedirik ki, ilk şey etmək istəyirəm ayrılması deyil 211 00:11:02,660 --> 00:11:04,140 bizim kök üçün yaddaş. 212 00:11:04,140 --> 00:11:07,980 Biz calloc istifadə edirik ki, görürsünüz əsasən eyni olan funksiyası, 213 00:11:07,980 --> 00:11:11,500 Bu malloc funksiyası kimi, başqa bu ki, bir şey geri zəmanət 214 00:11:11,500 --> 00:11:13,180 tamamilə həyata zeroed. 215 00:11:13,180 --> 00:11:17,290 Biz malloc istifadə əgər Belə ki, biz lazımdır olan göstəricilər bütün vasitəsilə getmək bizim 216 00:11:17,290 --> 00:11:20,160 node, və əmin olun onlar bütün null istəyirik. 217 00:11:20,160 --> 00:11:22,710 Belə ki, calloc bizim üçün bunu edəcək. 218 00:11:22,710 --> 00:11:26,330 >> İndi yalnız malloc kimi, biz etmək lazımdır ayrılması həqiqətən idi ki, əmin 219 00:11:26,330 --> 00:11:27,520 müvəffəqiyyətli. 220 00:11:27,520 --> 00:11:29,990 Bu null döndü, onda biz yaxın və ya lüğət lazımdır 221 00:11:29,990 --> 00:11:32,100 fayl və saxta qayıtmaq. 222 00:11:32,100 --> 00:11:36,835 Belə ki ayrılmasını fərz uğurlu, biz * bir node istifadə etmək olacaq 223 00:11:36,835 --> 00:11:40,270 bizim trie vasitəsilə təkrarlamaq üçün kursor. 224 00:11:40,270 --> 00:11:43,890 Belə ki, bizim kökləri dəyişdirmək üçün gedir heç vaxt, lakin biz kursor istifadə etmək olacaq 225 00:11:43,890 --> 00:11:47,875 həqiqətən node node getmək. 226 00:11:47,875 --> 00:11:50,940 >> Belə ki, bu loop üçün biz oxu lüğət faylı vasitəsilə. 227 00:11:50,940 --> 00:11:53,670 Və biz fgetc istifadə edirik. 228 00:11:53,670 --> 00:11:56,290 Fgetc bir qamarlamaq üçün gedir fayl character. 229 00:11:56,290 --> 00:11:59,370 Biz qənimətçilik davam edirik simvol biz çata bilməyən isə 230 00:11:59,370 --> 00:12:01,570 fayl sonu. 231 00:12:01,570 --> 00:12:03,480 >> Biz idarə etmək üçün lazım olan iki hallarda var. 232 00:12:03,480 --> 00:12:06,610 Ilk, əgər karakter yeni bir xətt idi. 233 00:12:06,610 --> 00:12:10,450 Belə ki, biz sonra yeni bir xətt idi əgər bilmək biz yeni bir söz üçün hərəkət etmək üzrəyik. 234 00:12:10,450 --> 00:12:15,240 Amma sonra, yeni bir xətt idi fərz burada biz anlamaq istəyirəm 235 00:12:15,240 --> 00:12:18,380 index biz daxil index olacaq uşaqlar array ki, 236 00:12:18,380 --> 00:12:19,810 biz əvvəl baxdı. 237 00:12:19,810 --> 00:12:23,880 >> Belə ki, əvvəl dediyim kimi, biz lazım xüsusi halda apostrof. 238 00:12:23,880 --> 00:12:26,220 Biz üç komponentli istifadə etdiyiniz bildiriş burada operator. 239 00:12:26,220 --> 00:12:29,580 Belə ki, əgər biz, bu oxumaq olacaq biz oxumaq xarakter idi 240 00:12:29,580 --> 00:12:35,330 apostrof, sonra biz müəyyən olacaq index = "ALPHABET" -1 edəcək olan 241 00:12:35,330 --> 00:12:37,680 indeksi 26 ola bilər. 242 00:12:37,680 --> 00:12:41,130 >> Başqa, bu apostrof deyil, əgər biz index müəyyən olacaq 243 00:12:41,130 --> 00:12:43,760 c bərabər - a. 244 00:12:43,760 --> 00:12:49,030 Belə ki, geri əvvəllər p-dəsti xatırlayıram, c - bizə vermək niyyətindədir 245 00:12:49,030 --> 00:12:53,410 C. əlifba mövqeyi Belə ki C bu iradə, məktub A 246 00:12:53,410 --> 00:12:54,700 bizə index sıfır verir. 247 00:12:54,700 --> 00:12:58,120 Hərfi B üçün, verəcək belə bizə indeksi 1, və. 248 00:12:58,120 --> 00:13:03,010 >> Belə ki, bu bizə indeksi verir biz istəyirik ki, uşaqlar array. 249 00:13:03,010 --> 00:13:08,890 İndi bu göstərici hazırda null əgər uşaqlar, o deməkdir ki, bir node 250 00:13:08,890 --> 00:13:11,830 Hal-hazırda yoxdur ki, yolundan. 251 00:13:11,830 --> 00:13:15,160 Beləliklə, biz ayırmaq lazımdır ki, yol üçün bir node. 252 00:13:15,160 --> 00:13:16,550 Yəni biz burada nə olacaq nə. 253 00:13:16,550 --> 00:13:20,690 >> Yəni biz yenidən calloc istifadə etmək olacaq funksiyası, biz yoxdur ki, 254 00:13:20,690 --> 00:13:22,880 bütün göstəricilərinə həyata sıfıra. 255 00:13:22,880 --> 00:13:27,240 Və biz yenidən yoxlamaq lazımdır ki calloc uğursuz olmadı. 256 00:13:27,240 --> 00:13:30,700 Calloc uğursuz oldu, onda biz lazım hər şeyi boşaltmaq, yaxın bizim 257 00:13:30,700 --> 00:13:32,820 lüğət və saxta qayıtmaq. 258 00:13:32,820 --> 00:13:40,050 Belə ki, sonra, bilmirlər ki, fərz Bu, bizim üçün yeni bir uşaq yaradacaq. 259 00:13:40,050 --> 00:13:41,930 Və sonra biz uşaq gedəcək. 260 00:13:41,930 --> 00:13:44,960 Bizim kursor təkrarlamaq edəcək ki, uşaq aşağı. 261 00:13:44,960 --> 00:13:49,330 >> İndi bu ilə başlamaq null deyil, əgər, sonra kursor yalnız təkrarlamaq olar 262 00:13:49,330 --> 00:13:52,590 həqiqətən olmadan uşaq aşağı bir şey ayırmaq üçün olan. 263 00:13:52,590 --> 00:13:56,730 Bu, bizim ilk baş belədir sözü ayrılması "pişik". Və 264 00:13:56,730 --> 00:14:00,330 biz ayrılması getmək zaman o deməkdir ki, "Fəlakət," biz yaratmaq lazım deyil 265 00:14:00,330 --> 00:14:01,680 yenə C-A-T qovşaqlarının. 266 00:14:01,680 --> 00:14:04,830 Onlar artıq mövcuddur. 267 00:14:04,830 --> 00:14:06,080 >> Başqa, bu nədir? 268 00:14:06,080 --> 00:14:10,480 Bu c olduğu şərtdir c a yeni xətt olduğu backslash n. 269 00:14:10,480 --> 00:14:13,710 Bu biz uğurla o deməkdir ki, bir söz başa. 270 00:14:13,710 --> 00:14:16,860 İndi biz nə istəyirsiniz zaman uğurla bir söz başa? 271 00:14:16,860 --> 00:14:21,100 Biz bu söz sahəsində istifadə etmək olacaq Bizim struct node daxilində. 272 00:14:21,100 --> 00:14:23,390 Biz doğru ki, qurmaq istəyirik. 273 00:14:23,390 --> 00:14:27,150 Belə ki, göstərir ki, bu node uğurlu göstərir 274 00:14:27,150 --> 00:14:29,250 söz, faktiki söz. 275 00:14:29,250 --> 00:14:30,940 >> İndi doğru üçün seçin. 276 00:14:30,940 --> 00:14:35,150 Biz nöqtəyə kursor yenidən istəyirəm yenidən trie əvvəlinə. 277 00:14:35,150 --> 00:14:40,160 Və nəhayət, bizim lüğət arttırmayı ölçüsü, biz başqa iş tapdı ildən. 278 00:14:40,160 --> 00:14:43,230 Belə ki, bunu saxlamaq olacaq, , xarakteri ilə xarakter oxu 279 00:14:43,230 --> 00:14:49,150 bizim trie yeni qovşaqlarının tikintisi və lüğət, qədər hər bir söz üçün 280 00:14:49,150 --> 00:14:54,020 biz nəhayət C çatmaq! = EOF olan halda biz fayl çıxmaq. 281 00:14:54,020 --> 00:14:57,050 >> İndi iki hallarda altında var biz EOF hit ola biləcək. 282 00:14:57,050 --> 00:15:00,980 Bir səhv var idi, əgər ilk fayl oxu. 283 00:15:00,980 --> 00:15:03,470 Bir səhv var idi əgər, biz tipik etmək lazımdır. 284 00:15:03,470 --> 00:15:06,460 Yaxın, hər şeyi boşaltmaq fayl, yalan qaytarın. 285 00:15:06,460 --> 00:15:09,810 , Bir səhv var idi hərfinin yalnız biz həqiqətən sonunda hit deməkdir 286 00:15:09,810 --> 00:15:13,750 fayl olan halda, biz yaxın fayl və doğru qayıtmaq bəri biz 287 00:15:13,750 --> 00:15:17,330 uğurla yüklü lüğət bizim trie daxil. 288 00:15:17,330 --> 00:15:20,170 >> Belə ki, indi çek yoxlamaq edək. 289 00:15:20,170 --> 00:15:25,156 Çek funksiyası baxaraq, biz görürük çek bir bool geri gedir. 290 00:15:25,156 --> 00:15:29,680 Bu söz ki, əgər doğru qayıdır keçib bizim trie edir. 291 00:15:29,680 --> 00:15:32,110 Bu başqa yalan qaytarır. 292 00:15:32,110 --> 00:15:36,050 Belə ki, necə olub-olmadığını müəyyən olunur Bu söz bizim trie edir? 293 00:15:36,050 --> 00:15:40,190 >> Biz burada görürük ki, əvvəl kimi, biz təkrarlamaq kursor istifadə etmək olacaq 294 00:15:40,190 --> 00:15:41,970 bizim trie vasitəsilə. 295 00:15:41,970 --> 00:15:46,600 İndi burada biz təkrarlamaq olacaq bizim bütün söz üzərində. 296 00:15:46,600 --> 00:15:50,620 Belə ki, biz keçmiş söz üzərində iterating biz müəyyən olacaq 297 00:15:50,620 --> 00:15:56,400 index uşaqlar array daxil söz bracket I. uyğundur Belə ki, bu 298 00:15:56,400 --> 00:15:59,670 tam kimi baxmaq üçün gedir yük, Ü söz [i] 299 00:15:59,670 --> 00:16:03,310 bir apostrof, sonra biz istəyirik index "Əlifba" istifadə - 1. 300 00:16:03,310 --> 00:16:05,350 Biz müəyyən Çünki ki, biz saxlamaq niyyətində olduğunuz edir 301 00:16:05,350 --> 00:16:07,100 apostrophes. 302 00:16:07,100 --> 00:16:11,780 >> Else biz iki alt söz istifadə etmək olacaq bracket I. Belə ki, söz xatırlayıram bilər 303 00:16:11,780 --> 00:16:13,920 ixtiyari kapitallaşma var. 304 00:16:13,920 --> 00:16:17,540 Və belə ki, biz istəyirik ki, əmin etmək istəyirəm şeyi bir kiçik versiyasını istifadə edərək. 305 00:16:17,540 --> 00:16:21,920 Və sonra 'bir' bir dəfə-dən çıxmaq yenə bizə Əlifba vermək 306 00:16:21,920 --> 00:16:23,880 xarakterli mövqeyi. 307 00:16:23,880 --> 00:16:27,680 Belə ki, bizim index olacaq uşaqlar massivinə. 308 00:16:27,680 --> 00:16:32,420 >> İndi əgər uşaqlar daxil index array null ki, we deməkdir 309 00:16:32,420 --> 00:16:34,990 artıq iterating davam edə bilər bizim trie aşağı. 310 00:16:34,990 --> 00:16:38,870 Ki, işi varsa, bu söz ola bilməz bəlkə bizim trie ola bilər. 311 00:16:38,870 --> 00:16:42,340 Bu idi ki, əgər ki ildən bir yol olacaq demək 312 00:16:42,340 --> 00:16:43,510 ki, söz aşağı. 313 00:16:43,510 --> 00:16:45,290 Və null qarşılaşa heç vaxt. 314 00:16:45,290 --> 00:16:47,850 Belə null qarşılaşmadan, biz yalan. 315 00:16:47,850 --> 00:16:49,840 Söz lüğətdə yoxdur. 316 00:16:49,840 --> 00:16:53,660 Bu null deyil, onda biz istəyirik Iterating davam. 317 00:16:53,660 --> 00:16:57,220 >> Belə ki, biz orada kursor çıxırıq xüsusi qeyd etmək 318 00:16:57,220 --> 00:16:59,760 ki, index at node. 319 00:16:59,760 --> 00:17:03,150 Biz ərzində bunu saxlamaq bütün söz, fərz 320 00:17:03,150 --> 00:17:03,950 biz null hit heç vaxt. 321 00:17:03,950 --> 00:17:07,220 Yəni biz vasitəsilə almaq edə deməkdir bütün söz və tapmaq 322 00:17:07,220 --> 00:17:08,920 Bizim cəhd bir node. 323 00:17:08,920 --> 00:17:10,770 Amma biz olduqca hələ həyata deyilik. 324 00:17:10,770 --> 00:17:12,290 >> Biz yalnız doğru qayıtmaq istəmirəm. 325 00:17:12,290 --> 00:17:14,770 Biz kursor> söz qayıtmaq istəyirəm. 326 00:17:14,770 --> 00:17:18,980 Yenidən xatırlayıram ildən, "pişik" deyil bizim lüğət və "fəlakət" 327 00:17:18,980 --> 00:17:22,935 , sonra biz uğurla biz almaq olacaq vasitəsilə söz "pişik". Amma kursor 328 00:17:22,935 --> 00:17:25,760 söz yalan və doğru olacaq. 329 00:17:25,760 --> 00:17:30,930 Beləliklə, biz göstərir kursor söz qayıtmaq olmadığını, bu node həqiqətən bir söz. 330 00:17:30,930 --> 00:17:32,470 Və yoxlamaq üçün bu. 331 00:17:32,470 --> 00:17:34,250 >> Belə ki, ölçüsü kontrol imkan. 332 00:17:34,250 --> 00:17:37,350 Beləliklə ölçüsü olduqca asan olacaq ildən, yük xatırlayıram, biz istəyirik 333 00:17:37,350 --> 00:17:41,430 üçün lüğət ölçüsü incrementing Biz qarşılaşırıq ki, hər bir söz. 334 00:17:41,430 --> 00:17:45,350 Belə ki, ölçüsü yalnız gedir lüğət ölçüsü qayıtmaq. 335 00:17:45,350 --> 00:17:47,390 Və bu. 336 00:17:47,390 --> 00:17:50,590 >> Belə ki, nəhayət, biz boşaltmaq var. 337 00:17:50,590 --> 00:17:55,100 Belə ki, boşaltmaq, biz istifadə etmək olacaq bir əslində bütün etmək üçün recursive funksiyası 338 00:17:55,100 --> 00:17:56,530 bizim üçün iş. 339 00:17:56,530 --> 00:17:59,340 Belə ki, bizim funksiyası gedir azad etməyə çağırıb. 340 00:17:59,340 --> 00:18:01,650 Nə azad etməyə nə gedir? 341 00:18:01,650 --> 00:18:06,580 Biz azad etməyə gedir burada bax uşaqların bütün təkrarlamaq 342 00:18:06,580 --> 00:18:08,410 bu node. 343 00:18:08,410 --> 00:18:11,750 Və uşaq node deyilsə null, sonra biz olacaq 344 00:18:11,750 --> 00:18:13,730 uşaq node boşaltmaq. 345 00:18:13,730 --> 00:18:18,010 >> Belə ki, bu recursively boşaltmaq deyil bizim uşaqlar bütün. 346 00:18:18,010 --> 00:18:21,080 Biz əmin deyilik dəfə bizim uşaqlar bütün boşaldılır olub, sonra biz 347 00:18:21,080 --> 00:18:25,210 özümüzü azad, belə edə bilərsiniz özümüzü boşaltmaq. 348 00:18:25,210 --> 00:18:29,460 Bu recursively işləyəcək bütün trie boşaltmaq. 349 00:18:29,460 --> 00:18:32,850 Və sonra həyata bir dəfə, biz yalnız doğru ola bilər. 350 00:18:32,850 --> 00:18:34,210 Boşaltmaq uğursuz bilməz. 351 00:18:34,210 --> 00:18:35,710 Biz yalnız şeyi azad edirik. 352 00:18:35,710 --> 00:18:38,870 Belə ki, bir dəfə biz azad tamamlayın hər şey, doğru geri. 353 00:18:38,870 --> 00:18:40,320 Və bu. 354 00:18:40,320 --> 00:18:41,080 My name Rob edir. 355 00:18:41,080 --> 00:18:42,426 Və bu speller idi. 356 00:18:42,426 --> 00:18:47,830 >> [MUSIC PLAYING]