1 00:00:00,000 --> 00:00:03,423 >> [MUSIC PLAYING] 2 00:00:03,423 --> 00:00:05,380 3 00:00:05,380 --> 00:00:08,210 >> ANDI PENG: hissəsinin həftə 6 xoş gəlmisiniz. 4 00:00:08,210 --> 00:00:11,620 Biz standart yoldan Çərşənbə axşamı bölmə vaxt 5 00:00:11,620 --> 00:00:14,130 Bu sevimli bazar günü səhər günorta. 6 00:00:14,130 --> 00:00:17,330 Hər kəs üçün təşəkkür edirik ki, bu gün, lakin ciddi mənə qoşulub 7 00:00:17,330 --> 00:00:18,170 alqış dəyirmi. 8 00:00:18,170 --> 00:00:20,600 >> Bu, olduqca böyük səy var. 9 00:00:20,600 --> 00:00:23,600 Mən demək olar ki, hətta etməyib vaxt up, lakin OK idi. 10 00:00:23,600 --> 00:00:27,520 Belə ki, Mən sizə ki, bütün bilirik yalnız viktorina etdik. 11 00:00:27,520 --> 00:00:30,370 İlk növbədə, xoş gəlmisiniz ki, flip yan. 12 00:00:30,370 --> 00:00:32,917 >> İkincisi, biz bu barədə danışacağıq. 13 00:00:32,917 --> 00:00:34,000 Biz viktorina haqqında danışmaq lazımdır. 14 00:00:34,000 --> 00:00:35,700 Biz haqqında danışmaq lazımdır Siz sinif edirik. 15 00:00:35,700 --> 00:00:36,550 Siz gözəl olacaq. 16 00:00:36,550 --> 00:00:39,080 Mən sizin viktorina üçün Burada sonunda, 17 00:00:39,080 --> 00:00:42,120 Belə ki, uşaqlar almaq istəyirsinizsə a, ona tamamilə gözəl baxmaq. 18 00:00:42,120 --> 00:00:46,590 >> Belə ki, tez biz başlamaq əvvəl aşağıdakı kimi bu gün üçün gündəmdə. 19 00:00:46,590 --> 00:00:48,430 Gördüyünüz kimi, biz istəyirik əsasən sürətli atəş 20 00:00:48,430 --> 00:00:52,120 data strukturları bütün dəstə vasitəsilə həqiqətən, həqiqətən, həqiqətən tez. 21 00:00:52,120 --> 00:00:54,380 Kimi Belə ki, olmayacaq super interaktiv gün. 22 00:00:54,380 --> 00:00:59,620 Bu, yalnız mənə cür qışqırır olacaq şeyi, və mən sizə çaşdırmaq əgər, 23 00:00:59,620 --> 00:01:02,680 Mən çox sürətli gedirəm əgər Mənə bildirin. 24 00:01:02,680 --> 00:01:05,200 Onlar yalnız müxtəlif data istəyirik strukturları və bir hissəsi kimi 25 00:01:05,200 --> 00:01:07,070 bu sizin pset Qarşıdan gələn həftə, siz lazımdır 26 00:01:07,070 --> 00:01:10,340 onlardan biri həyata keçirilməsi üçün tələb oluna, bəlkə onlara iki Odur iki 27 00:01:10,340 --> 00:01:12,319 Sizin pset. 28 00:01:12,319 --> 00:01:14,610 OK, belə ki, mən yalnız gedirəm Bəzi elanlar ilə başlayın. 29 00:01:14,610 --> 00:01:19,070 Biz çıxarıcı borular və daha çox sıralarında artıq getmək lazımdır biz viktorina əvvəl nə çox dərinliyi. 30 00:01:19,070 --> 00:01:20,990 Biz artıq getmək bağlı olacaq yenidən, bir daha sadalamaq 31 00:01:20,990 --> 00:01:23,899 daha dərin daha nə biz viktorina əvvəl idi. 32 00:01:23,899 --> 00:01:26,440 Və sonra biz hash haqqında danışmaq lazımdır masalar, ağac və çalışır olan 33 00:01:26,440 --> 00:01:28,890 bütün pset üçün olduqca zəruridir. 34 00:01:28,890 --> 00:01:32,925 Və sonra biz bir artıq getmək lazımdır pset5 üçün faydalı ipuçları. 35 00:01:32,925 --> 00:01:37,360 >> OK, belə ki, viktorina 0. 36 00:01:37,360 --> 00:01:41,090 orta 58% olmuşdur. 37 00:01:41,090 --> 00:01:45,370 Bu, çox aşağı idi, belə ki, uşaqlar bütün olaraq çox, çox yaxşı idi 38 00:01:45,370 --> 00:01:46,510 ki,. 39 00:01:46,510 --> 00:01:49,970 >> Siz əgər olduqca çox, thumb qayda orta bir standart sapma ərzində 40 00:01:49,970 --> 00:01:52,990 biz bir az istəyirik, xüsusilə, çünki rahat ikibölməli, siz tamamilə gözəl istəyirik. 41 00:01:52,990 --> 00:01:54,120 Siz yolda istəyirik. 42 00:01:54,120 --> 00:01:55,190 Həyat yaxşıdır. 43 00:01:55,190 --> 00:01:58,952 >> Mən hesab edirəm ki, scary bilirik Mən bu viktorina 40% kimi var. 44 00:01:58,952 --> 00:02:00,160 Bu sinif uğursuz gedirəm. 45 00:02:00,160 --> 00:02:02,243 Mən sizə söz verirəm, siz deyilik sinif uğursuz olacaq. 46 00:02:02,243 --> 00:02:03,680 Siz tamamilə gözəl istəyirik. 47 00:02:03,680 --> 00:02:06,850 >> Artıq var olan sizin üçün orta, təsirli, təsirli, 48 00:02:06,850 --> 00:02:08,780 kimi ciddi yaxşı. 49 00:02:08,780 --> 00:02:09,689 Mən onlara var. 50 00:02:09,689 --> 00:02:11,730 Onları almaq gəlmək üçün çekinmeyin bölümün sonunda. 51 00:02:11,730 --> 00:02:14,520 Əgər varsa Mənə bildirin məsələlər, onlara suallar. 52 00:02:14,520 --> 00:02:17,204 Biz hesab əlavə edin yanlış, bizə bildirin. 53 00:02:17,204 --> 00:02:21,240 >> OK, pset5 ki, bu, həqiqətən deyil mənada Yale üçün qəribə həftə 54 00:02:21,240 --> 00:02:24,240 Bizim pset görə ki, O cümlədən günorta saatlarında Çərşənbə 55 00:02:24,240 --> 00:02:27,317 gec gün, belə ki, həqiqətən var günorta saatlarında çərşənbə axşamı nəzəri görə. 56 00:02:27,317 --> 00:02:29,150 Yəqin ki, heç bir başa günorta saatlarında Çərşənbə axşamı. 57 00:02:29,150 --> 00:02:30,830 Ki, tamamilə gözəl var. 58 00:02:30,830 --> 00:02:33,700 Biz ofis saat olacaq gecə eləcə də bazar ertəsi gecə. 59 00:02:33,700 --> 00:02:36,810 Və bölmələr bütün bu həftə olacaq həqiqətən seminarlar çevrilmişdir, 60 00:02:36,810 --> 00:02:38,800 belə pop çekinmeyin Siz istədiyiniz hər hansı bir ikibölməli, 61 00:02:38,800 --> 00:02:42,810 və onlar növ mini-pset olacaq ki, yardım üçün seminarlar. 62 00:02:42,810 --> 00:02:45,620 Belə ki, kimi, bu, yalnız bölmə biz material tədris edirik. 63 00:02:45,620 --> 00:02:49,220 Bütün digər bölmələr diqqət ediləcək yalnız pset üçün kömək. 64 00:02:49,220 --> 00:02:50,146 Evet? 65 00:02:50,146 --> 00:02:52,000 >> Auditoriya: Harada ofis saat var? 66 00:02:52,000 --> 00:02:56,120 >> ANDI PENG: Office saat , oh yaxşı sual tonight--. 67 00:02:56,120 --> 00:03:00,580 Mən hesab edirəm ki ofis saat gecə Teal ya Commons var. 68 00:03:00,580 --> 00:03:02,984 Siz online CS50 yoxlamaq əgər və siz ofis saat getmək 69 00:03:02,984 --> 00:03:05,650 cədvəli olmalıdır ki, Onların hamısı deyir. 70 00:03:05,650 --> 00:03:07,954 >> Mən bu axşam ya bilirəm və ya sabah Qəhvəyi edir 71 00:03:07,954 --> 00:03:10,120 və biz ola bilər edirəm digər gecə commons. 72 00:03:10,120 --> 00:03:11,020 Əmin deyiləm. 73 00:03:11,020 --> 00:03:11,700 Yaxşı sualdır. 74 00:03:11,700 --> 00:03:14,430 CS50 haqqında yoxlayın. 75 00:03:14,430 --> 00:03:18,780 >> Bağlı Cool, hər hansı bir sualınız üç gün kimi növbəti cədvəli? 76 00:03:18,780 --> 00:03:21,690 Davud kimi uşaqlar söz bu təpənin üst etdi. 77 00:03:21,690 --> 00:03:23,050 Siz uşaqlar demək olar ki, var. 78 00:03:23,050 --> 00:03:24,644 Yalnız üç gün daha. 79 00:03:24,644 --> 00:03:26,310 Orada almaq, sonra biz bütün aşağı gəlmək lazımdır. 80 00:03:26,310 --> 00:03:28,114 Biz gözəl CS-free fasilə lazımdır. 81 00:03:28,114 --> 00:03:28,780 Biz geri gəlmək lazımdır. 82 00:03:28,780 --> 00:03:30,779 Biz web daxil dalış lazımdır proqramlaşdırma və inkişaf, 83 00:03:30,779 --> 00:03:35,150 çox əyləncə var şeyi müqayisə digər psets bəzi. 84 00:03:35,150 --> 00:03:37,974 Və soyuq olacaq və biz əyləncə çox olacaq. 85 00:03:37,974 --> 00:03:38,890 Biz daha çox konfet lazımdır. 86 00:03:38,890 --> 00:03:39,730 Konfet üçün üzr istəyirik. 87 00:03:39,730 --> 00:03:40,945 Mən konfet unuttum. 88 00:03:40,945 --> 00:03:43,310 Bu kobud səhər idi. 89 00:03:43,310 --> 00:03:46,340 Belə ki, uşaqlar, demək olar ki, var və Mən sizə uşaqlar fəxr edirəm. 90 00:03:46,340 --> 00:03:49,570 >> OK, belə ki, çıxarıcı borular. 91 00:03:49,570 --> 00:03:53,331 Kim Jack barədə suala sevilən və viktorina onun geyim? 92 00:03:53,331 --> 00:03:53,830 Heç kim? 93 00:03:53,830 --> 00:03:56,500 OK, ki, gözəl. 94 00:03:56,500 --> 00:04:00,200 >> Belə ki, mahiyyətcə bilərsiniz kimi şəkil Jack, burada bu oğlan, 95 00:04:00,200 --> 00:04:03,350 geyim almaq üçün sevir yığını üst həyata, 96 00:04:03,350 --> 00:04:05,750 və o, üzərinə geri qoyur o sonra yığını həyata. 97 00:04:05,750 --> 00:04:07,600 Bu şəkildə Belə ki, o, heç vaxt əldə olunması görünür 98 00:04:07,600 --> 00:04:10,090 alt Onun geyim yığın. 99 00:04:10,090 --> 00:04:12,600 Belə ki, bu cür təsvir edir Əsas data structure 100 00:04:12,600 --> 00:04:16,610 bir yığın həyata necə. 101 00:04:16,610 --> 00:04:20,060 >> Əsasən, bir hesab obyektlərin hər hansı bir yığını kimi yığın 102 00:04:20,060 --> 00:04:24,900 Siz üst üzərində şeyi qoymaq və harada sonra üst onları pop. 103 00:04:24,900 --> 00:04:28,600 Belə ki LIFO biz kimi kisaltmasidir son, ilk use-- üçün. 104 00:04:28,600 --> 00:04:32,480 Və belə üst davam yığını çıxır ilk biridir. 105 00:04:32,480 --> 00:04:34,260 Və belə ki, iki şərtləri biz birləşmək istəyirəm 106 00:04:34,260 --> 00:04:36,190 ki, push və pop adlanır. 107 00:04:36,190 --> 00:04:39,790 Zaman üzərinə bir şey təkan dəstə, və geri onu açılır. 108 00:04:39,790 --> 00:04:43,422 >> Və mən bu cür tapmaq sizin üçün abstrakt anlayış 109 00:04:43,422 --> 00:04:45,630 Kim kimi görmək istəyirəm Bu faktiki həyata keçirilməsi 110 00:04:45,630 --> 00:04:46,740 real dünyada. 111 00:04:46,740 --> 00:04:50,170 Necə bir çox inşa yazıblar bəlkə bir saat kimi, səbəbiylə əvvəl 112 00:04:50,170 --> 00:04:54,510 və təsadüfən bir böyük silinmiş təsadüfən kimi onun yığın? 113 00:04:54,510 --> 00:04:58,560 Və sonra nə nəzarət yoxdur biz onu geri qoymaq üçün istifadə? 114 00:04:58,560 --> 00:05:00,030 Control-Z, yeah? 115 00:05:00,030 --> 00:05:03,640 Control-Z, belə ki, dəfə məbləği Control-Z mənim həyat xilas ki, 116 00:05:03,640 --> 00:05:08,820 , hər zaman mənim ass xilas ki, bir yığını vasitəsilə həyata edir. 117 00:05:08,820 --> 00:05:13,020 >> Əsasən bütün məlumat ki, sizin Word sənəd var 118 00:05:13,020 --> 00:05:15,080 Bu basdı və iradəsi ilə atdı olur. 119 00:05:15,080 --> 00:05:19,460 Və belə mahiyyətcə zaman sizə bir şey silmək, siz geri açılır. 120 00:05:19,460 --> 00:05:22,820 Və sonra geri ehtiyac varsa, Control-C nə olan basın. 121 00:05:22,820 --> 00:05:26,770 Və belə real dünya funksiyası qədər sadə data strukturu 122 00:05:26,770 --> 00:05:28,690 Sizin gündəlik həyat kömək edə bilər. 123 00:05:28,690 --> 00:05:31,710 124 00:05:31,710 --> 00:05:40,150 >> Belə ki, bir struct yoldur ki, biz, həqiqətən, bir yığın yaratmaq. 125 00:05:40,150 --> 00:05:44,720 Biz sonra struct müəyyən yazın, biz altındakı yığın zəng. 126 00:05:44,720 --> 00:05:47,440 Və yığını çərçivəsində, biz iki parametrləri var 127 00:05:47,440 --> 00:05:51,580 biz mahiyyətcə manipulyasiya edə bilər ki, belə ki, biz char star strings gücü var. 128 00:05:51,580 --> 00:05:55,150 >> Bu edir Bütün bir sıra yaradır 129 00:05:55,150 --> 00:05:58,835 biz istədiyiniz nə bilərsiniz ki, olan biz onun potensialının müəyyən edə bilər. 130 00:05:58,835 --> 00:06:01,990 Capacity yalnız max məbləği mı maddələr, biz bu array daxil qoya bilər. 131 00:06:01,990 --> 00:06:05,660 int ölçüsü saxlayır counter neçə maddələr track hazırda 132 00:06:05,660 --> 00:06:07,850 yığını. 133 00:06:07,850 --> 00:06:11,860 Belə ki, sonra biz, A, takip edə bilərsiniz faktiki yığını necə böyük, 134 00:06:11,860 --> 00:06:14,850 və, B, necə yığını çox biz istəmirik, çünki biz dolu 135 00:06:14,850 --> 00:06:18,800 Bizim gücü nə üzərində daşqın. 136 00:06:18,800 --> 00:06:24,340 >> Məsələn, bu sevimli So sual viktorina idi. 137 00:06:24,340 --> 00:06:28,160 Əsasən necə təkan yoxdur bir yığın üst üzərində. 138 00:06:28,160 --> 00:06:28,830 Pretty sadə. 139 00:06:28,830 --> 00:06:30,621 Siz baxmaq əgər, bu vasitəsilə gəzmək lazımdır. 140 00:06:30,621 --> 00:06:32,640 [Işitilemez] size-- əgər zaman unutmayın, 141 00:06:32,640 --> 00:06:35,300 hər hansı daxil olmaq istəyirəm bir struct ərzində parametri, 142 00:06:35,300 --> 00:06:40,320 Siz struct.parameter adı yoxdur. 143 00:06:40,320 --> 00:06:42,720 >> Bu halda, s yığını adı. 144 00:06:42,720 --> 00:06:46,230 Biz ölçüsü daxil olmaq üçün istədiyiniz bu, belə ki, biz s.size yoxdur. 145 00:06:46,230 --> 00:06:50,280 Ölçüsü deyil kimi uzun gücü və ya uzun bərabər 146 00:06:50,280 --> 00:06:52,940 Bu gücü daha az kimi, ya burada işləmək olardı. 147 00:06:52,940 --> 00:06:57,180 >> Əgər daxili daxil istəyirəm Sizin yığını, s.strings ki, 148 00:06:57,180 --> 00:07:00,790 və bu yeni sayı qoymaq olacaq Orada daxil etmək istəyirəm ki,. 149 00:07:00,790 --> 00:07:05,030 Yalnız istəyirik ki, deyirlər yığını üzərinə int n daxil, 150 00:07:05,030 --> 00:07:08,905 biz s.strings edə bilər Mötərizədə, s.size n bərabərdir. 151 00:07:08,905 --> 00:07:11,030 Ölçüsü harada Çünki biz Hal-hazırda yığını var 152 00:07:11,030 --> 00:07:14,590 biz təkan olacaq əgər Bu, biz yalnız daxil olmaq 153 00:07:14,590 --> 00:07:17,370 ölçüsü yerdə, yığını cari dolğunluq, 154 00:07:17,370 --> 00:07:21,729 və biz bunu üzərinə int n basın. 155 00:07:21,729 --> 00:07:24,770 Və sonra biz əmin etmək istəyirəm biz də n ölçüsü incrementing edirik 156 00:07:24,770 --> 00:07:27,436 biz belə biz takip edə bilərsiniz yığını əlavə bir şey əlavə edib. 157 00:07:27,436 --> 00:07:29,660 İndi biz daha ölçüsü var. 158 00:07:29,660 --> 00:07:33,196 Burada mənada edir hamı necə məntiqi işləyir? 159 00:07:33,196 --> 00:07:34,160 Bu cür gecikmədi. 160 00:07:34,160 --> 00:07:39,535 161 00:07:39,535 --> 00:07:42,160 Auditoriya: Siz artıq getmək bilər s.stringss.strings [s.size] yenidən? 162 00:07:42,160 --> 00:07:45,808 ANDI PENG: Əlbəttə, belə nə bizə Hal-hazırda s.size? 163 00:07:45,808 --> 00:07:47,440 Auditoriya: Bu cari ölçüsü var. 164 00:07:47,440 --> 00:07:50,890 ANDI PENG: Məhz, belə ki, Bizim ölçüsü cari index, 165 00:07:50,890 --> 00:07:57,780 və biz yeni tam qoymaq istəyirəm biz s.size daxil etmək istəyirəm ki,. 166 00:07:57,780 --> 00:07:58,760 Ki, hissi edirmi? 167 00:07:58,760 --> 00:08:01,110 S.strings, çünki bütün ki, edir serialın adı. 168 00:08:01,110 --> 00:08:03,510 Bu bütün daxil deyil Bizim struct ərzində array, 169 00:08:03,510 --> 00:08:06,030 və biz istəyirsinizsə ki, index daxil n yerləşdirmək, 170 00:08:06,030 --> 00:08:09,651 biz yalnız gedə bilərsiniz istifadə Mötərizədə s.size. 171 00:08:09,651 --> 00:08:10,150 Cool. 172 00:08:10,150 --> 00:08:13,580 173 00:08:13,580 --> 00:08:18,916 >> Bütün hüquqlar, pop, mən onu pseudocode Siz uşaqlar, lakin oxşar anlayış üçün. 174 00:08:18,916 --> 00:08:19,790 Ki, hissi edirmi? 175 00:08:19,790 --> 00:08:22,310 Ölçüsü böyük olduqda sonra sıfır, daha 176 00:08:22,310 --> 00:08:25,350 Əgər bir şey etmək istəyirəm ki, bilirik həyata ölçüsü deyil, çünki 177 00:08:25,350 --> 00:08:27,620 daha çox sıfır, sonra yığını heç bir şey yoxdur. 178 00:08:27,620 --> 00:08:29,840 >> Belə ki, yalnız icra etmək istəyirəm bu kodu, yalnız edə bilərsiniz 179 00:08:29,840 --> 00:08:32,320 pop bir şey varsa açılır. 180 00:08:32,320 --> 00:08:35,830 Ölçüsü böyükdür Belə ki 0 daha çox, biz minus ölçüsü. 181 00:08:35,830 --> 00:08:40,020 Biz ölçüsü azalma və sonra qayıtmaq çünki daxilində nə var 182 00:08:40,020 --> 00:08:42,710 yaratma, istəyirik saxlanılır nə giriş 183 00:08:42,710 --> 00:08:45,694 yığını üst index. 184 00:08:45,694 --> 00:08:46,610 Hər şey mənada? 185 00:08:46,610 --> 00:08:49,693 Mən əgər uşaqlar, bu yazmaq Siz uşaqlar yazmaq üçün edə bilər? 186 00:08:49,693 --> 00:08:52,029 187 00:08:52,029 --> 00:08:53,570 OK, uşaqlar ilə ətrafında oynaya bilər. 188 00:08:53,570 --> 00:08:55,252 Heç bir narahatlıq onu almaq yoxsa. 189 00:08:55,252 --> 00:08:57,460 Biz kod vaxt yoxdur Bu bu gün biz, çünki 190 00:08:57,460 --> 00:08:59,959 bu strukturların bir çox var keçmək, lakin mahiyyətcə üçün 191 00:08:59,959 --> 00:09:02,214 pseudocode, çox, çox oxşar təkan. 192 00:09:02,214 --> 00:09:03,380 Yalnız məntiq boyunca edin. 193 00:09:03,380 --> 00:09:06,092 Bütün daxil əmin olun doğru struct xüsusiyyətləri. 194 00:09:06,092 --> 00:09:06,574 Evet? 195 00:09:06,574 --> 00:09:09,282 >> Auditoriya: bu slaydlar və bu bütün şey bu gün-ish ola bilərmi? 196 00:09:09,282 --> 00:09:11,586 ANDI PENG: Həmişə, yep. 197 00:09:11,586 --> 00:09:13,710 Mən qoymaq üçün cəhd gedirəm Bu qədər sonra bir saat kimi. 198 00:09:13,710 --> 00:09:16,626 Mən David e-poçt lazımdır, David üçün çalışacağıq Bundan sonra bir saat kimi onu qoymaq. 199 00:09:16,626 --> 00:09:20,040 200 00:09:20,040 --> 00:09:25,470 >> OK, belə ki, sonra biz bu digər hərəkət sevimli data structure bir sıra çağırıb. 201 00:09:25,470 --> 00:09:30,140 Uşaqlar burada Gördüyünüz kimi, bir queue, aramızda Britaniya üçün, 202 00:09:30,140 --> 00:09:32,010 bu bir xəttidir. 203 00:09:32,010 --> 00:09:34,680 Belə ki, əksinə nə Bir yığın hesab edirəm 204 00:09:34,680 --> 00:09:37,750 bir sıra dəqiq nə məntiqi olduğunu düşünürəm. 205 00:09:37,750 --> 00:09:41,914 Bu FIFO qaydaları ilə təşkil edir Hansı İlk olaraq, First Out edir. 206 00:09:41,914 --> 00:09:43,705 Siz ilk edirsinizsə line bir sen 207 00:09:43,705 --> 00:09:46,230 birinci ki, xətti çıxır. 208 00:09:46,230 --> 00:09:49,680 >> Beləliklə, biz bu zəng etmək istəyirəm nə dequeueing və enqueueing olunur. 209 00:09:49,680 --> 00:09:52,380 Biz bir şey əlavə etmək istəyirsinizsə Bizim növbə, biz enqueue. 210 00:09:52,380 --> 00:09:55,690 Biz istəyirsinizsə dequeue, və ya etmək bir şey üz, biz dequeue. 211 00:09:55,690 --> 00:10:03,350 >> Biz növ istəyirik Belə ki, eyni mənada sabit ölçüsü elementlərinin yaradılması ki, biz 212 00:10:03,350 --> 00:10:06,500 müəyyən bilərsiniz şeyi, lakin biz də edə bilərsiniz 213 00:10:06,500 --> 00:10:10,100 biz yerləşdirilməsi olduğunuz dəyişiklik onların içərisində parametrləri 214 00:10:10,100 --> 00:10:13,140 hansı növü əsasında funksionallıq istəyirik. 215 00:10:13,140 --> 00:10:16,700 Çıxarıcı borular Belə ki, biz son istədi bir N birinci olmaq. 216 00:10:16,700 --> 00:10:19,800 Queue biz ilk şey istəyirik həyata ilk şey olmalıdır. 217 00:10:19,800 --> 00:10:22,510 218 00:10:22,510 --> 00:10:26,710 >> Struct tipi So Gördüyünüz kimi, müəyyən, 219 00:10:26,710 --> 00:10:29,470 bir az fərqli yığını idi nə 220 00:10:29,470 --> 00:10:33,120 yalnız biz saxlamaq üçün var, çünki ölçüsü hazırda harada track, 221 00:10:33,120 --> 00:10:37,420 biz də baş takip etmək istəyirəm eləcə də olduğu kimi, biz hazırda. 222 00:10:37,420 --> 00:10:39,580 Beləliklə, mən daha asan hesab edirəm Mən bu qədər çəkmək əgər. 223 00:10:39,580 --> 00:10:53,270 Belə ki, biz bir sıra var təsəvvür edək, belə başı sağ burada deyək. 224 00:10:53,270 --> 00:10:55,811 225 00:10:55,811 --> 00:10:58,310 line rəhbəri edək yalnız orada hazırda demək 226 00:10:58,310 --> 00:11:01,809 və biz daxil etmək istəyirəm növbə daxil bir şey. 227 00:11:01,809 --> 00:11:04,350 Mən mahiyyətcə ölçüsü zəng etmək üçün gedirəm quyruq eyni şey, 228 00:11:04,350 --> 00:11:06,314 Sizin queue yerdə sonu. 229 00:11:06,314 --> 00:11:07,730 Yalnız ölçüsü sağ burada deyirlər. 230 00:11:07,730 --> 00:11:14,380 231 00:11:14,380 --> 00:11:18,400 >> Belə ki, necə bir feasibly yoxdur bir sıra bir şey daxil? 232 00:11:18,400 --> 00:11:21,000 233 00:11:21,000 --> 00:11:24,130 Nə index biz yerləşdirmək istəyirəm biz daxil etmək istəyirəm. 234 00:11:24,130 --> 00:11:29,320 Bu başlanğıcı Əgər sizin növbə və bu onun sonu 235 00:11:29,320 --> 00:11:31,860 və ya onun ölçüsü, biz nə növbəti obyekt əlavə etmək istəyirsiniz? 236 00:11:31,860 --> 00:11:32,920 >> Auditoriya: [işitilemez] 237 00:11:32,920 --> 00:11:35,920 ANDI PENG: Məhz, əlavə etmək istədiyiniz asılı olaraq onu yazıblar. 238 00:11:35,920 --> 00:11:37,840 Ya bu boş və ya boş. 239 00:11:37,840 --> 00:11:42,630 Beləliklə, siz yəqin ki, əlavə etmək istəyirəm Çünki burada size is-- əgər 240 00:11:42,630 --> 00:11:50,540 Bunların hamısı tam əgər, istədiyiniz sağ, burada əlavə etmək üçün? 241 00:11:50,540 --> 00:11:57,150 >> Və belə ki, var, çox isə sadə deyil, kifayət qədər həmişə doğru 242 00:11:57,150 --> 00:12:00,690 əsas fərq, çünki bir sıra və bir yığın arasında 243 00:12:00,690 --> 00:12:04,350 ki, növbə edə bilərsiniz deyil həqiqətən manipulyasiya etmək 244 00:12:04,350 --> 00:12:06,980 ki, baş dəyişikliklər Siz istədiyiniz asılı olaraq 245 00:12:06,980 --> 00:12:08,650 Sizin replika başlanğıcı başlamaq üçün. 246 00:12:08,650 --> 00:12:11,900 Və nəticə olaraq, sizin quyruq də dəyişiklik gedir. 247 00:12:11,900 --> 00:12:14,770 Və belə bir nəzər İndi bu kodu. 248 00:12:14,770 --> 00:12:18,620 Sizlərin də istəndi kimi enqueue, viktorina yazmaq. 249 00:12:18,620 --> 00:12:22,580 Bəlkə biz niyə vasitəsilə danışmaq lazımdır cavab idi nə idi. 250 00:12:22,580 --> 00:12:26,790 >> Mən, bir bu xətt uyğun bilmədi kod lakin mahiyyətcə bu parça 251 00:12:26,790 --> 00:12:29,030 bir xətt olmalıdır. 252 00:12:29,030 --> 00:12:30,140 30 saniyə kimi sərf edirlər. 253 00:12:30,140 --> 00:12:33,000 Bir göz atın və nə görmək bu deyil bir yoldur. 254 00:12:33,000 --> 00:12:50,030 255 00:12:50,030 --> 00:12:55,420 >> Çox, çox oxşar struct, çox, çox əvvəlki kimi oxşar strukturu 256 00:12:55,420 --> 00:12:58,090 bəlkə başqa stack kodu bir xətt. 257 00:12:58,090 --> 00:13:01,190 Və kodu bir line ki, funksionallığı müəyyən edir. 258 00:13:01,190 --> 00:13:03,900 Və həqiqətən fərqləndirir bir yığın bir sıra. 259 00:13:03,900 --> 00:13:18,510 260 00:13:18,510 --> 00:13:22,010 >> Hər kəs bir zərbə almaq istəyirəm Siz var niyə izah 261 00:13:22,010 --> 00:13:24,980 burada bu mürəkkəb şey var? 262 00:13:24,980 --> 00:13:27,845 Biz geri görmək bizim gözəl dost modulus. 263 00:13:27,845 --> 00:13:31,020 Sizlərin tezliklə gələcək kimi proqramlaşdırma tanımaq, 264 00:13:31,020 --> 00:13:34,910 demək olar ki, istədiyiniz zaman bir şey lazımdır bir şey ətrafında kesmek, 265 00:13:34,910 --> 00:13:36,850 modulus bunu yol olacaq. 266 00:13:36,850 --> 00:13:40,510 Belə ki, bilmədən, hər kəs istəyir kodu ki, xətt izah cəhd? 267 00:13:40,510 --> 00:13:44,060 268 00:13:44,060 --> 00:13:47,507 Bəli, bütün cavablar var qəbul və xoş. 269 00:13:47,507 --> 00:13:48,840 Auditoriya: Siz mənə söhbət edirsiniz? 270 00:13:48,840 --> 00:13:49,506 ANDI PENG: Bəli. 271 00:13:49,506 --> 00:13:56,200 Auditoriya: Oh, heç bir sorry. 272 00:13:56,200 --> 00:14:00,250 ANDI PENG: OK, belə ki, edək bu kod vasitəsilə gəzmək. 273 00:14:00,250 --> 00:14:03,642 Belə ki, zaman çalışdığınız bir sıra üzərində bir şey əlavə, 274 00:14:03,642 --> 00:14:08,510 baş olur ki, sevimli halda burada olmaq, bizim üçün çox asandır 275 00:14:08,510 --> 00:14:10,960 yalnız sonuna qədər getmək doğru bir şey, daxil? 276 00:14:10,960 --> 00:14:14,690 Amma bir sıra bütün nöqtəsidir edə həqiqətən dinamik rəhbəri 277 00:14:14,690 --> 00:14:17,280 harada asılı olaraq dəyişə biz Bizim q başlanğıc olmaq istəyirəm, 278 00:14:17,280 --> 00:14:19,880 və, quyruq kimi də dəyişiklik gedir. 279 00:14:19,880 --> 00:14:31,100 >> Və bu idi ki, təsəvvür növbə deyil, bu quyruğu meydana gəldi. 280 00:14:31,100 --> 00:14:37,900 281 00:14:37,900 --> 00:14:39,330 Başı sağ burada deyirlər. 282 00:14:39,330 --> 00:14:54,900 283 00:14:54,900 --> 00:14:56,980 Bizim queue bu kimi baxdı deyirlər. 284 00:14:56,980 --> 00:15:00,190 Biz burada keçmək istəyirdi xəttinin başlanğıcı edir 285 00:15:00,190 --> 00:15:03,400 Biz baş keçdikdə deyək Bu şəkildə və ölçüləri. 286 00:15:03,400 --> 00:15:07,100 >> İndi biz bir şey əlavə etmək istəyirəm Bu queue, ancaq uşaqlar Gördüyünüz kimi, 287 00:15:07,100 --> 00:15:11,150 yalnız kimi sadə deyil ölçüsü sonra nə əlavə 288 00:15:11,150 --> 00:15:13,630 sonra biz tökülmək, çünki bizim faktiki serialın həddi. 289 00:15:13,630 --> 00:15:16,190 Biz, həqiqətən, əlavə etmək istədiyiniz burada. 290 00:15:16,190 --> 00:15:18,610 Ki, bir sıra gözəllik var ki, vizual, bizim üçün 291 00:15:18,610 --> 00:15:22,380 line bu kimi gedir kimi, görünür, lakin bir data strukturu saxlanılır zaman, 292 00:15:22,380 --> 00:15:29,370 onlar dövrü kimi verir. 293 00:15:29,370 --> 00:15:32,360 Bu cür ətrafında wraps ön eyni şəkildə etmək 294 00:15:32,360 --> 00:15:34,780 xətti də kesmek olar ki, ətrafında harada asılı olaraq 295 00:15:34,780 --> 00:15:36,279 olmaq Xəttin əvvəlində istəyirik. 296 00:15:36,279 --> 00:15:38,630 Və belə ki, biz bir götürsək burada aşağı baxmaq, edək 297 00:15:38,630 --> 00:15:40,880 bir yaratmaq istəyirdi demək funksiyası enqueue çağırıb. 298 00:15:40,880 --> 00:15:43,980 Biz bu q daxil int n əlavə etmək istədi. 299 00:15:43,980 --> 00:15:49,250 Q.size biz data ki, zəng edəcəyik Q əgər Bizim queue.size deyil, əgər strukturu 300 00:15:49,250 --> 00:15:52,520 gücü və ya bərabər Bu, gücü az deyil 301 00:15:52,520 --> 00:15:55,120 q.strings bizim q ərzində array edir. 302 00:15:55,120 --> 00:15:58,380 Biz müəyyən olacaq ki q.heads bərabər, 303 00:15:58,380 --> 00:16:02,730 olan burada, üstəgəl q.size gücü ilə modulus olan 304 00:16:02,730 --> 00:16:04,290 Buralarda bizə geri kesmek. 305 00:16:04,290 --> 00:16:08,040 >> Bu misal, index belə başının sağ, 1? 306 00:16:08,040 --> 00:16:11,480 ölçüsü index 0, 1, 2, 3, 4. 307 00:16:11,480 --> 00:16:19,500 Belə ki, biz 1 plus 4 modulus edə bilərsiniz 5 bizim gücü. 308 00:16:19,500 --> 00:16:20,920 Nə bizə verir? 309 00:16:20,920 --> 00:16:23,270 Index nədir bu çıxır? 310 00:16:23,270 --> 00:16:24,080 >> Auditoriya: 0. 311 00:16:24,080 --> 00:16:27,870 >> ANDI PENG: 0, hansı burada olmaq olur, 312 00:16:27,870 --> 00:16:30,640 və biz etmək istəyirəm burada daxil daxil etmək üçün. 313 00:16:30,640 --> 00:16:34,730 Və bu tənlik burada cür yalnız hər hansı bir nömrələri ilə işləyir 314 00:16:34,730 --> 00:16:36,750 harada asılı olaraq baş və ölçüsü var. 315 00:16:36,750 --> 00:16:38,541 Siz nə o bilirsinizsə hər şeyi bilirsiniz, var 316 00:16:38,541 --> 00:16:43,170 dəqiq daxil etmək istədiyiniz nə növbə sonra. 317 00:16:43,170 --> 00:16:44,640 Ki, hamıya mənada edirmi? 318 00:16:44,640 --> 00:16:48,560 >> Mən beyin cür bilirik teaser, xüsusilə, çünki bu 319 00:16:48,560 --> 00:16:50,512 Sizin viktorina sonra gəldi. 320 00:16:50,512 --> 00:16:52,220 Lakin ümid hər kəs İndi başa düşmək olar 321 00:16:52,220 --> 00:16:57,800 niyə bu həll və ya bu funksiyası bu yoldur. 322 00:16:57,800 --> 00:16:59,840 Hər kəs bir az aydın? 323 00:16:59,840 --> 00:17:03,471 324 00:17:03,471 --> 00:17:03,970 OLDU. 325 00:17:03,970 --> 00:17:07,109 326 00:17:07,109 --> 00:17:09,970 >> Və indi, əgər bu dequeue istədi 327 00:17:09,970 --> 00:17:15,240 bizim baş dəyişkən olacaq harada biz dequeue olsaydı, çünki 328 00:17:15,240 --> 00:17:17,030 biz q sonunda off etmirlər. 329 00:17:17,030 --> 00:17:19,130 Biz sağ, baş çıxarmaq istəyirsiniz? 330 00:17:19,130 --> 00:17:24,260 Belə ki, nəticədə baş dəyişdirmək üçün gedir, Siz enqueue zaman niyə və ki, 331 00:17:24,260 --> 00:17:26,800 Siz takip var harada baş və ölçüsü 332 00:17:26,800 --> 00:17:29,450 daxil edə olmaq üçün düzgün mövqe. 333 00:17:29,450 --> 00:17:32,740 >> Və belə ki, dequeue zaman, Mən də onu pseudocode. 334 00:17:32,740 --> 00:17:35,480 Əgər siz çekinmeyin bu kodlaşdırma cəhd. 335 00:17:35,480 --> 00:17:36,980 Siz sağ, baş hərəkət etmək istəyirsiniz? 336 00:17:36,980 --> 00:17:39,320 Mən dequeue istəyirdi, mən baş üzərində hərəkət olardı. 337 00:17:39,320 --> 00:17:40,800 Bu baş olardı. 338 00:17:40,800 --> 00:17:45,617 >> Və cari ölçüsü olardı çıxmaq, çünki biz artıq 339 00:17:45,617 --> 00:17:46,950 array dörd elementləri var. 340 00:17:46,950 --> 00:17:51,370 Biz yalnız üç var və sonra biz istəyirik daxilində saxlanılır edilmişdir nə qayıtmaq 341 00:17:51,370 --> 00:17:56,260 baş, biz bu almaq istəyirəm, çünki yığını çox oxşar dəyəri həyata. 342 00:17:56,260 --> 00:17:58,010 Yalnız siz qəbul etdiyiniz fərqli bir yerdən, 343 00:17:58,010 --> 00:18:01,770 və sizin pointer redesign var nəticəsində fərqli bir yerə. 344 00:18:01,770 --> 00:18:03,890 Məntiqi, hər kəs edin? 345 00:18:03,890 --> 00:18:05,690 Great. 346 00:18:05,690 --> 00:18:10,156 >> OK, belə ki, biz bir az danışmaq olacaq bağlı siyahıları haqqında daha ətraflı 347 00:18:10,156 --> 00:18:13,280 onlar çox, çox qiymətli olacaq, çünki Bu həftə ərzində sizin üçün 348 00:18:13,280 --> 00:18:14,964 psets. 349 00:18:14,964 --> 00:18:17,130 Əlaqəli siyahıları, kimi uşaqlar onlar bütün var, yadda bilər 350 00:18:17,130 --> 00:18:22,570 müəyyən qovşaqlarının var qovşaqlarının var bir dəyəri və bir göstərici həm də dəyərləri 351 00:18:22,570 --> 00:18:26,290 birlikdə bağlıdır bu göstəricilər tərəfindən. 352 00:18:26,290 --> 00:18:29,880 Necə və belə struct Biz burada bir node biz yaratmaq 353 00:18:29,880 --> 00:18:33,569 olan int n var nə bir mağaza və ya simli n dəyəri 354 00:18:33,569 --> 00:18:35,610 və ya istədiyiniz hər hansı char star n, zəng. 355 00:18:35,610 --> 00:18:41,482 Göstərici struct node ulduz, Hər bir node var etmək istəyirəm ki, 356 00:18:41,482 --> 00:18:43,690 ki, olacaq növbəti qarşı pointer point. 357 00:18:43,690 --> 00:18:48,207 358 00:18:48,207 --> 00:18:50,040 Siz baş lazımdır bir bağlı siyahı 359 00:18:50,040 --> 00:18:53,140 qalan qeyd etmək niyyətindədir s və s dəyərlər 360 00:18:53,140 --> 00:18:55,290 Siz nəhayət sonuna çatmaq qədər. 361 00:18:55,290 --> 00:18:58,040 Və bu son node yalnız bir göstərici yoxdur gedir. 362 00:18:58,040 --> 00:18:59,952 Bu qeyd etmək olacaq null, və zaman var 363 00:18:59,952 --> 00:19:01,910 siz hit etdik bilirik Sizin bağlı siyahı sonunda 364 00:19:01,910 --> 00:19:04,076 zaman son göstərici bir şey işarə deyil. 365 00:19:04,076 --> 00:19:06,670 366 00:19:06,670 --> 00:19:10,990 >> Beləliklə, biz daha çox bir az getmək olacaq bağlı dərinliyi necə bir mümkün olardı 367 00:19:10,990 --> 00:19:12,400 bir bağlı siyahısı axtarış. 368 00:19:12,400 --> 00:19:15,460 Bəzi nə saxla bağlı siyahıları çatışmazlıqlar 369 00:19:15,460 --> 00:19:19,340 Axtarışa bağlı bir sıra ayələri. 370 00:19:19,340 --> 00:19:22,565 Bir sıra siz ikili axtarış, lakin niyə bir bağlı siyahı ki, edə bilməz? 371 00:19:22,565 --> 00:19:26,834 372 00:19:26,834 --> 00:19:30,320 >> Auditoriya: onlar bütün bağlı olduğunuz Çünki, lakin siz kifayət qədər harada bilmirəm 373 00:19:30,320 --> 00:19:31,330 [Işitilemez]. 374 00:19:31,330 --> 00:19:34,600 >> ANDI PENG: Bəli, məhz belə xatırlayıram ki, bir sıra parıltı 375 00:19:34,600 --> 00:19:37,190 biz idi ki idi əməli yaddaş harada 376 00:19:37,190 --> 00:19:41,580 Mən index dəyər istəyirdi altı, mən yalnız index altı deyə bilər 377 00:19:41,580 --> 00:19:42,407 mənə dəyər verir. 378 00:19:42,407 --> 00:19:45,240 Diziler ayrılır, çünki ki, yaddaş bitişik məkanında 379 00:19:45,240 --> 00:19:48,020 Bir yerdə, halbuki bağlı siyahıları cür 380 00:19:48,020 --> 00:19:52,820 olan təsadüfi ətrafında bütün interspersed və yalnız yol tapa bilərsiniz 381 00:19:52,820 --> 00:19:56,890 sizə deyir bir göstərici vasitəsilə ki, növbəti node olduğu ünvanı. 382 00:19:56,890 --> 00:20:00,290 >> Və belə bir nəticə kimi, yeganə yolu bir bağlı siyahısını axtarış 383 00:20:00,290 --> 00:20:01,560 xətti axtarış edir. 384 00:20:01,560 --> 00:20:05,890 Mən dəqiq bilmirəm, çünki Bağlı siyahısında 12-ci dəyəri, 385 00:20:05,890 --> 00:20:08,780 Mən tam axır var ki bağlı siyahı bir 386 00:20:08,780 --> 00:20:12,450 ilk node rəhbəri bir-, ikinci node, üçüncü node, 387 00:20:12,450 --> 00:20:17,690 Mən nəhayət almaq qədər bütün yol aşağı I arıyorum ki node olduğu üçün. 388 00:20:17,690 --> 00:20:22,110 Və bu mənada, axtarış bir bağlı siyahı həmişə n edir. 389 00:20:22,110 --> 00:20:23,040 O, həmişə n var. 390 00:20:23,040 --> 00:20:25,690 Bu xətti vaxt həmişə var. 391 00:20:25,690 --> 00:20:28,470 >> Və belə code hansı bu həyata, və bu 392 00:20:28,470 --> 00:20:32,620 Sizin ildən uşaqlar üçün bir az yeni uşaqlar həqiqətən haqqında ya heç söhbət yoxdur 393 00:20:32,620 --> 00:20:35,000 necə görüldü göstəricilərinə göstəricilər vasitəsilə axtarış, 394 00:20:35,000 --> 00:20:37,670 belə ki, biz vasitəsilə gəzmək lazımdır bu, çox yavaş-yavaş. 395 00:20:37,670 --> 00:20:40,200 Belə ki bool axtarış, sağ, Biz istəyirik təsəvvür edək 396 00:20:40,200 --> 00:20:42,820 adlı funksiyası yaratmaq doğru qaytarır Axtarış 397 00:20:42,820 --> 00:20:46,820 Siz bağlı daxili bir dəyər aşkar etdikdə siyahısı, və başqa yalan qaytarır. 398 00:20:46,820 --> 00:20:50,030 Node star siyahısı Hal-hazırda yalnız pointer 399 00:20:50,030 --> 00:20:52,960 Sizin bağlı siyahıda ilk maddə. 400 00:20:52,960 --> 00:20:56,700 int n sen dəyəri var ki, siyahıda üçün axtarış. 401 00:20:56,700 --> 00:20:58,770 >> Belə ki, node ulduz pointer siyahısı bərabərdir. 402 00:20:58,770 --> 00:21:00,970 Yəni biz qəbulu edirik deməkdir və bir pointer yaratmaq 403 00:21:00,970 --> 00:21:03,592 siyahı daxilində ilk node. 404 00:21:03,592 --> 00:21:04,300 Mənimlə hər kəs? 405 00:21:04,300 --> 00:21:06,530 Biz getmək idi əgər, belə ki, Geri burada, mən olardı 406 00:21:06,530 --> 00:21:13,850 göstərir ki, bir göstərici başlatılmış baş nə ki, siyahısı. 407 00:21:13,850 --> 00:21:18,600 >> Və sonra, burada bir dəfə pointer bərabər null deyil isə, 408 00:21:18,600 --> 00:21:22,160 belə ki, biz olan loop deyil traversing sonra olacaq 409 00:21:22,160 --> 00:21:25,940 nə çünki bizim siyahısı istirahət pointer null bərabərdir ne olur? 410 00:21:25,940 --> 00:21:27,550 Biz yaxşıdır bilirik ki, 411 00:21:27,550 --> 00:21:28,450 >> Auditoriya: [işitilemez] 412 00:21:28,450 --> 00:21:31,491 >> ANDI PENG: Məhz, belə ki, biz bilirik ki, Biz sağ siyahısı sonunda əldə etdiyiniz? 413 00:21:31,491 --> 00:21:34,470 Burada geri getmək əgər, hər bir node başqa node işarə etmək lazımdır 414 00:21:34,470 --> 00:21:36,550 və s və s Siz nəhayət hit qədər 415 00:21:36,550 --> 00:21:41,589 Sizin bağlı siyahı quyruq, olan bir göstərici var ki, yalnız 416 00:21:41,589 --> 00:21:43,130 heç bir daha hər hansı digər qeyd etmir. 417 00:21:43,130 --> 00:21:47,510 Və belə ki, əsasən bilirik ki, Sizin siyahısı hələ orada deyil 418 00:21:47,510 --> 00:21:50,900 pointer bərabər deyil qədər null null bərabərdir dəfə, çünki, 419 00:21:50,900 --> 00:21:53,310 Siz heç bir daha stuff var ki, bilirik. 420 00:21:53,310 --> 00:21:56,930 >> Belə ki, biz istəyirik ki, loop deyil faktiki axtarış gedir. 421 00:21:56,930 --> 00:22:01,690 Və göstərici görmək əgər orada arrow funksiyası belə? 422 00:22:01,690 --> 00:22:06,930 Belə ki, pointer bal əgər n, əgər n bərabərdir N pointer, 423 00:22:06,930 --> 00:22:09,180 o deməkdir ki, əgər ki, sen pointer 424 00:22:09,180 --> 00:22:13,420 Hər sonunda üçün axtarış node dəyəri həqiqətən bərabərdir 425 00:22:13,420 --> 00:22:15,990 sonra, aradığınız Əgər doğru qayıtmaq istəyirəm. 426 00:22:15,990 --> 00:22:19,280 Belə ki, əsasən, bir node da əgər ki, , aradığınız dəyəri var 427 00:22:19,280 --> 00:22:23,550 Siz olduğunuz bilirik ki, uğurla axtarış edə. 428 00:22:23,550 --> 00:22:27,150 >> Əks halda, qurmaq istəyirəm növbəti node üçün göstərici. 429 00:22:27,150 --> 00:22:28,850 Ki, burada xətt nə edir. 430 00:22:28,850 --> 00:22:31,750 Pointer növbəti göstərici bərabərdir. 431 00:22:31,750 --> 00:22:33,360 Ki, iş necə görmək hər kəs? 432 00:22:33,360 --> 00:22:36,580 >> Və mahiyyətcə siz olacaq yalnız siyahı tam axır 433 00:22:36,580 --> 00:22:41,920 Sizin göstərici hər zaman qədər sıfırlama nəticədə siyahısı sonunda edib. 434 00:22:41,920 --> 00:22:45,030 Və heç bir var bilirik ki, daha qovşaqlarının, vasitəsilə axtarış 435 00:22:45,030 --> 00:22:47,999 və sonra yalan ola bilər Bilirsiniz, çünki ki, yaxşı, oh, 436 00:22:47,999 --> 00:22:50,540 Mən axtarış edə olduğunuz əgər siyahısı tam vasitəsilə. 437 00:22:50,540 --> 00:22:54,530 Bu misalda, mən istəyirdi 10 dəyər axtarmaq üçün, 438 00:22:54,530 --> 00:22:57,250 Mən baş başlamaq və Mən bütün yol aşağı axtarış 439 00:22:57,250 --> 00:23:00,550 və mən nəhayət, bu var olan null göstərir ki, bir göstərici, 440 00:23:00,550 --> 00:23:04,415 Mən deyil, crap, 10 tahmin bilirik ki, Bu siyahı Mən bunu tapa bilmədi, çünki. 441 00:23:04,415 --> 00:23:06,520 Mən siyahısı sonunda edirəm. 442 00:23:06,520 --> 00:23:11,040 Və bu halda Bildiyiniz Mən yalan qayıtmaq üçün gedirəm. 443 00:23:11,040 --> 00:23:12,900 >> Ki, bir az islatmaq bildirin. 444 00:23:12,900 --> 00:23:17,350 Bu olduqca olacaq Sizin pset üçün əhəmiyyətli. 445 00:23:17,350 --> 00:23:21,140 Bunun məntiqi bəlkə də, çox sadədir syntactically yalnız həyata keçirir. 446 00:23:21,140 --> 00:23:23,365 Siz uşaqlar etmək istəyirəm Siz anlamaq əmin olun. 447 00:23:23,365 --> 00:23:25,870 448 00:23:25,870 --> 00:23:27,650 Cool. 449 00:23:27,650 --> 00:23:32,560 >> OK, belə ki, biz necə olacaq sağ, qovşaqlarının daxil, 450 00:23:32,560 --> 00:23:35,380 siyahısına daxil çünki xatırlayıram nə faydaları hansılardır 451 00:23:35,380 --> 00:23:39,230 bir bağlı siyahı qarşı olan saxlanması baxımından bir sıra? 452 00:23:39,230 --> 00:23:41,110 >> Auditoriya: Bu dinamik, belə ki, asan to-- 453 00:23:41,110 --> 00:23:43,180 >> ANDI PENG: Məhz, belə ki, dinamik hansı 454 00:23:43,180 --> 00:23:46,880 Bu genişləndirilməsi və shrink o deməkdir ki, istifadəçi ehtiyaclarından asılı olaraq. 455 00:23:46,880 --> 00:23:56,570 Belə ki, bu mənada, biz lazım deyil lazımsız yaddaş sərf çünki 456 00:23:56,570 --> 00:24:00,850 Mən istəyirəm necə çox dəyərləri bilmirsinizsə mağaza, bu, mənim üçün mənada etmir 457 00:24:00,850 --> 00:24:04,310 bir sıra çünki yaratmaq Mən 10 dəyərlər saxlamaq istəyirsinizsə, 458 00:24:04,310 --> 00:24:08,380 Mən 1000 bir sıra, o yaratmaq boşa yaddaş bir çox ayrılmış. 459 00:24:08,380 --> 00:24:11,180 Biz bir bağlı istifadə etmək istəyirəm Buna görə siyahısı dinamik etmək 460 00:24:11,180 --> 00:24:13,860 dəyişdirmək və ya ölçüsü shrink. 461 00:24:13,860 --> 00:24:17,040 >> Və belə ki, durub edir bir az daha mürəkkəbdir. 462 00:24:17,040 --> 00:24:20,810 Biz təsadüfi elementləri daxil ola bilər-ci ildən biz bir sıra olardı yol. 463 00:24:20,810 --> 00:24:24,270 Mən bir element əlavə etmək istəyirsinizsə, yeddinci indeksi daxil, 464 00:24:24,270 --> 00:24:26,930 Mən yalnız onu əlavə edə bilərsiniz yeddinci indeksi daxil. 465 00:24:26,930 --> 00:24:30,020 Bir bağlı siyahı, bu deyil olduqca kimi asanlıqla iş, 466 00:24:30,020 --> 00:24:34,947 və biz daxil etmək istəyirdi bağlı siyahısında burada bir, 467 00:24:34,947 --> 00:24:36,280 vizual görmək çox asandır. 468 00:24:36,280 --> 00:24:39,363 Biz yalnız orada əlavə etmək istəyirəm sağ siyahının başında, 469 00:24:39,363 --> 00:24:40,840 sağ baş sonra. 470 00:24:40,840 --> 00:24:44,579 >> Amma biz var olan yol redesign göstəricilərinə bir az convoluted olunur 471 00:24:44,579 --> 00:24:47,620 və ya, məntiqi, bu mənada edir, lakin Siz var ki, əmin etmək istəyirəm 472 00:24:47,620 --> 00:24:50,250 tamamilə çünki Siz istədiyiniz son şey 473 00:24:50,250 --> 00:24:52,990 bir göstərici redesign edir biz burada edirik yol. 474 00:24:52,990 --> 00:24:58,170 Siz dereference 1 baş göstərici, 475 00:24:58,170 --> 00:25:01,086 sonra qəflətən The bütün Sizin bağlı siyahı qalan 476 00:25:01,086 --> 00:25:04,680 Siz, həqiqətən, çünki itirilmiş müvəqqəti bir şey yaratmışdır. 477 00:25:04,680 --> 00:25:06,220 Ki, 2 işarə edir. 478 00:25:06,220 --> 00:25:10,080 Əgər göstərici, redesign əgər Sizin siyahısına qalan tamamilə məğlub edir. 479 00:25:10,080 --> 00:25:13,310 Belə ki, olmaq istəyirəm Burada çox, çox diqqətli 480 00:25:13,310 --> 00:25:17,010 ilk təyin etmək Siz nə olan göstərici 481 00:25:17,010 --> 00:25:20,150 yerdə daxil istəyirəm Istədiyiniz və sonra 482 00:25:20,150 --> 00:25:22,710 Sizin siyahısına qalan dereference bilərsiniz. 483 00:25:22,710 --> 00:25:25,250 >> Belə ki, bu yerdə üçün müraciət Siz daxil çalışırıq. 484 00:25:25,250 --> 00:25:27,520 Siz daxil etmək istəyirsinizsə rəhbəri, burada cavab istəyirsinizsə, 485 00:25:27,520 --> 00:25:29,455 Siz daxil etmək istəyirsinizsə, end, yaxşı, son mən 486 00:25:29,455 --> 00:25:30,910 tahmin yalnız ki heç bir göstərici var, lakin siz 487 00:25:30,910 --> 00:25:33,830 siz deyil ki, əmin etmək istəyirəm Sizin siyahısına qalan itirirlər. 488 00:25:33,830 --> 00:25:36,640 Siz həmişə əmin etmək istəyirəm Yeni node işarə edir 489 00:25:36,640 --> 00:25:39,330 nə qarşı siz daxil etmək istəyirəm, 490 00:25:39,330 --> 00:25:42,170 və sonra siz zəncirləmə əlavə edə bilərsiniz. 491 00:25:42,170 --> 00:25:43,330 Hər kəs aydın? 492 00:25:43,330 --> 00:25:45,427 >> Bu olacaq real məsələlərdən biri. 493 00:25:45,427 --> 00:25:48,010 Ən böyük məsələlərdən biri Siz pset olacaq 494 00:25:48,010 --> 00:25:51,340 yaratmaq üçün cəhd olacaq ki, bir bağlı siyahısı və insert şeyi 495 00:25:51,340 --> 00:25:53,340 lakin sonra yalnız itirmək Sizin bağlı siyahı istirahət. 496 00:25:53,340 --> 00:25:54,900 Və kimi olacaq, mən Bu baş niyə bilmirəm? 497 00:25:54,900 --> 00:25:58,040 Və onun vasitəsilə getmək üçün bir ağrı var və göstəricilər bütün axtarış. 498 00:25:58,040 --> 00:26:02,100 >> Və mən bu pset sizi təmin, bu qovşaqlarının yazılı və rəsm 499 00:26:02,100 --> 00:26:03,344 çox, çox faydalı olacaq. 500 00:26:03,344 --> 00:26:06,010 Belə ki, tamamilə takip edə bilərsiniz bütün göstəricilərinə harada, 501 00:26:06,010 --> 00:26:08,540 nə yanlış gedir bütün qovşaqlarının olduğu, 502 00:26:08,540 --> 00:26:12,660 Siz daxil olmaq üçün nə etmək lazımdır və ya daxil və ya silmək və ya onlara hər hansı bir. 503 00:26:12,660 --> 00:26:14,550 Ki, yaxşı hər kəs? 504 00:26:14,550 --> 00:26:15,050 Cool. 505 00:26:15,050 --> 00:26:19,300 506 00:26:19,300 --> 00:26:22,600 >> Biz kodu baxmaq istəyirdi Belə ki? 507 00:26:22,600 --> 00:26:24,470 Oh, mən bilmirəm, əgər biz belə ki, the-- OK görə bilərsiniz 508 00:26:24,470 --> 00:26:27,940 üst bu bir funksiyası var Biz istəyirik adına insert 509 00:26:27,940 --> 00:26:31,365 bağlı siyahısına daxil int n daxil etmək üçün. 510 00:26:31,365 --> 00:26:32,740 Biz bu vasitəsilə gəzmək olacaq. 511 00:26:32,740 --> 00:26:34,770 Bu kodu bir çox yeni sintaksis bir çox var. 512 00:26:34,770 --> 00:26:36,220 Biz OK olacaq. 513 00:26:36,220 --> 00:26:39,120 >> Üst zaman qədər belə biz bir şey yaratmaq istəyirik 514 00:26:39,120 --> 00:26:42,380 biz nə etmək lazımdır, xüsusilə də əgər Bu yığını saxlanılır deyil istəyirik 515 00:26:42,380 --> 00:26:43,920 lakin yığın? 516 00:26:43,920 --> 00:26:45,460 Biz hüququ, malloc getmək? 517 00:26:45,460 --> 00:26:48,240 Beləliklə, biz bir pointer yaratmaq olacaq. 518 00:26:48,240 --> 00:26:52,074 Node, pointer, yeni bərabər bir node ölçüsü malloc 519 00:26:52,074 --> 00:26:53,740 biz istəyirik çünki node yaradılacaq. 520 00:26:53,740 --> 00:26:56,720 Biz məbləği istəyirəm bir node tutur yaddaş 521 00:26:56,720 --> 00:26:59,300 üçün ayrılmış olunacaq yeni node yaradılması. 522 00:26:59,300 --> 00:27:02,270 >> Və sonra biz yoxlamaq olacaq Yeni bərabər null bərabərdir oldu. 523 00:27:02,270 --> 00:27:03,370 Biz nə dedi saxla? 524 00:27:03,370 --> 00:27:06,470 Malloc nə olursa olsun, siz, Siz həmişə nə etməliyik? 525 00:27:06,470 --> 00:27:09,490 Siz həmişə görmək üçün yoxlamaq lazımdır və ya ki, null edir. 526 00:27:09,490 --> 00:27:13,620 >> Məsələn, əgər əməliyyat Sistem tamamilə dolu idi 527 00:27:13,620 --> 00:27:17,060 Siz heç bir daha çox yaddaş olsa bütün və malloc üçün cəhd edin, 528 00:27:17,060 --> 00:27:18,410 Bu sizin üçün null qayıtmaq istəyirəm. 529 00:27:18,410 --> 00:27:21,094 Və belə ki, istifadə etmək üçün cəhd əgər Bu null işarə zaman, 530 00:27:21,094 --> 00:27:23,260 edə fikrində deyilik ki, məlumat əldə etmək. 531 00:27:23,260 --> 00:27:27,010 Və belə ki, biz etmək istəyirdi zaman mallocing əmin, 532 00:27:27,010 --> 00:27:30,500 Siz həmişə görmek üçün kontrol edirik Sizə verilən yaddaş null edir. 533 00:27:30,500 --> 00:27:33,670 Bu deyil, onda biz hərəkət edə bilər bizim kodu istirahət ilə. 534 00:27:33,670 --> 00:27:36,140 >> Belə ki, biz olacaq yeni node başlamaq. 535 00:27:36,140 --> 00:27:39,050 Biz yeni n n bərabərdir nə olacaq. 536 00:27:39,050 --> 00:27:42,390 Və sonra biz nə olacaq Yeni yeni göstərici müəyyən 537 00:27:42,390 --> 00:27:46,900 null indi biz deyil, çünki Bu qeyd etmək üçün bir şey istəyirəm. 538 00:27:46,900 --> 00:27:48,755 Biz heç bir fikrim burada var Bu, sizi olacaq 539 00:27:48,755 --> 00:27:50,630 sonra biz istəyirsinizsə rəhbəri onu daxil, 540 00:27:50,630 --> 00:27:53,820 sonra biz redesign bilər baş göstərici. 541 00:27:53,820 --> 00:27:58,530 Hər kəs məntiq riayət etmir harada ki, baş verir? 542 00:27:58,530 --> 00:28:02,502 >> Biz yapýyorsun bütün yeni yaradır node, null göstərici yaradılması, 543 00:28:02,502 --> 00:28:04,210 və sonra reassigning bu baş üçün biz əgər 544 00:28:04,210 --> 00:28:06,320 Biz rəhbəri onu əlavə etmək istəyirəm bilirik. 545 00:28:06,320 --> 00:28:09,420 Və sonra başını gedir yeni node doğru qeyd. 546 00:28:09,420 --> 00:28:11,060 Ki, OK hər kəs? 547 00:28:11,060 --> 00:28:12,380 >> Belə ki, iki addım prosesi var. 548 00:28:12,380 --> 00:28:14,760 Siz ilk təyin etmək var hər hansı yaradılması edirik. 549 00:28:14,760 --> 00:28:18,260 Ki, göstərici müəyyən arayış, və sonra 550 00:28:18,260 --> 00:28:21,400 bilərsiniz dereference cür ilk pointer 551 00:28:21,400 --> 00:28:22,972 və yeni node doğru qeyd. 552 00:28:22,972 --> 00:28:25,680 Siz daxil istədiyiniz yerdə, ki, məntiq doğru keçirəcək. 553 00:28:25,680 --> 00:28:27,530 >> Bu təyin kimi növü var müvəqqəti dəyişənlərin. 554 00:28:27,530 --> 00:28:28,700 Unutmayın, siz var əmin etmək ki, siz 555 00:28:28,700 --> 00:28:30,346 Siz dəyişdirmə edirsinizsə izini itirmək yoxdur. 556 00:28:30,346 --> 00:28:33,470 Siz var ki, əmin etmək istəyirəm cür saxlayır müvəqqəti dəyişən 557 00:28:33,470 --> 00:28:35,620 olduğu şey track ki, saxlanılır, siz 558 00:28:35,620 --> 00:28:41,190 Əlbəttə hər hansı bir dəyəri itirmək yoxdur bunun ilə ətrafında messing kimi. 559 00:28:41,190 --> 00:28:42,710 >> OK, belə ki, kodu burada olacaq. 560 00:28:42,710 --> 00:28:45,020 Siz uşaqlar bölmə sonra bir göz atın. 561 00:28:45,020 --> 00:28:48,060 Bu olacaq. 562 00:28:48,060 --> 00:28:50,280 >> Belə ki, nə necə tapmaq biz istəyirdi bu fərqli 563 00:28:50,280 --> 00:28:52,300 orta və ya sonunda daxil etmək olar? 564 00:28:52,300 --> 00:28:57,892 Hər kəs nə bir fikir yoxdur məntiqi istinad kimi pseudocode 565 00:28:57,892 --> 00:29:00,350 biz istəyirdi alırıq ki, ortasında daxil? 566 00:29:00,350 --> 00:29:03,391 Belə ki, əgər biz onu əlavə etmək istədi rəhbəri, biz bütün yeni node yaratmaq edir. 567 00:29:03,391 --> 00:29:06,311 Biz ki, göstərici müəyyən nə baş yeni node, 568 00:29:06,311 --> 00:29:08,310 və sonra baş müəyyən yeni node, sağ? 569 00:29:08,310 --> 00:29:11,560 Biz ortasında daxil etmək istəyirdi siyahısı, biz nə olardı? 570 00:29:11,560 --> 00:29:14,108 571 00:29:14,108 --> 00:29:16,110 >> Auditoriya: Bu hələ ki oxşar proses 572 00:29:16,110 --> 00:29:19,114 bir göstərici təyin kimi sonra ki, pointer təyin 573 00:29:19,114 --> 00:29:20,530 Amma biz orada tapmaq lazımdır. 574 00:29:20,530 --> 00:29:23,560 >> ANDI PENG: Məhz, məhz belə Siz istisna olmaqla, eyni proses 575 00:29:23,560 --> 00:29:27,820 dəqiq tapmaq üçün var Yeni pointer getmək istəyirəm, 576 00:29:27,820 --> 00:29:44,790 Mən daxil etmək istəyirsinizsə, belə ki, OK list-- bağlı orta, 577 00:29:44,790 --> 00:29:46,370 ki bizim bağlı siyahı var deyirlər. 578 00:29:46,370 --> 00:29:49,500 Biz burada əlavə etmək istəyirsinizsə, biz yeni node yaratmaq olacaq. 579 00:29:49,500 --> 00:29:50,520 Biz malloc olacaq. 580 00:29:50,520 --> 00:29:52,220 Biz yeni node yaratmaq olacaq. 581 00:29:52,220 --> 00:29:55,940 Biz təyin etmək olacaq Burada bu node göstərici. 582 00:29:55,940 --> 00:29:58,335 >> Amma problem fərqlənir rəhbəri olduğu yerdən 583 00:29:58,335 --> 00:30:00,490 biz məhz bilirdi ki, burada rəhbəridir. 584 00:30:00,490 --> 00:30:01,930 Bu doğru, ilk doğru idi? 585 00:30:01,930 --> 00:30:04,870 Lakin burada biz takip var harada biz bunu daxil daxil edirik. 586 00:30:04,870 --> 00:30:07,930 Biz daxil varsa bizim burada node, biz var 587 00:30:07,930 --> 00:30:12,270 əmin olun ki, bu node əvvəlki 588 00:30:12,270 --> 00:30:14,172 göstərici reassigns biridir. 589 00:30:14,172 --> 00:30:16,380 Beləliklə cür var iki şeyi takip. 590 00:30:16,380 --> 00:30:19,420 Siz bu track saxlamaq node hazırda daxil daxil edilir. 591 00:30:19,420 --> 00:30:23,280 Siz həmçinin takip var baxırıq əvvəlki node 592 00:30:23,280 --> 00:30:24,340 var idi. 593 00:30:24,340 --> 00:30:25,830 Ki, yaxşı hər kəs? 594 00:30:25,830 --> 00:30:26,500 OLDU. 595 00:30:26,500 --> 00:30:28,000 >> Necə sonunda daxil haqqında? 596 00:30:28,000 --> 00:30:34,220 Mən istəyirdim əgər mən burada əlavə etmək istəyirdi siyahısı sonuna bir yeni node əlavə etmək üçün, 597 00:30:34,220 --> 00:30:37,009 Mən bunu haqqında necə getmək bilər? 598 00:30:37,009 --> 00:30:39,300 Auditoriya: Belə hazırda, son bir-nın null işarə etdi. 599 00:30:39,300 --> 00:30:40,960 ANDI PENG: Bəli. 600 00:30:40,960 --> 00:30:43,560 Məhz, belə ki, bu bir Hal-hazırda bilmək qeyd olunur, 601 00:30:43,560 --> 00:30:46,720 və mən bu mənada, bu, tapmaq siyahısı sonuna əlavə etmək üçün çox asandır. 602 00:30:46,720 --> 00:30:51,810 Siz bütün müəyyən edilir null və sonra bumu bərabər. 603 00:30:51,810 --> 00:30:53,070 Orada çox asan. 604 00:30:53,070 --> 00:30:53,960 Çox sadə. 605 00:30:53,960 --> 00:30:56,430 >> Çox oxşar baş, lakin məntiqi 606 00:30:56,430 --> 00:30:59,690 addımlar ki, əmin etmək istəyirəm Əgər bu hər hansı etdiyini doğru almaq 607 00:30:59,690 --> 00:31:01,500 Siz birlikdə aşağıdakı edirik. 608 00:31:01,500 --> 00:31:04,420 Bu ortada, çox asandır Sizin kodu, yakalanmış almaq 609 00:31:04,420 --> 00:31:05,671 oh, mən çox göstəricilərinə var. 610 00:31:05,671 --> 00:31:07,461 Mən harada bilmirəm bir şey işarə edir. 611 00:31:07,461 --> 00:31:09,170 Mən hətta Ben hansı node bilmirəm. 612 00:31:09,170 --> 00:31:11,490 Nə baş verir? 613 00:31:11,490 --> 00:31:13,620 >> Bir dərin nəfəs almaq, sakitləşmək, Relax. 614 00:31:13,620 --> 00:31:15,530 Sizin bağlı siyahısını cəlb edir. 615 00:31:15,530 --> 00:31:18,800 Desəniz, mən dəqiq bilmək Mən bu daxil etmək lazımdır 616 00:31:18,800 --> 00:31:22,970 və mənim redesign dəqiq necə göstəricilər, çox, daha asan şəkil 617 00:31:22,970 --> 00:31:27,200 yazaraq çox asan deyil Sizin kodu hataları itirilmiş almaq. 618 00:31:27,200 --> 00:31:29,410 Ki, OK hər kəs? 619 00:31:29,410 --> 00:31:31,380 OLDU. 620 00:31:31,380 --> 00:31:35,120 >> Belə ki, biz bir anlayış tapmaq həqiqətən, indi əvvəl haqqında danışdı 621 00:31:35,120 --> 00:31:38,131 və yəqin ki, siz tahmin çox yet-- qarşılaşa deyil 622 00:31:38,131 --> 00:31:40,880 Bu inkişaf etmiş konsepsiyası növü var biz, həqiqətən, məlumatlar var ki, 623 00:31:40,880 --> 00:31:43,900 strukturu ikiqat bağlı siyahı çağırıb. 624 00:31:43,900 --> 00:31:46,390 Uşaqlar Gördüyünüz kimi, biz yapýyorsun bütün yaradır 625 00:31:46,390 --> 00:31:50,400 faktiki dəyəri, əlavə Bizim qovşaqlarının hər pointer 626 00:31:50,400 --> 00:31:52,660 ki, əvvəlki node göstərir. 627 00:31:52,660 --> 00:31:58,170 Belə ki, yalnız bizim var qovşaqlarının növbəti bir qeyd. 628 00:31:58,170 --> 00:32:01,430 Onlar həmçinin əvvəlki işarə edir. 629 00:32:01,430 --> 00:32:04,310 İndi bu iki ignore gedirəm. 630 00:32:04,310 --> 00:32:06,740 >> Belə ki, sonra bir zəncir var ki, həm yolları hərəkət edə bilər, 631 00:32:06,740 --> 00:32:09,630 və sonra bir az daha asan var məntiqi boyunca riayət edin. 632 00:32:09,630 --> 00:32:11,896 Burada kimi, yerinə oh, track saxlanılması, mən 633 00:32:11,896 --> 00:32:14,520 bu node ki, bilmək lazımdır Mən redesign üçün bir, 634 00:32:14,520 --> 00:32:17,532 Mən burada getmək və bilərsiniz yalnız əvvəlki çəkin. 635 00:32:17,532 --> 00:32:19,490 Sonra mən dəqiq bilirəm ki, sonra 636 00:32:19,490 --> 00:32:21,130 axır yoxdur bağlı siyahı bütövlükdə. 637 00:32:21,130 --> 00:32:22,180 Bu bir az daha asandır. 638 00:32:22,180 --> 00:32:24,960 >> Lakin belə kimi, ikiqat var göstəricilər məbləği, 639 00:32:24,960 --> 00:32:26,960 yaddaş ikiqat məbləği. 640 00:32:26,960 --> 00:32:28,950 Bu takip göstəricilər bir çox var. 641 00:32:28,950 --> 00:32:32,140 Bu bir az daha mürəkkəb, lakin bu istifadəçi dostu olaraq bir az daha 642 00:32:32,140 --> 00:32:34,080 Siz yerinə yetirmək üçün çalışırıq nə. 643 00:32:34,080 --> 00:32:36,910 >> Belə ki, məlumatların bu tip strukturu tamamilə, mövcud 644 00:32:36,910 --> 00:32:40,280 və strukturu çox, çox deyil Siz qarşılaşdıqda bütün başqa sadə, 645 00:32:40,280 --> 00:32:43,850 əvəzinə növbəti yalnız bir göstərici, Siz həmçinin əvvəlki bir göstərici var. 646 00:32:43,850 --> 00:32:45,940 Bütün fərq idi. 647 00:32:45,940 --> 00:32:47,740 Ki, yaxşı hər kəs? 648 00:32:47,740 --> 00:32:48,240 Cool. 649 00:32:48,240 --> 00:32:50,940 650 00:32:50,940 --> 00:32:53,280 >> Bütün hüquqlar, belə ki, indi mən həqiqətən, yəqin ki, sərf etmək 651 00:32:53,280 --> 00:32:56,870 15 20 dəqiqə və ya toplu kimi bölməsində vaxt istirahət 652 00:32:56,870 --> 00:32:58,360 hash masalar haqqında söhbət. 653 00:32:58,360 --> 00:33:02,590 Necə uşaqlar çox pset5 spec oxumaq? 654 00:33:02,590 --> 00:33:03,620 Bütün hüquqlar, yaxşı. 655 00:33:03,620 --> 00:33:06,160 Bu adətən 50% daha yüksək var. 656 00:33:06,160 --> 00:33:07,560 Yaxşıdır. 657 00:33:07,560 --> 00:33:10,345 >> Sizlərin görəcəksiniz kimi, belə ki, Siz pset5 problem istəyirik 658 00:33:10,345 --> 00:33:16,790 bir lüğət həyata olacaq Siz 140,000 sözləri üzərində yük harada 659 00:33:16,790 --> 00:33:20,610 biz yazım çek sizə verir ki, bütün mətni qarşı bu. 660 00:33:20,610 --> 00:33:22,580 Biz sizə təsadüfi verəcəyik ədəbiyyat ədəd. 661 00:33:22,580 --> 00:33:23,520 Biz sizə Odyssey verəcəyik. 662 00:33:23,520 --> 00:33:24,561 Biz sizə İliada verəcəyik. 663 00:33:24,561 --> 00:33:26,350 Biz sizə Austin Powers verəcəyik. 664 00:33:26,350 --> 00:33:28,220 >> Və problem çek yazım olacaq 665 00:33:28,220 --> 00:33:31,760 bütün hər bir söz o lüğətlərin 666 00:33:31,760 --> 00:33:34,960 mahiyyətcə bizim spell checker ilə. 667 00:33:34,960 --> 00:33:38,620 Və belə bir neçə hissələri var Bu pset yaradılması, 668 00:33:38,620 --> 00:33:41,970 ilk olmaq istəyirəm həqiqətən yüklemek üçün edə 669 00:33:41,970 --> 00:33:43,970 bütün sözlər lüğət və sonra 670 00:33:43,970 --> 00:33:45,530 etmək istəyirəm onların hamısı yoxlamaq sehr. 671 00:33:45,530 --> 00:33:48,780 Və belə kimi, tələb olacaq bu sürətli edə bilər ki, bir data strukturu 672 00:33:48,780 --> 00:33:50,790 və səmərəli və dinamik. 673 00:33:50,790 --> 00:33:52,900 >> Belə ki, asan güman Bunu etmək üçün yol, sizə 674 00:33:52,900 --> 00:33:55,010 yəqin ki, sağ, bir sıra yaratmaq olar? 675 00:33:55,010 --> 00:33:58,910 saxlama en asan yol deyil 140,000 sözlər bir sıra yarada 676 00:33:58,910 --> 00:34:03,400 və yalnız orada bütün yer və sonra ikili axtarış onları axır 677 00:34:03,400 --> 00:34:06,780 və ya Marka və ya deyilik sorry ki, çeşidlənməsi edir. 678 00:34:06,780 --> 00:34:10,729 Siz onları sort və sonra onları axır bilər ikili axtarış və ya sadəcə xətti axtarış 679 00:34:10,729 --> 00:34:13,730 və yalnız son sözləri, lakin yaddaş böyük bir məbləği alır 680 00:34:13,730 --> 00:34:15,190 və bu, çox səmərəli deyil. 681 00:34:15,190 --> 00:34:18,350 >> Və belə ki, biz başlamaq olacaq edilməsi yolları haqqında söhbət 682 00:34:18,350 --> 00:34:20,110 Bizim çalışan zaman daha səmərəli. 683 00:34:20,110 --> 00:34:23,190 Və bizim məqsədimiz almaq üçün daimi vaxt harada 684 00:34:23,190 --> 00:34:25,810 demək olar ki, serialların, kimi Siz ani girişi var. 685 00:34:25,810 --> 00:34:28,560 Mən bir şey üçün axtarış istəyirdi, Mən yalnız etmək istəyirəm 686 00:34:28,560 --> 00:34:30,810 boom, dəqiq tapmaq və onu çıxarmaq. 687 00:34:30,810 --> 00:34:34,100 Və belə bir quruluş olan biz çox yaxın olmaq lazımdır 688 00:34:34,100 --> 00:34:37,569 daimi daxil etmək üçün vaxt bu müqəddəs grail 689 00:34:37,569 --> 00:34:41,370 davamlı proqramlaşdırma vaxt hash table adlanır. 690 00:34:41,370 --> 00:34:45,370 Və belə David əvvəllər qeyd [Işitilemez] mühazirə bir az, 691 00:34:45,370 --> 00:34:49,100 lakin biz, həqiqətən olacaq dərin bu həftə dive 692 00:34:49,100 --> 00:34:51,780 bağlı olan bir parça necə bir hash table işləyir. 693 00:34:51,780 --> 00:34:53,949 >> Yol Belə ki, bir hash masa işləri, məsələn, 694 00:34:53,949 --> 00:35:00,230 Mən sözləri bir dəstə saxlamaq istəyirdi, bir İngilis dili sözlər dəstə, 695 00:35:00,230 --> 00:35:02,940 Mən nəzəri qoymaq bilər banan, alma, kivi, mango, cüt, 696 00:35:02,940 --> 00:35:04,980 və bütün yalnız bir sıra qovun. 697 00:35:04,980 --> 00:35:07,044 Onlar bütün uyğun bilər tapmaq bilər. 698 00:35:07,044 --> 00:35:09,210 Bu bir ağrı növü olarıq və çıxış vasitəsilə axtarış, 699 00:35:09,210 --> 00:35:12,920 lakin bunu asan bir yoldur biz bir quruluş, həqiqətən, yaratmaq bilər ki, 700 00:35:12,920 --> 00:35:15,680 biz hash bir hash table çağırıb. 701 00:35:15,680 --> 00:35:19,880 Biz vasitəsilə düymələri bütün run bir hash funksiyası, bir tənlik, 702 00:35:19,880 --> 00:35:22,600 ki, onları bütün çevrilir bir dəyər bir növ 703 00:35:22,600 --> 00:35:28,740 sonra biz üzərində bilərsiniz ki, bağlı siyahı mahiyyətcə bir sıra. 704 00:35:28,740 --> 00:35:32,570 >> Və belə ki, burada biz, istəyirdi İngilis dili sözlər saxlamaq üçün, 705 00:35:32,570 --> 00:35:37,250 biz potensial yalnız bilər, mən deyil , bilirik bütün ilk hərflərini çevirmək 706 00:35:37,250 --> 00:35:39,630 bir sıra bir növ. 707 00:35:39,630 --> 00:35:43,140 Belə ki, məsələn, əgər mən istədim A apple-- sinonimi olmaq 708 00:35:43,140 --> 00:35:47,460 və ya 0 indeksi ilə, və B, 1 sinonimi olmaq 709 00:35:47,460 --> 00:35:51,030 biz 26 entries ola bilər yalnız bilərsiniz 710 00:35:51,030 --> 00:35:53,610 hərflərinin bütün biz ilə başlamaq lazımdır əlifba. 711 00:35:53,610 --> 00:35:56,130 Və sonra biz ola bilər 0 index da alma. 712 00:35:56,130 --> 00:35:59,160 Biz index da banan ola bilər 1, 2 index da qovun, 713 00:35:59,160 --> 00:36:00,540 və s və s. 714 00:36:00,540 --> 00:36:04,460 Və beləliklə mən axtarmaq istəyirdi Mənim hash masa və giriş alma, 715 00:36:04,460 --> 00:36:07,560 Mən alma ilə başlayır bilirik A, mən dəqiq bilirəm 716 00:36:07,560 --> 00:36:10,860 Bu və hash lazımdır ki, index 0, çünki masa 717 00:36:10,860 --> 00:36:13,620 funksiyası əvvəl təyin. 718 00:36:13,620 --> 00:36:16,572 >> Bilmirəm Belə ki, biz var bir istifadəçi proqram harada 719 00:36:16,572 --> 00:36:18,780 Siz ittiham olacaq özbaşına deyil arbitrarily--, 720 00:36:18,780 --> 00:36:22,530 fikirli üçün çalışırıq ilə yaxşı tənliklər hesab 721 00:36:22,530 --> 00:36:25,460 yaymaq etmək Sizin dəyərlərin bütün 722 00:36:25,460 --> 00:36:29,370 bir şəkildə onlar asanlıqla əldə edə bilərsiniz sonra ilə bir tənlik kimi 723 00:36:29,370 --> 00:36:31,130 Siz ki, özünüz, bilirik. 724 00:36:31,130 --> 00:36:35,210 Mən getmək istəyirdi mənada belə mango, mən oh, bu m ilə başlayır, bilirik. 725 00:36:35,210 --> 00:36:37,134 12 indeksi olmalıdır. 726 00:36:37,134 --> 00:36:38,800 Mən bir şey vasitəsilə axtarış yoxdur. 727 00:36:38,800 --> 00:36:42,080 Mən yalnız getmək bilər exactly-- bilirəm və 12 index ki çəkin. 728 00:36:42,080 --> 00:36:45,520 >> Necə bir hər kəs aydın hash masa funksiyası işləyir? 729 00:36:45,520 --> 00:36:48,380 Bu, yalnız daha mürəkkəb serialın növü var. 730 00:36:48,380 --> 00:36:50,010 Ki, bütün var. 731 00:36:50,010 --> 00:36:51,630 OLDU. 732 00:36:51,630 --> 00:36:57,690 >> Belə ki, biz daxil tapmaq Bu məsələ nə 733 00:36:57,690 --> 00:37:06,390 Bir neçə şey varsa olur ki, eyni index verir? 734 00:37:06,390 --> 00:37:10,570 Belə ki, bütün, bu, bizim funksiyası demək ki ilk məktub almaq idi 735 00:37:10,570 --> 00:37:14,490 və çevrilir 0 index 25 vasitəsilə müvafiq. 736 00:37:14,490 --> 00:37:17,137 Ki, əgər tamamilə gözəl var yalnız hər biri var. 737 00:37:17,137 --> 00:37:18,970 Amma ikinci başlamaq daha çox olan, sen 738 00:37:18,970 --> 00:37:20,910 toqquşma adlanır nə üçün gedir. 739 00:37:20,910 --> 00:37:25,580 >> Mən daxil etmək üçün cəhd əgər bir hash daxil basdırmaq So artıq bu banan var masa 740 00:37:25,580 --> 00:37:27,870 nə zaman baş verəcək ki, daxil etmək üçün cəhd? 741 00:37:27,870 --> 00:37:30,930 Pis şeylər çünki banana artıq kataloq daxilində mövcud 742 00:37:30,930 --> 00:37:33,800 Siz onu saxlamaq üçün istəyirəm. 743 00:37:33,800 --> 00:37:35,560 Berry cür mən nə etməliyəm, ah, kimi? 744 00:37:35,560 --> 00:37:37,080 Mən getmək harada bilmirəm. 745 00:37:37,080 --> 00:37:38,410 Mən bu necə həll edə bilərəm? 746 00:37:38,410 --> 00:37:41,150 >> Və belə ki, uşaqlar olacaq cür Biz bu çətin şey görmək 747 00:37:41,150 --> 00:37:44,810 biz cür həqiqətən bilərsiniz Bizim seriallarda bağlıdır siyahısını yaratmaq. 748 00:37:44,810 --> 00:37:46,840 Və belə asan yol Bu barədə düşünmək, 749 00:37:46,840 --> 00:37:50,830 bütün hash table bir bağlı siyahıları array. 750 00:37:50,830 --> 00:37:55,670 Belə ki, o mənada ki, var göstəricilər bu gözəl array, 751 00:37:55,670 --> 00:37:58,740 və sonra hər pointer da ki, dəyəri ki indeksi, 752 00:37:58,740 --> 00:38:00,740 həqiqətən başqa şeylər qeyd edə bilərsiniz. 753 00:38:00,740 --> 00:38:05,720 Və belə ki, bütün bu ayrı böyük bir serialın off gələn zəncir. 754 00:38:05,720 --> 00:38:07,960 >> Və belə ki, burada mən əgər giləmeyvə əlavə etmək istədi, 755 00:38:07,960 --> 00:38:11,220 Mən OK, mən daxil gedirəm, bilirik mənim hash funksiyası vasitəsilə. 756 00:38:11,220 --> 00:38:15,070 Mən indeksi ilə başa gedirəm 1 və sonra mən malik olmaq gidiyorum 757 00:38:15,070 --> 00:38:20,410 Bu yalnız kiçik bir alt nəhəng 140,000-söz lüğət. 758 00:38:20,410 --> 00:38:24,220 Və sonra mən yalnız baxmaq olar ki, 1/26 vasitəsilə. 759 00:38:24,220 --> 00:38:27,910 >> Və sonra mən yalnız əlavə edə bilərsiniz əvvəl və ya banan sonra da berry 760 00:38:27,910 --> 00:38:28,820 bu halda? 761 00:38:28,820 --> 00:38:29,700 Sonra, sağ? 762 00:38:29,700 --> 00:38:33,920 Və belə ki, istədiyiniz olacaq banan sonra bu node daxil, 763 00:38:33,920 --> 00:38:36,667 və siz daxil olacaq ki bağlı siyahı quyruq. 764 00:38:36,667 --> 00:38:38,500 Mən geri getmək üçün gedirəm bu əvvəlki slayd, 765 00:38:38,500 --> 00:38:40,680 Belə ki, uşaqlar necə görə bilərsiniz hash funksiyası işləyir. 766 00:38:40,680 --> 00:38:43,980 >> Belə ki, hash funksiyası bu tənlik Siz daxil cür yayınlıyorsanız ki, 767 00:38:43,980 --> 00:38:46,940 almaq üçün nə index vasitəsilə Siz doğru təyin etmək istəyirəm. 768 00:38:46,940 --> 00:38:51,130 Belə ki, bu nümunə, bütün istədik etmək üçün, ilk məktub almaq idi 769 00:38:51,130 --> 00:38:55,890 biz sonra bir index çevrilir Bizim hash funksiyası ki, bilərsiniz. 770 00:38:55,890 --> 00:39:00,160 Biz burada yapýyorsun bütün biz istəyirik ilk məktub konvertasiya. 771 00:39:00,160 --> 00:39:04,770 Belə ki, keykey [0], yalnız ilk məktub nə string biz qarşılaşdıqda, 772 00:39:04,770 --> 00:39:05,720 biz keçən edirik. 773 00:39:05,720 --> 00:39:09,740 Biz yuxarı ki, konvertasiya və edirik biz böyük A subtracting edirik 774 00:39:09,740 --> 00:39:11,740 Bunu ki, bütün Bizə bir sıra verir 775 00:39:11,740 --> 00:39:13,670 olan biz dəyərlər üzərində hash bilər. 776 00:39:13,670 --> 00:39:16,550 >> Və sonra biz olacaq hash modulus SIZE qayıtmaq. 777 00:39:16,550 --> 00:39:19,340 Çox, çox ehtiyatlı olun nəzəri, burada, çünki 778 00:39:19,340 --> 00:39:21,870 Sizin hash dəyəri sonsuz ola bilər. 779 00:39:21,870 --> 00:39:23,660 Bu, yalnız və və davam edə bilər. 780 00:39:23,660 --> 00:39:26,080 Bu, həqiqətən bir ola bilər həqiqətən böyük dəyəri, 781 00:39:26,080 --> 00:39:29,849 ancaq hash masa çünki yaratdığınız yalnız 26 göstəriciləri var, 782 00:39:29,849 --> 00:39:31,890 Sizi əmin etmək istəyirəm sizin modulusing ki, 783 00:39:31,890 --> 00:39:33,848 Bu eyni run-- deyil Sizin Sıraya kimi şey 784 00:39:33,848 --> 00:39:36,320 belə ki, çıxmaq deyil ki, Sizin hash funksiyası alt. 785 00:39:36,320 --> 00:39:39,210 >> Siz ətrafında geri paketi istəyirəm [Işitilemez] zaman eyni şəkildə 786 00:39:39,210 --> 00:39:41,750 , bir çox kimi idi çox böyük məktub, siz 787 00:39:41,750 --> 00:39:43,740 ki istəmədi yalnız son çıxmaq. 788 00:39:43,740 --> 00:39:46,948 Burada eyni şey, əmin etmək istəyirəm Bu qucaqlayaraq son çıxmaq deyil 789 00:39:46,948 --> 00:39:48,330 ətrafında masa üst. 790 00:39:48,330 --> 00:39:50,530 Belə ki, bu, yalnız bir çox sadə hash funksiyası. 791 00:39:50,530 --> 00:39:56,570 Etdi ki, bütün almaq birinci oldu nə bizim giriş məktub idi 792 00:39:56,570 --> 00:40:01,660 və bir siyahısını çevrilir ki, biz hash masa qoymaq bilər. 793 00:40:01,660 --> 00:40:05,450 >> Bəli, və mən əvvəl dediyim kimi biz toqquşma həll yolu 794 00:40:05,450 --> 00:40:09,330 Bizim hash masalar olan, biz chaining, nə zəng. 795 00:40:09,330 --> 00:40:13,860 Bir neçə əlavə etmək üçün cəhd edin, belə ki, eyni şey ilə başlamaq sözlər, 796 00:40:13,860 --> 00:40:16,145 Bir hash dəyəri olacaq. 797 00:40:16,145 --> 00:40:18,770 Avokado və alma, siz var əgər Bizim hash funksiyası vasitəsilə run, 798 00:40:18,770 --> 00:40:21,450 vermək üçün gedir eyni sayda, 0 sayı. 799 00:40:21,450 --> 00:40:24,550 Və belə şəkildə ki, həll Biz, həqiqətən, növ onlara keçid edə bilər ki, 800 00:40:24,550 --> 00:40:27,010 birlikdə bağlı siyahıları vasitəsilə. 801 00:40:27,010 --> 00:40:29,600 >> Və bu mənada, Sizlərin cür görə bilərsiniz 802 00:40:29,600 --> 00:40:32,640 necə data strukturları ki, biz əvvəl qəbulu olduğunuz 803 00:40:32,640 --> 00:40:35,870 bir üzüm bağlı siyahı növ kimi birinə araya gələ bilər. 804 00:40:35,870 --> 00:40:38,860 Və sonra uzaq yarada daha səmərəli data strukturları 805 00:40:38,860 --> 00:40:43,350 ki, böyük miqdarda idarə edə bilərsiniz data, dinamik olaraq boyutlandır 806 00:40:43,350 --> 00:40:44,870 Sizin ehtiyacları. 807 00:40:44,870 --> 00:40:45,620 Hər kəs aydın? 808 00:40:45,620 --> 00:40:47,580 Aydın hər kəs cür burada nə var? 809 00:40:47,580 --> 00:40:52,110 >> Mən insert-- istəyirdi əgər nə Bilmirəm ilə başlayır meyvə, 810 00:40:52,110 --> 00:40:54,726 Giləmeyvə başqa B, banan. 811 00:40:54,726 --> 00:40:55,710 >> Auditoriya: Blackberry. 812 00:40:55,710 --> 00:40:57,910 >> ANDI PENG: Blackberry, blackberry. 813 00:40:57,910 --> 00:41:00,530 Harada blackberry burada getmək edir? 814 00:41:00,530 --> 00:41:04,251 Yaxşı, biz, həqiqətən, sıralanır deyil Bu hələ, lakin nəzəri 815 00:41:04,251 --> 00:41:06,250 bu etmək istəyirdi əgər əlifba sırası ilə, 816 00:41:06,250 --> 00:41:07,944 harada getmək BlackBerry lazımdır? 817 00:41:07,944 --> 00:41:09,210 >> Auditoriya: [işitilemez] 818 00:41:09,210 --> 00:41:11,100 >> ANDI PENG: Məhz, burada sonra, sağ? 819 00:41:11,100 --> 00:41:14,950 Amma bu çox çətin ildən reorder-- Mən bu uşaqlar var danışarlar. 820 00:41:14,950 --> 00:41:17,920 Siz uşaqlar tamamilə bilərsiniz Istədiyiniz hər hansı həyata keçirir. 821 00:41:17,920 --> 00:41:20,730 daha səmərəli yol bəlkə bunu 822 00:41:20,730 --> 00:41:24,570 Sizin bağlı düzmək olardı əlifba sırası daxil siyahısı, 823 00:41:24,570 --> 00:41:26,520 və belə olduğunuzda şeyi daxil istədiyiniz 824 00:41:26,520 --> 00:41:28,632 onlara əlavə etmək üçün əmin olmaq Əlifba sırası daxil 825 00:41:28,632 --> 00:41:30,590 belə ki, sonra etdiyiniz zaman onları axtarmaq üçün çalışır, 826 00:41:30,590 --> 00:41:32,410 hər şey axır yoxdur. 827 00:41:32,410 --> 00:41:35,290 Siz dəqiq bilmək Bu və bu asandır. 828 00:41:35,290 --> 00:41:39,100 >> Amma cür varsa şeyi, təsadüfi interspersed 829 00:41:39,100 --> 00:41:41,420 Siz hələ olacaq zaten axır. 830 00:41:41,420 --> 00:41:44,990 Və mən istəyirdi yalnız blackberry burada daxil 831 00:41:44,990 --> 00:41:47,470 və mən üçün axtarış istəyirdi Bu, mən oh, bilirəm, böyürtkən 832 00:41:47,470 --> 00:41:52,012 1 göstəricisi ilə başlamaq, mən olmalıdır dərhal yalnız 1-axtarış bilirik. 833 00:41:52,012 --> 00:41:53,970 Və sonra mən növ edə bilərsiniz bağlı siyahı axır 834 00:41:53,970 --> 00:41:56,120 BlackBerry almaq qədər, və yeah then--? 835 00:41:56,120 --> 00:41:59,550 >> Auditoriya: create-- çalışdığınız Əgər Bu, çox sadə hash kimi hərhalda 836 00:41:59,550 --> 00:42:00,050 funksiyası. 837 00:42:00,050 --> 00:42:02,835 Və biz bunu istəyirdi kimi çox qat, 838 00:42:02,835 --> 00:42:05,870 OK, biz daxil ayırmaq istəyirəm bütün əlifba məktublar kimi 839 00:42:05,870 --> 00:42:09,040 və sonra bir set kimi ki, daxilində əlifba məktublar, 840 00:42:09,040 --> 00:42:11,715 biz bir hash kimi qoyurlar bir hash masa ərzində masa, 841 00:42:11,715 --> 00:42:13,256 və ya bir funksiyası ərzində funksiyası kimi? 842 00:42:13,256 --> 00:42:14,880 Və ya that-- deyil 843 00:42:14,880 --> 00:42:17,510 >> ANDI PENG: Sizin hash So Sizin hash masa funksiyası 844 00:42:17,510 --> 00:42:19,360 siz istədiyiniz kimi böyük ola bilər. 845 00:42:19,360 --> 00:42:21,930 Belə ki, bu mənada, mən düşündüm bu, çox, çox asan idi 846 00:42:21,930 --> 00:42:25,320 Mənim üçün sadə yalnız sort based ilk sözü məktublar. 847 00:42:25,320 --> 00:42:28,690 Və belə ki, yalnız 26 variantları var. 848 00:42:28,690 --> 00:42:32,650 Mən yalnız 26 variantları əldə edə bilərsiniz 25 0, çünki onlar yalnız bilərsiniz 849 00:42:32,650 --> 00:42:36,510 A Z. başlamaq Amma istəyirdi , bəlkə də, daha mürəkkəbliyi əlavə etmək 850 00:42:36,510 --> 00:42:39,260 və ya daha sürətli vaxt run hash table, tamamilə 851 00:42:39,260 --> 00:42:40,760 şeyi bütün növ edə bilərsiniz. 852 00:42:40,760 --> 00:42:43,330 Siz öz edə bilərsiniz verir tənlik 853 00:42:43,330 --> 00:42:48,000 daha distribution sizin sözlər, sonra axtarış zaman 854 00:42:48,000 --> 00:42:49,300 daha sürətli olacaq. 855 00:42:49,300 --> 00:42:52,100 >> Bu tamamilə uşaqlar var necə ki həyata keçirmək istəyirik. 856 00:42:52,100 --> 00:42:55,140 Yalnız buketler kimi düşünün. 857 00:42:55,140 --> 00:42:57,376 Mən istəyirdi 26 buketler, mən gedirəm 858 00:42:57,376 --> 00:42:59,420 o buketler daxil şeyi düzmək üçün. 859 00:42:59,420 --> 00:43:02,980 Amma bir dəstə üçün gedirəm hər bucket məhsullarının, 860 00:43:02,980 --> 00:43:05,890 Siz etmək istəyirsinizsə, belə ki, daha sürətli və daha səmərəli, 861 00:43:05,890 --> 00:43:07,190 Mənə bir yüz buketler edək. 862 00:43:07,190 --> 00:43:09,290 >> Amma sonra bir anlamaq üçün onlar ki, yol hər şeyi sort 863 00:43:09,290 --> 00:43:11,040 müvafiq bucket onlar olmalıdır. 864 00:43:11,040 --> 00:43:13,331 Amma sonra zaman həqiqətən ki, bucket baxmaq istəyirəm, 865 00:43:13,331 --> 00:43:16,410 var, çünki bir çox daha sürətli hər bucket az stuff. 866 00:43:16,410 --> 00:43:20,250 Belə ki, Bəli, ki, həqiqətən var pset5 siz uşaqlar üçün oyun 867 00:43:20,250 --> 00:43:22,360 Siz olacaq ki, yalnız yaratmaq üçün etiraz 868 00:43:22,360 --> 00:43:26,170 ən səmərəli nə varsa Siz hesab edə bilər funksiyası 869 00:43:26,170 --> 00:43:28,520 saxlamaq və bu dəyərləri kontrol edə. 870 00:43:28,520 --> 00:43:30,840 >> Ümumilikdə uşaqlar üçün lakin siz bunu istəyirəm, 871 00:43:30,840 --> 00:43:32,229 lakin həqiqətən yaxşı bir nöqtə var. 872 00:43:32,229 --> 00:43:34,520 Bu məntiq cür haqqında düşünür başlamaq istəyirəm 873 00:43:34,520 --> 00:43:37,236 yaxşı, niyə daha buketler yoxdur, var. 874 00:43:37,236 --> 00:43:39,527 Və sonra mən axtarış az şey, və sonra bəlkə mən 875 00:43:39,527 --> 00:43:41,640 fərqli bir hash funksiyası var. 876 00:43:41,640 --> 00:43:45,500 >> Bəli, bunu yolları bir çox var pset, bəzi daha sürətli edir. 877 00:43:45,500 --> 00:43:50,630 Mən tamamilə necə görmək üçün gedirəm sürətli sürətli uşaqlar olacaq idi 878 00:43:50,630 --> 00:43:55,170 Sizin funksiyaları iş almaq mümkün. 879 00:43:55,170 --> 00:43:58,176 OK, hər kəs yaxşı on chaining və hash masalar? 880 00:43:58,176 --> 00:44:00,800 Bu, çox sadə kimi həqiqətən Bu barədə anlayışı düşünürəm. 881 00:44:00,800 --> 00:44:05,160 Bu bütün ayıran nə Sizin giriş buketler daxil, 882 00:44:05,160 --> 00:44:10,670 onların çeşidlənməsi və sonra axtarış ilə bağlı ki, siyahıları. 883 00:44:10,670 --> 00:44:11,852 >> Cool. 884 00:44:11,852 --> 00:44:18,160 Bütün hüquqlar, indi biz fərqli bir növ var data strukturu bir ağac deyirlər ki. 885 00:44:18,160 --> 00:44:20,850 Üzrə gedək və çalışır haqqında danışmaq ki, aydın müxtəlif var 886 00:44:20,850 --> 00:44:22,330 lakin eyni kateqoriyada. 887 00:44:22,330 --> 00:44:29,010 Əsasən, bütün bir ağac əvəzinə xətti şəkildə məlumatları təşkil 888 00:44:29,010 --> 00:44:32,560 bir hash table sizə does-- ki , bir top və bir alt var bilirik 889 00:44:32,560 --> 00:44:37,900 və sonra cür pseudocode bir off keçid ağac, siz kök zəng edən bir top var 890 00:44:37,900 --> 00:44:40,220 və sonra bütün ətrafında yarpaqları var. 891 00:44:40,220 --> 00:44:42,390 >> Və belə ki, bütün burada var yalnız üst node edir 892 00:44:42,390 --> 00:44:45,980 digər qovşaqlarının, xal xal daha qovşaqlarının, və s və s. 893 00:44:45,980 --> 00:44:48,130 Və belə ki, yalnız parçalanması filialı var. 894 00:44:48,130 --> 00:44:53,255 Bu təşkil yalnız bir müxtəlif yolu var məlumat və biz bir ağac zəng çünki, 895 00:44:53,255 --> 00:44:56,270 Siz uşaqlar yalnız var izlersin bir ağac kimi baxmaq üçün modelləşdirilmişdir. 896 00:44:56,270 --> 00:44:57,670 Biz ağac zəng görə. 897 00:44:57,670 --> 00:44:59,370 >> Hash table bir masa kimi görünür. 898 00:44:59,370 --> 00:45:01,310 A ağac yalnız bir ağac kimi görünür. 899 00:45:01,310 --> 00:45:03,300 Bu bütün ayrı qovşaqlarının təşkili yolu 900 00:45:03,300 --> 00:45:06,020 Sizin ehtiyaclarını nə asılı olaraq. 901 00:45:06,020 --> 00:45:11,810 >> Belə ki, bir kök və sonra yarpaqları var. 902 00:45:11,810 --> 00:45:15,380 yol ki, biz xüsusilə bilər Bu ikili ağac haqqında düşünmək, 903 00:45:15,380 --> 00:45:18,150 ikili ağac yalnız bir deyil bir ağac xüsusi bir növü 904 00:45:18,150 --> 00:45:22,450 hər bir node yalnız xal üçün, max, digər iki qovşaqlarının. 905 00:45:22,450 --> 00:45:25,434 Və belə ki, burada fərqli var Sizin ağac simmetriya 906 00:45:25,434 --> 00:45:28,600 ki, daha asan cür baxmaq edir dəyərlər nə sonra çünki var 907 00:45:28,600 --> 00:45:30,150 həmişə bir sol və ya hüququ var. 908 00:45:30,150 --> 00:45:33,150 Bir sol üçüncü kimi var heç olacaq sol və ya soldan dördüncü. 909 00:45:33,150 --> 00:45:36,358 Bir sol və hüququ var, yalnız var və bu iki ya axtarış edə bilərsiniz. 910 00:45:36,358 --> 00:45:38,980 Və belə ki, niyə bu faydalıdır? 911 00:45:38,980 --> 00:45:40,980 bu yol Siz arıyorsanız faydalıdır 912 00:45:40,980 --> 00:45:42,890 sağ, dəyərlərə vasitəsilə axtarış? 913 00:45:42,890 --> 00:45:45,640 Əksinə ikili həyata daha bir səhv sıra axtarış 914 00:45:45,640 --> 00:45:49,260 Siz qovşaqlarının daxil etmək istəyirdi və iradəsi ilə və həmçinin qovşaqlarının götürmek 915 00:45:49,260 --> 00:45:52,185 axtarış qorumaq ikili axtarış imkanları. 916 00:45:52,185 --> 00:45:54,560 Belə ki, bu şəkildə, biz növ istəyirik zaman xatırlayıram tricking-- 917 00:45:54,560 --> 00:45:56,530 bağlı siyahıları ikili axtarış bilməz dedi? 918 00:45:56,530 --> 00:46:01,700 Biz belə bir data strukturu yaratmaq edirik tövsiyələr iş daxil ki. 919 00:46:01,700 --> 00:46:05,034 >> Və çünki bağlı siyahıları, xətti var onlar yalnız bir-birinin ardınca keçid. 920 00:46:05,034 --> 00:46:06,950 Biz növ ola bilər göstəricilərinə müxtəlif sort 921 00:46:06,950 --> 00:46:09,408 müxtəlif qovşaqlarının işarə ki, axtarış kömək edə bilər. 922 00:46:09,408 --> 00:46:12,590 Və belə ki, burada, mən istəyirdi bir ikili axtarış ağac, 923 00:46:12,590 --> 00:46:14,090 Mən bilirəm mənim ortasında 55 əgər. 924 00:46:14,090 --> 00:46:18,280 Mən yalnız yaratmaq gedirəm Mənim orta kimi, mənim kök kimi, 925 00:46:18,280 --> 00:46:20,770 və sonra mən gedirəm dəyərləri off fırlatmaq. 926 00:46:20,770 --> 00:46:25,610 >> Belə ki, burada, mən axtarmaq üçün gedirəm əgər 66 dəyəri, mən 55 başlaya bilərsiniz. 927 00:46:25,610 --> 00:46:27,310 Bu 55-dən çox 66 böyük var? 928 00:46:27,310 --> 00:46:30,970 Bəli, belə ki, mən axtarış Muş bilmək i n bu ağacın sağ göstərici. 929 00:46:30,970 --> 00:46:32,440 Mən 77 gedin. 930 00:46:32,440 --> 00:46:35,367 OK, az və ya 77-dən çox 66? 931 00:46:35,367 --> 00:46:37,950 Oh, bu, az, belə ki, bilirsiniz, ki, sol node olmalıdır. 932 00:46:37,950 --> 00:46:41,410 >> Və belə ki, burada biz növ qorunması edirik Diziler haqqında böyük şeyi, 933 00:46:41,410 --> 00:46:44,420 belə dinamik boyutlandırma kimi obyektlərin, olan 934 00:46:44,420 --> 00:46:49,530 daxil edin və iradəsi ilə silmək mümkün, sabit narahat olmadan 935 00:46:49,530 --> 00:46:50,370 kosmik məbləği. 936 00:46:50,370 --> 00:46:52,820 Biz hələ bütün qorumaq o gözəl şeylər 937 00:46:52,820 --> 00:46:57,140 də qorumaq edə olarkən daxil və ikili axtarış dəfə axtarış 938 00:46:57,140 --> 00:47:00,450 biz əvvəllər yalnız idi ki, Bir söz əldə edə. 939 00:47:00,450 --> 00:47:06,310 >> Cool data strukturu cür mürəkkəb, node həyata keçirmək. 940 00:47:06,310 --> 00:47:08,311 Siz onu bütün edə bilərsiniz kimi node struct edir 941 00:47:08,311 --> 00:47:10,143 Bir sol var və düzgün göstərici. 942 00:47:10,143 --> 00:47:11,044 Ki, bütün var. 943 00:47:11,044 --> 00:47:12,960 Belə ki, deyil, yalnız çox bir x və ya əvvəlki olan. 944 00:47:12,960 --> 00:47:15,920 Daha sonra sol və ya sağ, və var cür onları birlikdə keçid 945 00:47:15,920 --> 00:47:16,836 Lakin belə download. 946 00:47:16,836 --> 00:47:21,080 947 00:47:21,080 --> 00:47:24,270 >> OK, biz, həqiqətən olacaq yalnız bir neçə dəqiqə. 948 00:47:24,270 --> 00:47:25,790 Beləliklə, biz burada geri olacaq. 949 00:47:25,790 --> 00:47:28,270 Mən əvvəllər dediyi kimi, I növ izah 950 00:47:28,270 --> 00:47:31,520 Biz necə məntiqi Bu vasitəsilə axtarış edəcək. 951 00:47:31,520 --> 00:47:33,860 Biz cəhd olacaq bu out pseudocoding görmək 952 00:47:33,860 --> 00:47:38,000 biz növ müraciət edə bilər, əgər ikili axtarış eyni məntiq 953 00:47:38,000 --> 00:47:40,055 data strukturu müxtəlif növü. 954 00:47:40,055 --> 00:47:45,049 Sizlərin bir neçə kimi almaq istəyirsinizsə dəqiqədə yalnız bu barədə düşünmək. 955 00:47:45,049 --> 00:48:45,927 956 00:48:45,927 --> 00:48:46,925 OLDU. 957 00:48:46,925 --> 00:48:51,407 Bütün sağ, mən gedirəm həqiqətən, yalnız heç bir the-- vermək, 958 00:48:51,407 --> 00:48:52,990 Biz ilk pseudocode haqqında danışmaq lazımdır. 959 00:48:52,990 --> 00:48:56,580 Belə ki, hər kəs istəyir bir zərbə vermək nə 960 00:48:56,580 --> 00:49:02,100 zaman etmək istəyirəm ilk şey Siz axtarış başlanğıc etdiyiniz? 961 00:49:02,100 --> 00:49:04,460 Biz arıyorsanız 66 dəyəri, nə 962 00:49:04,460 --> 00:49:07,940 Biz əgər bunu istədiyiniz ilk şey bu ağac axtarış ikili istəyirsiniz? 963 00:49:07,940 --> 00:49:10,760 >> Auditoriya: Siz sağ baxmaq istəyirəm və [işitilemez] Sol baxmaq və görmək 964 00:49:10,760 --> 00:49:11,230 daha çox. 965 00:49:11,230 --> 00:49:12,271 >> ANDI PENG: Bəli, dəqiq. 966 00:49:12,271 --> 00:49:15,350 Belə ki, sizin kök baxmaq olacaq. 967 00:49:15,350 --> 00:49:18,180 Siz zəng edə bilərsiniz yolları çox var bu, sizin valideyn node insanlar demək. 968 00:49:18,180 --> 00:49:21,317 Çünki kök demək istəyirəm ki, ağac kökü kimi. 969 00:49:21,317 --> 00:49:23,400 Siz baxmaq olacaq kök node və siz etdiyiniz 970 00:49:23,400 --> 00:49:26,940 görmək olacaq 66 böyükdür daha az və ya 55. 971 00:49:26,940 --> 00:49:30,360 Və bu yaxşı, bu, daha çox varsa daha çox, biz baxmaq istəyirsiniz? 972 00:49:30,360 --> 00:49:32,000 Harada biz doğru, indi axtarış istəyirsiniz? 973 00:49:32,000 --> 00:49:34,340 Biz axtarmaq istədiyiniz bu ağacın sağ yarım. 974 00:49:34,340 --> 00:49:38,390 >> Belə ki, biz, rahat, bir sağ işarə göstərici. 975 00:49:38,390 --> 00:49:44,325 Və sonra biz bilərsiniz yeni kök 77 olmalıdır. 976 00:49:44,325 --> 00:49:46,450 Biz yalnız yerdə getmək bilər pointer işarə edir. 977 00:49:46,450 --> 00:49:49,100 Yaxşı, oh, burada biz başlayaraq edirik 77, və biz yalnız bilərsiniz 978 00:49:49,100 --> 00:49:51,172 recursively təkrar edirik. 979 00:49:51,172 --> 00:49:52,880 Bu yolla, siz cür bir funksiyası var. 980 00:49:52,880 --> 00:49:57,430 Siz ki, axtarış bir yol var yalnız və üzərində üzərində təkrar edə bilərsiniz, 981 00:49:57,430 --> 00:50:02,720 siz baxmaq istədiyiniz asılı olaraq Siz nəhayət dəyəri almaq qədər 982 00:50:02,720 --> 00:50:04,730 sizin üçün axtarış etdiyiniz. 983 00:50:04,730 --> 00:50:05,230 Salam? 984 00:50:05,230 --> 00:50:07,800 >> Mən sizə faktiki göstərmək haqqında Ben kodu, və kodu bir çox var. 985 00:50:07,800 --> 00:50:08,674 Ehtiyac yoxdur qəribə. 986 00:50:08,674 --> 00:50:09,910 Biz onun vasitəsilə danışmaq lazımdır. 987 00:50:09,910 --> 00:50:13,410 988 00:50:13,410 --> 00:50:14,020 >> Əslində, no. 989 00:50:14,020 --> 00:50:15,061 Bu yalnız pseudocode idi. 990 00:50:15,061 --> 00:50:17,860 OK, yalnız pseudocode idi olan bir az mürəkkəb, 991 00:50:17,860 --> 00:50:19,751 lakin tamamilə gözəl var. 992 00:50:19,751 --> 00:50:21,000 Burada hər kəs birlikdə aşağıdakı? 993 00:50:21,000 --> 00:50:24,260 Kök null varsa, qaytarılması saxta deməkdir, çünki 994 00:50:24,260 --> 00:50:26,850 Siz hətta orada heç bir şey yoxdur. 995 00:50:26,850 --> 00:50:31,376 >> Kök n əgər belə dəyəri, əgər baxırıq biri olur, 996 00:50:31,376 --> 00:50:34,000 sonra doğru geri olacaq Bilirsiniz, çünki siz onu tapdı. 997 00:50:34,000 --> 00:50:36,250 Amma dəyəri az olduqda n kök çox, siz etdiyiniz 998 00:50:36,250 --> 00:50:38,332 sol axtarış gedir uşaq və ya sol yarpağı, 999 00:50:38,332 --> 00:50:39,540 Siz zəng etmək istəyirəm nə. 1000 00:50:39,540 --> 00:50:41,750 Və dəyəri kök daha böyük olduqda, sağ ağac axtarış olacaq, 1001 00:50:41,750 --> 00:50:44,610 sonra yalnız funksiyası run axtarış vasitəsilə yenidən. 1002 00:50:44,610 --> 00:50:48,037 >> Və kök, null olduğunu ki, əgər Siz son əldə etdik deməkdir? 1003 00:50:48,037 --> 00:50:50,120 Ki, heç bir var deməkdir daha yarpaqları axtarış, 1004 00:50:50,120 --> 00:50:52,230 sonra mən, oh, bilirik burada deyil tapmaq 1005 00:50:52,230 --> 00:50:55,063 Mən nəzərdən sonra, çünki və burada deyil bütün şey, 1006 00:50:55,063 --> 00:50:56,930 Bu yalnız burada ola bilər. 1007 00:50:56,930 --> 00:50:58,350 >> Ki, hamıya mənada edirmi? 1008 00:50:58,350 --> 00:51:03,230 Belə ki, qorunması ikili axtarış kimi bağlı siyahıları imkanları. 1009 00:51:03,230 --> 00:51:09,200 Cool, və ikinci növü data strukturu uşaqlar 1010 00:51:09,200 --> 00:51:13,180 Sizin pset həyata cəhd edə bilərsiniz, Yalnız bir metodu seçmək lazımdır. 1011 00:51:13,180 --> 00:51:19,430 Amma yəqin ki, alternativ metodu hash table bir trie zəng edir. 1012 00:51:19,430 --> 00:51:24,080 >> Bütün bir trie bir ağac xüsusi növü ki, 1013 00:51:24,080 --> 00:51:28,600 digər dəyərləri getmək dəyərləri var. 1014 00:51:28,600 --> 00:51:31,450 Belə ki, əvəzinə bir ikili olan mənada ağac yalnız bir ki, 1015 00:51:31,450 --> 00:51:35,940 şey iki qeyd edə bilərsiniz, siz ola bilər bir çox şey üçün bir şey point. 1016 00:51:35,940 --> 00:51:39,450 Siz mahiyyətcə Diziler var olan saxlamaq daxili 1017 00:51:39,450 --> 00:51:41,790 digər serialların qeyd göstəricilər. 1018 00:51:41,790 --> 00:51:45,210 1019 00:51:45,210 --> 00:51:49,460 >> Beləliklə, biz necə node bir trie müəyyən olardı 1020 00:51:49,460 --> 00:51:52,590 biz var istəyirəm Boolean, c söz, sağ? 1021 00:51:52,590 --> 00:51:54,920 Belə ki, node Boolean var , doğru və ya yalan kimi 1022 00:51:54,920 --> 00:51:58,490 başında ilk növbədə ki array, bu söz? 1023 00:51:58,490 --> 00:52:03,620 İkincisi, siz göstəricilərinə var istəyirəm nə üçün onlara qalan var. 1024 00:52:03,620 --> 00:52:07,470 A bit mürəkkəb, bir az mücərrəd, lakin Mən ki, bütün vasitələrdən izah edəcək. 1025 00:52:07,470 --> 00:52:13,800 >> Belə ki, burada, üst, əgər bir sıra artıq elan var, 1026 00:52:13,800 --> 00:52:17,040 Bir Boolean bir node ön saxlanılan dəyəri 1027 00:52:17,040 --> 00:52:19,490 ki, bu bir söz deyir? 1028 00:52:19,490 --> 00:52:20,520 Bu bir söz deyilmi? 1029 00:52:20,520 --> 00:52:23,240 Və sonra var Sizin array qalan ki, 1030 00:52:23,240 --> 00:52:26,040 həqiqətən mağazalar bütün Bu ola bilər nə imkanları. 1031 00:52:26,040 --> 00:52:28,660 Belə ki, məsələn, kimi üst var 1032 00:52:28,660 --> 00:52:32,140 doğru və ya deyir ki, ilk şey yalan, bəli və ya xeyr, bu söz. 1033 00:52:32,140 --> 00:52:38,130 >> Və sonra 26 vasitəsilə 0 var Siz bilərsiniz məktublar. 1034 00:52:38,130 --> 00:52:42,790 Mən burada axtarmaq istəyirdi yarasa, mən üst getmək 1035 00:52:42,790 --> 00:52:49,200 və mən B tapmaq B. axtarmaq mənim array və mən bilirəm, OK, B bir söz? 1036 00:52:49,200 --> 00:52:53,010 B beləliklə, bir söz deyil Mən axtarış saxlamaq lazımdır. 1037 00:52:53,010 --> 00:52:56,410 Mən B getmək və mən baxmaq B doğru işarə pointer 1038 00:52:56,410 --> 00:53:00,900 Mən, informasiya bir sıra görmək biz əvvəl idi, eyni strukturu. 1039 00:53:00,900 --> 00:53:05,240 >> Və oh növbəti burada [Işitilemez] məktub A. 1040 00:53:05,240 --> 00:53:07,210 Belə ki, sıra baxmaq. 1041 00:53:07,210 --> 00:53:10,860 Biz səkkizinci dəyər tapmaq, sonra biz, oh, bax 1042 00:53:10,860 --> 00:53:12,840 hey, bir sözlə ki, B-A bir söz? 1043 00:53:12,840 --> 00:53:13,807 Bu bir söz deyil. 1044 00:53:13,807 --> 00:53:14,890 Biz axtarır saxlamaq üçün var. 1045 00:53:14,890 --> 00:53:17,850 >> Və sonra biz burada baxmaq A bal pointer, 1046 00:53:17,850 --> 00:53:21,130 və başqa şəkildə işarə Hansı daha çox dəyər saxlanılır. 1047 00:53:21,130 --> 00:53:24,150 Və nəhayət, biz almaq Bir söz B-A-T. 1048 00:53:24,150 --> 00:53:25,970 Və belə növbəti dəfə Siz baxmaq, siz olacaq 1049 00:53:25,970 --> 00:53:30,850 Bəli, ki, çek üçün, Bu Boolean funksiyası doğrudur. 1050 00:53:30,850 --> 00:53:35,450 Və belə ki, mənada, biz gözləyirik diziler ilə bir ağac olan. 1051 00:53:35,450 --> 00:53:39,890 >> Beləliklə cür aşağı axtarış edə bilərsiniz. 1052 00:53:39,890 --> 00:53:43,650 Əksinə bir funksiyası hashing çox və bağlı siyahı ilə dəyərlər təyin, 1053 00:53:43,650 --> 00:53:49,190 yalnız bir həyata keçirə bilər downwords axtarış trie. 1054 00:53:49,190 --> 00:53:50,850 Həqiqətən, həqiqətən məhsulları mürəkkəb. 1055 00:53:50,850 --> 00:53:54,060 Mən kimi deyiləm, çünki düşünmək asan deyil bir çox data strukturları həyata spitting 1056 00:53:54,060 --> 00:53:58,710 sizə, lakin cür hər kəs yoxdur Bu məntiqi necə anlamaq? 1057 00:53:58,710 --> 00:54:01,920 >> Sərin, OK. 1058 00:54:01,920 --> 00:54:05,600 Belə ki, B-A-T, və sonra axtarış olacaq. 1059 00:54:05,600 --> 00:54:07,940 Siz davam olduğunuz növbəti dəfə oh, hey, bu doğru, bax, 1060 00:54:07,940 --> 00:54:09,273 Beləliklə, mən bu söz olmalıdır bilirik. 1061 00:54:09,273 --> 00:54:12,030 1062 00:54:12,030 --> 00:54:13,770 >> Zoo üçün eyni şey. 1063 00:54:13,770 --> 00:54:17,960 Belə ki, burada bir şey varsa, sağ indi biz İndi, zoo axtarmaq istədi, 1064 00:54:17,960 --> 00:54:20,780 Hal-hazırda zoo bir deyil Bizim lüğət söz 1065 00:54:20,780 --> 00:54:25,300 , çünki uşaqlar, Gördüyünüz kimi bir Boolean ilk yer 1066 00:54:25,300 --> 00:54:28,590 qayıtmaq doğru zoom sonunda. 1067 00:54:28,590 --> 00:54:30,430 Biz Z-O-O-M var. 1068 00:54:30,430 --> 00:54:33,900 >> Və belə ki, burada biz, həqiqətən, yoxdur Bizim lüğət söz, zoo, 1069 00:54:33,900 --> 00:54:36,070 Bu onay qutusu yoxlanılır deyil, çünki. 1070 00:54:36,070 --> 00:54:39,540 Belə ki, kompüter deyil zoo bir söz olduğunu bilirik 1071 00:54:39,540 --> 00:54:42,430 Çünki biz yol yalnız bir zoom burada saxlanılır 1072 00:54:42,430 --> 00:54:44,920 həqiqətən bir Boolean dəyəri var ki, doğrudur çevrildi edilmişdir. 1073 00:54:44,920 --> 00:54:49,380 Biz daxil etmək istəyirsinizsə Belə ki, söz, zoo bizim lüğət daxil, 1074 00:54:49,380 --> 00:54:51,770 biz bunu haqqında necə getmək olar? 1075 00:54:51,770 --> 00:54:55,960 Biz əmin etmək üçün nə etmək lazımdır nə bizim Kompüter Z-O-O bir söz bilir ki, 1076 00:54:55,960 --> 00:54:58,130 və ilk sözü Z-O-O-M? 1077 00:54:58,130 --> 00:54:59,360 >> Auditoriya: [işitilemez] 1078 00:54:59,360 --> 00:55:01,450 >> ANDI PENG: Məhz, biz Bu əmin etmək istəyirəm 1079 00:55:01,450 --> 00:55:07,890 Burada ki, Boolean dəyəri doğru off yoxlanılır. 1080 00:55:07,890 --> 00:55:13,297 Z-O-O, sonra biz yoxlamaq olacaq, belə ki, biz tam, hey, zoo bir söz bilirik. 1081 00:55:13,297 --> 00:55:15,380 Mən demək gedirəm bir söz belə kompüter 1082 00:55:15,380 --> 00:55:18,000 , zaman kompüter çek ki, Bu zoo bir söz olduğunu bilir. 1083 00:55:18,000 --> 00:55:21,269 >> Bütün bu məlumatları xatırlayıram çünki strukturları, bizim üçün çox asandır 1084 00:55:21,269 --> 00:55:22,310 oh, yarasa bir söz var, demək. 1085 00:55:22,310 --> 00:55:22,851 Zoo bir söz var. 1086 00:55:22,851 --> 00:55:23,611 Zoom bir söz var. 1087 00:55:23,611 --> 00:55:25,860 Amma siz bunu bina etdiyiniz zaman, kompüter heç bir fikir var. 1088 00:55:25,860 --> 00:55:28,619 >> Belə ki, dəqiq demək lazımdır nə nöqtədə bu söz? 1089 00:55:28,619 --> 00:55:29,910 Nə nöqtədə bir söz deyil? 1090 00:55:29,910 --> 00:55:31,784 Və nə nöqtədə nə şeyi axtarmaq lazımdır, 1091 00:55:31,784 --> 00:55:34,000 və nə nöqtədə mən növbəti getmək lazımdır? 1092 00:55:34,000 --> 00:55:37,010 Ki, aydın hər kəs? 1093 00:55:37,010 --> 00:55:39,540 Cool. 1094 00:55:39,540 --> 00:55:42,530 >> Və sonra gəlir problemi necə olardı 1095 00:55:42,530 --> 00:55:45,560 bir şey daxil haqqında getmək ki, faktiki olaraq deyil? 1096 00:55:45,560 --> 00:55:49,090 Belə ki, yalnız biz əlavə etmək istəyirəm deyək Bizim trie daxil söz, hamam. 1097 00:55:49,090 --> 00:55:53,589 Siz uşaqlar hazırda kimi Gördüyünüz kimi biz indi bütün, B-A-T 1098 00:55:53,589 --> 00:55:55,630 və bu yeni data strukturu bir ufak var idi ki, 1099 00:55:55,630 --> 00:55:59,740 biz güman, çünki null işarə oh, B-A-T sonra heç bir söz var ki, 1100 00:55:59,740 --> 00:56:02,530 niyə biz saxlamaq lazımdır ki, T. sonra hər şeyi olan 1101 00:56:02,530 --> 00:56:06,581 >> Biz sizə əgər Lakin problem yaranır sonra gəlir bir söz var istəyirəm 1102 00:56:06,581 --> 00:56:07,080 T. 1103 00:56:07,080 --> 00:56:09,500 Siz vanna varsa, istəyirik bir H istəyirik gedir. 1104 00:56:09,500 --> 00:56:13,290 Və belə ki, biz nə olacaq yoldur biz ayrı node yaratmaq olacaq. 1105 00:56:13,290 --> 00:56:16,840 Biz nə məbləği ayırmaq deyilik Bu yeni array üçün yaddaş, 1106 00:56:16,840 --> 00:56:20,720 və biz göstəricilərinə redesign olacaq. 1107 00:56:20,720 --> 00:56:22,947 >> Biz təyin etmək olacaq H, ilk növbədə, bu null, 1108 00:56:22,947 --> 00:56:24,030 biz xilas olacaq. 1109 00:56:24,030 --> 00:56:26,590 Biz olacaq H point aşağı. 1110 00:56:26,590 --> 00:56:30,600 Biz H görürsünüzsə, biz bunu istəyirik başqa bir yerdə getmək üçün. 1111 00:56:30,600 --> 00:56:33,910 >> Burada, biz sonra yes off kontrol edə bilərsiniz. 1112 00:56:33,910 --> 00:56:38,170 Biz T sonra H hit varsa, oh, sonra biz bu söz olduğunu bilirik. 1113 00:56:38,170 --> 00:56:41,110 Boolean doğru qayıtmaq üçün gedir. 1114 00:56:41,110 --> 00:56:42,950 Hər kəs ki, baş necə aydın? 1115 00:56:42,950 --> 00:56:45,110 OLDU. 1116 00:56:45,110 --> 00:56:47,214 >> Belə ki, mahiyyətcə, bütün Bu data strukturları 1117 00:56:47,214 --> 00:56:50,130 Bu gün üzərində getdi etdik ki, mən var həqiqətən, həqiqətən, tez onların üzərində getdi 1118 00:56:50,130 --> 00:56:52,192 və çox deyil üçün ətraflı və OK. 1119 00:56:52,192 --> 00:56:53,900 Siz messing başlamaq sonra O, sizə olacaq 1120 00:56:53,900 --> 00:56:55,733 harada takip saxlanılması bütün göstəricilər var 1121 00:56:55,733 --> 00:56:58,060 nə olur sizin data strukturları, Et Cetera. 1122 00:56:58,060 --> 00:56:59,810 Onlar çox faydalı olacaq və bu qədər var 1123 00:56:59,810 --> 00:57:03,890 uşaqlar tamamilə necə anlamaq üçün hər şeyi həyata keçirmək istəyirik. 1124 00:57:03,890 --> 00:57:07,650 >> Və belə pset4, bir 5 node oh, ki, səhvdir. 1125 00:57:07,650 --> 00:57:10,140 Pset5 imla hataları edir. 1126 00:57:10,140 --> 00:57:13,710 Mən əvvəl qeyd etdiyim kimi, bir dəfə olacaq yenə bizdən mənbə kodu download. 1127 00:57:13,710 --> 00:57:16,210 Üç əsas olmalıdır olacaq şeyi yüklənərkən olacaq. 1128 00:57:16,210 --> 00:57:18,470 Siz lüğətlər download lazımdır KERS, və mətnlər. 1129 00:57:18,470 --> 00:57:21,660 >> Bütün bu şeylər var ya sözləri lüğət 1130 00:57:21,660 --> 00:57:25,190 biz sizə check istədiyiniz ki, və ya informasiya test 1131 00:57:25,190 --> 00:57:26,930 biz sizə çek sehr etmək istəyirəm ki,. 1132 00:57:26,930 --> 00:57:29,670 Və belə lüğətlər biz gedir vermək 1133 00:57:29,670 --> 00:57:34,870 sizə istəyirik faktiki sözləri vermək Siz bir şəkildə elə saxlamaq üçün 1134 00:57:34,870 --> 00:57:36,530 bir sıra daha səmərəli. 1135 00:57:36,530 --> 00:57:38,470 Və sonra mətnlər var biz istəyirik nə olacaq 1136 00:57:38,470 --> 00:57:43,900 isteyen əmin olun sehr sözləri bütün real söz var. 1137 00:57:43,900 --> 00:57:47,970 >> Və belə üç blokları biz sizə verəcəyik proqramları 1138 00:57:47,970 --> 00:57:51,130 dictionary.c deyilir, dictionary.h və speller.c. 1139 00:57:51,130 --> 00:57:56,500 Və belə ki, bütün dictionary.c ki yoxdur nə həyata keçirilməsi üçün xahiş edirik. 1140 00:57:56,500 --> 00:57:57,880 Bu sözləri yükler. 1141 00:57:57,880 --> 00:58:02,000 Yoxlayır onları spell və bu əmin edir ki, hər şey düzgün daxil edilir. 1142 00:58:02,000 --> 00:58:05,180 >> diction.h yalnız bir kitabxana fayl ki, bütün bu funksiyaları bəyan edir. 1143 00:58:05,180 --> 00:58:07,650 Və speller.c, biz sizə vermək olacaq. 1144 00:58:07,650 --> 00:58:09,290 Siz hər hansı dəyişdirmək üçün ehtiyac yoxdur. 1145 00:58:09,290 --> 00:58:14,290 Bütün speller.c ki görür, yük ki, onun sürəti yoxlayır, 1146 00:58:14,290 --> 00:58:19,190 necə kimi benchmark test tez şeyə edirik. 1147 00:58:19,190 --> 00:58:20,410 >> Bu speller var. 1148 00:58:20,410 --> 00:58:23,920 Just ilə mess yoxdur, amma etmək Siz bunu nə başa düşürük. 1149 00:58:23,920 --> 00:58:28,090 Biz funksiyası adlanır getrusage istifadə Sizin yazım performansı sınayar 1150 00:58:28,090 --> 00:58:28,590 checker. 1151 00:58:28,590 --> 00:58:32,200 Bütün bu əsasən test edilir yoxdur Sizin lüğət hər şey zaman, 1152 00:58:32,200 --> 00:58:33,680 belə ki, onu anlamaq əmin olun. 1153 00:58:33,680 --> 00:58:36,660 Bu mess deyil ehtiyatlı olun və ya başqa şeyi düzgün çalışmaz. 1154 00:58:36,660 --> 00:58:39,740 1155 00:58:39,740 --> 00:58:44,170 >> Bu problem toplu üçün Siz uşaqlar həqiqətən dictionary.c dəyişdirmək üçün. 1156 00:58:44,170 --> 00:58:48,526 Biz sizə vermək olacaq Bir lüğət 140,000 sözlər. 1157 00:58:48,526 --> 00:58:50,900 Biz sizə bir mətn vermək olacaq Bu sözləri var fayl, 1158 00:58:50,900 --> 00:58:54,840 və biz təşkil edə olmaq istəyirəm bir hash masa və ya bir trie daxil onlara 1159 00:58:54,840 --> 00:58:58,140 biz oxumaq üçün xahiş zaman, çünki Siz yazım əgər təsəvvür yoxlamaq 1160 00:58:58,140 --> 00:59:00,690 Homer nin Odyssey kimi yoxlanılması. 1161 00:59:00,690 --> 00:59:03,010 Bu böyük, böyük test kimi. 1162 00:59:03,010 --> 00:59:05,190 >> Hər bir düşünün söz baxmaq idi 1163 00:59:05,190 --> 00:59:08,100 140,000 dəyərlər bir sıra vasitəsilə. 1164 00:59:08,100 --> 00:59:10,350 Ki, əbədi edəcək maşın çalıştırmak üçün. 1165 00:59:10,350 --> 00:59:14,490 Biz bizimdir bizim təşkil etmək istəyirik ki, daha səmərəli data strukturlarına data 1166 00:59:14,490 --> 00:59:17,270 Belə bir hash masa və ya bir trie kimi. 1167 00:59:17,270 --> 00:59:20,700 Və sonra uşaqlar cür edə bilərsiniz Siz giriş axtarmaq zaman 1168 00:59:20,700 --> 00:59:22,570 hər şeyi daha asan və daha tez. 1169 00:59:22,570 --> 00:59:24,934 >> Və belə toqquşma həll etmək üçün ehtiyatlı olun. 1170 00:59:24,934 --> 00:59:27,350 Siz bir dəstə almaq olacaq A. ilə start sözləri 1171 00:59:27,350 --> 00:59:29,957 Siz bir dəstə sözləri almaq olacaq Bu qədər B. ilə başlamaq 1172 00:59:29,957 --> 00:59:31,290 Istədiyiniz necə uşaqlar onu həll etmək. 1173 00:59:31,290 --> 00:59:34,144 Yəqin ki, daha çox var səmərəli hash funksiyası 1174 00:59:34,144 --> 00:59:36,810 yalnız ilk məktub bir şey, və ki, sizə var 1175 00:59:36,810 --> 00:59:38,190 uşaqlar cür istədiyiniz nə üçün. 1176 00:59:38,190 --> 00:59:40,148 >> Bəlkə əlavə etmək istədiyiniz birlikdə bütün məktublar. 1177 00:59:40,148 --> 00:59:43,410 Bəlkə qəribə şeylər kimi istəyirəm məktublar sayı hesab, 1178 00:59:43,410 --> 00:59:43,970 nə. 1179 00:59:43,970 --> 00:59:45,386 Siz istədiyiniz necə uşaqlar Up. 1180 00:59:45,386 --> 00:59:49,262 Siz əgər bir hash masa etmək istəyirsinizsə tamamilə size, bir trie cəhd etmək istəyirəm. 1181 00:59:49,262 --> 00:59:52,470 Mən vaxtından əvvəl sizi xəbərdar edəcək trie adətən bir az daha çətindir 1182 00:59:52,470 --> 00:59:54,520 bir çox var, çünki yalnız daha göstəricilərinə takip. 1183 00:59:54,520 --> 00:59:55,645 Amma tamamilə uşaqlar üçün. 1184 00:59:55,645 --> 00:59:58,742 Bu daha səmərəli əksər hallarda. 1185 00:59:58,742 --> 01:00:01,450 Siz, həqiqətən, davam edə olmaq istəyirəm Sizin göstəricilər bütün track. 1186 01:00:01,450 --> 01:00:03,850 Like eyni şey Mən burada bunu edir. 1187 01:00:03,850 --> 01:00:06,871 Zaman daxil çalışdığınız bir hash masa dəyərlər və ya silmək, 1188 01:00:06,871 --> 01:00:08,620 Siz etdiyiniz əmin olun həqiqətən takip saxlanılması 1189 01:00:08,620 --> 01:00:11,860 hər şey, çünki olduğu Mən deyiləm əgər həqiqətən asandır 1190 01:00:11,860 --> 01:00:14,727 sözü, Andy kimi daxil çalışır. 1191 01:00:14,727 --> 01:00:16,810 Yalnız bir deyirlər real söz, söz, andy, 1192 01:00:16,810 --> 01:00:19,640 A sözlər nəhəng siyahısına daxil. 1193 01:00:19,640 --> 01:00:22,450 >> Mən yalnız redesign nə varsa bir göstərici səhv oops, 1194 01:00:22,450 --> 01:00:24,940 tam orada gedir Mənim bağlı siyahı istirahət. 1195 01:00:24,940 --> 01:00:26,897 İndi yalnız söz I var andy və indi 1196 01:00:26,897 --> 01:00:29,230 digər sözləri bütün Lüğət itirmişdir. 1197 01:00:29,230 --> 01:00:31,370 Və belə ki, siz əmin etmək istəyirəm Sizin göstəricilər bütün takip 1198 01:00:31,370 --> 01:00:33,661 və ya başqa siz almaq olacaq Sizin kodu böyük problemləri. 1199 01:00:33,661 --> 01:00:35,840 Addım-addım diqqətlə şeyi cəlb edir. 1200 01:00:35,840 --> 01:00:37,870 Bu düşünmək bir çox asan edir. 1201 01:00:37,870 --> 01:00:40,910 >> Və nəhayət, siz etmək istəyirəm Proqram performans test 1202 01:00:40,910 --> 01:00:41,618 böyük board. 1203 01:00:41,618 --> 01:00:43,710 Sizlərin alsaq bir İndi CS50 baxmaq, 1204 01:00:43,710 --> 01:00:45,210 biz böyük board deyirlər nə var. 1205 01:00:45,210 --> 01:00:50,200 Bu sürətli hesab hesabatı CS50 bütün arasında yoxlanılması dəfə yazım 1206 01:00:50,200 --> 01:00:55,720 indi, mən 10 kimi üst hesab dəfə mən onlardan səkkiz heyəti hesab edirəm. 1207 01:00:55,720 --> 01:00:57,960 Biz, həqiqətən, uşaqlar bizi məğlub etmək istəyirik. 1208 01:00:57,960 --> 01:01:00,870 >> Hamımız həyata keçirilməsi üçün çalışdıqlarını mümkün qədər sürətli kodu. 1209 01:01:00,870 --> 01:01:04,880 Biz uşaqlar etiraz üçün cəhd etmək istəyirəm Bizə və hamımız daha sürətli həyata keçirilməsi 1210 01:01:04,880 --> 01:01:05,550 bilərsiniz. 1211 01:01:05,550 --> 01:01:07,970 Və bu həqiqətən biz istəyirik ilk dəfə 1212 01:01:07,970 --> 01:01:12,680 uşaqlar xahiş pset etmək ki, Siz, həqiqətən, nə metodu edə bilərsiniz 1213 01:01:12,680 --> 01:01:13,760 Sən istəyirsən. 1214 01:01:13,760 --> 01:01:17,730 >> Mən həmişə bu daha yaxın edir, demək real həyat həll, sağ? 1215 01:01:17,730 --> 01:01:19,550 Mən hey, mən bunu etmək lazımdır, deyirlər. 1216 01:01:19,550 --> 01:01:21,380 Mənim üçün bu ki, bir proqram qurmaq. 1217 01:01:21,380 --> 01:01:22,630 Lakin istədiyiniz bunu. 1218 01:01:22,630 --> 01:01:24,271 Mən yalnız oruc tutmaq istəyirəm ki, bilirik. 1219 01:01:24,271 --> 01:01:25,770 Bu həftə üçün problem var. 1220 01:01:25,770 --> 01:01:27,531 Siz uşaqlar, gedirik bir vəzifə vermək. 1221 01:01:27,531 --> 01:01:29,030 Biz sizə bir problem vermək olacaq. 1222 01:01:29,030 --> 01:01:31,559 Və sonra bu uşaqlar var tamamilə yalnız anlamaq üçün 1223 01:01:31,559 --> 01:01:34,100 qısa və ən nə səmərəli şəkildə bu həyata keçirmək. 1224 01:01:34,100 --> 01:01:34,600 Evet? 1225 01:01:34,600 --> 01:01:37,476 >> Auditoriya: Biz əgər icazə verilir Daha sürətli yolları tədqiqat istədi 1226 01:01:37,476 --> 01:01:40,821 Biz nə edə, online hash masalar etmək ki, başqasının kodu istinad? 1227 01:01:40,821 --> 01:01:42,070 ANDI PENG: Bəli, tamamilə gözəl. 1228 01:01:42,070 --> 01:01:44,320 Belə ki, uşaqlar oxumaq spec, bir xətt var 1229 01:01:44,320 --> 01:01:48,310 Siz uşaqlar deyir spec hash tədqiqat tamamilə pulsuzdur 1230 01:01:48,310 --> 01:01:51,070 nə bəzi funksiyaları tez hash funksiyaları 1231 01:01:51,070 --> 01:01:54,720 kimi vasitəsilə şeyi run ki, kodu istinad kimi uzun. 1232 01:01:54,720 --> 01:01:57,220 Belə ki, bəzi insanlar artıq sürətli yolları fiqurlu 1233 01:01:57,220 --> 01:02:00,250 sürətli ki, yazım dama edir məlumat saxlanılması yolları. 1234 01:02:00,250 --> 01:02:02,750 Ümumilikdə uşaqlar qədər əgər sağ, yalnız almaq istəyirsiniz? 1235 01:02:02,750 --> 01:02:04,045 Siz səbəb əmin olun. 1236 01:02:04,045 --> 01:02:06,170 problem burada həqiqətən Biz test çalışdığınız 1237 01:02:06,170 --> 01:02:09,750 Siz bilirsiniz ki, əmin edir yol ətrafında göstəricilər. 1238 01:02:09,750 --> 01:02:12,700 Kimi uzaq edə həyata kimi faktiki hash funksiyası 1239 01:02:12,700 --> 01:02:15,070 və kimi ilə gələn riyaziyyat bunu, 1240 01:02:15,070 --> 01:02:17,570 Sizlərin araşdırma nə üsulları online uşaqlar istəyirəm. 1241 01:02:17,570 --> 01:02:17,996 Evet? 1242 01:02:17,996 --> 01:02:19,700 >> Auditoriya: Biz yalnız göstərmək olar [Işitilemez] istifadə edərək? 1243 01:02:19,700 --> 01:02:20,120 >> ANDI PENG: Bəli. 1244 01:02:20,120 --> 01:02:22,328 Siz yalnız Sizin şərhiniz, Siz, oh, kimi göstərmək olar 1245 01:02:22,328 --> 01:02:26,127 Yada alınan yada, yada, hash funksiyası. 1246 01:02:26,127 --> 01:02:27,210 Hər hansı bir sualınız? 1247 01:02:27,210 --> 01:02:29,694 Biz, həqiqətən, breezed Bu gün bölmə vasitəsilə. 1248 01:02:29,694 --> 01:02:31,610 Mən burada olacaq eləcə də suallara cavab. 1249 01:02:31,610 --> 01:02:36,570 >> Həmçinin, dediyim kimi, ofis saat gecə və sabah. 1250 01:02:36,570 --> 01:02:40,307 Bu həftə əslində spec super asan və oxumaq üçün super qısa. 1251 01:02:40,307 --> 01:02:43,140 Mən yalnız bir nəzər alaraq gəlir ki, Bunun tam gəzib. 1252 01:02:43,140 --> 01:02:45,730 >> Və Zamyla həqiqətən siz dolaşır funksiyaları hər vasitəsilə 1253 01:02:45,730 --> 01:02:49,796 Siz həyata keçirilməsi üçün lazımdır, və bu hər şeyi necə çox aydın. 1254 01:02:49,796 --> 01:02:51,920 Just əmin sen etmək göstəricilərinə takip saxlanılması. 1255 01:02:51,920 --> 01:02:53,650 Bu, çox çətin pset edir. 1256 01:02:53,650 --> 01:02:56,744 >> Bu kimi, çünki çətin deyil oh, anlayışlar çox daha çox var 1257 01:02:56,744 --> 01:02:59,160 çətin, və ya öyrənmək lazımdır yol qədər yeni sintaksis 1258 01:02:59,160 --> 01:03:00,650 son pset üçün idi ki,. 1259 01:03:00,650 --> 01:03:03,320 Bu pset çətindir ki, bir çox göstəricilər var, 1260 01:03:03,320 --> 01:03:06,980 və sonra bir çox, çox asandır Siz edə sizin kodu bir səhv var 1261 01:03:06,980 --> 01:03:08,315 ki, səhv olduğu tapmaq üçün. 1262 01:03:08,315 --> 01:03:13,200 >> Və belə tam və sizə irad iman uşaqlar bizim [Işitilemez] döymək etmək 1263 01:03:13,200 --> 01:03:13,700 yazımlar. 1264 01:03:13,700 --> 01:03:16,640 Mən, həqiqətən, heç bir yazılı mina var hələ, amma mina yazmaq haqqında deyiləm. 1265 01:03:16,640 --> 01:03:19,070 Yazılı etdiyiniz zaman sizin, mən mina yazılı olacaq. 1266 01:03:19,070 --> 01:03:21,070 Mən etmək üçün cəhd gedirəm mina sürətli sizin daha. 1267 01:03:21,070 --> 01:03:23,940 Biz sürətli bir olan görəcəksiniz. 1268 01:03:23,940 --> 01:03:27,340 >> Və Bəli, mən bütün görəcəksiniz burada Çərşənbə axşamı günü uşaqlar. 1269 01:03:27,340 --> 01:03:29,510 Mən pset seminar kimi bir növ davam edəcək. 1270 01:03:29,510 --> 01:03:32,640 Bölmələr Bütün bu həftə, pset seminarlar 1271 01:03:32,640 --> 01:03:36,690 Belə ki, uşaqlar imkanları çox var yardım üçün, ofis saat həmişə olduğu kimi, 1272 01:03:36,690 --> 01:03:41,330 və mən, həqiqətən gözləyirik Sizin uşaqlar "bütün kodu oxu. 1273 01:03:41,330 --> 01:03:44,160 Mən burada əgər sınavlar qədər var uşaqlar bu almaq gəlmək istəyirəm. 1274 01:03:44,160 --> 01:03:45,880 Bu hamısıdır. 1275 01:03:45,880 --> 01:03:48,180