1 00:00:00,000 --> 00:00:03,423 >> [Mūzikas atskaņošanai] 2 00:00:03,423 --> 00:00:05,380 3 00:00:05,380 --> 00:00:08,210 >> ANDI PENG: Aicinām 6 nedēļu sadaļā. 4 00:00:08,210 --> 00:00:11,620 Mēs atkāpies no mūsu standarta sadaļa laiks otrdien 5 00:00:11,620 --> 00:00:14,130 Pēcpusdienā uz šo skaisto svētdienas rītā. 6 00:00:14,130 --> 00:00:17,330 Paldies ikvienam, kas pievienojās man šodien, bet nopietni, 7 00:00:17,330 --> 00:00:18,170 kārta aplausi. 8 00:00:18,170 --> 00:00:20,600 >> Tas ir diezgan liels pūles. 9 00:00:20,600 --> 00:00:23,600 Es gandrīz nav pat darīt to up laikā, bet tas bija OK. 10 00:00:23,600 --> 00:00:27,520 Tāpēc es zinu, ka jūs visi tikko veikts to viktorīnas. 11 00:00:27,520 --> 00:00:30,370 Pirmkārt, laipni aicināti Otra puse no tā. 12 00:00:30,370 --> 00:00:32,917 >> Otrkārt, mēs runājam par to. 13 00:00:32,917 --> 00:00:34,000 Mēs runājam par viktorīnas. 14 00:00:34,000 --> 00:00:35,700 Mēs runājam par to, kā jūs darāt šajā klasē. 15 00:00:35,700 --> 00:00:36,550 Jums būs labi. 16 00:00:36,550 --> 00:00:39,080 Man ir jūsu viktorīnas tu beigās šeit, 17 00:00:39,080 --> 00:00:42,120 Tātad, ja jūs guys vēlaties veikt apskatīt to, pilnīgi naudas sodu. 18 00:00:42,120 --> 00:00:46,590 >> Tik ātri, pirms mēs sākam, tad darba kārtība šodien ir šāds. 19 00:00:46,590 --> 00:00:48,430 Kā jūs varat redzēt, mēs esam būtībā ātra šaušana 20 00:00:48,430 --> 00:00:52,120 cauri visai ķekars datu struktūras tiešām, tiešām, tiešām ātri. 21 00:00:52,120 --> 00:00:54,380 Tā kā, piemēram, tas nevar būt super interaktīvs šodien. 22 00:00:54,380 --> 00:00:59,620 Tas būs vienkārši man veida kliegšana lietas, kas jums, un, ja es sajaukt jums, 23 00:00:59,620 --> 00:01:02,680 ja es esmu pārāk ātri, ļaujiet man zināt. 24 00:01:02,680 --> 00:01:05,200 Viņi vienkārši dažādus datus struktūras, un kā daļa 25 00:01:05,200 --> 00:01:07,070 Jūsu PSET par šo nākamajā nedēļā, jūs 26 00:01:07,070 --> 00:01:10,340 tiks lūgts, lai īstenotu vienu no tām, varbūt divas no them-- diviem no tiem 27 00:01:10,340 --> 00:01:12,319 Jūsu PSET. 28 00:01:12,319 --> 00:01:14,610 Labi, tāpēc es esmu tikai gatavojas sākt ar dažiem paziņojumiem. 29 00:01:14,610 --> 00:01:19,070 Mēs iet pār skursteņi un rindas vairāk in dziļums, nekā tas, ko mēs darījām pirms viktorīnas. 30 00:01:19,070 --> 00:01:20,990 Mēs iet pār saistīta uzskaitīt atkal, atkal, 31 00:01:20,990 --> 00:01:23,899 padziļināti, nekā to mums bija pirms viktorīnas. 32 00:01:23,899 --> 00:01:26,440 Un tad mēs runājam par hash galdi, koki un mēģina, kas 33 00:01:26,440 --> 00:01:28,890 visi ir diezgan nepieciešams jūsu PSET. 34 00:01:28,890 --> 00:01:32,925 Un tad mēs iet pār daži noderīgi padomi pset5. 35 00:01:32,925 --> 00:01:37,360 >> Labi, tā viktorīna 0. 36 00:01:37,360 --> 00:01:41,090 Vidējā bija 58%. 37 00:01:41,090 --> 00:01:45,370 Tas bija ļoti zems, un tāpēc jums puiši visi darīja ļoti, ļoti labi saskaņā 38 00:01:45,370 --> 00:01:46,510 ar to. 39 00:01:46,510 --> 00:01:49,970 >> Diezgan daudz, īkšķis ir, ja tu esi ietvaros standartnovirzi vidējo 40 00:01:49,970 --> 00:01:52,990 jo īpaši tāpēc mēs esam mazāk comfy sadaļa, tu esi pilnīgi naudas sodu. 41 00:01:52,990 --> 00:01:54,120 Jūs esat uz pareizā ceļa. 42 00:01:54,120 --> 00:01:55,190 Dzīve ir laba. 43 00:01:55,190 --> 00:01:58,952 >> Es zinu, tas ir biedējošu domāt, ka Man, piemēram, 40% par šo viktorīnu. 44 00:01:58,952 --> 00:02:00,160 Es esmu gatavojas neveiksmei šajā klasē. 45 00:02:00,160 --> 00:02:02,243 Es apsolu jums, jūs neesat gatavojas neveiksmei klasi. 46 00:02:02,243 --> 00:02:03,680 Tu esi pilnīgi naudas sodu. 47 00:02:03,680 --> 00:02:06,850 >> Attiecībā uz tiem no jums, kas ieguva vairāk vidējais, iespaidīgs, iespaidīgs, 48 00:02:06,850 --> 00:02:08,780 piemēram, nopietni labi darīts. 49 00:02:08,780 --> 00:02:09,689 Man ir viņiem ar mani. 50 00:02:09,689 --> 00:02:11,730 Jūtieties brīvi nākt malējos beigās nodaļā. 51 00:02:11,730 --> 00:02:14,520 Let me know, ja Jums ir kāds jautājumi, jautājumi ar tiem. 52 00:02:14,520 --> 00:02:17,204 Ja mēs pievienot savu rezultātu nepareizi, dodiet mums zināt. 53 00:02:17,204 --> 00:02:21,240 >> Labi, tā pset5, tas ir patiešām dīvaini nedēļa Yale tādā ziņā 54 00:02:21,240 --> 00:02:24,240 ka mūsu PSET ir saistīts Trešdienu pusdienlaikā ieskaitot 55 00:02:24,240 --> 00:02:27,317 vēlu dienu, tāpēc tas ir patiesībā Teorētiski dēļ otrdien plkst. 56 00:02:27,317 --> 00:02:29,150 Droši vien neviens pabeigts pie otrdien plkst. 57 00:02:29,150 --> 00:02:30,830 Tas ir pilnīgi naudas sodu. 58 00:02:30,830 --> 00:02:33,700 Mēs ejam, lai būtu darba laiku šovakar kā arī pirmdien naktī. 59 00:02:33,700 --> 00:02:36,810 Un visi no sadaļām šonedēļ faktiski pārvērtās darbnīcām, 60 00:02:36,810 --> 00:02:38,800 lai justies brīvi, lai pop jebkurš sadaļā jūs vēlaties, 61 00:02:38,800 --> 00:02:42,810 un tie būs sava veida mini-PSET darbnīcas palīdzību par to. 62 00:02:42,810 --> 00:02:45,620 Tā kā, piemēram, tas ir tikai daļa kur mēs esam mācību materiālu. 63 00:02:45,620 --> 00:02:49,220 Visas pārējās sadaļas tiks koncentrējoties tikai uz palīdzību par PSET. 64 00:02:49,220 --> 00:02:50,146 Yeah? 65 00:02:50,146 --> 00:02:52,000 >> Mērķauditorija: Kur ir darba laiks? 66 00:02:52,000 --> 00:02:56,120 >> ANDI PENG: Darba laiks tonight-- oh, labs jautājums. 67 00:02:56,120 --> 00:03:00,580 Es domāju, ka darba laiks šovakar ir Teal vai Commons. 68 00:03:00,580 --> 00:03:02,984 Ja jūs pārbaudīt tiešsaistes CS50 un doties uz darba laika, 69 00:03:02,984 --> 00:03:05,650 ir jābūt grafiks, kas stāsta jums, kur visi no tiem ir. 70 00:03:05,650 --> 00:03:07,954 >> Es zinu, nu šovakar vai rīt ir krīklis, 71 00:03:07,954 --> 00:03:10,120 un es domāju, ka mēs varētu būt koptelpas par otras naktī. 72 00:03:10,120 --> 00:03:11,020 ES neesmu pārliecināts. 73 00:03:11,020 --> 00:03:11,700 Labs jautājums. 74 00:03:11,700 --> 00:03:14,430 Pārbaudiet uz CS50. 75 00:03:14,430 --> 00:03:18,780 >> Cool, kādi jautājumi par grafiku tamlīdzīgi trīs dienas nākamais? 76 00:03:18,780 --> 00:03:21,690 Es apsolu jums puiši, piemēram, David teica, tas ir augšā kalnā. 77 00:03:21,690 --> 00:03:23,050 Jūs guys ir gandrīz tur. 78 00:03:23,050 --> 00:03:24,644 Tikai trīs vairāk dienas. 79 00:03:24,644 --> 00:03:26,310 Nokļūt tur, un tad mēs visi nāk uz leju. 80 00:03:26,310 --> 00:03:28,114 Mums būs jauka CS-free pārtraukuma. 81 00:03:28,114 --> 00:03:28,780 Mēs būsim atpakaļ. 82 00:03:28,780 --> 00:03:30,779 Mēs ienirt tīmeklī programmēšana un attīstība, 83 00:03:30,779 --> 00:03:35,150 lietas, kas ir ļoti jautri, salīdzinot ar dažām citām psets. 84 00:03:35,150 --> 00:03:37,974 Un tas būs chill, un mums būs daudz jautrības. 85 00:03:37,974 --> 00:03:38,890 Mums būs vairāk konfektes. 86 00:03:38,890 --> 00:03:39,730 Atvainojiet saldumiņu. 87 00:03:39,730 --> 00:03:40,945 Es aizmirsu konfektes. 88 00:03:40,945 --> 00:03:43,310 Tas bija raupja rīts. 89 00:03:43,310 --> 00:03:46,340 Tātad jums puiši ir gandrīz tur, un es esmu patiesi lepns par jums puiši. 90 00:03:46,340 --> 00:03:49,570 >> Labi, tā skursteņi. 91 00:03:49,570 --> 00:03:53,331 Kurš mīlēja jautājumu par Jack un viņa drēbes uz viktorīnu? 92 00:03:53,331 --> 00:03:53,830 Neviens? 93 00:03:53,830 --> 00:03:56,500 Labi, tas ir jauki. 94 00:03:56,500 --> 00:04:00,200 >> Tātad būtībā, kā jūs varat bilde Jack, šis puisis šeit, 95 00:04:00,200 --> 00:04:03,350 mīl veikt apģērbu no augšējās, 96 00:04:03,350 --> 00:04:05,750 un viņš liek to atpakaļ uz kaudze pēc viņš ir darīts. 97 00:04:05,750 --> 00:04:07,600 Tātad šādā veidā, viņš nekad šķiet, kļūst 98 00:04:07,600 --> 00:04:10,090 uz dibenā kaudze viņa apģērbu. 99 00:04:10,090 --> 00:04:12,600 Tātad šāda veida apraksta pamata datu struktūra 100 00:04:12,600 --> 00:04:16,610 par to, kā kaudze tiek īstenots. 101 00:04:16,610 --> 00:04:20,060 >> Būtībā, domāt par kaudze kā jebkurš kaudze objektu 102 00:04:20,060 --> 00:04:24,900 kur jūs nodot lietas uz augšu, un tad jūs pop tos no augšas. 103 00:04:24,900 --> 00:04:28,600 Tātad LIFO ir akronīms mums patīk lai use-- pēdējais iekšā, pirmais ārā. 104 00:04:28,600 --> 00:04:32,480 Un tā ilgs, lai augšpusē kaudze ir pirmais, kas nāk ārā. 105 00:04:32,480 --> 00:04:34,260 Un tā abi termini mēs vēlētos saistīt 106 00:04:34,260 --> 00:04:36,190 ar to sauc par push un pop. 107 00:04:36,190 --> 00:04:39,790 Kad jūs push kaut uz kaudze, un jūs pop to atpakaļ uz augšu. 108 00:04:39,790 --> 00:04:43,422 >> Un tāpēc es domāju, tas ir sava veida abstrakts jēdziens tiem no jums, 109 00:04:43,422 --> 00:04:45,630 kuri vēlas redzēt, piemēram, faktisko īstenošanu šis 110 00:04:45,630 --> 00:04:46,740 reālajā pasaulē. 111 00:04:46,740 --> 00:04:50,170 Cik daudzi no jums ir uzrakstījis eseju varbūt, piemēram, stundu pirms tas bija saistīts, 112 00:04:50,170 --> 00:04:54,510 un jūs nejauši svītrots milzīgs rieciens no tā, piemēram, nejauši? 113 00:04:54,510 --> 00:04:58,560 Un tad ko darīt kontrole mēs izmantojam, lai nodot to atpakaļ? 114 00:04:58,560 --> 00:05:00,030 Control-Z, jā? 115 00:05:00,030 --> 00:05:03,640 Kontrole-Z, tā daudzums reizes ka Control-Z ir izglāba man dzīvību, 116 00:05:03,640 --> 00:05:08,820 izglāba manu ass, katru reizi kas ir īstenota ar skursteņiem. 117 00:05:08,820 --> 00:05:13,020 >> Būtībā visa informācija tas ir jūsu Word dokumentu, 118 00:05:13,020 --> 00:05:15,080 tas izpaužas uzstājām un popped pēc vēlēšanās. 119 00:05:15,080 --> 00:05:19,460 Un tā būtībā, kad jūs izdzēst kaut ko, jūs pop to atpakaļ uz augšu. 120 00:05:19,460 --> 00:05:22,820 Un tad, ja jums to vajag atpakaļ, jūs push to, kas ir tas, ko Control-C dara. 121 00:05:22,820 --> 00:05:26,770 Un tā reālā pasaule funkcija par to, kā vienkāršas datu struktūras 122 00:05:26,770 --> 00:05:28,690 var palīdzēt ar savu ikdienas dzīvi. 123 00:05:28,690 --> 00:05:31,710 124 00:05:31,710 --> 00:05:40,150 >> Tātad struct ir tā, ka mēs faktiski izveidot kaudze. 125 00:05:40,150 --> 00:05:44,720 Mēs tipa definēt struct, un pēc tam Mēs to saucam kaudze apakšā. 126 00:05:44,720 --> 00:05:47,440 Un ietvaros kaudze, mums ir divi parametri 127 00:05:47,440 --> 00:05:51,580 ka mēs varam būtībā manipulēt, tāpēc mums ir char zvaigžņu stīgas jaudu. 128 00:05:51,580 --> 00:05:55,150 >> Viss, kas tā dara rada masīvs 129 00:05:55,150 --> 00:05:58,835 ka mēs varam saglabāt, ko vien vēlaties ko mēs varam noteikt savas spējas. 130 00:05:58,835 --> 00:06:01,990 Ietilpība ir tikai max summa preces mēs varam nodot šajā masīvā. 131 00:06:01,990 --> 00:06:05,660 int izmērs ir skaitītājs, kas uztur izsekot, cik daudz preces ir šobrīd 132 00:06:05,660 --> 00:06:07,850 kaudze. 133 00:06:07,850 --> 00:06:11,860 Tātad, tad mēs varam sekot līdzi, A, gan cik liels faktiskais kaudze ir, 134 00:06:11,860 --> 00:06:14,850 un, B, cik daudz no šī kaudze mēs piepildīta, jo mēs nevēlamies 135 00:06:14,850 --> 00:06:18,800 pārplūdes par to, kas mūsu kapacitāte ir. 136 00:06:18,800 --> 00:06:24,340 >> Tā, piemēram, šī jaukā Jautājums bija par savu viktorīnā. 137 00:06:24,340 --> 00:06:28,160 Būtībā kā mēs push uz augšu grēdas. 138 00:06:28,160 --> 00:06:28,830 Diezgan vienkārši. 139 00:06:28,830 --> 00:06:30,621 Ja paskatās uz to, mēs staigāt pa šo. 140 00:06:30,621 --> 00:06:32,640 Ja [dzirdams] size-- atcerieties, kad jūs 141 00:06:32,640 --> 00:06:35,300 vēlas piekļūt jebkurš parametrs ietvaros struct, 142 00:06:35,300 --> 00:06:40,320 jums nosaukumu struct.parameter. 143 00:06:40,320 --> 00:06:42,720 >> Šajā gadījumā, s ir nosaukums mūsu kaudze. 144 00:06:42,720 --> 00:06:46,230 Mēs vēlamies, lai piekļūtu izmēru par to, lai mēs to s.size. 145 00:06:46,230 --> 00:06:50,280 Tik ilgi, kamēr tās izmēri ir ne vienāda ar jaudu vai tik ilgi, 146 00:06:50,280 --> 00:06:52,940 jo tas ir mazāk nekā jauda, nu varētu strādāt šeit. 147 00:06:52,940 --> 00:06:57,180 >> Jūs vēlaties, lai piekļūtu iekšpusi Jūsu kaudze, tā s.strings, 148 00:06:57,180 --> 00:07:00,790 un jūs gatavojas nodot, ka jaunu numuru ka jūs vēlaties ievietot tur. 149 00:07:00,790 --> 00:07:05,030 Pieņemsim tikai teikt, mēs vēlamies, lai ievietot int n uz steku, 150 00:07:05,030 --> 00:07:08,905 mēs varētu darīt s.strings, kronšteini, s.size vienāds n. 151 00:07:08,905 --> 00:07:11,030 Tāpēc, ka izmērs ir, ja mēs Pašlaik kaudze 152 00:07:11,030 --> 00:07:14,590 ja mēs spēsim virzīt tā tālāk, mēs vienkārši piekļūt 153 00:07:14,590 --> 00:07:17,370 kur lielums ir, tad Pašreizējais pilnība kaudze, 154 00:07:17,370 --> 00:07:21,729 un mēs push int n uz to. 155 00:07:21,729 --> 00:07:24,770 Un tad mēs gribam, lai pārliecinātos, ka mēs arī palielināšanai lielumu n, 156 00:07:24,770 --> 00:07:27,436 lai mēs varētu sekot mēs esam pievieno papildu lieta kaudze. 157 00:07:27,436 --> 00:07:29,660 Tagad mums ir lielāka izmēra. 158 00:07:29,660 --> 00:07:33,196 Vai tas šeit jēgas everybody, cik loģiski tas darbojas? 159 00:07:33,196 --> 00:07:34,160 Tā bija sava veida ātri. 160 00:07:34,160 --> 00:07:39,535 161 00:07:39,535 --> 00:07:42,160 Mērķauditorija: Vai jūs varat iet pa tad s.stringss.strings [s.size] vēlreiz? 162 00:07:42,160 --> 00:07:45,808 ANDI PENG: Protams, lai to, ko dara s.size šobrīd dod mums? 163 00:07:45,808 --> 00:07:47,440 Mērķauditorija: Tas ir pašreizējais izmērs. 164 00:07:47,440 --> 00:07:50,890 ANDI PENG: Tieši tā, tāpēc pašreizējais rādītājs, ka mūsu izmērs ir, 165 00:07:50,890 --> 00:07:57,780 un tāpēc mēs vēlamies likt jaunu skaitlim ka mēs gribam ievietot s.size. 166 00:07:57,780 --> 00:07:58,760 Vai tas ir jēga? 167 00:07:58,760 --> 00:08:01,110 Jo s.strings, viss, kas ir ir nosaukums masīva. 168 00:08:01,110 --> 00:08:03,510 Viss, kas ir, ir piekļūstot masīvs mūsu struct, 169 00:08:03,510 --> 00:08:06,030 un tāpēc, ja mēs gribam, lai izvietot n minētajā indeksā, 170 00:08:06,030 --> 00:08:09,651 mēs varam tikai piekļūt izmantojot kronšteini 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 >> Labi, pop, es pseudocode to ārā lai jūs puiši, bet līdzīgu koncepciju. 174 00:08:18,916 --> 00:08:19,790 Vai tas ir jēga? 175 00:08:19,790 --> 00:08:22,310 Ja izmērs ir lielāks par nulli, tad jūs 176 00:08:22,310 --> 00:08:25,350 zinu, ka jūs vēlaties veikt kaut ko out jo, ja izmērs nav 177 00:08:25,350 --> 00:08:27,620 lielāks par nulli, tad jūs nav nekā kaudze. 178 00:08:27,620 --> 00:08:29,840 >> Tātad jūs tikai vēlaties izpildīt šis kods, tas var tikai 179 00:08:29,840 --> 00:08:32,320 pop, ja ir kaut kas, lai pop. 180 00:08:32,320 --> 00:08:35,830 Tātad, ja izmērs ir lielāks par 0, mēs mīnus izmērs. 181 00:08:35,830 --> 00:08:40,020 Mēs Samazināt izmēru un pēc tam atgriezties kāds ir iekšā to, jo 182 00:08:40,020 --> 00:08:42,710 ar popping, mēs vēlamies kāds tiek glabāti piekļuve 183 00:08:42,710 --> 00:08:45,694 indeksā no augšējās. 184 00:08:45,694 --> 00:08:46,610 Viss jēga? 185 00:08:46,610 --> 00:08:49,693 Ja es jūs guys rakstīt šo, Vai jūs puiši varētu rakstīt to ārā? 186 00:08:49,693 --> 00:08:52,029 187 00:08:52,029 --> 00:08:53,570 Labi, jūs guys var spēlēt aptuveni ar to. 188 00:08:53,570 --> 00:08:55,252 Neraizējieties, ja Jums nav iegūt to. 189 00:08:55,252 --> 00:08:57,460 Mums nav laika, lai kods tas, kas šodien, jo mēs esam 190 00:08:57,460 --> 00:08:59,959 ieguvuši daudz šo struktūru iet cauri, bet būtībā 191 00:08:59,959 --> 00:09:02,214 pseudocode, ļoti, ļoti līdzīgs virzīt. 192 00:09:02,214 --> 00:09:03,380 Vienkārši sekojiet līdzi loģiku. 193 00:09:03,380 --> 00:09:06,092 Pārliecinieties, ka jūs piekļūt visiem iezīmes jūsu struct pareizi. 194 00:09:06,092 --> 00:09:06,574 Yeah? 195 00:09:06,574 --> 00:09:09,282 >> Mērķauditorija: Vai šie slaidi un Tas viss ir jau šodien-ish? 196 00:09:09,282 --> 00:09:11,586 ANDI PENG: Vienmēr, yep. 197 00:09:11,586 --> 00:09:13,710 Es esmu gatavojas izmēģināt likt šo augšu, piemēram, stundu pēc. 198 00:09:13,710 --> 00:09:16,626 Es e-pastu Dāvidu, David centīsies ielieciet to uz augšu, piemēram, stundu pēc šo. 199 00:09:16,626 --> 00:09:20,040 200 00:09:20,040 --> 00:09:25,470 >> Labi, tā tad mēs pāriet uz šo otru lovely datu struktūra sauc rindā. 201 00:09:25,470 --> 00:09:30,140 Kā jūs guys var redzēt šeit A rinda, par Lielbritānijas starp mums, 202 00:09:30,140 --> 00:09:32,010 viss tas ir ir līnija. 203 00:09:32,010 --> 00:09:34,680 Tātad pretēji tam, ko Jūs domājat, ka kaudze ir, 204 00:09:34,680 --> 00:09:37,750 rinda ir tieši tas, loģiski jūs domājat, ka tas ir. 205 00:09:37,750 --> 00:09:41,914 Tas notika pēc noteikumiem par FIFO, kas ir pirmais iekšā, pirmais ārā. 206 00:09:41,914 --> 00:09:43,705 Ja jūs esat pirmais viena līnija, tu esi 207 00:09:43,705 --> 00:09:46,230 pirmais, kas nāk no līnijas. 208 00:09:46,230 --> 00:09:49,680 >> Tātad, ko mēs vēlētos, lai izsauktu šo ir dequeueing un enqueueing. 209 00:09:49,680 --> 00:09:52,380 Ja mēs vēlamies pievienot kaut ko mūsu rindā, mēs ierindod. 210 00:09:52,380 --> 00:09:55,690 Ja mēs vēlamies, lai dequeue, vai veikt kaut prom, mēs dequeue. 211 00:09:55,690 --> 00:10:03,350 >> Tā pati sajūta, ka mēs esam sava veida radot fiksēta izmēra elementus, kas mums 212 00:10:03,350 --> 00:10:06,500 var uzglabāt dažu lietas, bet mēs varam arī 213 00:10:06,500 --> 00:10:10,100 mainīt, ja mēs esam ievietojot parametri iekšpusē no tiem 214 00:10:10,100 --> 00:10:13,140 pamatojoties uz to tipa funkcionalitāti mēs gribam. 215 00:10:13,140 --> 00:10:16,700 Tātad skursteņi, mēs vēlējāmies pēdējais viens, N, ka pirmais ārā. 216 00:10:16,700 --> 00:10:19,800 Rindas ir, mēs gribam, pirmā lieta, lai būtu pirmā lieta out. 217 00:10:19,800 --> 00:10:22,510 218 00:10:22,510 --> 00:10:26,710 >> Tātad uz struct tipa noteikt, kā jūs varat redzēt, 219 00:10:26,710 --> 00:10:29,470 tas ir mazliet atšķirīgs no tā, ko bija kaudze 220 00:10:29,470 --> 00:10:33,120 jo ne tikai mums ir, lai saglabātu trase, kur lielums šobrīd ir, 221 00:10:33,120 --> 00:10:37,420 mēs arī vēlamies, lai sekotu galvas kā arī kur mēs šobrīd esam. 222 00:10:37,420 --> 00:10:39,580 Tāpēc es domāju, ka tas ir vieglāk ja es izdarīt šo augšu. 223 00:10:39,580 --> 00:10:53,270 Tātad, pieņemsim iedomāties, mēs esam ieguvuši rindā, tāpēc pieņemsim, ka galva ir tepat. 224 00:10:53,270 --> 00:10:55,811 225 00:10:55,811 --> 00:10:58,310 No līnijas vadītājs, pieņemsim tikai teikt, ka tas šobrīd tur, 226 00:10:58,310 --> 00:11:01,809 un mēs vēlamies, lai ievietotu kaut rindā. 227 00:11:01,809 --> 00:11:04,350 Es esmu dodas uz zvanu izmēru būtībā ir tas pats, astes, 228 00:11:04,350 --> 00:11:06,314 beigas kur jūsu rinda ir. 229 00:11:06,314 --> 00:11:07,730 Pieņemsim tikai teikt izmērs ir tepat. 230 00:11:07,730 --> 00:11:14,380 231 00:11:14,380 --> 00:11:18,400 >> Tā kā var reāli ievietot kaut stājas rindā? 232 00:11:18,400 --> 00:11:21,000 233 00:11:21,000 --> 00:11:24,130 Ko indekss mēs vēlamies ievietot kur mēs vēlamies ievietot. 234 00:11:24,130 --> 00:11:29,320 Ja tas ir sākums jūsu rindā un tas ir beigas tā 235 00:11:29,320 --> 00:11:31,860 vai lielums no tā, kur mēs vēlaties pievienot nākamo objektu? 236 00:11:31,860 --> 00:11:32,920 >> Mērķauditorija: [dzirdams] 237 00:11:32,920 --> 00:11:35,920 ANDI PENG: Tieši tā, jūs vēlaties pievienot tā atkarībā esat uzrakstījis to. 238 00:11:35,920 --> 00:11:37,840 Vai nu tas ir tukšs, vai tas ir tukšs. 239 00:11:37,840 --> 00:11:42,630 Tātad jūs vēlaties, lai pievienotu to, iespējams, šeit, jo ja izmērs is-- 240 00:11:42,630 --> 00:11:50,540 ja tie visi ir pilns, jūs vēlaties pievienot to tieši šeit, vai ne? 241 00:11:50,540 --> 00:11:57,150 >> Un tā tas ir, bet ļoti, ļoti vienkāršs, ne gluži vienmēr ir pareizs 242 00:11:57,150 --> 00:12:00,690 jo galvenā atšķirība starp rindā un kaudze 243 00:12:00,690 --> 00:12:04,350 ir tā, ka rinda var faktiski manipulēt 244 00:12:04,350 --> 00:12:06,980 tā, ka galvas izmaiņas atkarībā no tā, kur jūs vēlaties 245 00:12:06,980 --> 00:12:08,650 sākums jūsu kija sākt. 246 00:12:08,650 --> 00:12:11,900 Un kā rezultātā, savu asti ir arī mainīsies. 247 00:12:11,900 --> 00:12:14,770 Un tā to apskatīt šis kods tieši tagad. 248 00:12:14,770 --> 00:12:18,620 Kā jūs guys uzdeva arī izrakstīt uz viktorīnu, Enqueue. 249 00:12:18,620 --> 00:12:22,580 Varbūt mēs runājam caur kāpēc atbilde bija, kas tas bija. 250 00:12:22,580 --> 00:12:26,790 >> Es nevarēju gluži fit šo līniju par vienu, bet būtībā šis gabals koda 251 00:12:26,790 --> 00:12:29,030 būtu vienā līnijā. 252 00:12:29,030 --> 00:12:30,140 Pavadīt, piemēram, 30 sekundes. 253 00:12:30,140 --> 00:12:33,000 Veikt apskatīt, un redzēt, kāpēc tas ir tā, ka tas ir. 254 00:12:33,000 --> 00:12:50,030 255 00:12:50,030 --> 00:12:55,420 >> Ļoti, ļoti līdzīga struktūrai, ļoti, ļoti līdzīga struktūra kā iepriekšējais 256 00:12:55,420 --> 00:12:58,090 kaudze izņemot varbūt viena līnija kodu. 257 00:12:58,090 --> 00:13:01,190 Un ka vienā rindā kodu nosaka funkcionalitāti. 258 00:13:01,190 --> 00:13:03,900 Un tas tiešām diferencē rinda no skursteņiem. 259 00:13:03,900 --> 00:13:18,510 260 00:13:18,510 --> 00:13:22,010 >> Ikviens vēlas pieņemt stab izskaidrot, kāpēc jūs esat 261 00:13:22,010 --> 00:13:24,980 saņēmu šo sarežģīto lieta šeit? 262 00:13:24,980 --> 00:13:27,845 Mēs redzam atgriešanos mūsu brīnišķīgs draugs modulis. 263 00:13:27,845 --> 00:13:31,020 Kā jūs guys drīz nāks atzīt programmēšanā, 264 00:13:31,020 --> 00:13:34,910 gandrīz jebkurā laikā jums ir nepieciešams kaut ko wrap ap kaut ko, 265 00:13:34,910 --> 00:13:36,850 modulis būs veids, kā to izdarīt. 266 00:13:36,850 --> 00:13:40,510 Tātad, zinot, ka tas kāds vēlas mēģināt izskaidrot šo rindiņu kodu? 267 00:13:40,510 --> 00:13:44,060 268 00:13:44,060 --> 00:13:47,507 Jā, visas atbildes akceptēts un laipni. 269 00:13:47,507 --> 00:13:48,840 Mērķauditorija: Vai jūs runājat ar mani? 270 00:13:48,840 --> 00:13:49,506 ANDI PENG: Jā. 271 00:13:49,506 --> 00:13:56,200 Mērķauditorija: Ak, nē sorry. 272 00:13:56,200 --> 00:14:00,250 ANDI PENG: Labi, tāpēc pieņemsim staigāt pa šo kodu. 273 00:14:00,250 --> 00:14:03,642 Tātad, ja jūs mēģināt pievienot kaut uz rindā, 274 00:14:03,642 --> 00:14:08,510 jaukā gadījumā, ja galva notiek būt tieši šeit, tas ir ļoti viegli mums 275 00:14:08,510 --> 00:14:10,960 tikai iet uz beigām ievietot kaut ko, vai ne? 276 00:14:10,960 --> 00:14:14,690 Bet viss punkts rindā ir ka galva faktiski var dinamiski 277 00:14:14,690 --> 00:14:17,280 mainīties atkarībā no tā, kur mēs gribu sākums mūsu taustiņu, lai būtu, 278 00:14:17,280 --> 00:14:19,880 un kā tāda, astes ir arī mainīsies. 279 00:14:19,880 --> 00:14:31,100 >> Un tā iedomāties, ka šis nebija rindā, bet gan tas bija rinda. 280 00:14:31,100 --> 00:14:37,900 281 00:14:37,900 --> 00:14:39,330 Pieņemsim, ka galva ir tepat. 282 00:14:39,330 --> 00:14:54,900 283 00:14:54,900 --> 00:14:56,980 Teiksim mūsu rinda izskatījās šādi. 284 00:14:56,980 --> 00:15:00,190 Ja mēs vēlējāmies novirzīt kur sākums līnijas ir, 285 00:15:00,190 --> 00:15:03,400 teiksim mēs pārvietoti galvu Tādā veidā un izmēri šeit. 286 00:15:03,400 --> 00:15:07,100 >> Tagad mēs vēlamies pievienot kaut ko šī rinda, bet, kā jūs guys var redzēt, 287 00:15:07,100 --> 00:15:11,150 tas nav tik vienkārši, kā tikai pievienot visu, kas pēc izmēra 288 00:15:11,150 --> 00:15:13,630 jo tad mēs izsīkšanai robežas mūsu faktiskās masīva. 289 00:15:13,630 --> 00:15:16,190 Kur mēs gribam patiešām pievienot šeit. 290 00:15:16,190 --> 00:15:18,610 Tas ir skaistums rindā ir tas, ka pie mums, tas vizuāli 291 00:15:18,610 --> 00:15:22,380 izskatās, ka līnija iet kā šis, bet, kad saglabāti datu struktūras, 292 00:15:22,380 --> 00:15:29,370 Viņi to kā, piemēram, ciklu. 293 00:15:29,370 --> 00:15:32,360 Tā veida wraps ap uz priekšu, tādā pašā veidā 294 00:15:32,360 --> 00:15:34,780 ka līnija var arī wrap apkārt atkarībā kur jums 295 00:15:34,780 --> 00:15:36,279 gribu rindas sākumā būt. 296 00:15:36,279 --> 00:15:38,630 Un tāpēc, ja mēs ņemam skatīties uz leju šeit, pieņemsim 297 00:15:38,630 --> 00:15:40,880 teikt, mēs vēlējāmies, lai izveidotu funkcija sauc Enqueue. 298 00:15:40,880 --> 00:15:43,980 Mēs vēlējāmies, lai pievienotu int n vērā, ka q. 299 00:15:43,980 --> 00:15:49,250 Ja q.size q-- mēs saucam, ka mūsu datiem structure-- ja mūsu queue.size nav 300 00:15:49,250 --> 00:15:52,520 vienāda ar jaudu vai ja tas ir mazāk nekā jauda, 301 00:15:52,520 --> 00:15:55,120 q.strings ir masīvs mūsu q. 302 00:15:55,120 --> 00:15:58,380 Mēs ejam, lai uzstādītu kas vienāds ar q.heads, 303 00:15:58,380 --> 00:16:02,730 kas ir tepat, plus q.size modulis ar jaudu, kas 304 00:16:02,730 --> 00:16:04,290 aplauzt mums atpakaļ šeit apkārt. 305 00:16:04,290 --> 00:16:08,040 >> Tātad šajā piemērā, indeksa no galvas ir 1, vai ne? 306 00:16:08,040 --> 00:16:11,480 No lieluma indekss ir 0, 1, 2, 3, 4. 307 00:16:11,480 --> 00:16:19,500 Tātad, mēs varam darīt 1 plus 4 modulis ar mūsu spējas, kas ir 5. 308 00:16:19,500 --> 00:16:20,920 Ko tas dod mums? 309 00:16:20,920 --> 00:16:23,270 Kas ir indekss, kas nāk no šī? 310 00:16:23,270 --> 00:16:24,080 >> Mērķauditorija: 0. 311 00:16:24,080 --> 00:16:27,870 >> ANDI PENG: 0, kas notiek, ir tepat, 312 00:16:27,870 --> 00:16:30,640 un tāpēc mēs vēlamies, lai varētu ievietot tieši šeit. 313 00:16:30,640 --> 00:16:34,730 Un tā šis vienādojums šeit veida par vienkārši darbojas ar jebkuru numuru 314 00:16:34,730 --> 00:16:36,750 atkarībā no tā, kur jūsu galvas un jūsu izmērs ir. 315 00:16:36,750 --> 00:16:38,541 Ja jūs zināt, ko tie lietas ir, jūs zināt 316 00:16:38,541 --> 00:16:43,170 tieši tur, kur vēlaties ievietot kāds ir pēc jūsu rindā. 317 00:16:43,170 --> 00:16:44,640 Vai tas ir jēga, lai visiem? 318 00:16:44,640 --> 00:16:48,560 >> Es zinu veida smadzenēm teaser jo īpaši tāpēc šis 319 00:16:48,560 --> 00:16:50,512 nāca seku jūsu viktorīnas. 320 00:16:50,512 --> 00:16:52,220 Bet, cerams, visi tagad var saprast 321 00:16:52,220 --> 00:16:57,800 kāpēc šis risinājums vai šis funkcija ir tā, ka tā ir. 322 00:16:57,800 --> 00:16:59,840 Ikviens mazliet skaidrs par šo? 323 00:16:59,840 --> 00:17:03,471 324 00:17:03,471 --> 00:17:03,970 LABI. 325 00:17:03,970 --> 00:17:07,109 326 00:17:07,109 --> 00:17:09,970 >> Un tā nu, ja jums gribēja dequeue, šis 327 00:17:09,970 --> 00:17:15,240 ir, ja mūsu galva būtu novirzot jo, ja mēs būtu dequeue, 328 00:17:15,240 --> 00:17:17,030 mēs neņemiet nost beigas q. 329 00:17:17,030 --> 00:17:19,130 Mēs vēlamies pacelties galvas, vai ne? 330 00:17:19,130 --> 00:17:24,260 Tātad, kā rezultātā vadītājs gatavojas mainīt, un tas ir iemesls, kāpēc, kad jūs ierindod, 331 00:17:24,260 --> 00:17:26,800 tev sekot kur jūsu galvas un jūsu izmērs 332 00:17:26,800 --> 00:17:29,450 ir, lai varētu ievietot pareizajā stāvoklī. 333 00:17:29,450 --> 00:17:32,740 >> Un tad, kad jūs dequeue, Es arī pseudocode to ārā. 334 00:17:32,740 --> 00:17:35,480 Jūtieties brīvi, ja vēlaties mēģināt kodēšanas šo out. 335 00:17:35,480 --> 00:17:36,980 Jūs vēlaties, lai pārvietotu galvu, labi? 336 00:17:36,980 --> 00:17:39,320 Ja es gribēju dequeue, I varētu pārvietot galvu. 337 00:17:39,320 --> 00:17:40,800 Tas būtu galva. 338 00:17:40,800 --> 00:17:45,617 >> Un mūsu pašreizējais izmērs būtu atņemt, jo mēs vairs 339 00:17:45,617 --> 00:17:46,950 ir četri elementi masīva. 340 00:17:46,950 --> 00:17:51,370 Mums ir tikai trīs, un tad mēs gribam atgriezties kāds tika saglabāta iekšā 341 00:17:51,370 --> 00:17:56,260 no galvas, jo mēs vēlamies, lai šī vērtība, kas tik ļoti līdzīgs kaudze. 342 00:17:56,260 --> 00:17:58,010 Tikai jūs lietojat no citā vietā, 343 00:17:58,010 --> 00:18:01,770 un jums ir pārdalīt savu rādītāju uz citu vietu, kā rezultātā. 344 00:18:01,770 --> 00:18:03,890 Loģiski, visi seko? 345 00:18:03,890 --> 00:18:05,690 Liels. 346 00:18:05,690 --> 00:18:10,156 >> Labi, tāpēc mēs esam gatavojas runāt mazliet dziļāk par saistītiem sarakstiem 347 00:18:10,156 --> 00:18:13,280 jo tie būs ļoti, ļoti vērtīgs Jums gaitā šīs nedēļas 348 00:18:13,280 --> 00:18:14,964 psets. 349 00:18:14,964 --> 00:18:17,130 Saistītās saraksti, kā jūs puiši var atcerēties, visi viņi ir 350 00:18:17,130 --> 00:18:22,570 Ir mezgli, kas ir mezgli dažu vērtības gan vērtības un rādītājs 351 00:18:22,570 --> 00:18:26,290 kas ir saistīti kopā šie norādes. 352 00:18:26,290 --> 00:18:29,880 Un tā struktūrai par to, kā mēs izveidot mezglu šeit ir mums 353 00:18:29,880 --> 00:18:33,569 ir int n, kas ir neatkarīgi vērtība veikala vai string n 354 00:18:33,569 --> 00:18:35,610 vai kāds jūs vēlaties to sauc, tad char zvaigzne n. 355 00:18:35,610 --> 00:18:41,482 Struct mezglā zvaigzne, kas ir rādītājs ka jūs vēlaties, lai būtu katrā mezglā, 356 00:18:41,482 --> 00:18:43,690 Jums nāksies ka rādītājs norāda uz nākamo. 357 00:18:43,690 --> 00:18:48,207 358 00:18:48,207 --> 00:18:50,040 Jums ir galva par saistītu sarakstu, kas ir 359 00:18:50,040 --> 00:18:53,140 gatavojas norādīt uz pārējo vērtībām tā tālāk, un tā tālāk 360 00:18:53,140 --> 00:18:55,290 kamēr jūs beidzot beigs. 361 00:18:55,290 --> 00:18:58,040 Un tas pēdējais mezgls ir tikai gatavojas nav rādītājs. 362 00:18:58,040 --> 00:18:59,952 Tas notiek, lai norādītu uz null, un tas ir tad, kad 363 00:18:59,952 --> 00:19:01,910 jūs zināt, jūs esat hit beigas jūsu saistīts saraksta 364 00:19:01,910 --> 00:19:04,076 ir tad, kad jūsu pēdējā rādītājs nenorāda uz neko. 365 00:19:04,076 --> 00:19:06,670 366 00:19:06,670 --> 00:19:10,990 >> Tāpēc mēs esam gatavojas iet mazliet vairāk dziļums par to, kā viens, iespējams, varētu 367 00:19:10,990 --> 00:19:12,400 meklēt saistīts sarakstu. 368 00:19:12,400 --> 00:19:15,460 Atcerieties, kādi ir daži no trūkumi, kas saistīti saraksti 369 00:19:15,460 --> 00:19:19,340 verses masīvu par meklējumiem. 370 00:19:19,340 --> 00:19:22,565 Masīvs jūs varat bināro meklēšanu, bet kāpēc tu nevari darīt, ka saistītajā sarakstā? 371 00:19:22,565 --> 00:19:26,834 372 00:19:26,834 --> 00:19:30,320 >> Mērķauditorija: Tāpēc, ka viņi visi ir saistīti, bet jums nav gluži zināt, kur 373 00:19:30,320 --> 00:19:31,330 [Dzirdams]. 374 00:19:31,330 --> 00:19:34,600 >> ANDI PENG: Jā, tieši tāpēc atcerieties ka mirdzums masīva 375 00:19:34,600 --> 00:19:37,190 bija tas, ka mums bija brīvpiekļuves atmiņa, kur 376 00:19:37,190 --> 00:19:41,580 ja es gribēju vērtību no indeksa seši, es varētu vienkārši pateikt indekss sešas, 377 00:19:41,580 --> 00:19:42,407 dod man šo vērtību. 378 00:19:42,407 --> 00:19:45,240 Un tas ir tāpēc, ka bloki ir sakārtoti in pieguļošajā telpā atmiņas 379 00:19:45,240 --> 00:19:48,020 vienā vietā, bet veida saistītu sarakstu 380 00:19:48,020 --> 00:19:52,820 ir nejauši mijas visapkārt, un vienīgais veids, kā jūs varat atrast vienu 381 00:19:52,820 --> 00:19:56,890 ir ar rādītāju, kas stāsta jums adrese, kur, ka nākamajā mezgls ir. 382 00:19:56,890 --> 00:20:00,290 >> Un tā kā rezultātā, vienīgais veids meklēt, izmantojot saistītu sarakstu 383 00:20:00,290 --> 00:20:01,560 ir lineārs meklēšanu. 384 00:20:01,560 --> 00:20:05,890 Jo man nav precīzi zināt, kur 12th vērtība saistīta sarakstā ir, 385 00:20:05,890 --> 00:20:08,780 Man ir, lai šķērsotu veselumu Minētās saistīts saraksta vienu 386 00:20:08,780 --> 00:20:12,450 ar vienu no galvas uz pirmo mezglu, ar otro mezglu, uz trešo mezglu, 387 00:20:12,450 --> 00:20:17,690 galam, līdz es beidzot nokļūt kur šis mezgls es meklēju ir. 388 00:20:17,690 --> 00:20:22,110 Un tā šajā ziņā, meklēt uz saistītā sarakstā vienmēr n. 389 00:20:22,110 --> 00:20:23,040 Tas vienmēr n. 390 00:20:23,040 --> 00:20:25,690 Tas vienmēr ir lineārā laika. 391 00:20:25,690 --> 00:20:28,470 >> Un tā kods, kurā mēs īstenotu šo, un tas 392 00:20:28,470 --> 00:20:32,620 ir mazliet jauna jums puiši, jo jūs puiši nav īsti runājuši par vai kādreiz 393 00:20:32,620 --> 00:20:35,000 redzējis norādes Kā pārlūkot norādes, 394 00:20:35,000 --> 00:20:37,670 tāpēc mēs staigāt pa Tas ir ļoti, ļoti lēni. 395 00:20:37,670 --> 00:20:40,200 Tātad bool meklēt, pa labi, Iedomāsimies mēs gribam 396 00:20:40,200 --> 00:20:42,820 lai izveidotu funkciju sauc meklēšana, kas atgriež patiess 397 00:20:42,820 --> 00:20:46,820 ja jums atrast vērtību iekšpusē saistīts sarakstā, un tas atgriežas viltus citādi. 398 00:20:46,820 --> 00:20:50,030 Mezglu zvaigzne saraksts ir Pašlaik tikai rādītājs 399 00:20:50,030 --> 00:20:52,960 uz pirmo punktu savā saistīts sarakstā. 400 00:20:52,960 --> 00:20:56,700 int n ir vērtība, ka jūs esat meklē šajā sarakstā. 401 00:20:56,700 --> 00:20:58,770 >> Tātad mezgls zvaigzne rādītājs ir vienāds ar sarakstu. 402 00:20:58,770 --> 00:21:00,970 Tas nozīmē, ka mēs esam nosakot un radot rādītāju 403 00:21:00,970 --> 00:21:03,592 uz šo pirmo mezglu iekšpusē saraksta. 404 00:21:03,592 --> 00:21:04,300 Ikvienam ar mani? 405 00:21:04,300 --> 00:21:06,530 Tātad, ja mēs iet atpakaļ šeit, es būtu 406 00:21:06,530 --> 00:21:13,850 inicializēts rādītāju, kas norāda uz vadītājs kāds šis saraksts ir. 407 00:21:13,850 --> 00:21:18,600 >> Un tad, kad jums uz leju šeit, kamēr rādītājs nav vienāds null, 408 00:21:18,600 --> 00:21:22,160 tā ka ir cilpa, kurā mēs esam būs pēc tam šķērso 409 00:21:22,160 --> 00:21:25,940 pārējie mūsu sarakstā, jo to, ko notiek, ja rādītājs ir vienāds null? 410 00:21:25,940 --> 00:21:27,550 Mēs zinām, ka mēs have-- 411 00:21:27,550 --> 00:21:28,450 >> Mērķauditorija: [dzirdams] 412 00:21:28,450 --> 00:21:31,491 >> ANDI PENG: Tieši tā, tāpēc mēs zinām, ka mēs esam sasnieguši saraksta, vai ne? 413 00:21:31,491 --> 00:21:34,470 Ja jūs iet atpakaļ šeit, katrs mezgls būtu vērsta uz citu mezglu 414 00:21:34,470 --> 00:21:36,550 un tā tālāk, un tā tālāk līdz jūs hit beidzot 415 00:21:36,550 --> 00:21:41,589 aste jūsu saistīta saraksta kas ir rādītājs, ka tikai 416 00:21:41,589 --> 00:21:43,130 neliecina visur, izņemot nē. 417 00:21:43,130 --> 00:21:47,510 Un lai jūs būtībā zināt, ka Jūsu saraksts joprojām ir tur augšā 418 00:21:47,510 --> 00:21:50,900 līdz rādītājs nav vienāds null jo, kad tas ir vienāds null, 419 00:21:50,900 --> 00:21:53,310 jūs zināt, ka tur ir ne vairāk sīkumi. 420 00:21:53,310 --> 00:21:56,930 >> Tā, ka ir cilpa, kurā mēs esam nāksies faktisko meklēšanu. 421 00:21:56,930 --> 00:22:01,690 Un, ja pointer-- jūs redzat šāda veida bultiņas funkcijas tur? 422 00:22:01,690 --> 00:22:06,930 Tātad, ja rādītāja punktiem līdz n, ja rādītājs pie n ir vienāds vienāds N, 423 00:22:06,930 --> 00:22:09,180 lai tas nozīmē, ka tad, ja rādītājs, ka tu esi 424 00:22:09,180 --> 00:22:13,420 meklē uz beigās katrs mezgls ir faktiski vienāds ar vērtību 425 00:22:13,420 --> 00:22:15,990 jūs meklējat, tad Jūs vēlaties, lai atgrieztos taisnība. 426 00:22:15,990 --> 00:22:19,280 Vārdu sakot, ja jūs esat ar mezglu, kas ir vērtība, ka jūs meklējat, 427 00:22:19,280 --> 00:22:23,550 jūs zināt, ka jūs esat bijis spējīgs veiksmīgi meklēt. 428 00:22:23,550 --> 00:22:27,150 >> Pretējā gadījumā jūs vēlaties iestatīt Jūsu rādītājs uz nākamo mezglu. 429 00:22:27,150 --> 00:22:28,850 Tas ir tas, ko tas līnija šeit dara. 430 00:22:28,850 --> 00:22:31,750 Pointer vienāds rādītāju nākamo. 431 00:22:31,750 --> 00:22:33,360 Ikviens redzēt, kā tas strādā? 432 00:22:33,360 --> 00:22:36,580 >> Un būtībā jūs gatavojas vienkārši traversa visu attiecīgā saraksta 433 00:22:36,580 --> 00:22:41,920 atiestatīt savu rādītāju katru reizi līdz jūs beidzot hit saraksta beigās. 434 00:22:41,920 --> 00:22:45,030 Un jūs zināt, ka nav vairāk mezglus meklēt, izmantojot, 435 00:22:45,030 --> 00:22:47,999 un tad jūs varat atgriezties viltus jo jūs zināt, ka, ak, labi, 436 00:22:47,999 --> 00:22:50,540 ja es esmu bijusi iespēja meklēt caur kopumā saraksta. 437 00:22:50,540 --> 00:22:54,530 Ja šajā piemērā, ja es gribēju meklēt vērtību 10, 438 00:22:54,530 --> 00:22:57,250 un es sāku pie galvas, un Es meklēju visu ceļu uz leju, 439 00:22:57,250 --> 00:23:00,550 un es beidzot saņēmu to, kas rādītājs, kas norāda uz null, 440 00:23:00,550 --> 00:23:04,415 Es zinu, ka, crap, es domāju, 10 nav Šis saraksts, jo es nevarēju atrast. 441 00:23:04,415 --> 00:23:06,520 Un Es beigās saraksta. 442 00:23:06,520 --> 00:23:11,040 Un tādā gadījumā jūs zināt Es esmu gatavojas atgriezties viltus. 443 00:23:11,040 --> 00:23:12,900 >> Pieņemsim, ka mērcēt par mazliet. 444 00:23:12,900 --> 00:23:17,350 Tas būs diezgan svarīgi, lai jūsu PSET. 445 00:23:17,350 --> 00:23:21,140 No tā loģika ir ļoti vienkārša, varbūt sintaktiski tikai to īsteno. 446 00:23:21,140 --> 00:23:23,365 Jūs puiši vēlas, lai pārliecināts, ka jūs saprotat. 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 >> Labi, tā kā mēs būtu Ievietojot mezglus, pa labi, 450 00:23:32,560 --> 00:23:35,380 par sarakstā, jo atceros kādi ir kāda no ieguvumiem 451 00:23:35,380 --> 00:23:39,230 , kam ir saistīts sarakstu versus masīvs ziņā uzglabāšanas? 452 00:23:39,230 --> 00:23:41,110 >> Mērķauditorija: Tas ir dinamisks, tāpēc ir vieglāk, kuri paredzēti, 453 00:23:41,110 --> 00:23:43,180 >> ANDI PENG: Tieši tā, tāpēc tas ir dinamisks, kas 454 00:23:43,180 --> 00:23:46,880 nozīmē, ka tas var paplašināt un sarauties atkarībā no lietotāja vajadzībām. 455 00:23:46,880 --> 00:23:56,570 Un tā, šajā ziņā mums nav vajadzīga tērēt nevajadzīgu atmiņu, jo I 456 00:23:56,570 --> 00:24:00,850 ja es nezinu, cik daudz vērtības es gribu uz veikalu, tas nav jēgas par mani 457 00:24:00,850 --> 00:24:04,310 izveidot masīvu, jo ja es gribu saglabāt 10 vērtības 458 00:24:04,310 --> 00:24:08,380 un es izveidot masīvu 1000, kas ir daudz izšķērdēta atmiņas, kas atvēlēts. 459 00:24:08,380 --> 00:24:11,180 Tieši tāpēc mēs vēlamies izmantot saistīta saraksts, lai varētu dinamiski 460 00:24:11,180 --> 00:24:13,860 mainīt vai sarauties mūsu izmēru. 461 00:24:13,860 --> 00:24:17,040 >> Un tā, kas padara ievietošanu mazliet sarežģītāka. 462 00:24:17,040 --> 00:24:20,810 Tā kā mēs nevaram nejauši piekļūt elementus tā, ka mēs no masīva. 463 00:24:20,810 --> 00:24:24,270 Ja es gribu, lai ievietotu elements uz septīto indeksu, 464 00:24:24,270 --> 00:24:26,930 Es vienkārši var ievietot to uz septīto indeksā. 465 00:24:26,930 --> 00:24:30,020 Uz saistīta sarakstā, tā nav diezgan strādāt tikpat viegli, 466 00:24:30,020 --> 00:24:34,947 un tāpēc, ja mēs vēlējāmies, lai ievietotu viens šeit saistītajā sarakstā, 467 00:24:34,947 --> 00:24:36,280 vizuāli, tas ir ļoti viegli redzēt. 468 00:24:36,280 --> 00:24:39,363 Mēs vienkārši vēlamies, lai ievietotu to turpat, pa labi sākumā saraksta, 469 00:24:39,363 --> 00:24:40,840 uzreiz pēc galvas. 470 00:24:40,840 --> 00:24:44,579 >> Taču veids, kādā mums ir pārdalīt tad norādes ir nedaudz spirālveida 471 00:24:44,579 --> 00:24:47,620 vai, loģiski, tas ir jēga, bet Jūs vēlaties pārliecināties, ka jums ir tas 472 00:24:47,620 --> 00:24:50,250 līdz galam uz leju, jo pēdējā lieta, ko vēlaties 473 00:24:50,250 --> 00:24:52,990 ir pārdalīt rādītāju tā, ka mēs darām šeit. 474 00:24:52,990 --> 00:24:58,170 Ja jums dereference Pointer no galvas līdz 1, 475 00:24:58,170 --> 00:25:01,086 tad visi pēkšņi pārējā jūsu saistīts saraksta 476 00:25:01,086 --> 00:25:04,680 tiek zaudēti, jo jums nav faktiski izveidoja pagaidu neko. 477 00:25:04,680 --> 00:25:06,220 Tas ir norādīja uz 2. 478 00:25:06,220 --> 00:25:10,080 Ja jūs pārdalīt rādītāju, tad pārējā savu sarakstu ir pilnīgi zaudēta. 479 00:25:10,080 --> 00:25:13,310 Tātad jūs vēlaties būt ļoti, ļoti uzmanīgiem šeit 480 00:25:13,310 --> 00:25:17,010 vispirms Uzdot rādītājs no Kāds jums 481 00:25:17,010 --> 00:25:20,150 vēlas ievietot kur jūs vēlaties, un tad jūs 482 00:25:20,150 --> 00:25:22,710 var dereference pārējo savu sarakstu. 483 00:25:22,710 --> 00:25:25,250 >> Tātad tas attiecas uz kur jūs cenšaties ievietot. 484 00:25:25,250 --> 00:25:27,520 Ja vēlaties ievietot pie galvu, ja jūs vēlaties, lai atbildētu šeit, 485 00:25:27,520 --> 00:25:29,455 ja jūs vēlaties, lai ievietotu tajā beigas, labi, beigas es 486 00:25:29,455 --> 00:25:30,910 domāju, jūs vienkārši nav rādītājs, bet tu 487 00:25:30,910 --> 00:25:33,830 vēlaties pārliecināties, ka jums nav zaudēt pārējo savu sarakstu. 488 00:25:33,830 --> 00:25:36,640 Jūs vienmēr vēlaties pārliecināties savu jauno mezgls ir vērsta 489 00:25:36,640 --> 00:25:39,330 uz ko jūs vēlas ievietot, 490 00:25:39,330 --> 00:25:42,170 un tad jūs varat pievienot ķēžu on. 491 00:25:42,170 --> 00:25:43,330 Ikvienam skaidrs? 492 00:25:43,330 --> 00:25:45,427 >> Tas būs viena no reālām problēmām. 493 00:25:45,427 --> 00:25:48,010 Viens no galvenajiem jautājumiem Jums nāksies uz jūsu PSET 494 00:25:48,010 --> 00:25:51,340 ir tas, ka jūs gatavojas izmēģināt, lai izveidotu saistītais sarakstu un ievietot lietas 495 00:25:51,340 --> 00:25:53,340 bet tad tikai zaudēt pārējā jūsu saistīta saraksta. 496 00:25:53,340 --> 00:25:54,900 Un jūs esat būs, piemēram, es nezinu, kāpēc tas notiek? 497 00:25:54,900 --> 00:25:58,040 Un tas ir sāpes iet cauri un meklēt visas savas norādes. 498 00:25:58,040 --> 00:26:02,100 >> Un es garantija jums par šo PSET, rakstīšanas un zīmēšanas šos mezglus out 499 00:26:02,100 --> 00:26:03,344 būs ļoti, ļoti noderīga. 500 00:26:03,344 --> 00:26:06,010 Tātad jūs varat pilnībā izsekot no tā, kur visi jūsu norādes ir, 501 00:26:06,010 --> 00:26:08,540 kas notiek nepareizi, kur visi jūsu mezgli ir, 502 00:26:08,540 --> 00:26:12,660 to, kas jums jādara, lai piekļūtu vai ievietot vai dzēst vai kādu no tiem. 503 00:26:12,660 --> 00:26:14,550 Ikviens labi ar to? 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 >> Tātad, ja mēs vēlējāmies apskatīt kodu? 507 00:26:22,600 --> 00:26:24,470 Ak, es nezinu, vai mēs var redzēt the-- OK, lai 508 00:26:24,470 --> 00:26:27,940 augšpusē galā tas ir, ir funkcija nosaukts kurtuve, kur mēs gribam 509 00:26:27,940 --> 00:26:31,365 ievietot int n uz saistīts sarakstā. 510 00:26:31,365 --> 00:26:32,740 Mēs ejam, lai iet caur šo. 511 00:26:32,740 --> 00:26:34,770 Tas ir daudz kodu, daudz jaunu sintaksi. 512 00:26:34,770 --> 00:26:36,220 Mēs būsim OK. 513 00:26:36,220 --> 00:26:39,120 >> Tātad augšā, kad Mēs vēlamies, lai radītu kaut ko 514 00:26:39,120 --> 00:26:42,380 Ko mums darīt, it īpaši, ja jums gribu to nedrīkst glabāt uz skursteņa 515 00:26:42,380 --> 00:26:43,920 bet kaudzes? 516 00:26:43,920 --> 00:26:45,460 Mēs ejam uz malloc, vai ne? 517 00:26:45,460 --> 00:26:48,240 Tātad mēs spēsim izveidot rādītāju. 518 00:26:48,240 --> 00:26:52,074 Mezglā, rādītājs, jauni Vienāds malloc izmēru mezglu 519 00:26:52,074 --> 00:26:53,740 jo mēs gribam, ka mezglā jāizveido. 520 00:26:53,740 --> 00:26:56,720 Mēs vēlamies summu Atmiņas ka mezgls aizņem 521 00:26:56,720 --> 00:26:59,300 plāno piešķirt par izveide jaunu mezglu. 522 00:26:59,300 --> 00:27:02,270 >> Un tad mēs ejam, lai pārbaudītu to redzēt, ja jaunie vienlīdzīgi vienāds null. 523 00:27:02,270 --> 00:27:03,370 Atcerieties, ko mēs teicām? 524 00:27:03,370 --> 00:27:06,470 Lai ko jūs malloc, Ko ir jūs vienmēr darīt? 525 00:27:06,470 --> 00:27:09,490 Jums vienmēr pārbaudiet, lai redzētu vai vai nav kas ir nulle. 526 00:27:09,490 --> 00:27:13,620 >> Piemēram, ja darba sistēma bija pilnīgi pilna, 527 00:27:13,620 --> 00:27:17,060 ja jums bija ne vairāk atmiņu viss un jūs mēģināt malloc, 528 00:27:17,060 --> 00:27:18,410 tas varētu atgriezties null jums. 529 00:27:18,410 --> 00:27:21,094 Un tā, ja jūs mēģināt to izmantot kad tas tika norādot uz null, 530 00:27:21,094 --> 00:27:23,260 Jūs neesat gatavojas spējīgs piekļūt šai informācijai. 531 00:27:23,260 --> 00:27:27,010 Un tā kā tādu, mēs vēlējāmies, lai pārliecināts, ka ikreiz, kad esat mallocing, 532 00:27:27,010 --> 00:27:30,500 jūs vienmēr pārbaudi, lai noskaidrotu, vai ka atmiņa dota jums ir nulle. 533 00:27:30,500 --> 00:27:33,670 Un, ja tā nav, tad mēs varam virzīties uz ar pārējo mūsu kodu. 534 00:27:33,670 --> 00:27:36,140 >> Tātad mēs ejam sāktu jaunu mezglu. 535 00:27:36,140 --> 00:27:39,050 Mēs darīsim jaunu n ir vienāds ar n. 536 00:27:39,050 --> 00:27:42,390 Un tad mēs esam gatavojas darīt noteikt jaunu rādītāju par jauno 537 00:27:42,390 --> 00:27:46,900 uz nulli, jo tieši tagad mums nav gribu kaut ko, lai tā norādītu uz. 538 00:27:46,900 --> 00:27:48,755 Mums nav ne jausmas, kur tas gatavojas nodot jums, 539 00:27:48,755 --> 00:27:50,630 un tad, ja mēs gribam, lai ievietojiet to pie galvas, 540 00:27:50,630 --> 00:27:53,820 tad mēs varam pārdalīt rādītājs uz galvas. 541 00:27:53,820 --> 00:27:58,530 Vai visi sekot loģikai no tā, kur tas notiek? 542 00:27:58,530 --> 00:28:02,502 >> Visi mēs darām, ir izveidot jaunu mezglu, nosakot rādītāju null, 543 00:28:02,502 --> 00:28:04,210 un pēc tam no jauna piešķirot tas uz galvas, ja mēs 544 00:28:04,210 --> 00:28:06,320 zinu, ka mēs gribam, lai ievietotu to pie galvas. 545 00:28:06,320 --> 00:28:09,420 Un tad galva gatavojas norāda uz šī jaunā mezglā. 546 00:28:09,420 --> 00:28:11,060 Ikvienam OK ar šo? 547 00:28:11,060 --> 00:28:12,380 >> Tātad, tas ir divpakāpju process. 548 00:28:12,380 --> 00:28:14,760 Tev Vispirms piešķiriet ko jūs veidojat. 549 00:28:14,760 --> 00:28:18,260 Uzlikt šo rādītāju uz atsauces, un tad jūs 550 00:28:18,260 --> 00:28:21,400 var veida izlietota pirmais rādītājs 551 00:28:21,400 --> 00:28:22,972 un norādīt to uz jauno mezglu. 552 00:28:22,972 --> 00:28:25,680 Lai kur jūs vēlaties, lai to ievietotu, ka loģika gatavojas rīkot taisnība. 553 00:28:25,680 --> 00:28:27,530 >> Tas ir veids, piemēram, piešķirot pagaidu mainīgie. 554 00:28:27,530 --> 00:28:28,700 Atcerieties, ka jūs esat ieguvuši lai pārliecinātos, ka jums 555 00:28:28,700 --> 00:28:30,346 nezaudē līdzi, ja jūs pārnešana. 556 00:28:30,346 --> 00:28:33,470 Jūs vēlaties pārliecināties, ka jums ir pagaidu mainīgo šāda veida uztur 557 00:28:33,470 --> 00:28:35,620 izsekot, kur šī lieta tiek uzglabāti tā, ka jūs 558 00:28:35,620 --> 00:28:41,190 nezaudē nekādu vērtību laikā līdzīgu messing aptuveni ar to. 559 00:28:41,190 --> 00:28:42,710 >> Labi, tā kods būs šeit. 560 00:28:42,710 --> 00:28:45,020 Jūs guys ieskatieties pēc iedaļas. 561 00:28:45,020 --> 00:28:48,060 Tas būs tur. 562 00:28:48,060 --> 00:28:50,280 >> Tāpēc es domāju, kā tas Tas atšķiras, ja mēs vēlējāmies 563 00:28:50,280 --> 00:28:52,300 ievietot vidū vai beigās? 564 00:28:52,300 --> 00:28:57,892 Vai kāds ir ideja par to, kas ir pseudocode kā loģisku atsauce 565 00:28:57,892 --> 00:29:00,350 ka mēs varētu veikt, ja mēs vēlējāmies lai ievietotu to vidū? 566 00:29:00,350 --> 00:29:03,391 Tātad, ja mēs vēlējāmies, lai ievietotu to pie galva, viss, kas mums jādara, ir izveidot jaunu mezglu. 567 00:29:03,391 --> 00:29:06,311 Mēs noteikti rādītāju minētā jaunu mezglu, lai neatkarīgi no galvas, 568 00:29:06,311 --> 00:29:08,310 un tad mēs noteikti galvu uz jauno mezglu, vai ne? 569 00:29:08,310 --> 00:29:11,560 Ja mēs vēlējāmies, lai ievietotu to vidū no saraksta, kas būtu mums jādara? 570 00:29:11,560 --> 00:29:14,108 571 00:29:14,108 --> 00:29:16,110 >> Mērķauditorija: Tas vēl būtu būt līdzīgs process 572 00:29:16,110 --> 00:29:19,114 līdzīgu piešķirot rādītāju un tad piešķirot šo rādītāju, 573 00:29:19,114 --> 00:29:20,530 bet mēs būtu, lai atrastu tur. 574 00:29:20,530 --> 00:29:23,560 >> ANDI PENG: Tieši tā, lai tieši tas pats process, izņemot tevi 575 00:29:23,560 --> 00:29:27,820 ir, lai atrastu, kur tieši jūs vēlaties, ka jaunais rādītājs iedziļināties, 576 00:29:27,820 --> 00:29:44,790 Tātad, ja es gribu ievietot vidū saistīta list-- OK, 577 00:29:44,790 --> 00:29:46,370 pieņemsim, ka ir mūsu saistīts saraksts. 578 00:29:46,370 --> 00:29:49,500 Ja mēs gribam, lai ievietotu to tieši šeit, mēs spēsim izveidot jaunu mezglu. 579 00:29:49,500 --> 00:29:50,520 Mēs ejam, lai malloc. 580 00:29:50,520 --> 00:29:52,220 Mēs ejam, lai izveidotu jaunu mezglu. 581 00:29:52,220 --> 00:29:55,940 Mēs ejam, lai piešķirtu rādītājs šajā mezglā šeit. 582 00:29:55,940 --> 00:29:58,335 >> Bet problēma, kas atšķiras no kur galva ir 583 00:29:58,335 --> 00:30:00,490 ir tā, ka mēs zinājām, tieši kur galva ir. 584 00:30:00,490 --> 00:30:01,930 Tas bija labi pie pirmā, vai ne? 585 00:30:01,930 --> 00:30:04,870 Bet šeit mēs esam ieguvuši, lai sekotu par to, kur mēs esam ievietošanas. 586 00:30:04,870 --> 00:30:07,930 Ja mēs ievietojot mūsu mezglu šeit, mēs esam ieguvuši 587 00:30:07,930 --> 00:30:12,270 lai pārliecinātos, ka viens iepriekšējā uz šo mezglu 588 00:30:12,270 --> 00:30:14,172 ir viens, ka reassigns rādītāju. 589 00:30:14,172 --> 00:30:16,380 Tātad jums ir sava veida sekot divām lietām. 590 00:30:16,380 --> 00:30:19,420 Ja jums sekot līdzi, kur tas mezgls pašlaik tiek ievietošanas. 591 00:30:19,420 --> 00:30:23,280 Jums ir arī izsekot, kur iepriekšējais mezglā, ka jūs meklējat pie 592 00:30:23,280 --> 00:30:24,340 bija arī tur. 593 00:30:24,340 --> 00:30:25,830 Ikviens labi ar to? 594 00:30:25,830 --> 00:30:26,500 LABI. 595 00:30:26,500 --> 00:30:28,000 >> Kā par ievietojot beigām? 596 00:30:28,000 --> 00:30:34,220 Ja es gribēju, lai to pievienotu here-- ja es gribēju lai pievienotu jaunu mezgla līdz beigām saraksta, 597 00:30:34,220 --> 00:30:37,009 kā varētu man iet par darot, ka? 598 00:30:37,009 --> 00:30:39,300 Mērķauditorija: Tātad šobrīd, tad pēdējais norādīja uz null. 599 00:30:39,300 --> 00:30:40,960 ANDI PENG: Jā. 600 00:30:40,960 --> 00:30:43,560 Tieši tā, tāpēc tas viens Pašlaik tiek norādīts zināt, 601 00:30:43,560 --> 00:30:46,720 un tāpēc es domāju, ka šajā ziņā, tas ir ļoti viegli pievienot līdz beigām saraksta. 602 00:30:46,720 --> 00:30:51,810 Viss, kas Jums jādara, ir noteikt to vienāds ar spēku, tad uzplaukums. 603 00:30:51,810 --> 00:30:53,070 Turpat, ļoti viegli. 604 00:30:53,070 --> 00:30:53,960 Ļoti vienkārši. 605 00:30:53,960 --> 00:30:56,430 >> Ļoti līdzīgs galvu, bet loģiski tevi 606 00:30:56,430 --> 00:30:59,690 vēlaties pārliecināties, ka pasākumi Jūs lietojat uz darot kādu no šo, 607 00:30:59,690 --> 00:31:01,500 jūs pēc līdzi. 608 00:31:01,500 --> 00:31:04,420 Tas ir ļoti viegli, jo pa vidu Jūsu kodu, nokļuvuši uz, 609 00:31:04,420 --> 00:31:05,671 Ak, es esam ieguvuši tik daudz norādes. 610 00:31:05,671 --> 00:31:07,461 Es nezinu, kur kaut kas ir vērsta uz. 611 00:31:07,461 --> 00:31:09,170 Es pat nezinu, kas mezgls es esmu par. 612 00:31:09,170 --> 00:31:11,490 Kas notiek? 613 00:31:11,490 --> 00:31:13,620 >> Atpūsties, nomierināties, veikt dziļu elpu. 614 00:31:13,620 --> 00:31:15,530 Izdarīt savu saistīts sarakstu. 615 00:31:15,530 --> 00:31:18,800 Ja jūs sakāt, es zinu, kur tieši Man vajag, lai ievietotu to vērā 616 00:31:18,800 --> 00:31:22,970 un es zinu, kā tieši to pārdalīt manu norādes, daudz, daudz vieglāk attēlu 617 00:31:22,970 --> 00:31:27,200 out-- daudz, daudz vieglāk nav pazust bugs jūsu kodu. 618 00:31:27,200 --> 00:31:29,410 Ikvienam OK ar šo? 619 00:31:29,410 --> 00:31:31,380 LABI. 620 00:31:31,380 --> 00:31:35,120 >> Tāpēc es domāju, koncepciju, ka mēs neesam tiešām runāja par agrāk tagad, 621 00:31:35,120 --> 00:31:38,131 un es domāju, jūs, iespējams, nebūs sastopas daudz yet-- 622 00:31:38,131 --> 00:31:40,880 tas ir sava veida uzlabotas concept-- ir tā, ka mums tiešām ir dati 623 00:31:40,880 --> 00:31:43,900 struktūra sauc divkārt saistīts sarakstu. 624 00:31:43,900 --> 00:31:46,390 Tātad, kā jūs guys var redzēt, viss, ko mēs darām, ir radīt 625 00:31:46,390 --> 00:31:50,400 faktisko vērtību, papildus rādītājs par katru no mūsu mezgliem 626 00:31:50,400 --> 00:31:52,660 kas arī norāda uz iepriekšējo mezglu. 627 00:31:52,660 --> 00:31:58,170 Tātad ne tikai mums ir mūsu mezglus norāda uz nākamo. 628 00:31:58,170 --> 00:32:01,430 Viņi arī norāda uz iepriekšējo. 629 00:32:01,430 --> 00:32:04,310 Es esmu gatavojas ignorēt šos divus tiesības tagad. 630 00:32:04,310 --> 00:32:06,740 >> Tātad jums ir ķēdes kas var pārvietoties abos virzienos, 631 00:32:06,740 --> 00:32:09,630 un tad tas ir mazliet vieglāk loģiski sekot līdzi. 632 00:32:09,630 --> 00:32:11,896 Tāpat kā šeit, tā vietā, lai sekotu, oh, es 633 00:32:11,896 --> 00:32:14,520 ir jāzina, ka šis mezgls ir viens, ka man ir pārdalīt, 634 00:32:14,520 --> 00:32:17,532 Es varu tikai iet šeit un tikai pull iepriekšējā. 635 00:32:17,532 --> 00:32:19,490 Tad es zinu, kur tieši tas ir, un tad jūs 636 00:32:19,490 --> 00:32:21,130 nav traversa kopums saistītajā sarakstā. 637 00:32:21,130 --> 00:32:22,180 Tas ir mazliet vieglāk. 638 00:32:22,180 --> 00:32:24,960 >> Bet, kā, piemēram, jums ir divkārt summu norādes, 639 00:32:24,960 --> 00:32:26,960 tas ir dubultā atmiņas apjomu. 640 00:32:26,960 --> 00:32:28,950 Tas ir daudz norādes, lai sekotu. 641 00:32:28,950 --> 00:32:32,140 Tas ir mazliet sarežģītāka, bet tas ir mazliet vairāk lietotājam draudzīgu atkarībā 642 00:32:32,140 --> 00:32:34,080 par to, ko jūs mēģināt paveikt. 643 00:32:34,080 --> 00:32:36,910 >> Tātad šāda veida datu struktūra pilnīgi pastāv, 644 00:32:36,910 --> 00:32:40,280 un struktūra ir ļoti, ļoti vienkāršs izņemot visi jūs, kam ir, 645 00:32:40,280 --> 00:32:43,850 nevis tikai rādītāju uz nākamo, jums ir arī rādītāju uz iepriekšējo. 646 00:32:43,850 --> 00:32:45,940 Tas ir viss, atšķirība bija. 647 00:32:45,940 --> 00:32:47,740 Ikviens labi ar to? 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 >> Labi, tāpēc tagad es esmu lai tiešām tērēt iespējams 651 00:32:53,280 --> 00:32:56,870 piemēram, 15 līdz 20 minūtes vai kupola no pārējā reizi sadaļā 652 00:32:56,870 --> 00:32:58,360 runājot par hash tabulas. 653 00:32:58,360 --> 00:33:02,590 Cik daudzi no jums, puiši lasījis pset5 spec? 654 00:33:02,590 --> 00:33:03,620 Labi, labi. 655 00:33:03,620 --> 00:33:06,160 Tas ir lielāks nekā 50% no normāli. 656 00:33:06,160 --> 00:33:07,560 Ir labi. 657 00:33:07,560 --> 00:33:10,345 >> Tātad, kā jūs guys redzēs, tu esi izaicinājums pset5 658 00:33:10,345 --> 00:33:16,790 būs īstenot vārdnīca kur jūs ielādēt vairāk nekā 140,000 vārdus 659 00:33:16,790 --> 00:33:20,610 ka mēs jums un pareizrakstības pārbaude tā pret visu tekstu. 660 00:33:20,610 --> 00:33:22,580 Mēs jums izlases gabalus literatūru. 661 00:33:22,580 --> 00:33:23,520 Mēs jums Odyssey. 662 00:33:23,520 --> 00:33:24,561 Mēs jums Iliāda. 663 00:33:24,561 --> 00:33:26,350 Mēs jums Austin Powers. 664 00:33:26,350 --> 00:33:28,220 >> Un jūsu uzdevums būs pareizrakstības pārbaude 665 00:33:28,220 --> 00:33:31,760 katru vārdu visu Šo vārdnīcu 666 00:33:31,760 --> 00:33:34,960 būtībā ar mūsu pareizrakstības pārbaudītājs. 667 00:33:34,960 --> 00:33:38,620 Un tāpēc tur ir dažas detaļas izveidot šo PSET, 668 00:33:38,620 --> 00:33:41,970 Vispirms jūs vēlaties būt spējīgs reāli ielādēt 669 00:33:41,970 --> 00:33:43,970 visi vārdi savā vārdnīcu, un tad jūs 670 00:33:43,970 --> 00:33:45,530 vēlas, lai varētu pareizrakstības pārbaude visi no tiem. 671 00:33:45,530 --> 00:33:48,780 Un tā kā tāda, jūs gatavojas pieprasīt datu struktūra, kas var izdarīt ātri 672 00:33:48,780 --> 00:33:50,790 un efektīvi un dinamiski. 673 00:33:50,790 --> 00:33:52,900 >> Tāpēc es domāju, ka visvieglāk veids, kā to darīt, jums 674 00:33:52,900 --> 00:33:55,010 iespējams izveidot masīvu, labi? 675 00:33:55,010 --> 00:33:58,910 Vieglākais veids, uzglabāšanas ir jums var izveidot masīvu 140000 vārdiem 676 00:33:58,910 --> 00:34:03,400 un vienkārši novietot tos visus tur un tad šķērso tos ar bināro meklēšanu 677 00:34:03,400 --> 00:34:06,780 vai izvēles vai not-- žēl, ka ir šķirošana. 678 00:34:06,780 --> 00:34:10,729 Jūs varat šķirot tos un pēc tam tos traversa ar bināro meklēšanu vai vienkārši lineāro meklēšanu 679 00:34:10,729 --> 00:34:13,730 un tikai pēdējie vārdi, bet aizņem lielu atmiņas apjomu, 680 00:34:13,730 --> 00:34:15,190 un tas nav ļoti efektīva. 681 00:34:15,190 --> 00:34:18,350 >> Un tāpēc mēs esam gatavojas sākt runājam par veidiem, kā padarīt 682 00:34:18,350 --> 00:34:20,110 Mūsu darba laiks efektīvāku. 683 00:34:20,110 --> 00:34:23,190 Un mūsu mērķis ir iegūt konstante laiks, kad 684 00:34:23,190 --> 00:34:25,810 tas ir gandrīz kā masīvu, kur Jums ir momentānā piekļuvi. 685 00:34:25,810 --> 00:34:28,560 Ja es gribēju, lai meklētu kaut ko, Es gribu, lai varētu vienkārši, 686 00:34:28,560 --> 00:34:30,810 boom, atrast to tieši, un izvelciet to ārā. 687 00:34:30,810 --> 00:34:34,100 Un tā struktūru, kurā mēs būsim kļūst ļoti tuvu 688 00:34:34,100 --> 00:34:37,569 lai varētu piekļūt konstante laiks, šis Svētais Grāls 689 00:34:37,569 --> 00:34:41,370 programmēšanā no konstante laiks tiek saukts par hash tabulu. 690 00:34:41,370 --> 00:34:45,370 Un tā Dāvids iepriekš minēja [Dzirdams] mazliet lekciju, 691 00:34:45,370 --> 00:34:49,100 bet mēs ejam, lai patiešām nirt dziļi šajā nedēļā 692 00:34:49,100 --> 00:34:51,780 par kādu, kas ir par kā hash tabulu darbi. 693 00:34:51,780 --> 00:34:53,949 >> Tātad tā, ka hash galda darbi, piemēram, 694 00:34:53,949 --> 00:35:00,230 ja es gribēju, lai saglabātu ķekars vārdiem, ķekars vārdiem angļu valodā, 695 00:35:00,230 --> 00:35:02,940 Es teorētiski varētu likt banānu, ābolu, kivi, mango, pāris, 696 00:35:02,940 --> 00:35:04,980 un melones visi uz tikai masīvu. 697 00:35:04,980 --> 00:35:07,044 Viņi visi varētu iederēties un būtu atrast. 698 00:35:07,044 --> 00:35:09,210 Tas lūdzu būt sava veida sāpes pārlūkot un pieejamību, 699 00:35:09,210 --> 00:35:12,920 bet vieglāk veids, kā to izdarīt, ir ka mēs varam radīt faktiski struktūra 700 00:35:12,920 --> 00:35:15,680 sauc hash tabulu, kur mēs hash. 701 00:35:15,680 --> 00:35:19,880 Mums ir visas mūsu atslēgas caur hash funkciju, vienādojums, 702 00:35:19,880 --> 00:35:22,600 kas pārvērš tos visus daži vērtība veida 703 00:35:22,600 --> 00:35:28,740 ka tad mēs varam glabāt uz būtībā masīvs saistīta saraksta. 704 00:35:28,740 --> 00:35:32,570 >> Un tāpēc šeit, ja mēs vēlējāmies uzglabāt angļu vārdiem, 705 00:35:32,570 --> 00:35:37,250 mēs varētu potenciāli vienkārši, man nav zināt, savukārt visus pirmos burtus 706 00:35:37,250 --> 00:35:39,630 uz kādu no vairākiem veida. 707 00:35:39,630 --> 00:35:43,140 Un tā, piemēram, ja es gribēju A būt sinonīms apple-- 708 00:35:43,140 --> 00:35:47,460 vai ar indeksu no 0, un B būt sinonīms ar 1, 709 00:35:47,460 --> 00:35:51,030 mēs varam būt 26 ieraksti ka var vienkārši uzglabāt 710 00:35:51,030 --> 00:35:53,610 visi burti no alfabēts, ka mēs sāksim ar. 711 00:35:53,610 --> 00:35:56,130 Un tad mēs varam būt apple pie indeksa 0. 712 00:35:56,130 --> 00:35:59,160 Mēs varam būt banānu pie indeksa 1, melones pie indeksa 2, 713 00:35:59,160 --> 00:36:00,540 un tā tālāk, un tā tālāk. 714 00:36:00,540 --> 00:36:04,460 Un tā, ja es gribēju, lai meklētu mans hash tabulu un piekļuves ābolu, 715 00:36:04,460 --> 00:36:07,560 Es zinu, ābolu sākas ar A, un es zinu, tieši 716 00:36:07,560 --> 00:36:10,860 ka tai ir jābūt, un hash Tabulā indekss 0 tāpēc, 717 00:36:10,860 --> 00:36:13,620 par funkciju iepriekš piešķirts. 718 00:36:13,620 --> 00:36:16,572 >> Tāpēc es nezinu, mēs esam lietotāja programma, kurā 719 00:36:16,572 --> 00:36:18,780 Jums būs jāmaksā ar arbitrarily-- nav patvaļīgi, 720 00:36:18,780 --> 00:36:22,530 ar mēģina pārdomāti domā par labu vienādojumu 721 00:36:22,530 --> 00:36:25,460 lai varētu izplatīties no visas savas vērtības 722 00:36:25,460 --> 00:36:29,370 tādā veidā, tās var viegli piekļūt tas vēlāk ar, piemēram, vienādojumu 723 00:36:29,370 --> 00:36:31,130 ka jums, sevi, zināt. 724 00:36:31,130 --> 00:36:35,210 Tātad tādā ziņā, ja es gribēju doties uz mango, es zinu, ak, tas sākas ar m. 725 00:36:35,210 --> 00:36:37,134 Ir jābūt indeksā 12. 726 00:36:37,134 --> 00:36:38,800 Man nav, lai meklētu caur jebko. 727 00:36:38,800 --> 00:36:42,080 Es zinu exactly-- es varētu tikai iet uz indekss 12. un izvelciet kas ārā. 728 00:36:42,080 --> 00:36:45,520 >> Ikvienam skaidrs, par to, kā hash tabulu funkcija darbojas? 729 00:36:45,520 --> 00:36:48,380 Tas ir sava veida tikai sarežģītāku masīvs. 730 00:36:48,380 --> 00:36:50,010 Tas ir viss, tas ir. 731 00:36:50,010 --> 00:36:51,630 LABI. 732 00:36:51,630 --> 00:36:57,690 >> Tāpēc es domāju, mēs uzskriet šis jautājums par to, kas 733 00:36:57,690 --> 00:37:06,390 notiek, ja jums ir vairākas lietas kas dod jums to pašu indeksu? 734 00:37:06,390 --> 00:37:10,570 Tā teikt, mūsu funkcijas, visu to darīju bija veikt šo pirmo burtu 735 00:37:10,570 --> 00:37:14,490 un pārvērst kas stājas attiecīgais 0 līdz 25 indekss. 736 00:37:14,490 --> 00:37:17,137 Tas ir pilnīgi naudas sodu, ja jums ir tikai viens no katra. 737 00:37:17,137 --> 00:37:18,970 Bet otrais sākat kam ir vairāk, tu esi 738 00:37:18,970 --> 00:37:20,910 nāksies ko sauc sadursme. 739 00:37:20,910 --> 00:37:25,580 >> Tātad, ja es mēģinātu ievietot apglabāt uz hash Tabulā, kas jau ir banānu par to, 740 00:37:25,580 --> 00:37:27,870 to, kas notiks, kad jūs mēģināt ievietot kas? 741 00:37:27,870 --> 00:37:30,930 Sliktas lietas, jo banāns jau pastāv ietvaros indeksā 742 00:37:30,930 --> 00:37:33,800 ka jūs vēlaties, lai saglabātu to. 743 00:37:33,800 --> 00:37:35,560 Berry veida ir līdzīgs, ah, ko man darīt? 744 00:37:35,560 --> 00:37:37,080 Es nezinu, kur iet. 745 00:37:37,080 --> 00:37:38,410 Kā es varu atrisināt šo? 746 00:37:38,410 --> 00:37:41,150 >> Un tā jūs guys būs sava veida redzēt mēs šo delikāta lieta 747 00:37:41,150 --> 00:37:44,810 kur mēs varam veida faktiski izveidot saistīts sarakstu mūsu masīvi. 748 00:37:44,810 --> 00:37:46,840 Un tā vieglākais veids domāt par to, 749 00:37:46,840 --> 00:37:50,830 viss hash tabulā ir masīvs saistītas sarakstus. 750 00:37:50,830 --> 00:37:55,670 Un tā, šajā ziņā, jums ir Šī skaisti masīvs norādes, 751 00:37:55,670 --> 00:37:58,740 un tad katrs rādītājs ir šī vērtība, šajā rādītājā, 752 00:37:58,740 --> 00:38:00,740 faktiski var norādīt uz citām lietām. 753 00:38:00,740 --> 00:38:05,720 Un tāpēc jums ir visi šie atsevišķa ķēdes nāk nost no viena lielā masīva. 754 00:38:05,720 --> 00:38:07,960 >> Un tāpēc šeit, ja es gribēju ievietot ogu, 755 00:38:07,960 --> 00:38:11,220 Es zinu, OK, es esmu gatavojas ievade tas caur manu hash funkciju. 756 00:38:11,220 --> 00:38:15,070 Es esmu gatavojas, lai galu galā ar indeksu 1, un tad es esmu gatavojas, lai varētu būt 757 00:38:15,070 --> 00:38:20,410 tikai mazāks apakškopa šis milzu 140000-vārdu vārdnīca. 758 00:38:20,410 --> 00:38:24,220 Un tad es varu tikai skatīties ar 1/26 no tā. 759 00:38:24,220 --> 00:38:27,910 >> Un tā, tad es varu tikai ievietot ogu vai nu pirms, vai pēc banānu 760 00:38:27,910 --> 00:38:28,820 šajā gadījumā? 761 00:38:28,820 --> 00:38:29,700 Pēc, vai ne? 762 00:38:29,700 --> 00:38:33,920 Un tā jūs gatavojas vēlaties ievietot šo mezglu pēc banānu, 763 00:38:33,920 --> 00:38:36,667 un tāpēc jūs gatavojas ievietot pie astes minētā saistīts sarakstā. 764 00:38:36,667 --> 00:38:38,500 Es esmu gatavojas doties atpakaļ ar šo iepriekšējo slaidu, 765 00:38:38,500 --> 00:38:40,680 Tātad jūs guys var redzēt, kā hash funkcija darbojas. 766 00:38:40,680 --> 00:38:43,980 >> Tātad hash funkcija ir šis vienādojums ka jūs strādājat veida jūsu ieguldījumu 767 00:38:43,980 --> 00:38:46,940 cauri, lai iegūtu visus indekss jūs vēlaties piešķirt to uz. 768 00:38:46,940 --> 00:38:51,130 Un tā, šajā piemērā, viss, ko mēs vēlējāmies darīt bija veikt pirmo burtu, 769 00:38:51,130 --> 00:38:55,890 savukārt, ka uz indeksu, tad mēs var uzglabāt, ka mūsu hash funkciju. 770 00:38:55,890 --> 00:39:00,160 Visi mēs darām šeit ir, mēs esam pārvēršot pirmo burtu. 771 00:39:00,160 --> 00:39:04,770 Tātad keykey [0], ir tikai pirmais burts no kāda stīgu mēs esam, kam, 772 00:39:04,770 --> 00:39:05,720 mēs garāmejot. 773 00:39:05,720 --> 00:39:09,740 Mēs esam konvertējot ka uz augšējo, un mēs atņemot ar lielajiem A, 774 00:39:09,740 --> 00:39:11,740 lai visi, kas dara dod mums vairākas 775 00:39:11,740 --> 00:39:13,670 kurā mēs varam hash savas vērtības uz. 776 00:39:13,670 --> 00:39:16,550 >> Un tad mēs spēsim atgriezties hash moduli izmēru. 777 00:39:16,550 --> 00:39:19,340 Esi ļoti, ļoti uzmanīgiem jo, teorētiski, šeit 778 00:39:19,340 --> 00:39:21,870 Jūsu hash vērtība varētu būt bezgalīgs. 779 00:39:21,870 --> 00:39:23,660 Tā varētu tikai iet tālāk un tālāk un tālāk. 780 00:39:23,660 --> 00:39:26,080 Tā varētu būt daži patiešām, patiešām liela vērtība, 781 00:39:26,080 --> 00:39:29,849 bet tāpēc, ka jūsu hash tabulu, kas esat izveidojis tikai ir 26 indeksu, 782 00:39:29,849 --> 00:39:31,890 Jūs vēlaties pārliecināties, vai jūsu modulusing lai jūs 783 00:39:31,890 --> 00:39:33,848 nav run-- tas ir tas pats lieta kā savu queue-- 784 00:39:33,848 --> 00:39:36,320 tā, ka jums nav palaist off apakšā jūsu hash funkciju. 785 00:39:36,320 --> 00:39:39,210 >> Jūs vēlaties, lai wrap to atpakaļ ap vienādi [nedzirdama], ja 786 00:39:39,210 --> 00:39:41,750 jums bija, piemēram, ļoti, ļoti liels vēstuli, jums 787 00:39:41,750 --> 00:39:43,740 nevēlējās, ka, lai ieskriet pie beigām. 788 00:39:43,740 --> 00:39:46,948 Pats šeit, jūs vēlaties, lai pārliecinātos tas nav palaist off beigām iesaiņošana 789 00:39:46,948 --> 00:39:48,330 ap uz augšu tabulā. 790 00:39:48,330 --> 00:39:50,530 Tātad tas ir tikai ļoti vienkārši hash funkciju. 791 00:39:50,530 --> 00:39:56,570 Viss, kas bija, bija jāņem pirmais vēstule kāda mūsu ieejas bija 792 00:39:56,570 --> 00:40:01,660 un pārvērst kas stājas indekss, kas mēs varētu likt mūsu hash tabulu. 793 00:40:01,660 --> 00:40:05,450 >> Jā, un tā kā es teicu iepriekš, tā, ka mēs atrisināt sadursmes 794 00:40:05,450 --> 00:40:09,330 mūsu hash tabulas, kam, Ko mēs saucam, ķēžu. 795 00:40:09,330 --> 00:40:13,860 Tātad, ja jūs mēģināt ievietot vairākus vārdus, kas sākas ar vienu un to pašu, 796 00:40:13,860 --> 00:40:16,145 Jums nāksies vienu hash vērtību. 797 00:40:16,145 --> 00:40:18,770 Avokado un ābolu, ja esat palaist to caur mūsu hash funkciju, 798 00:40:18,770 --> 00:40:21,450 gatavojas sniegt jums tas pats numurs, skaits 0. 799 00:40:21,450 --> 00:40:24,550 Un tā kā mēs atrisināt, kas ir ka mēs varam faktiski veida saistīt tos 800 00:40:24,550 --> 00:40:27,010 kopā ar saistītiem sarakstiem. 801 00:40:27,010 --> 00:40:29,600 >> Un tā šajā ziņā, jūs guys var redzēt veida 802 00:40:29,600 --> 00:40:32,640 par to, kā datu struktūras, kas mēs esam bijuši nosakot iepriekš 803 00:40:32,640 --> 00:40:35,870 kā rozīņu saistīta saraksta veida no var sanākt kopā vienā. 804 00:40:35,870 --> 00:40:38,860 Un tad jūs varat izveidot tālu efektīvāku datu struktūras 805 00:40:38,860 --> 00:40:43,350 ka var rīkoties lielākas summas dati, kas dinamiski mainīt atkarībā 806 00:40:43,350 --> 00:40:44,870 no jūsu vajadzībām. 807 00:40:44,870 --> 00:40:45,620 Ikvienam skaidrs? 808 00:40:45,620 --> 00:40:47,580 Ikvienam veida skaidrs par to, kas notiek šeit? 809 00:40:47,580 --> 00:40:52,110 >> Ja es gribēju insert-- ko ir auglis, kas sākas ar, es nezinu, 810 00:40:52,110 --> 00:40:54,726 B, izņemot ogu, banānu. 811 00:40:54,726 --> 00:40:55,710 >> Mērķauditorija: Blackberry. 812 00:40:55,710 --> 00:40:57,910 >> ANDI PENG: Blackberry, kazenes. 813 00:40:57,910 --> 00:41:00,530 Kur kazenes aiziet šeit? 814 00:41:00,530 --> 00:41:04,251 Nu, mēs faktiski neesam sakārtoti Tas vēl, bet teorētiski 815 00:41:04,251 --> 00:41:06,250 ja mēs vēlējāmies, lai šis alfabētiskā secībā, 816 00:41:06,250 --> 00:41:07,944 kur vajadzētu kazenes doties? 817 00:41:07,944 --> 00:41:09,210 >> Mērķauditorija: [dzirdams] 818 00:41:09,210 --> 00:41:11,100 >> ANDI PENG: Tieši tā, pēc šeit, vai ne? 819 00:41:11,100 --> 00:41:14,950 Bet tā kā tas ir ļoti grūti reorder-- Es domāju, tas ir atkarīgs no jums puiši. 820 00:41:14,950 --> 00:41:17,920 Jūs guys var pilnīgi īstenot neatkarīgi vēlaties. 821 00:41:17,920 --> 00:41:20,730 Efektīvāka kā to izdarīt, varbūt 822 00:41:20,730 --> 00:41:24,570 būtu sakārtot savu saistīta uzskaitīt uz alfabētiskā secībā, 823 00:41:24,570 --> 00:41:26,520 un tad, kad jūs esat Ievietojot lietas, jūs vēlaties 824 00:41:26,520 --> 00:41:28,632 jābūt pārliecinātiem, lai ievietotu tos uz alfabēta 825 00:41:28,632 --> 00:41:30,590 tā, ka tad, kad jūs esat mēģināt meklēt tos, 826 00:41:30,590 --> 00:41:32,410 Jums nav, lai šķērsotu visu. 827 00:41:32,410 --> 00:41:35,290 Jūs zināt, kur tieši tas ir, un tas ir vieglāk. 828 00:41:35,290 --> 00:41:39,100 >> Bet, ja jūs veida ir lietas mijas nejauši, 829 00:41:39,100 --> 00:41:41,420 jūs joprojām nāksies lai šķērsotu to anyways. 830 00:41:41,420 --> 00:41:44,990 Un tāpēc, ja es gribēju tikai ievietot kazenes šeit 831 00:41:44,990 --> 00:41:47,470 un es gribēju, lai meklētu tā, es zinu, ak, kazenes 832 00:41:47,470 --> 00:41:52,012 jāsāk ar indeksu 1, tāpēc es zināt uzreiz tikai meklēt pēc 1. 833 00:41:52,012 --> 00:41:53,970 Un tad es varu veida traversa saistīts sarakstu 834 00:41:53,970 --> 00:41:56,120 kamēr man uz Blackberry, un then-- yeah? 835 00:41:56,120 --> 00:41:59,550 >> Mērķauditorija: Ja jūs mēģināt create-- Es domāju, piemēram, tas ir ļoti vienkāršs hash 836 00:41:59,550 --> 00:42:00,050 funkcija. 837 00:42:00,050 --> 00:42:02,835 Un, ja mēs vēlējāmies darīt vairāki slāņi, ka, piemēram, 838 00:42:02,835 --> 00:42:05,870 Labi, mēs vēlamies, lai atdalītu vērā tāpat kā visiem alfabēta burtiem 839 00:42:05,870 --> 00:42:09,040 un tad atkal patīk citu komplektu no alfabēta burtiem iekšienē ka, 840 00:42:09,040 --> 00:42:11,715 mēs liekot kā hash galda ietvaros hash tabulu, 841 00:42:11,715 --> 00:42:13,256 vai kā funkcija funkcija? 842 00:42:13,256 --> 00:42:14,880 Vai ir that-- 843 00:42:14,880 --> 00:42:17,510 >> ANDI PENG: Tātad jūsu hash function-- savu hash tabulu 844 00:42:17,510 --> 00:42:19,360 var būt tik liela, kā jūs to vēlaties. 845 00:42:19,360 --> 00:42:21,930 Tātad šajā ziņā, es domāju, tas bija ļoti viegli, ļoti 846 00:42:21,930 --> 00:42:25,320 vienkārši man tikai sava balstīta uz vēstulēm pirmo vārdu. 847 00:42:25,320 --> 00:42:28,690 Un tā tur ir tikai 26 iespējas. 848 00:42:28,690 --> 00:42:32,650 Es varu tikai iegūt 26 opcijas 0 līdz 25, jo tie var tikai 849 00:42:32,650 --> 00:42:36,510 sākt no A līdz Z. Bet, ja jūs vēlētos pievienot, iespējams, vairāk sarežģītību 850 00:42:36,510 --> 00:42:39,260 vai ātrāks palaist laiku, lai jūsu hash tabulu, jūs absolūti 851 00:42:39,260 --> 00:42:40,760 var darīt visu veidu lietas. 852 00:42:40,760 --> 00:42:43,330 Jūs varat izveidot savu vienādojums, kas dod jums 853 00:42:43,330 --> 00:42:48,000 vairāk sadalījums jūsu vārdus, tad, kad jūs meklēt, 854 00:42:48,000 --> 00:42:49,300 tas būs ātrāk. 855 00:42:49,300 --> 00:42:52,100 >> Tas ir pilnībā atkarīgs no jums puiši kā jūs vēlaties, lai īstenotu to. 856 00:42:52,100 --> 00:42:55,140 Domājiet par to kā tikai spaiņos. 857 00:42:55,140 --> 00:42:57,376 Ja es gribēju, lai būtu 26 spaiņi, es eju 858 00:42:57,376 --> 00:42:59,420 kārtot lietas šajās spaiņiem. 859 00:42:59,420 --> 00:43:02,980 Bet es esmu nāksies ķekars sīkumi katrā spainis, 860 00:43:02,980 --> 00:43:05,890 Tātad, ja jūs vēlaties, lai padarītu to ātrāku un efektīvāku, 861 00:43:05,890 --> 00:43:07,190 man ir simts kausi. 862 00:43:07,190 --> 00:43:09,290 >> Bet tad jums ir izdomāt veids, kā sakārtot lietas tā, ka tie ir 863 00:43:09,290 --> 00:43:11,040 pareizi spainī viņiem vajadzētu būt. 864 00:43:11,040 --> 00:43:13,331 Bet tad, kad jūs faktiski vēlaties apskatīt šo kausu, 865 00:43:13,331 --> 00:43:16,410 tas ir daudz ātrāk, jo tur ir mazāk sīkumi katrā spainī. 866 00:43:16,410 --> 00:43:20,250 Un tā, jā, tas ir patiesībā triks, lai jūs guys pset5 867 00:43:20,250 --> 00:43:22,360 ir tas, ka jūs būsiet apstrīdēja tikai radītu 868 00:43:22,360 --> 00:43:26,170 kāds ir visefektīvākais funkciju jūs varat iedomāties, ka 869 00:43:26,170 --> 00:43:28,520 spēj uzglabāt un pārbaudīt šīs vērtības. 870 00:43:28,520 --> 00:43:30,840 >> Pilnībā atkarīgs no jums puiši tomēr vēlaties to darīt, 871 00:43:30,840 --> 00:43:32,229 bet tas ir patiešām labs punkts. 872 00:43:32,229 --> 00:43:34,520 Ka veida loģika jums gribu sākt domāt par 873 00:43:34,520 --> 00:43:37,236 ir labi, kāpēc ne es padarīt kausi. 874 00:43:37,236 --> 00:43:39,527 Un tad man ir meklēt mazāk lietas, un tad varbūt es 875 00:43:39,527 --> 00:43:41,640 ir atšķirīgs jaucējfunkciju. 876 00:43:41,640 --> 00:43:45,500 >> Jā, tur ir daudz veidi, kā to izdarīt PSET, daži ir ātrāk nekā citi. 877 00:43:45,500 --> 00:43:50,630 Es esmu pilnīgi gatavojas tikai redzēt, kā ātrs bija ātrākais jums puiši būs 878 00:43:50,630 --> 00:43:55,170 varēs saņemt savu funkciju uz darbu. 879 00:43:55,170 --> 00:43:58,176 OK, visi labi uz ķēžu indeksu aprēķināšanas un hash tabulas? 880 00:43:58,176 --> 00:44:00,800 Tas patiesībā tāpat ir ļoti vienkāršs koncepciju, ja jūs domājat par to. 881 00:44:00,800 --> 00:44:05,160 Viss, kas ir, ir kāds, kas atdala Jūsu izejvielas urnās, 882 00:44:05,160 --> 00:44:10,670 šķirojot tos, un pēc tam meklējot saraksti, ka tur ir saistīts ar. 883 00:44:10,670 --> 00:44:11,852 >> Cool. 884 00:44:11,852 --> 00:44:18,160 Labi, tagad mums ir cita veida Datu struktūra, kas sauc koks. 885 00:44:18,160 --> 00:44:20,850 Iesim tālāk un runāt par mēģinājumiem kas ir ievērojami atšķiras, 886 00:44:20,850 --> 00:44:22,330 bet tās pašas kategorijas. 887 00:44:22,330 --> 00:44:29,010 Būtībā, viss koks ir vietā organizēt datu lineārā veidā 888 00:44:29,010 --> 00:44:32,560 ka hash tabulu does-- tevi zinu, tas ir got top un augšupēju 889 00:44:32,560 --> 00:44:37,900 un tad jūs veida saistīt nost no it-- a koks ir top, kas jūs zvanāt sakni, 890 00:44:37,900 --> 00:44:40,220 un tad tas ir lapas viss ap to. 891 00:44:40,220 --> 00:44:42,390 >> Un tā viss, kas jums šeit ir tikai top mezglā 892 00:44:42,390 --> 00:44:45,980 kas norāda uz citiem mezgliem, ka punkti vairāk punktiem, un tā tālāk un tā tālāk. 893 00:44:45,980 --> 00:44:48,130 Un tāpēc jums vienkārši ir sadalīšanas filiāles. 894 00:44:48,130 --> 00:44:53,255 Tas ir tikai atšķirīgs veids, kā organizēt dati, un tāpēc mēs to saucam koks, 895 00:44:53,255 --> 00:44:56,270 jūs guys just-- tas ir tikai modelēts, lai izskatās kā koks. 896 00:44:56,270 --> 00:44:57,670 Tieši tāpēc mēs to saucam koki. 897 00:44:57,670 --> 00:44:59,370 >> Hash tabula izskatās tabulā. 898 00:44:59,370 --> 00:45:01,310 Koku tikai izskatās kā koks. 899 00:45:01,310 --> 00:45:03,300 Viss tas ir, ir atsevišķs veids, kā organizēt mezglus 900 00:45:03,300 --> 00:45:06,020 atkarībā no tā, kādas ir jūsu vajadzības. 901 00:45:06,020 --> 00:45:11,810 >> Tātad jums ir saknes un tad jums ir lapas. 902 00:45:11,810 --> 00:45:15,380 Tā, ka mēs varam īpaši Padomā par to ir bināro koku, 903 00:45:15,380 --> 00:45:18,150 binārs koks ir tikai īpaša veida koks 904 00:45:18,150 --> 00:45:22,450 kur katrs mezgls tikai punkti lai, pie max, divi citi mezgli. 905 00:45:22,450 --> 00:45:25,434 Un tāpēc šeit jums ir atšķirīgs simetrija ciltskokā 906 00:45:25,434 --> 00:45:28,600 kas padara to vieglāk veida meklēt pie kādas vērtības jūs esat, jo tad jūs 907 00:45:28,600 --> 00:45:30,150 ir vienmēr pa kreiso vai labo. 908 00:45:30,150 --> 00:45:33,150 Tur nekad kā kreisās trešdaļu no kreiso vai ceturtais no kreisās puses. 909 00:45:33,150 --> 00:45:36,358 Tas ir tikai jums ir pa kreisi un tiesības un jūs varat meklēt kādu no šiem diviem. 910 00:45:36,358 --> 00:45:38,980 Un tad kāpēc tas ir noderīgs? 911 00:45:38,980 --> 00:45:40,980 Tā, ka tas ir noderīgi ir, ja jūs meklējat 912 00:45:40,980 --> 00:45:42,890 meklēt, izmantojot vērtības, vai ne? 913 00:45:42,890 --> 00:45:45,640 Nevis īstenošanas bināro meklēt kļūdas masīvs, 914 00:45:45,640 --> 00:45:49,260 ja jūs vēlaties, lai varētu ievietot mezglu un atņemt mezglu pēc vēlēšanās un arī 915 00:45:49,260 --> 00:45:52,185 saglabāt meklēšanu jaudas bināro meklēšanu. 916 00:45:52,185 --> 00:45:54,560 Tātad šādā veidā, mēs esam sava veida tricking-- atceros, kad mēs 917 00:45:54,560 --> 00:45:56,530 teica saistīti saraksti nevaru bināro meklēšanu? 918 00:45:56,530 --> 00:46:01,700 Mēs esam veida izveidojot datu struktūra ka triku, ka par darba. 919 00:46:01,700 --> 00:46:05,034 >> Un tāpēc, ka saistīti saraksti ir lineāra, tie tikai saistīt viens pēc otra. 920 00:46:05,034 --> 00:46:06,950 Mēs varam veida ir citāda veida norādes 921 00:46:06,950 --> 00:46:09,408 kas norāda uz dažādu mezglu kas var palīdzēt mums ar meklēšanu. 922 00:46:09,408 --> 00:46:12,590 Un tāpēc šeit, ja es gribēju ir bināro meklēšanas koku, 923 00:46:12,590 --> 00:46:14,090 Es zinu, ka mans vidū ja 55. 924 00:46:14,090 --> 00:46:18,280 Es esmu tikai gatavojas, lai radītu, ka kā manu vidū, kā mana saknes, 925 00:46:18,280 --> 00:46:20,770 un tad es esmu nāksies vērtībām spin off no tā. 926 00:46:20,770 --> 00:46:25,610 >> Tātad šeit, ja es esmu gatavojas, lai meklētu vērtība 66, es var sākt 55. 927 00:46:25,610 --> 00:46:27,310 Tas ir 66 lielāks par 55? 928 00:46:27,310 --> 00:46:30,970 Jā, tas ir, tāpēc es zinu, es mus meklēt i n tiesības rādītājs par šo koku. 929 00:46:30,970 --> 00:46:32,440 Es eju uz 77. 930 00:46:32,440 --> 00:46:35,367 OK, ir 66 mazāks par vai lielāks par 77? 931 00:46:35,367 --> 00:46:37,950 Tas ir mazāk, nekā, lai jūs zināt, ak, ka ir jābūt kreisi mezglā. 932 00:46:37,950 --> 00:46:41,410 >> Un tāpēc šeit mēs esam sava veida konservēšana visas lielas lietas par blokiem 933 00:46:41,410 --> 00:46:44,420 tā, piemēram, dinamisko izmēru maiņas objektu, kas ir 934 00:46:44,420 --> 00:46:49,530 iespēja ievietot un dzēst pēc vēlēšanās, neraizējoties par fiksētā 935 00:46:49,530 --> 00:46:50,370 daudz vietas. 936 00:46:50,370 --> 00:46:52,820 Mēs joprojām saglabāt visus šie brīnišķīgi lietas 937 00:46:52,820 --> 00:46:57,140 bet arī spēja saglabāt log un meklēt laiku bināro meklēšanu 938 00:46:57,140 --> 00:47:00,450 ka mēs bijām tikai iepriekš iespēja iegūt frāzi. 939 00:47:00,450 --> 00:47:06,310 >> Cool datu struktūra, sava veida sarežģīti īstenot, mezglu. 940 00:47:06,310 --> 00:47:08,311 Kā jūs varat redzēt, viss, ir struct mezglā 941 00:47:08,311 --> 00:47:10,143 ir tas, ka jums ir pa kreisi un tiesības rādītājs. 942 00:47:10,143 --> 00:47:11,044 Tas ir viss, tas ir. 943 00:47:11,044 --> 00:47:12,960 Tātad, nevis tikai kam ir X vai iepriekšējais. 944 00:47:12,960 --> 00:47:15,920 Jums ir pa kreisi vai pa labi, un tad Jūs varat veida saistīt tos kopā 945 00:47:15,920 --> 00:47:16,836 tomēr jums tā izvēlēties. 946 00:47:16,836 --> 00:47:21,080 947 00:47:21,080 --> 00:47:24,270 >> Labi, mēs esam patiesībā notiek lietojiet tikai dažas minūtes. 948 00:47:24,270 --> 00:47:25,790 Tātad mēs ejam, lai atgrieztos šeit. 949 00:47:25,790 --> 00:47:28,270 Kā es iepriekš teicu, Es veida paskaidroja 950 00:47:28,270 --> 00:47:31,520 loģiku, kā mēs varētu meklēt caur šo. 951 00:47:31,520 --> 00:47:33,860 Mēs ejam, lai mēģinātu pseudocoding šo, lai redzētu 952 00:47:33,860 --> 00:47:38,000 ja mēs varam veida piemēro pati loģika bināro meklēšanu 953 00:47:38,000 --> 00:47:40,055 uz cita veida datu struktūra. 954 00:47:40,055 --> 00:47:45,049 Ja jūs guys vēlaties veikt, piemēram, pāris minūtes, lai tikai domāt par to. 955 00:47:45,049 --> 00:48:45,927 956 00:48:45,927 --> 00:48:46,925 LABI. 957 00:48:46,925 --> 00:48:51,407 Labi, es esmu gatavojas faktiski tikai dod jums the-- nē, 958 00:48:51,407 --> 00:48:52,990 mēs runājam par pseudocode pirmās. 959 00:48:52,990 --> 00:48:56,580 Tātad vai kāds vēlaties dot stab pie kāda 960 00:48:56,580 --> 00:49:02,100 pirmā lieta, ko vēlaties darīt, ja jūs, sākot out meklēšana ir? 961 00:49:02,100 --> 00:49:04,460 Ja mēs meklējam vērtība no 66, kas ir 962 00:49:04,460 --> 00:49:07,940 pirmā lieta, ko mēs vēlamies darīt, ja mēs vēlamies, lai bināro meklēt šo koku? 963 00:49:07,940 --> 00:49:10,760 >> Mērķauditorija: Jūs vēlaties, lai izskatās labi un skatīties pa kreisi un redzēt [dzirdams] 964 00:49:10,760 --> 00:49:11,230 lielāks skaits. 965 00:49:11,230 --> 00:49:12,271 >> ANDI PENG: Jā, tieši tā. 966 00:49:12,271 --> 00:49:15,350 Tātad jūs gatavojas apskatīt jūsu saknes. 967 00:49:15,350 --> 00:49:18,180 Ir daudz veidu, jūs varat zvanīt tā, jūsu mātes mezglu cilvēki saka. 968 00:49:18,180 --> 00:49:21,317 Es gribētu teikt, saknes, jo tas ir tāpat kā ar koka saknēm. 969 00:49:21,317 --> 00:49:23,400 Jūs esat gatavojas apskatīt saknes mezgla, un jūs esat 970 00:49:23,400 --> 00:49:26,940 gatavojas redzēt, ir 66 lielāks nekā vai mazāk nekā 55. 971 00:49:26,940 --> 00:49:30,360 Un, ja tas ir lielāks nekā, labi, tas ir lielāka nekā, ja mēs gribam, lai izskatās? 972 00:49:30,360 --> 00:49:32,000 Ja mēs vēlamies, lai meklētu tagad, vai ne? 973 00:49:32,000 --> 00:49:34,340 Mēs vēlamies, lai meklētu Labajā pusē no šo koku. 974 00:49:34,340 --> 00:49:38,390 >> Tātad mums ir, ērti A rādītājs, kas norāda uz labo pusi. 975 00:49:38,390 --> 00:49:44,325 Un tā, tad mēs varam noteikt mūsu jauno sakne būt 77. 976 00:49:44,325 --> 00:49:46,450 Mēs varam tikai iet, lai kur rādītājs ir vērsta. 977 00:49:46,450 --> 00:49:49,100 Nu, ak, šeit mēs sākam pie 77, un mēs varam tikai 978 00:49:49,100 --> 00:49:51,172 izdarītu rekursīvi atkal un atkal. 979 00:49:51,172 --> 00:49:52,880 Tādā veidā, jūs veida no ir funkcija. 980 00:49:52,880 --> 00:49:57,430 Jums ir veids, kā meklēt, kas jums var tikai atkārtot atkal un atkal un atkal, 981 00:49:57,430 --> 00:50:02,720 atkarībā no tā, kur jūs vēlaties meklēt kamēr jūs beidzot nokļūt ar vērtību 982 00:50:02,720 --> 00:50:04,730 ka jūs meklējat. 983 00:50:04,730 --> 00:50:05,230 Jēga? 984 00:50:05,230 --> 00:50:07,800 >> Es esmu par, lai parādītu jums faktiskais kodu, un tas ir daudz kodu. 985 00:50:07,800 --> 00:50:08,674 Nav nepieciešams, lai ķēms. 986 00:50:08,674 --> 00:50:09,910 Mēs runājam caur to. 987 00:50:09,910 --> 00:50:13,410 988 00:50:13,410 --> 00:50:14,020 >> Patiesībā, nē. 989 00:50:14,020 --> 00:50:15,061 Tas bija tikai pseudocode. 990 00:50:15,061 --> 00:50:17,860 Labi, ka bija tikai pseudocode, kas ir mazliet komplekss, 991 00:50:17,860 --> 00:50:19,751 bet tas ir pilnīgi naudas sodu. 992 00:50:19,751 --> 00:50:21,000 Ikvienam pēc kopā šeit? 993 00:50:21,000 --> 00:50:24,260 Ja saknes ir nulle, atgriešanās nepatiess, jo tas nozīmē, ka 994 00:50:24,260 --> 00:50:26,850 Jums pat nav neko tur. 995 00:50:26,850 --> 00:50:31,376 >> Ja saknes n ir vērtība, tādēļ, ja tas notiek, ir viens jūs meklējat, 996 00:50:31,376 --> 00:50:34,000 tad jūs gatavojas atgriezties true jo jūs zināt, ka jums atrast to. 997 00:50:34,000 --> 00:50:36,250 Bet, ja vērtība ir mazāka nekā sakne n, tu esi 998 00:50:36,250 --> 00:50:38,332 dodas meklēt kreiso bērns vai kreiso lapu, 999 00:50:38,332 --> 00:50:39,540 ko jūs vēlaties, lai izsauktu to. 1000 00:50:39,540 --> 00:50:41,750 Un, ja vērtība ir lielāka nekā saknes, jūs gatavojas meklēt pareizo koku, 1001 00:50:41,750 --> 00:50:44,610 tad vienkārši palaist funkciju izmantojot meklēšanas vēlreiz. 1002 00:50:44,610 --> 00:50:48,037 >> Un, ja sakne ir nulle, ka nozīmē, ka jūs esat sasnieguši? 1003 00:50:48,037 --> 00:50:50,120 Tas nozīmē, ka jums ir ne Vairāk lapas, lai meklētu, 1004 00:50:50,120 --> 00:50:52,230 tad jūs zināt, ak, es uzminēt tas nav šeit 1005 00:50:52,230 --> 00:50:55,063 jo, kad es esmu paskatījos caur viss, un tas nav šeit, 1006 00:50:55,063 --> 00:50:56,930 tas tikai varētu būt šeit. 1007 00:50:56,930 --> 00:50:58,350 >> Vai tas ir jēga, lai visiem? 1008 00:50:58,350 --> 00:51:03,230 Tātad, tas ir tāpat kā bināro meklēšanu konservēšana spējas saistītas sarakstus. 1009 00:51:03,230 --> 00:51:09,200 Atdzesē, un tāpēc otrais tips Datu struktūras jūs puiši 1010 00:51:09,200 --> 00:51:13,180 var mēģināt īstenošanas jūsu PSET, Jums tikai jāizvēlas vienu metodi. 1011 00:51:13,180 --> 00:51:19,430 Bet varbūt alternatīva metode hash tabulā ir tas, ko mēs saucam trie. 1012 00:51:19,430 --> 00:51:24,080 >> Viss trie ir ir īpaša veida koks, kas 1013 00:51:24,080 --> 00:51:28,600 ir vērtības, kas iet uz citām vērtībām. 1014 00:51:28,600 --> 00:51:31,450 Tāpēc tā vietā, bināro koks tajā nozīmē, ka tikai viens 1015 00:51:31,450 --> 00:51:35,940 lieta var norādīt uz diviem, jūs varat būt viena lieta norāda uz daudzām, daudzām lietām. 1016 00:51:35,940 --> 00:51:39,450 Jūs būtībā ir masīvi iekšpusē, kas jūs glabājat 1017 00:51:39,450 --> 00:51:41,790 norādes, kas norāda uz citām masīvi. 1018 00:51:41,790 --> 00:51:45,210 1019 00:51:45,210 --> 00:51:49,460 >> Tātad mezgla, kā mēs definētu trie 1020 00:51:49,460 --> 00:51:52,590 mēs vēlamies, lai būtu Būla, c vārdu, vai ne? 1021 00:51:52,590 --> 00:51:54,920 Tātad mezgls ir Būla piemēram, patiess vai nepatiess, 1022 00:51:54,920 --> 00:51:58,490 vispirms pie galvas ka masīvs, ir šis vārds? 1023 00:51:58,490 --> 00:52:03,620 Otrkārt, jūs vēlaties, lai būtu norādes lai neatkarīgi pārējie no viņiem ir. 1024 00:52:03,620 --> 00:52:07,470 Mazliet komplekss, nedaudz abstrakts, bet Es paskaidrošu, ko tas viss nozīmē. 1025 00:52:07,470 --> 00:52:13,800 >> Tātad šeit, augšā, ja jums ir masīvs deklarēta jau, 1026 00:52:13,800 --> 00:52:17,040 mezglu, kur jums ir Būla vērtība glabājas pie priekšpusē 1027 00:52:17,040 --> 00:52:19,490 kas stāsta jums tas ir vārds? 1028 00:52:19,490 --> 00:52:20,520 Vai tas nav vārdu? 1029 00:52:20,520 --> 00:52:23,240 Un tad jums ir pārējā jūsu masīvs, ka 1030 00:52:23,240 --> 00:52:26,040 faktiski uzglabā visus iespējas, ko tas varētu būt. 1031 00:52:26,040 --> 00:52:28,660 Tātad, piemēram, piemēram, augšpusē esat 1032 00:52:28,660 --> 00:52:32,140 Pirmā lieta, kas saka patiess vai nepatiesa, jā vai nē, tas ir vārds. 1033 00:52:32,140 --> 00:52:38,130 >> Un tad jums ir no 0 līdz 26 burti, ka jūs varat uzglabāt. 1034 00:52:38,130 --> 00:52:42,790 Ja es gribēju, lai meklētu šeit par nūja, es iet uz augšu 1035 00:52:42,790 --> 00:52:49,200 un es meklēt B. Es uzskatu B manā masīvs, un tāpēc es zinu, OK, ir B vārdu? 1036 00:52:49,200 --> 00:52:53,010 B nav vārdu, lai tādējādi Man ir jātur meklēšanu. 1037 00:52:53,010 --> 00:52:56,410 Es aiziet no B, un es ceru uz rādītājs, ka B norāda uz 1038 00:52:56,410 --> 00:53:00,900 un es redzu vēl vienu masīvu informācijas, pats struktūra, kas mums bija pirms tam. 1039 00:53:00,900 --> 00:53:05,240 >> Un here-- oh, nākamais vēstuli [dzirdams] ir A. 1040 00:53:05,240 --> 00:53:07,210 Tātad mēs skatāmies šajā masīvā. 1041 00:53:07,210 --> 00:53:10,860 Mēs atrast astoto vērtību, un tad mēs skatāmies, lai redzētu, ak, 1042 00:53:10,860 --> 00:53:12,840 hey, ir tas, ka vārdu, ir B-A vārdu? 1043 00:53:12,840 --> 00:53:13,807 Tas nav vārds. 1044 00:53:13,807 --> 00:53:14,890 Mēs esam ieguvuši, lai saglabātu meklējat. 1045 00:53:14,890 --> 00:53:17,850 >> Un tā, tad mēs skatāmies uz to, kur rādītājs ir A, 1046 00:53:17,850 --> 00:53:21,130 un tas norāda uz citā veidā kas mums ir vairāk vērtību uzglabā. 1047 00:53:21,130 --> 00:53:24,150 Un galu galā, mēs nokļūt B-A-T, kas ir vārds. 1048 00:53:24,150 --> 00:53:25,970 Un tā nākamreiz paskatās, jūs gatavojas 1049 00:53:25,970 --> 00:53:30,850 ir, ka pārbaude, jā, Šī Būla funkcija ir taisnība. 1050 00:53:30,850 --> 00:53:35,450 Un tā šajā ziņā mēs esam sava veida , kam ir koks ar masīviem. 1051 00:53:35,450 --> 00:53:39,890 >> Tātad jūs varat veida meklēt leju. 1052 00:53:39,890 --> 00:53:43,650 Nevis sajaukšanai funkciju un piešķirot vērtības, kas saistītas sarakstā, 1053 00:53:43,650 --> 00:53:49,190 Jūs varat vienkārši īstenot pētniecības trie kas meklē downwords. 1054 00:53:49,190 --> 00:53:50,850 Tiešām, tiešām sarežģīti sīkumi. 1055 00:53:50,850 --> 00:53:54,060 Nav viegli domāt par to, jo es esmu kā spļaut tik daudz datu struktūras out 1056 00:53:54,060 --> 00:53:58,710 pie jums, bet tas visiem veida saprast, kā darbojas loģika šo? 1057 00:53:58,710 --> 00:54:01,920 >> OK, atdzesē. 1058 00:54:01,920 --> 00:54:05,600 Tā B-A-T, un pēc tam jūs gatavojas meklēt. 1059 00:54:05,600 --> 00:54:07,940 Nākamreiz, kad ejam lai redzētu, ak, hey, tā ir taisnība, 1060 00:54:07,940 --> 00:54:09,273 Tāpēc es zinu, tas ir vārds. 1061 00:54:09,273 --> 00:54:12,030 1062 00:54:12,030 --> 00:54:13,770 >> Pats par zoo. 1063 00:54:13,770 --> 00:54:17,960 Tātad, šeit ir lieta tieši tagad, ja mēs vēlējās, lai meklētu zoo, tieši tagad, 1064 00:54:17,960 --> 00:54:20,780 Pašlaik zoo nav vārds mūsu vārdnīcā 1065 00:54:20,780 --> 00:54:25,300 jo, kā jūs guys var redzēt, Pirmkārt, ka mums ir Būla 1066 00:54:25,300 --> 00:54:28,590 return true ir beigās zoom. 1067 00:54:28,590 --> 00:54:30,430 Mums ir Z-O-O-M. 1068 00:54:30,430 --> 00:54:33,900 >> Un tāpēc šeit, mums nav tiešām ir vārds, zoo, mūsu vārdnīcā 1069 00:54:33,900 --> 00:54:36,070 jo šī rūtiņa nav atzīmēta. 1070 00:54:36,070 --> 00:54:39,540 Tātad dators nav zina, ka zoo ir vārds 1071 00:54:39,540 --> 00:54:42,430 jo tā, ka mēs esam uzglabāt to, tikai zoom šeit 1072 00:54:42,430 --> 00:54:44,920 patiesībā ir Būla vērtība kas ir bijis ieslēgts taisnība. 1073 00:54:44,920 --> 00:54:49,380 Tātad, ja mēs gribam, lai ievietotu Vārds, zoo, mūsu vārdnīcā, 1074 00:54:49,380 --> 00:54:51,770 Kā mēs iet par darot, ka? 1075 00:54:51,770 --> 00:54:55,960 Kas mums jādara, lai pārliecinātos, ka mūsu dators zina, ka Z-O-O ir vārds 1076 00:54:55,960 --> 00:54:58,130 un nav pirmais vārds ir Z-O-O-M? 1077 00:54:58,130 --> 00:54:59,360 >> Mērķauditorija: [dzirdams] 1078 00:54:59,360 --> 00:55:01,450 >> ANDI PENG: Tieši tā, mēs vēlaties pārliecināties, ka tas 1079 00:55:01,450 --> 00:55:07,890 šeit, lai Būla vērtība ir pārbauda off, ka tā ir taisnība. 1080 00:55:07,890 --> 00:55:13,297 Z-O-O, tad mēs ejam, lai pārbaudītu, ka, lai mēs precīzi zinātu, hey, zoo ir vārds. 1081 00:55:13,297 --> 00:55:15,380 Es esmu gatavojas pateikt dators, kas tas ir vārds tik 1082 00:55:15,380 --> 00:55:18,000 ka tad, kad dators pārbaudes, tā zina, ka zoodārzs ir vārds. 1083 00:55:18,000 --> 00:55:21,269 >> Jo atcerēties visus šos datus konstrukcijas, tas ir ļoti viegli mums 1084 00:55:21,269 --> 00:55:22,310 teikt, ak, bat ir vārds. 1085 00:55:22,310 --> 00:55:22,851 Zoo ir vārds. 1086 00:55:22,851 --> 00:55:23,611 Zoom ir vārds. 1087 00:55:23,611 --> 00:55:25,860 Bet, ja jūs veidot to, dators nav ne jausmas. 1088 00:55:25,860 --> 00:55:28,619 >> Tātad jums ir pateikt to tieši kurā brīdī tas ir vārds? 1089 00:55:28,619 --> 00:55:29,910 Kurā brīdī tas nav vārdu? 1090 00:55:29,910 --> 00:55:31,784 Un kurā brīdī es varu nepieciešams meklēt lietas, 1091 00:55:31,784 --> 00:55:34,000 un kurā brīdī man jāiet tālāk? 1092 00:55:34,000 --> 00:55:37,010 Ikvienam skaidrs, ka? 1093 00:55:37,010 --> 00:55:39,540 Cool. 1094 00:55:39,540 --> 00:55:42,530 >> Un tā tad nāk problēma Kā mēs 1095 00:55:42,530 --> 00:55:45,560 iet par kaut ko ievietojot tas tiešām nav tur? 1096 00:55:45,560 --> 00:55:49,090 Tātad pieņemsim tikai teikt, ka mēs vēlamies, lai ievietotu vārds, vanna, mūsu TRIE. 1097 00:55:49,090 --> 00:55:53,589 Kā jūs guys var redzēt, piemēram, šobrīd viss, kas mums ir tagad, ir B-A-T, 1098 00:55:53,589 --> 00:55:55,630 un šī jaunā datu struktūra tur bija pinte ka 1099 00:55:55,630 --> 00:55:59,740 norādīja uz nulli, jo mēs pieņemam ka, ak, tur nav vārdu pēc B-A-T, 1100 00:55:59,740 --> 00:56:02,530 Kāpēc mums ir nepieciešams, lai saglabātu ņemot lietas pēc tam T. 1101 00:56:02,530 --> 00:56:06,581 >> Bet problēma rodas, ja mēs jums vēlas, lai ir vārds, kas nāk pēc tam, kad 1102 00:56:06,581 --> 00:56:07,080 T s. 1103 00:56:07,080 --> 00:56:09,500 Ja jums ir vanna, tu esi gatavojas vēlaties H tiesības. 1104 00:56:09,500 --> 00:56:13,290 Un tā kā mēs esam gatavojas darīt, ir mēs spēsim izveidot atsevišķu mezglu. 1105 00:56:13,290 --> 00:56:16,840 Mēs esam ne piešķirt neatkarīgi no summas atmiņas par šo jauno masīva, 1106 00:56:16,840 --> 00:56:20,720 un mēs spēsim pārdalīt norādes. 1107 00:56:20,720 --> 00:56:22,947 >> Mēs ejam, lai piešķirtu H, Pirmkārt, tas null, 1108 00:56:22,947 --> 00:56:24,030 mēs spēsim atbrīvoties. 1109 00:56:24,030 --> 00:56:26,590 Mēs ejam, lai būtu punkts H leju. 1110 00:56:26,590 --> 00:56:30,600 Ja mēs redzam H, mēs to gribam doties kaut kur citur. 1111 00:56:30,600 --> 00:56:33,910 >> Jo šeit, mēs varam pēc tam pārbaudīt off jā. 1112 00:56:33,910 --> 00:56:38,170 Ja mēs hit H pēc T, oh, tad mēs zinām, ka tas ir vārds. 1113 00:56:38,170 --> 00:56:41,110 Būla gatavojas atgriezties true. 1114 00:56:41,110 --> 00:56:42,950 Ikvienam skaidrs, par to, kā tas notika? 1115 00:56:42,950 --> 00:56:45,110 LABI. 1116 00:56:45,110 --> 00:56:47,214 >> Tātad, būtībā, visas šīs datu struktūras 1117 00:56:47,214 --> 00:56:50,130 ka mēs esam izgājuši vairāk nekā šodien, es esmu gājusi pār viņiem tiešām, tiešām ātri 1118 00:56:50,130 --> 00:56:52,192 un nevis uz daudz detaļa, un tas ir OK. 1119 00:56:52,192 --> 00:56:53,900 Kad sākat messing ar to, jūs būsiet 1120 00:56:53,900 --> 00:56:55,733 sekotu, kur visas norādes ir, 1121 00:56:55,733 --> 00:56:58,060 to, kas notiek jūsu datu struktūras, un tā tālāk. 1122 00:56:58,060 --> 00:56:59,810 Tie būs ļoti noderīga, un tas ir atkarīgs no jums 1123 00:56:59,810 --> 00:57:03,890 puiši, lai pilnīgi noskaidrotu, kā Jūs vēlaties, lai īstenotu lietas. 1124 00:57:03,890 --> 00:57:07,650 >> Un tā pset4, no 5-- oh, tas ir nepareizi. 1125 00:57:07,650 --> 00:57:10,140 Pset5 ir pārrakstīšanās. 1126 00:57:10,140 --> 00:57:13,710 Kā jau teicu iepriekš, jūs gatavojas, tiklīdz atkal, lejupielādēt avota kodu no mums. 1127 00:57:13,710 --> 00:57:16,210 Tur būs trīs galvenās lietas jums tiks lejupielādi. 1128 00:57:16,210 --> 00:57:18,470 Jūs lejupielādēt vārdnīcas, ņēmējiem, un teksti. 1129 00:57:18,470 --> 00:57:21,660 >> Visas šīs lietas ir ir nu vārdnīcas vārdi 1130 00:57:21,660 --> 00:57:25,190 ka mēs vēlamies, lai jūs, lai pārbaudītu vai tests informācijas 1131 00:57:25,190 --> 00:57:26,930 ka mēs vēlamies, lai jūs pareizrakstības pārbaudi. 1132 00:57:26,930 --> 00:57:29,670 Un tā vārdnīcas mēs dodam jūs dodaties 1133 00:57:29,670 --> 00:57:34,870 lai dotu jums faktisko vārdus, ka mēs vēlamies Jums saglabāt kaut kā tādā veidā, kas ir 1134 00:57:34,870 --> 00:57:36,530 efektīvāka nekā masīva. 1135 00:57:36,530 --> 00:57:38,470 Un tad teksti ir būs tas, ko mēs esam 1136 00:57:38,470 --> 00:57:43,900 kurā jums pareizrakstības pārbaude, lai pārliecinātos, visi vārdi ir reālas vārdi. 1137 00:57:43,900 --> 00:57:47,970 >> Un tā trīs bloki programmas, kas mēs jums 1138 00:57:47,970 --> 00:57:51,130 sauc par dictionary.c, dictionary.h, un speller.c. 1139 00:57:51,130 --> 00:57:56,500 Un tā viss dictionary.c tas ir ko jūs esat aicināti, lai īstenotu. 1140 00:57:56,500 --> 00:57:57,880 Tas slodzes vārdus. 1141 00:57:57,880 --> 00:58:02,000 Tas pareizrakstības pārbauda tos, un tas padara pārliecināts ka viss ir ievietota pareizi. 1142 00:58:02,000 --> 00:58:05,180 >> diction.h ir tikai bibliotēkas fails kas deklarē visas šīs funkcijas. 1143 00:58:05,180 --> 00:58:07,650 Un speller.c, mēs ejam, lai dotu jums. 1144 00:58:07,650 --> 00:58:09,290 Jums nav nepieciešams mainīt kādu no tā. 1145 00:58:09,290 --> 00:58:14,290 Viss speller.c tas ir pieņemt, ka, slodzes tā, pārbauda ātrumu no tā, 1146 00:58:14,290 --> 00:58:19,190 testi kritēriju, piemēram, cik ātri jūs varat darīt lietas. 1147 00:58:19,190 --> 00:58:20,410 >> Tas ir Pareizrakstības. 1148 00:58:20,410 --> 00:58:23,920 Vienkārši nav sajaukt ar to, bet padarīt pārliecināts, ka jūs saprotat, ko tas dara. 1149 00:58:23,920 --> 00:58:28,090 Mēs izmantojam funkciju sauc getrusage ka testi veiktspēju jūsu pareizrakstības 1150 00:58:28,090 --> 00:58:28,590 pārbaudītājs. 1151 00:58:28,590 --> 00:58:32,200 Visiem tas ir būtībā metodei laiks visam jūsu vārdnīcā, 1152 00:58:32,200 --> 00:58:33,680 tāpēc pārliecinieties, ka jūs to saprotat. 1153 00:58:33,680 --> 00:58:36,660 Esiet uzmanīgi, lai nav haoss ar to, vai cits lietas nedarbosies pareizi. 1154 00:58:36,660 --> 00:58:39,740 1155 00:58:39,740 --> 00:58:44,170 >> Un lielākā daļa šo problēmu ir jūs puiši tiešām mainīt dictionary.c. 1156 00:58:44,170 --> 00:58:48,526 Mēs ejam, lai dotu jums 140,000 vārdi vārdnīcu. 1157 00:58:48,526 --> 00:58:50,900 Mēs ejam, lai dotu jums tekstu fails, kas ir šos vārdus, 1158 00:58:50,900 --> 00:58:54,840 un mēs vēlamies, lai jūs varētu organizēt tos hash tabulas vai TRIE 1159 00:58:54,840 --> 00:58:58,140 jo, kad mēs lūdzam jūs izskaidrot check-- iedomājieties, ja jūs esat pareizrakstības 1160 00:58:58,140 --> 00:59:00,690 pārbaudot, piemēram, Homēra Odisejā. 1161 00:59:00,690 --> 00:59:03,010 Tas ir tāpat kā šo milzīgo, milzīgs testu. 1162 00:59:03,010 --> 00:59:05,190 >> Iedomājieties, ja katru vārds jums nācās meklēt 1163 00:59:05,190 --> 00:59:08,100 izmantojot masīvu 140000 vērtībām. 1164 00:59:08,100 --> 00:59:10,350 Tas veikt uz visiem laikiem jūsu mašīna palaist. 1165 00:59:10,350 --> 00:59:14,490 Tieši tāpēc mēs vēlamies organizēt mūsu datus efektīvāku datu struktūras 1166 00:59:14,490 --> 00:59:17,270 piemēram, hash tabulu vai TRIE. 1167 00:59:17,270 --> 00:59:20,700 Un tad jūs guys var kind par to, kad jūs meklēt piekļuve 1168 00:59:20,700 --> 00:59:22,570 lietas vieglāk un ātrāk. 1169 00:59:22,570 --> 00:59:24,934 >> Un tāpēc jābūt uzmanīgiem, lai atrisinātu sadursmes. 1170 00:59:24,934 --> 00:59:27,350 Jūs esat gatavojas iegūt ķekars no vārdiem, kas sākas ar A 1171 00:59:27,350 --> 00:59:29,957 Jūs esat gatavojas iegūt ķekars vārdus kas sākas ar B. Līdz ar jums 1172 00:59:29,957 --> 00:59:31,290 puiši kā jūs vēlaties, lai to atrisinātu. 1173 00:59:31,290 --> 00:59:34,144 Varbūt tur ir vairāk efektīva hash funkcija 1174 00:59:34,144 --> 00:59:36,810 nekā tikai pirmo burtu kaut kas, un tā tas ir atkarīgs no jums 1175 00:59:36,810 --> 00:59:38,190 guys veida darīt, ko vien vēlaties. 1176 00:59:38,190 --> 00:59:40,148 >> Varbūt jūs vēlaties pievienot visi burti kopā. 1177 00:59:40,148 --> 00:59:43,410 Varbūt jūs vēlaties, lai patīk darīt dīvainas lietas atskaitīties skaitu vēstuļu, 1178 00:59:43,410 --> 00:59:43,970 neatkarīgi. 1179 00:59:43,970 --> 00:59:45,386 Līdz jums, puiši, kā jūs vēlaties to darīt. 1180 00:59:45,386 --> 00:59:49,262 Ja jūs vēlaties darīt hash tabulu, ja jums gribu izmēģināt trie, pilnībā atkarīgs no jums. 1181 00:59:49,262 --> 00:59:52,470 Es brīdinu jūs pirms laika, ka trie parasti ir nedaudz sarežģītāk 1182 00:59:52,470 --> 00:59:54,520 tikai tāpēc, ka tur ir daudz vairāk norādes sekot. 1183 00:59:54,520 --> 00:59:55,645 Bet pilnībā atkarīgs no jums puiši. 1184 00:59:55,645 --> 00:59:58,742 Tas ir daudz efektīvāk vairumā gadījumu. 1185 00:59:58,742 --> 01:00:01,450 Jūs vēlaties, lai tiešām varētu saglabāt līdzi visiem jūsu norādes. 1186 01:00:01,450 --> 01:00:03,850 Tāpat kā darīt to pašu ka man bija darīt šeit. 1187 01:00:03,850 --> 01:00:06,871 Kad jūs mēģināt ievietot vērtības uz hash tabulu vai dzēst, 1188 01:00:06,871 --> 01:00:08,620 pārliecinieties, ka esat tiešām sekotu 1189 01:00:08,620 --> 01:00:11,860 no tā, kur viss ir tāpēc, ka tas ir patiešām viegli, ja es esmu 1190 01:00:11,860 --> 01:00:14,727 mēģinot ievietot, piemēram, vārda, Endijs. 1191 01:00:14,727 --> 01:00:16,810 Pieņemsim tikai teikt, ka ir reāls vārds, vārds, Andy, 1192 01:00:16,810 --> 01:00:19,640 par milzu sarakstā A vārdiem. 1193 01:00:19,640 --> 01:00:22,450 >> Ja es tikai notikt pārdalīt rādītājs nepareizi, Ups, 1194 01:00:22,450 --> 01:00:24,940 tur iet visus ar pārējie manas saistīta saraksta. 1195 01:00:24,940 --> 01:00:26,897 Tagad vienīgais vārds I ir, ir Andy, un tagad 1196 01:00:26,897 --> 01:00:29,230 visiem citiem vārdiem vārdnīca ir pazuduši. 1197 01:00:29,230 --> 01:00:31,370 Un lai jūs vēlaties, lai pārliecinātos, ka jūs sekot līdzi visiem jūsu norādes 1198 01:00:31,370 --> 01:00:33,661 vai arī jūs esat gatavojas saņemt milzīgas problēmas jūsu kodu. 1199 01:00:33,661 --> 01:00:35,840 Izdarīt lietas rūpīgi soli pa solim. 1200 01:00:35,840 --> 01:00:37,870 Tas padara to daudz vieglāk iedomāties. 1201 01:00:37,870 --> 01:00:40,910 >> Un visbeidzot, jūs vēlaties, lai varētu pārbaudīt savu veiktspēju jūsu programmas 1202 01:00:40,910 --> 01:00:41,618 uz lielā kuģa. 1203 01:00:41,618 --> 01:00:43,710 Ja jūs puiši aizņemt apskatīt CS50 tieši tagad, 1204 01:00:43,710 --> 01:00:45,210 mēs esam tas, ko sauc par lielo valde. 1205 01:00:45,210 --> 01:00:50,200 Tas ir rezultāts lapa no visstraujāk Pareizrakstības pārbaude reizes pāri visiem CS50 1206 01:00:50,200 --> 01:00:55,720 tieši tagad, es domāju, ka, piemēram, 10 top reizes es domāju, ka astoņas no tām ir personāls. 1207 01:00:55,720 --> 01:00:57,960 Mēs patiešām vēlamies, lai jūs guys pārspēt mūs. 1208 01:00:57,960 --> 01:01:00,870 >> Visi no mums centās īstenot ātrākais kods, cik vien iespējams. 1209 01:01:00,870 --> 01:01:04,880 Mēs vēlamies, lai jūs guys, lai mēģinātu apstrīdēt mums un ieviest ātrāk nekā mums visiem 1210 01:01:04,880 --> 01:01:05,550 var. 1211 01:01:05,550 --> 01:01:07,970 Un tā tas ir patiešām pirmā reize, kad mēs esam 1212 01:01:07,970 --> 01:01:12,680 lūdz jūs guys darīt PSET, ka jūs tiešām var darīt jebkādā metodi 1213 01:01:12,680 --> 01:01:13,760 tu gribi. 1214 01:01:13,760 --> 01:01:17,730 >> Es vienmēr saku, tas ir vairāk līdzinās uz reālās dzīves risinājumu, vai ne? 1215 01:01:17,730 --> 01:01:19,550 Es saku, hey, man ir nepieciešams, lai jūs to izdarītu. 1216 01:01:19,550 --> 01:01:21,380 Veidot programmu, kas tas par mani. 1217 01:01:21,380 --> 01:01:22,630 Vai tas tomēr vēlaties. 1218 01:01:22,630 --> 01:01:24,271 Es tikai zinu, ka es gribu, lai ātri. 1219 01:01:24,271 --> 01:01:25,770 Tas ir jūsu uzdevums, lai šīs nedēļas laikā. 1220 01:01:25,770 --> 01:01:27,531 Jūs guys, mēs ejam lai dotu jums uzdevumu. 1221 01:01:27,531 --> 01:01:29,030 Mēs ejam, lai dotu jums izaicinājumu. 1222 01:01:29,030 --> 01:01:31,559 Un tad tas ir atkarīgs no jums, puiši pilnīgi vienkārši izrēķināt 1223 01:01:31,559 --> 01:01:34,100 kas ir ātrākais un visvairāk efektīvs veids, kā īstenot šo. 1224 01:01:34,100 --> 01:01:34,600 Yeah? 1225 01:01:34,600 --> 01:01:37,476 >> Mērķauditorija: Vai mēs atļauts, ja vēlējās, lai pētniecības ātrākus veidus 1226 01:01:37,476 --> 01:01:40,821 darīt hash tabulas online, mēs varam darīt kas un citē kāds cits kods? 1227 01:01:40,821 --> 01:01:42,070 ANDI PENG: Jā, pilnīgi naudas sodu. 1228 01:01:42,070 --> 01:01:44,320 Tātad, ja jūs guys lasīt spec, tur ir līnija 1229 01:01:44,320 --> 01:01:48,310 spec, kas saka, jūs guys ir pilnīgi bez maksas, lai pētniecības hash 1230 01:01:48,310 --> 01:01:51,070 funkcijas par to, kas ir daži no ātrāk hash funkcijas 1231 01:01:51,070 --> 01:01:54,720 vadīt lietas cauri, kā Kamēr jūs citēt šo kodu. 1232 01:01:54,720 --> 01:01:57,220 Tātad daži cilvēki jau ir sapratu, ātrus veidus 1233 01:01:57,220 --> 01:02:00,250 darīt pareizrakstības pārbaudītājus, ātrās veidi, kā uzglabāt informāciju. 1234 01:02:00,250 --> 01:02:02,750 Pilnībā atkarīgs no jums puiši, ja jums vēlas vienkārši pieņemt, ka, labi? 1235 01:02:02,750 --> 01:02:04,045 Pārliecinieties, ka jūs citējot. 1236 01:02:04,045 --> 01:02:06,170 Problēma šeit patiešām ka mēs cenšamies, lai pārbaudītu 1237 01:02:06,170 --> 01:02:09,750 ir pārliecināties, ka jūs zināt savu ceļu apkārt norādes. 1238 01:02:09,750 --> 01:02:12,700 Cik jūs īstenošanā faktiskais hash funkcija 1239 01:02:12,700 --> 01:02:15,070 un nāk klajā ar līdzīgu matemātika, lai to izdarītu, 1240 01:02:15,070 --> 01:02:17,570 jūs guys var pētīt neatkarīgi metodes online jūs guys vēlaties. 1241 01:02:17,570 --> 01:02:17,996 Yeah? 1242 01:02:17,996 --> 01:02:19,700 >> Mērķauditorija: Vai mēs varam minēt tikai izmantojot [dzirdams]? 1243 01:02:19,700 --> 01:02:20,120 >> ANDI PENG: Jā. 1244 01:02:20,120 --> 01:02:22,328 Jūs varat vienkārši, savā komentārā, Jūs varat minēt, piemēram, oh, 1245 01:02:22,328 --> 01:02:26,127 ņemts no Yada, yada, yada, hash funkciju. 1246 01:02:26,127 --> 01:02:27,210 Kāds ir kādi jautājumi? 1247 01:02:27,210 --> 01:02:29,694 Mēs faktiski breezed caur sadaļā šodien. 1248 01:02:29,694 --> 01:02:31,610 Es būšu šeit, lai atbildēt uz jautājumiem, kā arī. 1249 01:02:31,610 --> 01:02:36,570 >> Tāpat, kā jau teicu, birojs stundas šovakar un rīt. 1250 01:02:36,570 --> 01:02:40,307 Spec šonedēļ ir faktiski super viegli un super īss, lai lasītu. 1251 01:02:40,307 --> 01:02:43,140 Es ieteiktu ņemot apskatīt, vienkārši izlasīt kopumā no tā. 1252 01:02:43,140 --> 01:02:45,730 >> Un Zamyla faktiski pastaigas Jūs caur katru no funkcijām 1253 01:02:45,730 --> 01:02:49,796 Jums ir nepieciešams, lai īstenotu, un tāpēc tas ir ļoti, ļoti skaidrs, kā to darīt visu. 1254 01:02:49,796 --> 01:02:51,920 Tikai, lai pārliecinātos, ka jūs esat sekotu norādes. 1255 01:02:51,920 --> 01:02:53,650 Tas ir ļoti sarežģīts PSET. 1256 01:02:53,650 --> 01:02:56,744 >> Tas nav izaicinājums, jo, piemēram, oh, jēdzieni ir tik daudz vairāk 1257 01:02:56,744 --> 01:02:59,160 grūti, vai arī jums ir iemācīties tik daudz jauna sintakse veids 1258 01:02:59,160 --> 01:03:00,650 ka jūs par pēdējo PSET. 1259 01:03:00,650 --> 01:03:03,320 Tas PSET ir grūti, jo tur ir tik daudz norādes, 1260 01:03:03,320 --> 01:03:06,980 un tad tas ir ļoti, ļoti viegli, kad Jums ir bug savu kodu nevarēs 1261 01:03:06,980 --> 01:03:08,315 lai atrastu, kur tas ir bug. 1262 01:03:08,315 --> 01:03:13,200 >> Un tā ir pilnīga un izdvest ticība tevi puiši, lai varētu pārspēt mūsu [nedzirdama] 1263 01:03:13,200 --> 01:03:13,700 rakstību. 1264 01:03:13,700 --> 01:03:16,640 Es tiešām neesmu nevienu rakstisku raktuves vēl, bet es esmu par to rakstīt raktuvē. 1265 01:03:16,640 --> 01:03:19,070 Tāpēc, kamēr jūs esat rakstiski yours, es būšu rakstot mine. 1266 01:03:19,070 --> 01:03:21,070 Es esmu gatavojas, lai mēģinātu padarīt raktuves ātrāk nekā jums. 1267 01:03:21,070 --> 01:03:23,940 Mēs redzēsim, kurš ir ātrākais vienu. 1268 01:03:23,940 --> 01:03:27,340 >> Un jā, es redzēt visus jūs puiši šeit otrdien. 1269 01:03:27,340 --> 01:03:29,510 Es darbosies veida, piemēram, PSET darbnīcā. 1270 01:03:29,510 --> 01:03:32,640 Visi no sekcijām šis nedēļa ir PSET darbnīcas, 1271 01:03:32,640 --> 01:03:36,690 tāpēc jums puiši ir daudz iespējas palīdzību, darba laika, kā vienmēr, 1272 01:03:36,690 --> 01:03:41,330 un es tiešām ceru uz lasījums visiem jūsu puiši "kodu. 1273 01:03:41,330 --> 01:03:44,160 Man ir viktorīnas šeit, ja jums puiši vēlas nākt saņemtu tiem. 1274 01:03:44,160 --> 01:03:45,880 Tas ir viss. 1275 01:03:45,880 --> 01:03:48,180