1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> Davidas Malan: Gerai. 3 00:00:12,250 --> 00:00:13,860 Sveiki sugrįžę į CS50. 4 00:00:13,860 --> 00:00:16,190 Tai yra 8 savaitės pradžia. 5 00:00:16,190 --> 00:00:21,320 Ir priminti, kad problema rinkinys 5 baigėsi su šiek tiek iššūkis. 6 00:00:21,320 --> 00:00:25,210 Taigi, jei jūs atsigavo Visi jūsų mokymo draugijų ir CA nuotraukos 7 00:00:25,210 --> 00:00:30,480 į card.raw failą, jūs turite teisę iki dabar rasti visus tuos žmones, ir 8 00:00:30,480 --> 00:00:34,510 vienas laimingasis nugalėtojas bus eiti namo su vienu iš šių dalykų, šuolis judesio 9 00:00:34,510 --> 00:00:37,450 prietaisas, galite naudoti galutinis projektai, pavyzdžiui. 10 00:00:37,450 --> 00:00:39,860 >> Tai kiekvienais metais veda prie iš creepiness tiek. 11 00:00:39,860 --> 00:00:43,480 Ir taip, ką aš maniau aš padaryti, tai dalis su jumis kai kurių pastabų, kurios 12 00:00:43,480 --> 00:00:47,370 dingo pirmyn ir atgal per Darbuotojų sąrašas vėlai. 13 00:00:47,370 --> 00:00:51,110 Pavyzdžiui, praeitą naktį, citata kabutės, viena iš darbuotojų 14 00:00:51,110 --> 00:00:55,000 prisijungę: "Aš tiesiog turėjo studento trankyti mano duris imtis su manimi nuotrauką. 15 00:00:55,000 --> 00:00:59,020 Medžiotojai, aš pasakysiu. "Pradėtas išjungti gana aprašomasis ir tada mes persikėlė 16 00:00:59,020 --> 00:01:02,830 į, valandą arba tiek vėliau, "Aš turėjau studentas manęs laukia po skyriuje 17 00:01:02,830 --> 00:01:06,080 ir jis turėjo visas mūsų vardus ir nuotraukas kai popieriaus lapų. "Gerai. 18 00:01:06,080 --> 00:01:09,230 Organizuojamas taip, bet ne visa tai Creepy dar. 19 00:01:09,230 --> 00:01:12,520 >> Tada "Aš buvau iš miesto Šį savaitgalį, ir kai aš gavau atgal, ten buvo vienas 20 00:01:12,520 --> 00:01:12,630 mano 21 00:01:12,630 --> 00:01:16,740 miegamasis. "[Juokas] 22 00:01:16,740 --> 00:01:20,410 Davidas Malan: Kitas citata iš darbuotojų narys, "studentas atėjo į mano namus 23 00:01:20,410 --> 00:01:25,330 Somerville ne 4:00 šį rytą. "Kitas darbuotojai, "Aš turiu mano viešbučiuose 24 00:01:25,330 --> 00:01:30,016 Francisco studentas laukia man ne su trijų DSLR fojė. " 25 00:01:30,016 --> 00:01:31,510 Tipas fotoaparatu. 26 00:01:31,510 --> 00:01:34,980 "Aš nesu net personalui šį semestrą, bet studentas įsiveržė į mano namus tai 27 00:01:34,980 --> 00:01:40,480 ryte ir įrašė visą dalykas Google stiklo. "Ir tada galiausiai, 28 00:01:40,480 --> 00:01:43,650 "Ne mažiau kaip 12 žmonių buvo nekantriai laukia manęs, kai aš gavau iš mano 29 00:01:43,650 --> 00:01:44,800 Limuzinų, ir tada aš 30 00:01:44,800 --> 00:01:46,970 prabudau. "Gerai. 31 00:01:46,970 --> 00:01:57,690 Taigi tarp nuotraukomis, kaip jūs galite pamenu, yra šitas čia kas jūs 32 00:01:57,690 --> 00:02:01,850 Galbūt žinote, kaip Milo Banana, kuris gyvena su Lauren Carvalho, mūsų galvos 33 00:02:01,850 --> 00:02:02,905 mokymo bendradarbis. 34 00:02:02,905 --> 00:02:05,170 Milo, Milo, čia berniukas. 35 00:02:05,170 --> 00:02:06,320 Milo. 36 00:02:06,320 --> 00:02:08,650 Milo. 37 00:02:08,650 --> 00:02:12,230 Žinai, jis dėvi Google Stiklas, todėl mes jums parodysime, visa tai po to. 38 00:02:12,230 --> 00:02:16,190 Taigi tai yra Milo jei norite imtis nuotrauką su juo vėliau. 39 00:02:16,190 --> 00:02:18,240 Jei norite atkreipti dėmesį į auditoriją ten. 40 00:02:18,240 --> 00:02:19,430 Gerai. 41 00:02:19,430 --> 00:02:20,200 Tai gerai filmuota medžiaga. 42 00:02:20,200 --> 00:02:22,556 Na, Milo bananų. 43 00:02:22,556 --> 00:02:23,941 O, nedaryk to. 44 00:02:23,941 --> 00:02:29,020 >> [Juokas] 45 00:02:29,020 --> 00:02:29,470 >> Gerai. 46 00:02:29,470 --> 00:02:34,550 Taigi žodžio tada kas laukia, nes, kaip mes pradėti perėjimo 47 00:02:34,550 --> 00:02:38,410 Šią savaitę Konkrečiau, nuo C komandinės eilutės aplinka PHP ir 48 00:02:38,410 --> 00:02:42,720 "JavaScript" ir "SQL ir HTML ir CSS internetinė aplinka, mes būsime 49 00:02:42,720 --> 00:02:44,490 įrengti jums visiems daugiau žinios 50 00:02:44,490 --> 00:02:46,010 galimus galutinius projektus. 51 00:02:46,010 --> 00:02:49,240 Link šio tikslo, kursas turi tradicija rengti seminarus, kurie 52 00:02:49,240 --> 00:02:50,950 yra tangentinių pranešimus į kursą. 53 00:02:50,950 --> 00:02:54,330 Labai glaudžiai susijęs su programavimą ir app plėtra ir tt, bet 54 00:02:54,330 --> 00:02:57,010 nebūtinai tyrinėję Kursas savo programa. 55 00:02:57,010 --> 00:03:00,250 >> Taigi, jei jums gali būti domina vienas ar daugiau Šių metų seminarų, 56 00:03:00,250 --> 00:03:02,530 užsiregistruoti cs50.net/seminar. 57 00:03:02,530 --> 00:03:06,170 Yra vyresni seminarai ne cs50.net/seminars. 58 00:03:06,170 --> 00:03:10,620 Ir į registrą iki šiol šiais metais yra nuostabi Web Apps su Ruby on 59 00:03:10,620 --> 00:03:13,580 Bėgiai, kuris yra alternatyva kalba PHP. 60 00:03:13,580 --> 00:03:14,900 Kompiuterinė lingvistika. 61 00:03:14,900 --> 00:03:18,710 Įvadas į iOS, kuris yra platforma, kuri naudojama "iPhone" ir 62 00:03:18,710 --> 00:03:19,850 "iPad plėtra. 63 00:03:19,850 --> 00:03:22,890 "JavaScript" Web Apps ", mes padengti kad, bet šiame seminare, jums eiti 64 00:03:22,890 --> 00:03:24,070 į išsamiau. 65 00:03:24,070 --> 00:03:27,390 >> Keliamieji Pasiūlymas, todėl mes iš tikrųjų turi tam tikrų mūsų draugais iš Leap Motion, 66 00:03:27,390 --> 00:03:29,160 Pati įmonė prisijungti prie mūsų. 67 00:03:29,160 --> 00:03:31,800 Rytoj, tiesą sakant, teikti rankas dėl seminaro, jei 68 00:03:31,800 --> 00:03:33,320 Jus sudominti. 69 00:03:33,320 --> 00:03:38,770 Meteor.js, alternatyvus būdas naudojant "JavaScript" ne naršyklėje, 70 00:03:38,770 --> 00:03:39,970 bet serveryje. 71 00:03:39,970 --> 00:03:42,110 Node.js, kuris yra labai toje veną taip pat. 72 00:03:42,110 --> 00:03:43,650 Elegantiškas "Android" dizainas. 73 00:03:43,650 --> 00:03:46,990 "Android" yra labai populiari alternatyva iOS ir Windows Phone 74 00:03:46,990 --> 00:03:48,790 ir kiti mobiliosios platformos. 75 00:03:48,790 --> 00:03:51,180 Ir interneto saugumo aktyvios gynybos. 76 00:03:51,180 --> 00:03:54,590 >> Taigi, iš tiesų, jei norite įsitraukti į tai, leiskite man 77 00:03:54,590 --> 00:03:55,840 atkreipkite dėmesį į tai. 78 00:03:55,840 --> 00:03:57,790 Mes labai laimingas, galėdamas pasakyti, kad mūsų draugai šuolis 79 00:03:57,790 --> 00:03:59,140 Pasiūlymas, kuris yra paleidimo - 80 00:03:59,140 --> 00:04:01,300 šis prietaisas tikrai tik atėjo iš prieš kelis mėnesius - 81 00:04:01,300 --> 00:04:05,960 buvo maloningai paaukojo 30 tokius prietaisus su kuo daugiau moksleivių klasę, jei 82 00:04:05,960 --> 00:04:08,670 norite skolintis įranga link semestro pabaigos ir ją naudoti 83 00:04:08,670 --> 00:04:10,390 faktinis galutinis projektas. 84 00:04:10,390 --> 00:04:11,890 Jie paremti keliomis kalbomis. 85 00:04:11,890 --> 00:04:16,040 Nė vienas iš jų C, nė vienas iš jų PHP, todėl pasiekti vieną arba daugiau iš šių seminarų 86 00:04:16,040 --> 00:04:16,899 gali pasirodyti naudinga. 87 00:04:16,899 --> 00:04:19,730 Ir visi jie bus filmuojamas renginys, jūs negalite 88 00:04:19,730 --> 00:04:21,380 dalyvauti asmeniškai. 89 00:04:21,380 --> 00:04:25,000 Tvarkaraštis bus paskelbtas per rašykite kaip mes sukietėti kambariai. 90 00:04:25,000 --> 00:04:28,460 >> Ir galiausiai, jei jūs einate į projects.cs.50.net, tai svetainė 91 00:04:28,460 --> 00:04:31,450 mes išlaikyti kasmet, kad mes kviečiame žmonės iš Bendrijos, fakulteto, 92 00:04:31,450 --> 00:04:36,420 departamentai, personalo, ir abu darant CS50 į išorę 93 00:04:36,420 --> 00:04:37,730 pasiūlyti projekto idėjas. 94 00:04:37,730 --> 00:04:39,050 Ką interesų į studentų grupių. 95 00:04:39,050 --> 00:04:40,600 Ką interesų departamentams. 96 00:04:40,600 --> 00:04:43,990 Taigi nereikia pasukti ten, jei esate kovoja netikrumo, ką jūs 97 00:04:43,990 --> 00:04:46,700 savarankiškai norėtumėte spręsti. 98 00:04:46,700 --> 00:04:51,760 >> Taigi, paskutinį kartą pristatėme tikriausiai daugiau sudėtingų duomenų struktūra, nei mes norime 99 00:04:51,760 --> 00:04:53,300 matyti savaites praeityje. 100 00:04:53,300 --> 00:04:56,550 Mes norime naudoju matricos gana laimingai naudinga, jei 101 00:04:56,550 --> 00:04:58,160 paprasta duomenų struktūra. 102 00:04:58,160 --> 00:05:00,570 Tada mes pristatėme tai, kuris Žinoma, yra susiję sąrašus. 103 00:05:00,570 --> 00:05:05,470 Ir kas buvo viena iš motyvacijos įvedant šią duomenų struktūrą? 104 00:05:05,470 --> 00:05:06,930 Taip? 105 00:05:06,930 --> 00:05:07,250 Kas tai? 106 00:05:07,250 --> 00:05:08,080 >> PUBLIKA: Dinaminis dydis. 107 00:05:08,080 --> 00:05:09,040 >> Davidas Malan: Dinaminis dydis. 108 00:05:09,040 --> 00:05:11,890 Taigi, o masyvas, jūs turite sužinoti savo dydį iš anksto, kai 109 00:05:11,890 --> 00:05:12,740 Jums skirti jį. 110 00:05:12,740 --> 00:05:14,380 Susijusiame sąrašą, nereikia turite žinoti, kad. 111 00:05:14,380 --> 00:05:17,610 Jūs galite tiesiog malloc, arba apskritai, skirti papildomą 112 00:05:17,610 --> 00:05:20,720 mazgas, taip sakant, bet kuriuo metu galite norite įterpti daugiau duomenų. 113 00:05:20,720 --> 00:05:22,670 Ir mazgas yra iš anksto nustatytas prasmę. 114 00:05:22,670 --> 00:05:25,580 Tai tiesiog bendrinis terminas, apibūdinantis kai konteinerio natūra, kad mes 115 00:05:25,580 --> 00:05:29,610 naudojant mūsų duomenų struktūros laikyti kai palūkanų elementą, kuris šiuo 116 00:05:29,610 --> 00:05:31,750 atveju atsitiktų būti sveikasis skaičius. 117 00:05:31,750 --> 00:05:33,160 >> Bet visada kompromisas. 118 00:05:33,160 --> 00:05:38,070 Taigi mes dinaminius dydžių duomenų struktūra, bet kokia kaina mes mokėti? 119 00:05:38,070 --> 00:05:40,040 Kas sujungtų sąrašų neigiama? 120 00:05:40,040 --> 00:05:41,006 Taip? 121 00:05:41,006 --> 00:05:41,980 >> Auditorija: reikia daugiau atminties. 122 00:05:41,980 --> 00:05:44,240 >> Davidas Malan: Jis reikalauja daugiau atmintis, kaip tiksliai? 123 00:05:44,240 --> 00:05:46,440 >> Auditorija: [nesigirdi]. 124 00:05:46,440 --> 00:05:47,050 >> Davidas Malan: Būtent. 125 00:05:47,050 --> 00:05:50,460 Taigi dabar mes turime patarimų pradėjimo papildoma atmintis, kad mes anksčiau 126 00:05:50,460 --> 00:05:53,040 nereikėjo, nes privalumas masyvo, žinoma, yra tai, kad 127 00:05:53,040 --> 00:05:54,860 viskas greta, atgal atgal į nugaros, kuri 128 00:05:54,860 --> 00:05:56,380 suteikia jums laisvą prieigą. 129 00:05:56,380 --> 00:06:00,710 Nes tik naudojant kvadratinės laikiklis žymėjimas, ar daugiau techniškai rodyklė 130 00:06:00,710 --> 00:06:03,580 aritmetika, labai paprastas papildymas, galite prieiti prie bet 131 00:06:03,580 --> 00:06:05,700 elementai nuolat laiko. 132 00:06:05,700 --> 00:06:08,975 Ir iš tiesų, tai tipo užuomina kita kaina, kurią mokame su 133 00:06:08,975 --> 00:06:09,760 susijęs sąrašą. 134 00:06:09,760 --> 00:06:13,890 >> Kas atsitinka su važiavimo metu kažkas panašaus Paieška, jei noriu 135 00:06:13,890 --> 00:06:17,270 radote vertę ir viduje Susietos sąraše? 136 00:06:17,270 --> 00:06:20,290 Ką mano važiavimo laikas tapti? 137 00:06:20,290 --> 00:06:21,560 Didelės O n. 138 00:06:21,560 --> 00:06:24,060 Jei jis surūšiuoti? 139 00:06:24,060 --> 00:06:25,440 Ką daryti, jei duomenų struktūra manimi rūšiuoti? 140 00:06:25,440 --> 00:06:28,640 Ar galiu padaryti geriau nei didelis O n ieškoti? 141 00:06:28,640 --> 00:06:31,700 Ne, nes blogiausiu atveju ji gali labai gerai būti rūšiuojami, bet skaičius 142 00:06:31,700 --> 00:06:32,950 jūs ieškote gali būti didelis. 143 00:06:32,950 --> 00:06:35,370 Tai gali būti numeris 100, kuris gali atsitikti, kad visi 144 00:06:35,370 --> 00:06:36,410 pabaigoje būdas. 145 00:06:36,410 --> 00:06:39,950 Ir todėl jums gali prieiti tik prie Tinkliniai sąrašas šio įgyvendinimo 146 00:06:39,950 --> 00:06:42,690 būdas pirmojo mazgo, jūs dar tipo nesiseka. 147 00:06:42,690 --> 00:06:47,450 Jūs turite išanalizuoti visą dalykas nuo pradžios iki pat pabaigos, siekiant rasti 148 00:06:47,450 --> 00:06:49,150 kad didelę vertę kaip 100. 149 00:06:49,150 --> 00:06:51,350 Arba nustatyti, jei tai net ten. 150 00:06:51,350 --> 00:06:55,960 >> Taigi, mes galime daryti tai, ką algoritmas į duomenų struktūra, kuri atrodo taip? 151 00:06:55,960 --> 00:06:59,460 Mes negalime daryti dvejetainis paieškos, nes dvejetainis paieškos reikalaujama, kad mes turėjome 152 00:06:59,460 --> 00:07:00,740 laisvosios kreipties. 153 00:07:00,740 --> 00:07:04,500 Mes galime tik šuolis iš vietos į Vieta nereikia sekti 154 00:07:04,500 --> 00:07:07,080 šios duonos trupinius į formą visų šių patarimų. 155 00:07:07,080 --> 00:07:08,300 >> Dabar, kaip mes įgyvendinti šį? 156 00:07:08,300 --> 00:07:12,830 Na, jei mes einame į ekraną čia, jeigu mes galime greitai reimplement šiuos duomenis 157 00:07:12,830 --> 00:07:13,440 struktūra - 158 00:07:13,440 --> 00:07:15,670 mano rašysena yra ne visi, kad puikus čia, bet mes stengsimės. 159 00:07:15,670 --> 00:07:22,030 Taigi Typedef struct, ir ką aš padariau norite skambinti tai, ką čia? 160 00:07:22,030 --> 00:07:22,960 Mazgas. 161 00:07:22,960 --> 00:07:24,580 Taigi aš gausiu mums pradėti. 162 00:07:24,580 --> 00:07:27,860 Ir dabar, kas turi būti viduje duomenų struktūra, kad atskirai 163 00:07:27,860 --> 00:07:28,430 susijęs sąrašą? 164 00:07:28,430 --> 00:07:29,950 Kiek laukai? 165 00:07:29,950 --> 00:07:30,450 >> Taigi du. 166 00:07:30,450 --> 00:07:31,570 Vienas iš jų yra gana lengva. 167 00:07:31,570 --> 00:07:33,050 Taigi, int n. 168 00:07:33,050 --> 00:07:35,930 Ir galėtume vadinti n ką norime, tačiau ji turėtų būti int jei mes 169 00:07:35,930 --> 00:07:37,660 įgyvendinant susietą sąrašą Ints. 170 00:07:37,660 --> 00:07:41,920 O dabar ką antras laukas turi būti? 171 00:07:41,920 --> 00:07:43,460 Konstrukto mazgas *. 172 00:07:43,460 --> 00:07:50,570 Taigi, jei aš struct mazgas *, ir tada aš galite skambinti tai taip pat ką noriu, 173 00:07:50,570 --> 00:07:53,510 bet tiesiog turi būti aišku, aš tau paskambinsiu jį šalia, nes mes jau darome. 174 00:07:53,510 --> 00:07:55,270 Ir tada aš užmerkiu vingiuotus skliaustus. 175 00:07:55,270 --> 00:08:00,700 >> Ir dabar, kaip paskutinį kartą, Aš įdėti mazgas čia. 176 00:08:00,700 --> 00:08:03,830 Bet jei aš skelbiantis tai kaip mazgas, kodėl aš nerimauti yra taip 177 00:08:03,830 --> 00:08:07,320 išsami čia deklaruojant struct mazgas * kito, o ne 178 00:08:07,320 --> 00:08:09,210 tiesiog mazgas * kito? 179 00:08:09,210 --> 00:08:09,904 Taip? 180 00:08:09,904 --> 00:08:12,810 >> Auditorija: [nesigirdi]. 181 00:08:12,810 --> 00:08:14,050 >> Davidas Malan: Būtent. 182 00:08:14,050 --> 00:08:14,530 Būtent. 183 00:08:14,530 --> 00:08:18,320 Kadangi C tikrai pateksite tiesiogine prasme ir tik mato mazgas apibrėžimą 184 00:08:18,320 --> 00:08:21,230 kelią žemyn čia, jūs negalite kreiptis į jį čia. 185 00:08:21,230 --> 00:08:24,760 Taigi, mes turime šią pirmumo rūšiuoti deklaracija čia tai tiesa 186 00:08:24,760 --> 00:08:25,390 daugiau išsami. 187 00:08:25,390 --> 00:08:27,810 Konstrukto mazgas, tai reiškia, kad dabar mes galime jį pasiekti 188 00:08:27,810 --> 00:08:29,760 viduje duomenų struktūra. 189 00:08:29,760 --> 00:08:33,370 >> Ir kaip žemę, nes tai yra vis tiek daugiau subjektyvus dabar 190 00:08:33,370 --> 00:08:36,230 žvaigždučių techniniu požiūriu gali eiti čia jis gali eiti čia, tai gali 191 00:08:36,230 --> 00:08:37,179 net eiti per vidurį. 192 00:08:37,179 --> 00:08:39,890 Mes tvirtinamos stiliaus vadove kursas, išleidžia konvencija 193 00:08:39,890 --> 00:08:42,299 žvaigždučių šalia duomenų tipas, kuris šiuo atveju 194 00:08:42,299 --> 00:08:43,460 būtų konstrukto mazgas. 195 00:08:43,460 --> 00:08:46,620 Bet suprasti, į vadovėlių daug ir Prisijungę nuorodos, jūs iš tiesų gali 196 00:08:46,620 --> 00:08:48,450 jį pamatyti iš kitos pusės. 197 00:08:48,450 --> 00:08:52,200 Bet tik suprasti, kad tiek tikrai bus dirbti ir jums turėtų būti tiesiog 198 00:08:52,200 --> 00:08:52,970 nuoseklūs. 199 00:08:52,970 --> 00:08:53,580 >> Gerai. 200 00:08:53,580 --> 00:08:55,630 Taigi, tai buvo mūsų deklaracija iš struct mazgas. 201 00:08:55,630 --> 00:08:59,430 Bet tada mes pradėjome daryti daugiau sudėtingų dalykų. 202 00:08:59,430 --> 00:09:03,410 Pavyzdžiui, mes nusprendėme pristatyti kažkas panašaus į maišos lentelė. 203 00:09:03,410 --> 00:09:08,160 Taigi čia yra maišos lentelėje dydžio n, indeksuojami nuo 0 viršutiniame kairiajame iki n 204 00:09:08,160 --> 00:09:09,690 atėmus 1 apačioje kairėje. 205 00:09:09,690 --> 00:09:11,640 Tai gali būti maišos lentelė nieko. 206 00:09:11,640 --> 00:09:15,340 Bet kas rūšių dalykų padarė kalbame apie naudojant maišos lentelę? 207 00:09:15,340 --> 00:09:18,370 Sandėliavimas, ką? 208 00:09:18,370 --> 00:09:18,800 >> Vardai. 209 00:09:18,800 --> 00:09:20,870 Mes galime padaryti tokius pavadinimus mes padarėme paskutinį kartą. 210 00:09:20,870 --> 00:09:22,200 Ir tikrai, jūs galite laikyti nieko. 211 00:09:22,200 --> 00:09:24,640 Ir mes matome tai vėl PHP ir JavaScript. 212 00:09:24,640 --> 00:09:28,550 Maišos lentelė yra gražus tarsi Šveicarijos Armijos peilis, kuri leidžia jums išsaugoti 213 00:09:28,550 --> 00:09:33,690 gana daug, ką norite viduje tai susiejant raktus su vertybėmis. 214 00:09:33,690 --> 00:09:34,770 Raktai su vertybėmis. 215 00:09:34,770 --> 00:09:37,800 >> Dabar į šį paprastą atveju, mūsų raktai yra tik skaičiai. 216 00:09:37,800 --> 00:09:40,380 Mes įgyvendinimo maišos lentelė pateikiama masyvo. 217 00:09:40,380 --> 00:09:43,500 Ir taip raktai yra 0, 1, 2, ir taip toliau. 218 00:09:43,500 --> 00:09:47,200 Ir todėl mes, kaip žmonės, nusprendė paskutinis savaitę, kad jūs žinote ką, jei mes 219 00:09:47,200 --> 00:09:50,410 ketina parduotuvių pavadinimų, galime tik savavališkai, tačiau gana pagrįstai, 220 00:09:50,410 --> 00:09:54,680 manyti, kad Alisa, pavadinimas, tiesiog būti indeksuojami į 0. 221 00:09:54,680 --> 00:09:58,030 Ir Bobas, B pavadinimą, bus indeksuojami į 1 ir kt. 222 00:09:58,030 --> 00:10:02,490 Taigi mes turėjome tarp sąnaudų žemėlapių, kurios stygos, ir maišos 223 00:10:02,490 --> 00:10:04,560 vietose, kurios yra numeriai. 224 00:10:04,560 --> 00:10:07,740 >> Taigi šis procesas paprastai vadinamas maišos funkcija, ir jūs galite tikrai 225 00:10:07,740 --> 00:10:09,130 įgyvendinti kode. 226 00:10:09,130 --> 00:10:12,080 Jei aš norėjau įgyvendinti maišos funkcija kad tai, ką mes 227 00:10:12,080 --> 00:10:17,070 ką tik aprašytos nuo paskutinio karto, galiu paskelbti funkcija, kad mano, kaip 228 00:10:17,070 --> 00:10:18,330 įėjimas pavyzdžiui - 229 00:10:18,330 --> 00:10:22,190 ir tegul tai padaryti apie tai ekranas čia. 230 00:10:22,190 --> 00:10:26,180 Jei aš norėjau įgyvendinti maišos funkcija, galiu pasakyti, 231 00:10:26,180 --> 00:10:27,410 kažkas panašaus į tai. 232 00:10:27,410 --> 00:10:29,030 >> Ji ketina grįžti int. 233 00:10:29,030 --> 00:10:33,600 Jis bus vadinamas maišos, ir tai ketina priimti kaip argumentas yra 234 00:10:33,600 --> 00:10:38,920 eilutę, ar mes galime būti labiau tinkamas dabar ir pasakyti, char *, mes jį vadiname s. 235 00:10:38,920 --> 00:10:43,840 Ir tada visa ši funkcija turi daryti, galiausiai yra grąžinti int. 236 00:10:43,840 --> 00:10:45,990 Dabar, kaip tai veikia, kad galėtų ne toks aiškus. 237 00:10:45,990 --> 00:10:49,510 Aš ruošiuosi įgyvendinti tai be jokių sudaryti iš klaidų tikrinimas dabar. 238 00:10:49,510 --> 00:10:55,740 Aš tik aklai pasakyti, grįžti kokia yra 0 laikiklio s, minusas, 239 00:10:55,740 --> 00:10:58,850 tarkime, kapitalo kabliataškiais. 240 00:10:58,850 --> 00:10:59,960 >> Visiškai neveikia. 241 00:10:59,960 --> 00:11:02,620 Ji nėra tobula, nes viena ką daryti, jei ai yra niekinis? 242 00:11:02,620 --> 00:11:04,000 Blogi dalykai yra nesiruošia atsitikti. 243 00:11:04,000 --> 00:11:07,940 Du, ką daryti, jei pirmoji raidė šioje pavadinimas nėra didžioji raidė? 244 00:11:07,940 --> 00:11:09,860 Kad nesiruošia kreiptis iš gerai arba. 245 00:11:09,860 --> 00:11:11,970 Tai gali būti mažoji raidė ar ne visai laiškas. 246 00:11:11,970 --> 00:11:15,520 Taigi visiškai tobulinti čia bet tai yra pagrindinė idėja. 247 00:11:15,520 --> 00:11:19,010 >> Ką mes aprašyta praėjusią savaitę žodžiu kaip tiesiog fiksuoti Alice procesas 248 00:11:19,010 --> 00:11:23,360 0 ir Bob 1 gali būti išreikštas tikrai daugiau formulaically kaip C 249 00:11:23,360 --> 00:11:24,320 veikti čia. 250 00:11:24,320 --> 00:11:28,630 Vadinamas vėl maišos, priima eilutę kaip įėjimas, tada kažkaip daro kažką 251 00:11:28,630 --> 00:11:31,020 su tuo sąnaudų gaminti išėjimo. 252 00:11:31,020 --> 00:11:34,130 Ne kitaip nei mūsų juodosios dėžės aprašymas kad mes seniai padaryta. 253 00:11:34,130 --> 00:11:36,550 Aš nežinau, kaip tai gali būti darbo po gaubtu. 254 00:11:36,550 --> 00:11:40,120 >> Dėl problemą, 6, vienas iš iššūkių yra jums nuspręsti, ką 255 00:11:40,120 --> 00:11:41,920 bus jūsų maišos funkcija bus? 256 00:11:41,920 --> 00:11:45,760 Kas bus viduje, kad juoda dėžutė, ir matyt, tai bus 257 00:11:45,760 --> 00:11:50,380 šiek tiek įdomesnis nei tai, ir tikrai labiau linkę į klaidos 258 00:11:50,380 --> 00:11:53,180 tikrinti, nei tai ypač įgyvendinimas. 259 00:11:53,180 --> 00:11:54,580 >> Tačiau gali kilti problemų, tiesa? 260 00:11:54,580 --> 00:11:57,760 Jei mes turime duomenų struktūrą, tokių kaip šis viena, kas viena iš problemų, 261 00:11:57,760 --> 00:12:01,600 galite paleisti į laikui bėgant, kaip jums įterpti vis daugiau ir daugiau vardus į 262 00:12:01,600 --> 00:12:02,880 maišos lentelė? 263 00:12:02,880 --> 00:12:04,630 Jūs gaunate susidūrimų, tiesa? 264 00:12:04,630 --> 00:12:07,560 Ką daryti, jei turite Alice ir Aaroną, du žmonės, kurių vardai atsitiko 265 00:12:07,560 --> 00:12:08,190 pradėti? 266 00:12:08,190 --> 00:12:11,660 Tai kyla klausimas, kur įdėti antrą tokį pavadinimą? 267 00:12:11,660 --> 00:12:15,050 >> Na, galbūt naiviai tiesiog įdėti jį kur Bobas priklauso, bet tada Bob 268 00:12:15,050 --> 00:12:17,300 rūšies prisukamas jei bandysite įterpti savo vardą kitą ir 269 00:12:17,300 --> 00:12:18,240 nėra jam vietos. 270 00:12:18,240 --> 00:12:21,400 Todėl jūs galite įdėti Bob kur Čarlis, ir jūs galite įsivaizduoti, tai labai greitai 271 00:12:21,400 --> 00:12:23,020 perduodant į itin tvarkinga. 272 00:12:23,020 --> 00:12:25,600 Kažkas linijinis, galų gale, kur tiesiog turi ieškoti visa tai 273 00:12:25,600 --> 00:12:28,190 ieško Alisa arba Bob arba Aaronas arba Čarlis. 274 00:12:28,190 --> 00:12:33,230 >> Taigi vietoj to mes pasiūlėme, o ne tik tiesiškai zondavimo atvirų erdvių 275 00:12:33,230 --> 00:12:36,450 ir uždėjus pavardes ten, mes pasiūlė mėgėjas požiūrį. 276 00:12:36,450 --> 00:12:41,740 Maišos lentelė įgyvendinti dar su masyvo indeksų, bet duomenų tipas 277 00:12:41,740 --> 00:12:44,500 tie rodikliai dabar buvo rodyklės. 278 00:12:44,500 --> 00:12:47,360 Pointeriai į ką? 279 00:12:47,360 --> 00:12:48,730 Pointeriai susijusių sąrašų. 280 00:12:48,730 --> 00:12:53,330 >> Nes primena, kad susijęs sąrašas tikrai tik rodyklė mazgas, ir 281 00:12:53,330 --> 00:12:57,110 mazgas turi kitą sritis, kurios mazgas turi kitą lauką ir pan. 282 00:12:57,110 --> 00:13:00,690 Taigi dabar galite galvoti apie šiame masyve ant kairėje pusėje maišos lentelę 283 00:13:00,690 --> 00:13:01,820 todėl susietą sąrašą. 284 00:13:01,820 --> 00:13:07,000 Kurių privalumas yra tai, jei jūs gaunate susidūrimas tarp Alice ir Aaronui: 285 00:13:07,000 --> 00:13:09,300 ką daryti su antras toks žmogus? 286 00:13:09,300 --> 00:13:14,150 Jūs tiesiog prijunkite jį arba ją pabaigoje ar net pradžia 287 00:13:14,150 --> 00:13:15,490 tos susijęs sąrašą. 288 00:13:15,490 --> 00:13:17,340 >> Ir iš tikrųjų, tegul tiesiog makaronų per kad tik sekundę. 289 00:13:17,340 --> 00:13:18,640 Kur kuo daugiau prasmės? 290 00:13:18,640 --> 00:13:22,060 Jei aš įterpti Alice ir ji baigiasi ne pirmoji vieta, tada bandau 291 00:13:22,060 --> 00:13:25,310 įterpti Aarono vardą, ir ten Akivaizdu, susidūrimo, turėčiau pateikti 292 00:13:25,310 --> 00:13:27,400 jam pradžioje skirtas susieto sąrašo? 293 00:13:27,400 --> 00:13:30,944 Štai tuo pirmąją vietą, ar pabaigoje? 294 00:13:30,944 --> 00:13:31,440 >> Auditorija: [nesigirdi]. 295 00:13:31,440 --> 00:13:31,990 >> Davidas Malan: Gerai. 296 00:13:31,990 --> 00:13:32,490 Girdėjau pradžia. 297 00:13:32,490 --> 00:13:33,903 Kodėl pradžioje? 298 00:13:33,903 --> 00:13:34,750 >> Auditorija: [nesigirdi]. 299 00:13:34,750 --> 00:13:34,940 >> Davidas Malan: Gerai. 300 00:13:34,940 --> 00:13:36,520 Tai abėcėlės tvarka, kad malonu. 301 00:13:36,520 --> 00:13:37,330 Štai geras nuosavybė. 302 00:13:37,330 --> 00:13:39,335 Tai sutaupys man šiek tiek laiko potencialiai. 303 00:13:39,335 --> 00:13:43,290 Jis nebus leiskite man padaryti dvejetainis paieškos, bet aš gali bent jau sugebėti išeiti 304 00:13:43,290 --> 00:13:47,340 iš kilpos, jei aš suprantu, gerai, aš būdas praeityje buvo Aaronas galėtų būti tai 305 00:13:47,340 --> 00:13:48,310 rūšiuoti susietą sąrašą. 306 00:13:48,310 --> 00:13:50,360 Aš neturiu gaišti savo laiką ieško visą kelią iki pabaigos. 307 00:13:50,360 --> 00:13:51,530 Taigi, kad protinga. 308 00:13:51,530 --> 00:13:54,710 Kodėl dar gali norite įterpti susidūrimo pavardė 309 00:13:54,710 --> 00:13:56,660 pradžioje sąraše? 310 00:13:56,660 --> 00:13:57,397 Kas tai? 311 00:13:57,397 --> 00:13:58,680 >> Auditorija: [nesigirdi]. 312 00:13:58,680 --> 00:14:00,820 >> Davidas Malan: Tai gali užtrukti ilgą laiką patekti į sąrašo pabaigą. 313 00:14:00,820 --> 00:14:02,490 Ir iš tiesų, vis ilgiau ir ilgiau. 314 00:14:02,490 --> 00:14:04,920 Kuo daugiau vardų įdėsite kad pradėti su, ilgiau nei 315 00:14:04,920 --> 00:14:06,280 grandinės ketina gauti. 316 00:14:06,280 --> 00:14:07,890 Ilgiau, kad susiję sąrašas ketina gauti. 317 00:14:07,890 --> 00:14:09,420 Taigi jūs tikrai tik eikvoti savo laiką. 318 00:14:09,420 --> 00:14:14,070 Gal jūs geriau išlaikyti nekintamo įstatymo laikas, didelis O iš 1, 319 00:14:14,070 --> 00:14:18,470 , visuomet išleidimą susidūrimo pavardę skirtas susieto sąrašo pradžioje, 320 00:14:18,470 --> 00:14:21,230 o ne nerimauti tiek daug apie rūšiavimą. 321 00:14:21,230 --> 00:14:22,600 >> Kas geriausias atsakymas? 322 00:14:22,600 --> 00:14:23,320 Neaišku. 323 00:14:23,320 --> 00:14:26,140 Jis rūšies priklauso nuo to, pasiskirstymas, kas modelis 324 00:14:26,140 --> 00:14:27,850 pavadinimų jūs įdėti. 325 00:14:27,850 --> 00:14:29,430 Tai nebūtinai Akivaizdus atsakymas. 326 00:14:29,430 --> 00:14:33,100 Bet čia, vėlgi, yra dizainas galimybė. 327 00:14:33,100 --> 00:14:37,220 >> Taigi, mes tada pažvelgė į šio dalyko, kuris yra tikrai kita didelė galimybė 328 00:14:37,220 --> 00:14:38,180 p-rinkinys 6. 329 00:14:38,180 --> 00:14:41,770 Ir suprasti, jei jūs dar neturite, Zamyla neria į abu, maišos 330 00:14:41,770 --> 00:14:43,260 stalai ir bando, išsamiau. 331 00:14:43,260 --> 00:14:45,630 Ir vaizdo Walkthrough nematomas p nustatytą spec. 332 00:14:45,630 --> 00:14:46,590 Tai buvo trie - 333 00:14:46,590 --> 00:14:51,670 T-R-I-El. Ir tai, kas buvo įdomu buvo ta, kad važiavimo laikas 334 00:14:51,670 --> 00:14:59,510 tyrinėtą vardą, kaip Maksvelo paskutinį kartą, buvo didelis O ką? 335 00:14:59,510 --> 00:15:01,040 Kas tai? 336 00:15:01,040 --> 00:15:01,920 >> Auditorija: Raidžių skaičius. 337 00:15:01,920 --> 00:15:02,550 >> Davidas Malan: Taškų raidėmis. 338 00:15:02,550 --> 00:15:03,210 Aš girdėjau du dalykus. 339 00:15:03,210 --> 00:15:04,630 Daug laiškų ir nuolat laiko. 340 00:15:04,630 --> 00:15:05,540 Taigi eikime su tuo pirmas. 341 00:15:05,540 --> 00:15:06,410 Raidžių skaičius. 342 00:15:06,410 --> 00:15:10,195 Na, tai duomenų struktūra, išėmimą iš apyvartos, yra kaip medis, šeimos medis, kiekvienas 343 00:15:10,195 --> 00:15:12,860 , kurių mazgai yra sudaryta iš matricos. 344 00:15:12,860 --> 00:15:16,300 Ir tie matricos yra rodyklės į kiti tokie mazgai, ar kita 345 00:15:16,300 --> 00:15:17,670 masyvų medžio. 346 00:15:17,670 --> 00:15:22,890 >> Taigi, jei mes norėjome tada nustatyti ar Maxwell čia, galiu eiti 347 00:15:22,890 --> 00:15:26,890 į pirmą masyvo, ne pačiame viršuje medis, vadinamasis šaknis, viršuje 348 00:15:26,890 --> 00:15:30,521 trie ir vykdykite M rodyklė, tada rodyklė, tada x 349 00:15:30,521 --> 00:15:31,710 m, e, l, l. 350 00:15:31,710 --> 00:15:34,910 Ir tada, kai matau tam tikras specialias simbolį, žymimas čia kaip trikampis. 351 00:15:34,910 --> 00:15:38,480 Kodu pamatysite siūlome, kad jūs įgyvendinama kaip bool, tiesiog sako "taip" 352 00:15:38,480 --> 00:15:40,540 ar ne, žodis sustoja čia. 353 00:15:40,540 --> 00:15:45,270 >> Na, kai mes atvyko į M-A-X-W-E-L-L, jaučiasi septynių, o gal 354 00:15:45,270 --> 00:15:48,910 aštuonių jei mes einame vieną pro jį aštuonios veiksmai ieškant Maksvelas. 355 00:15:48,910 --> 00:15:53,050 Arba tegul bus K. Bet prisiminti paskutinis kartą, aš teigė, kad, jei yra 356 00:15:53,050 --> 00:15:57,540 realiai maksimalus ilgis nuo žodis, pavyzdžiui, 40-kai nelyginis simbolių, 357 00:15:57,540 --> 00:16:00,810 Ilgiausias reiškia konstantos reikšmę. 358 00:16:00,810 --> 00:16:05,770 Taigi tikrai, taip, tai techniškai didelis O 8 arba 7, arba tikrai didelis Ö K. Bet 359 00:16:05,770 --> 00:16:09,420 jei yra baigtinė riba, ką K gali būti, tai konstanta. 360 00:16:09,420 --> 00:16:12,080 Ir todėl didelis O nuo "1", dienos pabaigoje. 361 00:16:12,080 --> 00:16:13,040 >> Ne realiame pasaulyje. 362 00:16:13,040 --> 00:16:15,960 Ne, kai jūs iš tikrųjų pradėti žiūrėti Jūsų laikrodis kaip savo programos veikia. 363 00:16:15,960 --> 00:16:20,690 Tai visiškai bus šiek tiek lėčiau nei tikrai pastovus 364 00:16:20,690 --> 00:16:21,840 laikas nuo vieno žingsnio. 365 00:16:21,840 --> 00:16:25,540 Tai bus septynis ar aštuonis žingsnius, bet vis tiek tai daug, daug geriau 366 00:16:25,540 --> 00:16:30,080 nei kaip didelis O n šio algoritmo priklauso nuo to, kas yra dydžio 367 00:16:30,080 --> 00:16:31,220 duomenų struktūra. 368 00:16:31,220 --> 00:16:34,970 >> Pranešimas aukštyn kojom čia mes galime įterpti milijono daugiau vardų į tai 369 00:16:34,970 --> 00:16:38,170 duomenų struktūros, bet kiek daugiau žingsniai ji ketina priimti mus rasti 370 00:16:38,170 --> 00:16:40,480 Maksvelo tokiu atveju? 371 00:16:40,480 --> 00:16:40,780 Nėra. 372 00:16:40,780 --> 00:16:41,820 Jis neturi jokios įtakos. 373 00:16:41,820 --> 00:16:45,480 Ir iki šios dienos, aš nemanau, kad mes matėme iš duomenų struktūros ar pavyzdys 374 00:16:45,480 --> 00:16:48,560 algoritmas, kuris buvo visiškai neveikia išorės 375 00:16:48,560 --> 00:16:50,040 elgesys, pavyzdžiui, kad. 376 00:16:50,040 --> 00:16:51,160 Bet tai negali būti nuostabi. 377 00:16:51,160 --> 00:16:52,900 Tai gali būti ne vienintelė išeitis už p-rinkinys 378 00:16:52,900 --> 00:16:53,570 >> Ir tai ne. 379 00:16:53,570 --> 00:16:55,980 Tai nebūtinai duomenis struktūra turėtumėte veržtis, 380 00:16:55,980 --> 00:16:58,220 nes kaip ir maišos lenteles, kompromisas. 381 00:16:58,220 --> 00:17:00,500 Kas yra kaina, kurią mokate čia? 382 00:17:00,500 --> 00:17:00,940 Atmintis. 383 00:17:00,940 --> 00:17:02,890 Aš turiu galvoje, tai yra žiaurus atminties kiekis. 384 00:17:02,890 --> 00:17:05,569 Ir jūs galite ne visai pamatyti čia, nes Šio paveikslėlio autorius 385 00:17:05,569 --> 00:17:09,420 akivaizdžiai sutrumpintas visų masyvų, ir mes nematome daug "ir 386 00:17:09,420 --> 00:17:12,700 Pusryčiai ir C atsargiam ir Y ir Z šių masyvų. 387 00:17:12,700 --> 00:17:13,630 Bet jie ten. 388 00:17:13,630 --> 00:17:17,660 >> Kiekviena iš šių mazgų yra visas masyvas kai 26 ar daugiau baitų, kiekvienas iš 389 00:17:17,660 --> 00:17:19,170 kuris yra baigęs laišką. 390 00:17:19,170 --> 00:17:22,920 27 mūsų atveju, kad mes galime padėti kabutes šia problema rinkinys. 391 00:17:22,920 --> 00:17:27,030 Taigi tai duomenų struktūra yra tikrai, tikrai tankus ir platus. 392 00:17:27,030 --> 00:17:30,880 Ir tai tik gali baigtis lėtėja dalykų žemyn, arba bent jau jums kainuos 393 00:17:30,880 --> 00:17:32,240 daug daugiau vietos. 394 00:17:32,240 --> 00:17:34,020 Bet vėl, galime daryti palyginimai čia. 395 00:17:34,020 --> 00:17:39,190 >> Prisiminkite, o atgal, mes pasiekėme daug įdomesnis veikimo laikas rūšiavimas 396 00:17:39,190 --> 00:17:42,880 kai mes naudojame suliejimo rūšiuoti, o kaina mes sumokėjome pasiekti n log n už suliejimą 397 00:17:42,880 --> 00:17:46,930 rūšiuoti reikalaujama, kad mes praleidžiame daugiau ką išteklių? 398 00:17:46,930 --> 00:17:47,690 Daugiau vietos. 399 00:17:47,690 --> 00:17:50,530 Mums reikia vidurinį masyvo kopijuoti žmones, kaip 400 00:17:50,530 --> 00:17:51,620 mes padarėme čia ant scenos. 401 00:17:51,620 --> 00:17:55,880 Taigi dar kartą, jokių aiškių laimėtojų, bet tik subjektyvus dizainas 402 00:17:55,880 --> 00:17:57,710 sprendimai turi būti pateikta. 403 00:17:57,710 --> 00:17:58,060 >> Gerai. 404 00:17:58,060 --> 00:17:59,130 Taigi, kaip apie tai? 405 00:17:59,130 --> 00:18:02,050 Kiekvienas pripažinti, kurios D-Hall "? 406 00:18:02,050 --> 00:18:02,440 Gerai. 407 00:18:02,440 --> 00:18:03,170 Taigi trys iš mūsų padaryti. 408 00:18:03,170 --> 00:18:03,750 Mather namai. 409 00:18:03,750 --> 00:18:05,070 Taigi tai yra Mather "valgomajame. 410 00:18:05,070 --> 00:18:09,650 Lažinuosi visi valgomuosiuose turi kaminai padėklai, kaip šis. 411 00:18:09,650 --> 00:18:11,950 Ir tai iš tikrųjų atstovas iš kažkas, ką mes 412 00:18:11,950 --> 00:18:13,050 akivaizdžiai matyti jau. 413 00:18:13,050 --> 00:18:14,850 Mes pavadino jį tiesiog kamino. 414 00:18:14,850 --> 00:18:18,970 Ir kamino, atsižvelgiant į jūsų kompiuterio atmintyje, kai duomenys eina 415 00:18:18,970 --> 00:18:20,460 o funkcijos yra vadinamas. 416 00:18:20,460 --> 00:18:23,410 >> Pavyzdžiui, kokių rūšių dalykų eiti ant atžvilgiu kaminą 417 00:18:23,410 --> 00:18:27,420 Atminties išdėstymas mes aptarė savaitėmis anksčiau? 418 00:18:27,420 --> 00:18:28,736 Kas tai? 419 00:18:28,736 --> 00:18:29,670 >> Auditorija: Skambučiai į funkcijas. 420 00:18:29,670 --> 00:18:30,260 >> Davidas Malan: aš atsiprašau. 421 00:18:30,260 --> 00:18:31,210 >> Auditorija: Skambučiai į funkcijas. 422 00:18:31,210 --> 00:18:33,590 >> Davidas Malan: Skambučiai į funkcijas, bet Tiksliau, tai, kas viduje kiekvieno 423 00:18:33,590 --> 00:18:35,340 tie rėmai? 424 00:18:35,340 --> 00:18:37,220 Kokius dalykus? 425 00:18:37,220 --> 00:18:37,460 Taip. 426 00:18:37,460 --> 00:18:38,500 Taigi vietiniai kintamieji. 427 00:18:38,500 --> 00:18:43,080 Kada mums reikia šiek tiek vietos saugojimo, kaip argumentas, arba int i, int arba 428 00:18:43,080 --> 00:18:45,940 temperatūros, ar kas vietos kintamasis, mes jau 429 00:18:45,940 --> 00:18:47,210 išleisti, kad kamino. 430 00:18:47,210 --> 00:18:49,610 Ir mes jį vadiname kamino, nes tos sluoksniavimasis idėja. 431 00:18:49,610 --> 00:18:52,940 Tiesiog rūšies atitikmenų su realybe, sąvoką ir jos. 432 00:18:52,940 --> 00:18:56,650 >> Tačiau paaiškėja, kad kamino taip pat gali būti vertinamas kaip duomenų struktūros, 433 00:18:56,650 --> 00:19:00,110 alternatyva masyvo, alternatyva į susietą sąrašą. 434 00:19:00,110 --> 00:19:02,770 Kažkas konceptualiai įdomiau kad vis dar gali būti 435 00:19:02,770 --> 00:19:06,030 įgyvendinama naudojant vieną iš šių dalykų, bet tai skirtingo tipo 436 00:19:06,030 --> 00:19:09,140 duomenų struktūros remia, tikrai, tik dvi operacijos. 437 00:19:09,140 --> 00:19:11,000 Bet jūs galite pridėti mėgėjas funkcijų nei jie. 438 00:19:11,000 --> 00:19:12,180 Tačiau tai yra pagrindai - 439 00:19:12,180 --> 00:19:13,510 stumti ir pop. 440 00:19:13,510 --> 00:19:19,240 >> Ir su kamino idėja yra ta, kad jei aš turime čia, su arba be Annenberg 441 00:19:19,240 --> 00:19:22,880 žinant, iš šalia durų dėklą su 9 numerio ant jo. 442 00:19:22,880 --> 00:19:23,870 Taigi tik int. 443 00:19:23,870 --> 00:19:26,990 Ir aš noriu stumti tai į duomenų struktūrą, kuri šiuo metu yra tuščias. 444 00:19:26,990 --> 00:19:28,790 Apsvarstykite šį iš kamino apačioje. 445 00:19:28,790 --> 00:19:33,150 Aš stumti šį skaičių 9 ant sukrauti, o dabar tai tiesiai ten. 446 00:19:33,150 --> 00:19:36,040 >> Bet įdomus dalykas, apie kamino yra ta, kad jei aš dabar noriu stumti 447 00:19:36,040 --> 00:19:40,210 kitu vertė, kaip ir 17, ir aš stumti tai ant kamino, aš ruošiuosi daryti 448 00:19:40,210 --> 00:19:43,290 tik intuityvus dalykas, aš tik ketina Norėdami įdėti ją ten, kur mes, žmonės 449 00:19:43,290 --> 00:19:45,180 būčiau linkęs jį, viršuje. 450 00:19:45,180 --> 00:19:48,850 Bet kas įdomu dabar yra, kaip aš galiu gauti ne 9? 451 00:19:48,850 --> 00:19:50,670 Jūs žinote, aš ne be tam tikrų pastangų. 452 00:19:50,670 --> 00:19:54,070 >> Taigi, kas įdomu kamino yra tai, kad dizainas, 453 00:19:54,070 --> 00:19:56,330 tai LIFO duomenų struktūra. 454 00:19:56,330 --> 00:19:59,680 Kvailas būdas aprašyti Paskutinis in, first out. 455 00:19:59,680 --> 00:20:03,280 Taigi paskutinis skaičius tuo metu buvo 17. 456 00:20:03,280 --> 00:20:07,540 Taigi, jei aš noriu, kad pop ką nors ne į kaminą, tai gali būti tik 17. 457 00:20:07,540 --> 00:20:11,890 Taigi nėra privaloma tvarka operacijos čia, kur paskutinis punktas 458 00:20:11,890 --> 00:20:14,260 ir turi būti pirmasis iš. 459 00:20:14,260 --> 00:20:16,440 Taigi akronimas, LIFO būdą. 460 00:20:16,440 --> 00:20:19,160 >> Tad kodėl tai galėtų būti naudinga? 461 00:20:19,160 --> 00:20:22,690 Ar jų situacijas, kuriose norite noriu duomenų struktūros, kaip tai? 462 00:20:22,690 --> 00:20:24,810 Na, tai tikrai buvo naudinga viduje kompiuterio. 463 00:20:24,810 --> 00:20:29,050 Taigi operacinės sistemos aiškiai naudoti šį tipo duomenų struktūrą kaminus. 464 00:20:29,050 --> 00:20:32,800 Mes taip pat matome tą pačią idėją kai jis ateina į interneto puslapius. 465 00:20:32,800 --> 00:20:35,890 Taigi šią savaitę ir kitą savaitę ir už jos ribų, ir kaip jums pradėti įgyvendinti internete 466 00:20:35,890 --> 00:20:39,490 puslapiai kalba vadinama HTML, galite iš tikrųjų naudoti duomenų struktūrą, kaip 467 00:20:39,490 --> 00:20:42,690 tai nustatyti, jei puslapis yra teisingai suformatuotas. 468 00:20:42,690 --> 00:20:47,170 Kadangi mes pamatysime visi interneto puslapiai sekti hierarchijos rūšiuoti, įspaudas 469 00:20:47,170 --> 00:20:52,030 kad bus, bent dienos pabaigoje, bus medžio struktūra po gaubtu. 470 00:20:52,030 --> 00:20:53,620 Taigi daugiau, kad tik šiek tiek. 471 00:20:53,620 --> 00:20:56,560 >> Bet dabar, galime pasiūlyti momentas, kaip galėtume eiti apie 472 00:20:56,560 --> 00:20:58,830 atstovaujanti ką kamino? 473 00:20:58,830 --> 00:21:03,370 Leiskite man pasiūlyti, kad mes įgyvendinti kodu, kaip tai kamino. 474 00:21:03,370 --> 00:21:07,990 Taigi kamino teks viduje ji du dalykai, masyvas, vadinamas padėklai, 475 00:21:07,990 --> 00:21:09,510 tiesiog, kad būtų suderinta su demo. 476 00:21:09,510 --> 00:21:12,660 Ir kiekvienas iš masyvo, daiktų bus tipo int. 477 00:21:12,660 --> 00:21:14,740 Ir talpa yra tikriausiai kas? 478 00:21:14,740 --> 00:21:18,796 Kadangi aš ne parašyta pilnas apibrėžimas čia. 479 00:21:18,796 --> 00:21:21,535 >> Tai turbūt didžiausia dydis masyvo. 480 00:21:21,535 --> 00:21:25,150 Ir tai tikriausiai deklaruoti kaip aštrus apibrėžti prie failo viršuje, kai 481 00:21:25,150 --> 00:21:28,450 kokios pastovios, kaip numatoma pagal Vien kapitalizacija. 482 00:21:28,450 --> 00:21:32,250 Taigi kažkur galia yra apibrėžiama kaip didžiausią galimą dydį. 483 00:21:32,250 --> 00:21:35,590 Tuo tarpu viduje duomenų struktūros žinomas kaip kamino ten bus 484 00:21:35,590 --> 00:21:38,630 būti sveikasis tik žinomas tiesiog kaip dydžio. 485 00:21:38,630 --> 00:21:43,400 >> Taigi, jei aš būčiau atstovauti tai dabar pavaizduotomis piktogramo, galime manyti, kad ši 486 00:21:43,400 --> 00:21:48,070 Visas "black box" yra mano kamino. 487 00:21:48,070 --> 00:21:50,070 Viduje ji yra dviejų kintamųjų. 488 00:21:50,070 --> 00:21:54,780 Taigi, aš ruošiuosi daryti Pirmasis, dydžio. 489 00:21:54,780 --> 00:21:57,420 O antrasis aš ruošiuosi atkreipti kaip masyvo. 490 00:21:57,420 --> 00:22:01,060 >> Bet tik, kad viskas būtų tvarkingai, paprastai norėčiau atkreipti masyvą kaip 491 00:22:01,060 --> 00:22:04,910 , bet tai savotiškas gražus jei mes atitikti tikrovę, arba 492 00:22:04,910 --> 00:22:06,230 atitiktų psichikos modelis. 493 00:22:06,230 --> 00:22:12,880 Taigi leiskite man vietoj atkreipti masyvo vertikaliai, kuri yra tik, vėlgi, 494 00:22:12,880 --> 00:22:13,840 Menininko perdavimų. 495 00:22:13,840 --> 00:22:16,610 Tikrai ne klausimas, ką jis yra po gaubtu. 496 00:22:16,610 --> 00:22:20,350 Ir mes pasakyti, kad, pagal nutylėjimą, talpa bus trys. 497 00:22:20,350 --> 00:22:23,480 Taigi, tai bus vieta 0, tai bus 1 vieta, tai 498 00:22:23,480 --> 00:22:25,740 bus 2 vieta. 499 00:22:25,740 --> 00:22:29,330 >> Jei aš papirkti su streso kamuolys, būtų žmogus kaip sugalvoti ir paleisti 500 00:22:29,330 --> 00:22:30,870 įlipti čia tik akimirką? 501 00:22:30,870 --> 00:22:31,960 Gerai, pamačiau ranką pirmas. 502 00:22:31,960 --> 00:22:33,950 Ateik iki. 503 00:22:33,950 --> 00:22:36,500 Gerai. 504 00:22:36,500 --> 00:22:38,760 Taigi manau, kad Stevenas. 505 00:22:38,760 --> 00:22:40,035 Ateik iki. 506 00:22:40,035 --> 00:22:40,770 Gerai. 507 00:22:40,770 --> 00:22:46,760 >> Bet tarkime, kad dabar mes atgal į pradinį pasaulio valstybė, kur aš 508 00:22:46,760 --> 00:22:52,180 ką tik paskelbė krūvą, tai bus pajėgumų trijų. 509 00:22:52,180 --> 00:22:54,470 Bet dydis dar nenustatytas. 510 00:22:54,470 --> 00:22:56,100 Padėklai dar nebuvo nustatyta. 511 00:22:56,100 --> 00:22:57,300 Taigi klausimų pora pirmas. 512 00:22:57,300 --> 00:23:01,310 Ir leiskite man duoti jums mikrofoną, todėl jūs galite dalyvauti aktyviau šioje srityje. 513 00:23:01,310 --> 00:23:05,190 >> Taigi, kas yra viduje dydžio šiuo metu laiku, jei visa, ką padariau yra 514 00:23:05,190 --> 00:23:09,340 paskelbė krūvą viena eilutė kodo? 515 00:23:09,340 --> 00:23:10,100 >> STEVEN: Ne per daug. 516 00:23:10,100 --> 00:23:12,080 >> Davidas Malan: Gerai, nėra daug. 517 00:23:12,080 --> 00:23:14,410 Ar žinome, kas yra viduje dydžio, mes žinome, kas viduje 518 00:23:14,410 --> 00:23:16,330 Šio masyvo čia? 519 00:23:16,330 --> 00:23:18,630 >> STEVEN: Tiesiog atsitiktinis kodas, tiesa? 520 00:23:18,630 --> 00:23:20,220 Tiesiog - 521 00:23:20,220 --> 00:23:23,230 >> Davidas Malan: Taip, aš ruošiuosi jį vadiname kodas, o atsitiktiniai - 522 00:23:23,230 --> 00:23:23,820 >> STEVEN: daiktai. 523 00:23:23,820 --> 00:23:28,290 >> Davidas Malan: Dalykų, pavyzdžiui, atsitiktinis 524 00:23:28,290 --> 00:23:28,870 >> STEVEN: bitai. 525 00:23:28,870 --> 00:23:29,530 >> Davidas Malan: Bitai, tiesa? 526 00:23:29,530 --> 00:23:31,190 Taigi šiukšlių vertybėmis, tiesa? 527 00:23:31,190 --> 00:23:33,470 Taigi kombinacijomis 0 ir 1-aisiais. 528 00:23:33,470 --> 00:23:35,920 Likusių ankstesniais papročius Šios atminties. 529 00:23:35,920 --> 00:23:38,150 Ir mes tikrai nežino, ką reiškia šios reikšmės yra, todėl mes paprastai padaryti juos 530 00:23:38,150 --> 00:23:38,930 kaip klaustukais. 531 00:23:38,930 --> 00:23:41,990 >> Taigi pirmas dalykas, mes turbūt ketinate norite padaryti čia - 532 00:23:41,990 --> 00:23:46,630 ir leiskite man duoti šį lauką viduje ten pavadinimas - padėklai. 533 00:23:46,630 --> 00:23:49,540 Ką turėtume matyt inicijuoti dydis, jei norime 534 00:23:49,540 --> 00:23:51,040 pradėdami vartoti šį krūvą? 535 00:23:51,040 --> 00:23:53,070 >> STEVEN: dėklas yra sub 3. 536 00:23:53,070 --> 00:23:53,910 >> Davidas Malan: Taigi, Gerai. 537 00:23:53,910 --> 00:23:56,710 Kad būtų aišku, talpa yra paskelbta kitur kaip trys. 538 00:23:56,710 --> 00:23:58,570 Ir tai, ką aš naudojamas skirti masyvą. 539 00:23:58,570 --> 00:24:03,535 Dydis ketina kreiptis į kiek padėklai metu ant kamino. 540 00:24:03,535 --> 00:24:03,880 >> STEVEN: nulis. 541 00:24:03,880 --> 00:24:04,460 >> Davidas Malan: Taigi jis turėtų būti lygus nuliui. 542 00:24:04,460 --> 00:24:07,760 Taigi pirmyn, ir su bet pirštu, atkreipti į nulinio dydžio. 543 00:24:07,760 --> 00:24:08,440 Gerai. 544 00:24:08,440 --> 00:24:10,920 Taigi dabar, kas viduje tai čia mes nežinome. 545 00:24:10,920 --> 00:24:12,160 Tai yra tikrai tik šiukšlių vertybes. 546 00:24:12,160 --> 00:24:14,800 Taigi, mes galime atkreipti klaustukų, bet galime laikyti lenta švarus dabar 547 00:24:14,800 --> 00:24:16,300 nes nesvarbu kas ten. 548 00:24:16,300 --> 00:24:19,130 Mums nereikia inicijuoti masyvas nieko, nes jei mes žinome, kad 549 00:24:19,130 --> 00:24:23,100 iš kamino dydis yra lygus nuliui, gerai, mes neturėtų būti žiūri nieko 550 00:24:23,100 --> 00:24:25,590 tai masyvas vistiek ne šis punktas laiku. 551 00:24:25,590 --> 00:24:29,970 >> Taigi dabar manau, kad aš stumti ant kamino 9 skaičius. 552 00:24:29,970 --> 00:24:33,750 Kaip mes turėtume atnaujinti duomenų struktūrą viduje šios juodosios dėžės? 553 00:24:33,750 --> 00:24:35,540 Kas vertes reikia pakeisti? 554 00:24:35,540 --> 00:24:36,200 >> STEVEN: per - 555 00:24:36,200 --> 00:24:37,400 dydis? 556 00:24:37,400 --> 00:24:37,650 >> Davidas Malan: Gerai. 557 00:24:37,650 --> 00:24:38,770 Dydis turėtų tapti tuo, ką? 558 00:24:38,770 --> 00:24:39,580 >> STEVEN: Dydis būtų vienas. 559 00:24:39,580 --> 00:24:39,870 >> Davidas Malan: Gerai. 560 00:24:39,870 --> 00:24:41,110 Taigi dydis turėtų tapti vienas. 561 00:24:41,110 --> 00:24:42,540 Taigi, jūs galite tai padaryti per kelias būdais. 562 00:24:42,540 --> 00:24:46,920 Leiskite man duoti jums, dabar jūsų pirštas trintukas. 563 00:24:46,920 --> 00:24:47,260 Gerai. 564 00:24:47,260 --> 00:24:49,960 Tada dabar jūsų pirštas šepetys. 565 00:24:49,960 --> 00:24:50,330 Gerai. 566 00:24:50,330 --> 00:24:52,820 Ir dabar kas nors turi pakeisti, Akivaizdu, kad duomenų struktūros? 567 00:24:52,820 --> 00:24:57,060 >> STEVEN: Mes ketiname nuo iš apačios į viršų iki 9. 568 00:24:57,060 --> 00:24:57,760 >> Davidas Malan: 9. 569 00:24:57,760 --> 00:24:58,420 Gerai, gerai. 570 00:24:58,420 --> 00:25:01,550 Taigi vis dar nesvarbu kas ne vieta vienas ar du, nes jie 571 00:25:01,550 --> 00:25:04,520 šiukšlių vertės, bet mes neturėtume nerimauti ieško ten, nes dydis yra 572 00:25:04,520 --> 00:25:07,540 mums sako, kad tik pirmasis elementas yra iš tikrųjų teisėtas. 573 00:25:07,540 --> 00:25:10,400 Taigi, dabar aš stumti 17 į sąrašą. 574 00:25:10,400 --> 00:25:11,830 Kas nutinka šioje nuotraukoje? 575 00:25:11,830 --> 00:25:14,720 >> STEVEN: Taigi dydis ketina eiti iki dviejų. 576 00:25:14,720 --> 00:25:15,300 >> Davidas Malan: Gerai. 577 00:25:15,300 --> 00:25:16,070 Jūs esate trintukas - 578 00:25:16,070 --> 00:25:16,810 Oi. 579 00:25:16,810 --> 00:25:18,026 Jūs esate trintukas. 580 00:25:18,026 --> 00:25:18,840 >> STEVEN: Trintukas. 581 00:25:18,840 --> 00:25:19,720 >> Davidas Malan: Jūs šepetys. 582 00:25:19,720 --> 00:25:20,560 >> STEVEN: teptukas. 583 00:25:20,560 --> 00:25:20,920 >> Davidas Malan: Gerai. 584 00:25:20,920 --> 00:25:21,600 Ir kas dar? 585 00:25:21,600 --> 00:25:22,600 >> STEVEN: Ir tada mes - 586 00:25:22,600 --> 00:25:22,915 >> Davidas Malan Mes siekėme 17. 587 00:25:22,915 --> 00:25:24,760 >> STEVEN: Mes laikomės 17 ant viršaus, taip - 588 00:25:24,760 --> 00:25:25,710 >> Davidas Malan: Gerai, gerai. 589 00:25:25,710 --> 00:25:27,040 >> STEVEN: - lašas žemyn. 590 00:25:27,040 --> 00:25:27,530 >> Davidas Malan: Gerai. 591 00:25:27,530 --> 00:25:27,940 Tai vis lengva. 592 00:25:27,940 --> 00:25:29,300 Aš nesiruošia padėti jums šiuo metu. 593 00:25:29,300 --> 00:25:30,510 Push 22. 594 00:25:30,510 --> 00:25:31,720 >> STEVEN: Atlikta. 595 00:25:31,720 --> 00:25:34,870 Tapimas trintukas. 596 00:25:34,870 --> 00:25:37,340 Aš vis šepetys. 597 00:25:37,340 --> 00:25:39,340 Ir tada aš esu išleidimą 22. 598 00:25:39,340 --> 00:25:40,100 >> Davidas Malan: 22. 599 00:25:40,100 --> 00:25:40,620 Puikus. 600 00:25:40,620 --> 00:25:41,380 Taigi dar kartą. 601 00:25:41,380 --> 00:25:44,280 Aš dabar ketina stumti ant kamino 26. 602 00:25:44,280 --> 00:25:46,350 >> STEVEN: Ooh. 603 00:25:46,350 --> 00:25:50,278 O GOSH. 604 00:25:50,278 --> 00:25:52,520 Jūs tikrai sugauti mane užklupti. 605 00:25:52,520 --> 00:25:53,703 >> Davidas Malan: Jūs nepadarė pamatyti tai ateina? 606 00:25:53,703 --> 00:25:55,930 >> STEVEN: aš nemačiau tai ateina. 607 00:25:55,930 --> 00:25:58,756 Ar galėtume vėl pradinis pajėgumas? 608 00:25:58,756 --> 00:25:59,790 >> Davidas Malan: Tai geras klausimas. 609 00:25:59,790 --> 00:26:02,360 Taigi mes rūšies dažytos save kampe čia. 610 00:26:02,360 --> 00:26:06,740 Ten tikrai nieko gero iš Steven nes mes skiriama šio masyvo 611 00:26:06,740 --> 00:26:09,130 statiškai, taip sakant, viduje duomenų struktūrą. 612 00:26:09,130 --> 00:26:12,170 Ir mes iš esmės sunku koduojami kad jis būtų dydžio trijų. 613 00:26:12,170 --> 00:26:14,170 Taigi mes tikrai negali perskirstyti. 614 00:26:14,170 --> 00:26:20,020 >> Mes galime, jei mes grįžo į, mes naujo padėklai būti žymeklis, kad 615 00:26:20,020 --> 00:26:22,300 mes tada naudokite malloc į rankas atminties į. 616 00:26:22,300 --> 00:26:25,050 Nes jei mes turime atmintį nuo per malloc krūvą, mes 617 00:26:25,050 --> 00:26:26,430 galėtų laisvai jį. 618 00:26:26,430 --> 00:26:29,630 Bet prieš išlaisvina jį, mes galime perskirstyti didesnę riekė atminties, 619 00:26:29,630 --> 00:26:31,330 atnaujinti žymiklį ir kt. 620 00:26:31,330 --> 00:26:33,500 Bet dabar, tai tikrai Geriausia, ką galime padaryti. 621 00:26:33,500 --> 00:26:36,360 Push ir pop, matyt, vyksta turi parodyti tam tikrą paklaidą. 622 00:26:36,360 --> 00:26:40,270 >> Taigi, pavyzdžiui, mūsų įgyvendinimas Push gali grįžti bool kuris 623 00:26:40,270 --> 00:26:42,390 anksčiau grįžo tiesa, tiesa, tiesa. 624 00:26:42,390 --> 00:26:48,390 Tačiau ketvirtą kartą, tai teks grįžti klaidinga, pvz. 625 00:26:48,390 --> 00:26:48,540 Gerai. 626 00:26:48,540 --> 00:26:49,540 Labai gerai padaryta. 627 00:26:49,540 --> 00:26:50,060 Sveikiname. 628 00:26:50,060 --> 00:26:52,160 Jūs uždirbote savo streso kamuolys šiandien. 629 00:26:52,160 --> 00:26:53,110 >> [Plojimai] 630 00:26:53,110 --> 00:26:54,382 >> STEVEN: Ačiū. 631 00:26:54,382 --> 00:26:55,680 >> Davidas Malan: Ačiū. 632 00:26:55,680 --> 00:26:59,740 Gerai, kad tai atrodo ne daug iš žingsnį į priekį, tiesa? 633 00:26:59,740 --> 00:27:01,410 Mes aprašė šį duomenų struktūrą. 634 00:27:01,410 --> 00:27:02,320 Tai buvo įtikinamas, tiesa? 635 00:27:02,320 --> 00:27:03,200 Operacinės sistemos patinka. 636 00:27:03,200 --> 00:27:06,360 Matyt interneto gali pasinaudoti šia, ir kitas programas, vis dar. 637 00:27:06,360 --> 00:27:10,870 Bet kas kvailas apribojimas, kad mes atgal į rūšiuoti savaitės dvi ribos 638 00:27:10,870 --> 00:27:12,880 kur mes fiksuoto dydžio masyvus. 639 00:27:12,880 --> 00:27:15,010 >> Taigi iš tiesų yra pora būdų, kaip galėtume išspręsti šią problemą. 640 00:27:15,010 --> 00:27:18,750 Mes galime dinamiškai paskirstyti masyvą, ne sunku kodavimo kaip aš 641 00:27:18,750 --> 00:27:22,600 padaryti čia, bet vietoj naujo paskelbti tai, tiesiog, kad būtų aišku, kaip 642 00:27:22,600 --> 00:27:23,830 kažkas panašaus į tai. 643 00:27:23,830 --> 00:27:29,040 Int * padėklai, o ne sprendžiant dėl pajėgumų dar. 644 00:27:29,040 --> 00:27:35,460 Bet kai aš pareiškiu, kamino kitur mano kodą, galėčiau tada skambinti malloc, 645 00:27:35,460 --> 00:27:38,250 gauti iš riekė adresą atmintis, ir aš galėčiau priskirti 646 00:27:38,250 --> 00:27:39,980 kad adresas, padėklai. 647 00:27:39,980 --> 00:27:43,340 >> Ir tada, nes tai tik riekė atminties, galėjau ir toliau naudoti aikštė 648 00:27:43,340 --> 00:27:45,450 laikiklis žymėjimas įprastu būdu. 649 00:27:45,450 --> 00:27:49,020 Nes vėl, ten tarsi tai funkcinis ekvivalentas matricos ir 650 00:27:49,020 --> 00:27:50,820 gabaliukus atminties, kad ateis atgal iš malloc. 651 00:27:50,820 --> 00:27:53,090 Mes galime gydyti vieną, nes kita naudojant rodyklę aritmetinį ar 652 00:27:53,090 --> 00:27:54,440 kvadratas laikiklis žymėjimas. 653 00:27:54,440 --> 00:27:55,660 Štai vienas požiūris. 654 00:27:55,660 --> 00:28:00,120 >> Bet kaip kitaip galėtume įgyvendinti šį pati duomenų struktūra, potencialiai? 655 00:28:00,120 --> 00:28:00,280 Teisė? 656 00:28:00,280 --> 00:28:04,530 Jaučiu, kaip mes tiesiog išspręsti šią problema kaip ir prieš savaitę. 657 00:28:04,530 --> 00:28:08,860 Koks buvo šios problemos sprendimas kad Stevenas įvažiavo į? 658 00:28:08,860 --> 00:28:10,370 Taigi susiję sąrašai, į dešinę. 659 00:28:10,370 --> 00:28:13,410 >> Jei problema yra ta, kad mes tapyba save į kampą, skiriant 660 00:28:13,410 --> 00:28:17,580 iš anksto per mažai atminties, kad mes tada jau kažkaip spręsti, gerai, 661 00:28:17,580 --> 00:28:19,880 kodėl ne tik išvengti, kad išduoti apskritai? 662 00:28:19,880 --> 00:28:26,170 Kodėl gi ne tiesiog paskelbti padėklai būti rodyklė mazgas ERGO susijęs sąrašą, 663 00:28:26,170 --> 00:28:30,740 ir tada tiesiog skirti naujų mazgų kiekvieną kartą, kai Stevenas reikia, kad tilptų 664 00:28:30,740 --> 00:28:32,400 skaičius į duomenų struktūrą. 665 00:28:32,400 --> 00:28:34,200 >> Taigi vaizdas būtų pakeisti. 666 00:28:34,200 --> 00:28:38,220 Jis nesiruošia būti kuo švaresnis ir kaip paprasta, kaip tik yra trijų Ints masyvo. 667 00:28:38,220 --> 00:28:42,970 Dabar tai bus rodyklė konstrukto ir kad konstrukto ketina 668 00:28:42,970 --> 00:28:44,830 turi int ir kitą rodyklę. 669 00:28:44,830 --> 00:28:47,670 Ji ketina sukelti per tą rodyklė kitas toks struct į 670 00:28:47,670 --> 00:28:48,600 kitas toks konstrukto. 671 00:28:48,600 --> 00:28:50,560 Taigi vaizdas būtų iš tikrųjų gauti šiek tiek Mesje. 672 00:28:50,560 --> 00:28:52,950 Ir būtume rodyklės susiejimas viskas kartu. 673 00:28:52,950 --> 00:28:55,280 >> Bet tai gerai, teisingai, nes mes matėme, kaip tai padaryti. 674 00:28:55,280 --> 00:28:58,180 Ir kai jums patogu įgyvendinti kažką panašaus Tinkliniai 675 00:28:58,180 --> 00:29:01,450 Sąrašas, kuriame jūs turite padaryti, jei nuspręsti įgyvendinti maišos lentelę 676 00:29:01,450 --> 00:29:05,120 atskiras Grupavimo p-rinkinys 6, galite naudoti jį kaip statybinis blokas, arba 677 00:29:05,120 --> 00:29:08,870 sudedamoji dalis, arba nulio kalbėti, procedūra, kažkas, kad jūs įdėti, jums 678 00:29:08,870 --> 00:29:12,560 sukūrėte savo įspūdį , tada galite naudoti pakartotinai. 679 00:29:12,560 --> 00:29:17,090 Taigi kompromisų, tačiau galimi sprendimai kad mes iš tikrųjų matęs. 680 00:29:17,090 --> 00:29:20,560 >> Taigi gana dažnai, kaip matote tai kiekvieną metus ar du, kai "Apple spaudai 681 00:29:20,560 --> 00:29:23,060 kažkas naujo, ir visi išprotėję žmonės liniją iki ne Apple 682 00:29:23,060 --> 00:29:27,050 parduotuvę pirkti jų ribinė atnaujinti aparatūros. 683 00:29:27,050 --> 00:29:30,420 Aš tai sakau, tai gerai, nes Aš esu vienas iš tų žmonių. 684 00:29:30,420 --> 00:29:35,140 Taigi, kokios duomenų struktūros gali atstovauti šią tikrovę? 685 00:29:35,140 --> 00:29:36,980 >> Na, tegul bus eilėje, linija. 686 00:29:36,980 --> 00:29:40,270 Taigi Britų vadinčiau tai paprastai eilė vistiek, todėl gražus vardas. 687 00:29:40,270 --> 00:29:44,960 Ir dvi operacijos, kurios eilės remia mes vadiname į eilę 688 00:29:44,960 --> 00:29:48,900 veikimas ir dequeue operacija, kurios yra panašios 689 00:29:48,900 --> 00:29:50,120 dvasia stumti ir pop. 690 00:29:50,120 --> 00:29:54,060 Tai tiesiog tarsi skiriasi konvencija, ką mes skambinti šių. 691 00:29:54,060 --> 00:29:57,680 Bet į eilę kažką reiškia pridėti arba įdėkite jį į duomenų struktūra. 692 00:29:57,680 --> 00:29:59,570 Norėdami dequeue tai jį pašalinti. 693 00:29:59,570 --> 00:30:05,170 Bet kadangi kamino buvo LIFO duomenys struktūra, eilė pirmas, 694 00:30:05,170 --> 00:30:06,740 Pirmasis iš duomenų struktūra. 695 00:30:06,740 --> 00:30:10,050 >> Jei esate pirmasis asmuo linija, jums bus pirmasis asmuo, gauti 696 00:30:10,050 --> 00:30:12,420 iš linijos ir pirkti naują įrenginį. 697 00:30:12,420 --> 00:30:18,070 Įsivaizduokite, kaip nusiminusi šie žmonės būtų jei "Apple" vietoj to naudojo kamino, už 698 00:30:18,070 --> 00:30:21,250 Pavyzdžiui, įgyvendinti skynimas iki savo naują žaislą. 699 00:30:21,250 --> 00:30:24,310 Taigi eilės prasmės, be abejonės, mes galime galvoti apie visų rūšių 700 00:30:24,310 --> 00:30:27,480 programas, matyt, už eiles, ypač jei norite sąžiningumą. 701 00:30:27,480 --> 00:30:30,040 Taigi, kaip galėtume įgyvendinti šias kaip duomenų struktūros? 702 00:30:30,040 --> 00:30:33,680 >> Na, aš siūlau, kad mes galime reikia tai padaryti tokiu būdu. 703 00:30:33,680 --> 00:30:35,225 Taigi, aš ruošiuosi dabar turi numerius. 704 00:30:35,225 --> 00:30:38,190 Taigi mes keep it simple, o ne nebūtinai kalbame požiūriu padėklai. 705 00:30:38,190 --> 00:30:40,220 Tik skaičiai, kad žmonės Dotarłeś. 706 00:30:40,220 --> 00:30:43,760 Talpa ketina vėl nustatyti bendras skaičius žmonių, kurie gali būti 707 00:30:43,760 --> 00:30:46,900 ši eilutė, nes tris ar kokia kita reikšmė. 708 00:30:46,900 --> 00:30:50,760 >> Bet aš siūlau, kad man reikia sekti ne tik dėl dydžio 709 00:30:50,760 --> 00:30:52,370 eilė, kiek daug yra juo. 710 00:30:52,370 --> 00:30:56,310 Taigi dydis yra srovės dydis, pajėgumas yra maksimalus dydis. 711 00:30:56,310 --> 00:30:58,540 Tiesiog vėl nomenklatūra pagal susitarimą. 712 00:30:58,540 --> 00:31:03,680 Kodėl aš turiu papildomą int viduje iš eilės sekti, kas į 713 00:31:03,680 --> 00:31:05,365 priekinėje linijoje? 714 00:31:05,365 --> 00:31:07,930 715 00:31:07,930 --> 00:31:10,910 Kodėl aš turiu daryti, kad šiuo atveju? 716 00:31:10,910 --> 00:31:14,750 717 00:31:14,750 --> 00:31:16,190 >> Na, kaip yra šį paveiksliuką keisis? 718 00:31:16,190 --> 00:31:19,280 Galiu tikriausiai pakartotinai labiausiai Šio paveikslėlio. 719 00:31:19,280 --> 00:31:21,480 Leiskite man eiti į priekį ir ištrinti, kas čia. 720 00:31:21,480 --> 00:31:24,580 Mes padėsime tai šiek tiek kitą pavadinimą čia. 721 00:31:24,580 --> 00:31:28,930 Leiskite atsikratyti 17, galime atsikratyti iš 9, galime atsikratyti 3. 722 00:31:28,930 --> 00:31:30,410 Ir tegul pridėti vieną kitą dalyką. 723 00:31:30,410 --> 00:31:34,710 Aš siūlau, kad man reikia sekti sąrašo priekyje, kuris yra tik 724 00:31:34,710 --> 00:31:35,570 bus int taip pat. 725 00:31:35,570 --> 00:31:36,550 Ir mes ketiname keep it simple. 726 00:31:36,550 --> 00:31:37,740 Nėra susieta sąrašas dabar. 727 00:31:37,740 --> 00:31:40,900 >> Mes pripažinti, kad mes ketiname guzas nuo šios ribos. 728 00:31:40,900 --> 00:31:43,720 Bet ką aš noriu pamatyti įvykti šį kartą? 729 00:31:43,720 --> 00:31:47,240 Taigi, tarkime, aš einu į priekį ir pirmoji žmogus ateina linija, ir 730 00:31:47,240 --> 00:31:48,560 tai numeris 9. 731 00:31:48,560 --> 00:31:49,680 Mes turime streso kamuoliukus. 732 00:31:49,680 --> 00:31:51,330 Ar galiu pavogti, tarkim, du ar trys žmonės? 733 00:31:51,330 --> 00:31:52,690 Vienas, du, trys? 734 00:31:52,690 --> 00:31:53,120 Ateik iki. 735 00:31:53,120 --> 00:31:56,022 Teisė iš priekio, nes mes padaryti tai vienas greitai. 736 00:31:56,022 --> 00:31:59,415 >> Kiekvienas iš jūsų dabar bus ventiliatorius berniukas eilėje prie "Apple". 737 00:31:59,415 --> 00:32:03,970 738 00:32:03,970 --> 00:32:06,210 Jums nebus gauti Apple Hardware prie šio nors pabaigoje. 739 00:32:06,210 --> 00:32:06,500 Gerai. 740 00:32:06,500 --> 00:32:09,430 Taigi jūs numeris 9, esate numeris 17, numeris 22. 741 00:32:09,430 --> 00:32:12,130 Tai yra savavališkai skaičiai, pavyzdžiui, studentas ID arba Plauktiņš. 742 00:32:12,130 --> 00:32:14,550 Ir tik akimirką, pradėkime pradėti pridedant dalykų. 743 00:32:14,550 --> 00:32:16,000 Ir aš paleisti lenta čia šį kartą. 744 00:32:16,000 --> 00:32:19,570 >> Taigi, šiuo atveju, aš inicializuoti priekis būti - 745 00:32:19,570 --> 00:32:22,380 Aš iš tikrųjų nerūpi, ką priekyje, nes dydis yra lygus nuliui. 746 00:32:22,380 --> 00:32:24,480 Taigi tai taip pat tiesiog būti klaustukas. 747 00:32:24,480 --> 00:32:26,170 Tai yra visų klaustukų. 748 00:32:26,170 --> 00:32:29,880 Taigi dabar mes pradėsime iš tikrųjų matyti, kai žmonės rikiuojasi į parduotuvę. 749 00:32:29,880 --> 00:32:33,320 >> Taigi, jei numeris 9, esate pirmasis ten 05:00, eiti į priekį ir išsirikiuoti 750 00:32:33,320 --> 00:32:34,210 arba naktį prieš. 751 00:32:34,210 --> 00:32:34,580 Gerai. 752 00:32:34,580 --> 00:32:35,940 Taigi dabar 9 yra čia. 753 00:32:35,940 --> 00:32:37,940 Taigi 9 yra sąrašo priekyje. 754 00:32:37,940 --> 00:32:41,440 Taigi, aš ruošiuosi eiti į priekį ir atnaujinti Šios srovės duomenų dydis 755 00:32:41,440 --> 00:32:44,740 struktūra nėra 0 nebėra, bet turi būti 1. 756 00:32:44,740 --> 00:32:47,630 Aš ruošiuosi įdėti 9 metu priekyje sąrašo. 757 00:32:47,630 --> 00:32:51,020 Leiskite man eiti į priekį ir perjungti ekraną todėl mes galime pamatyti paskutinius mūsų čia. 758 00:32:51,020 --> 00:32:53,220 >> O dabar ką aš noriu įdėti į priekyje? 759 00:32:53,220 --> 00:32:56,240 Aš einu sekti, kad priekinėje eilėje dabar 760 00:32:56,240 --> 00:32:58,570 yra 0 vietoje. 761 00:32:58,570 --> 00:33:00,510 Nes tai, kas yra šalia nutiks? 762 00:33:00,510 --> 00:33:03,000 Na, tarkime, dabar aš į eilę 17, taip pat. 763 00:33:03,000 --> 00:33:04,510 Taigi hop atitinka ten. 764 00:33:04,510 --> 00:33:07,060 Ir vėl, durų rūšiuoti parduotuvė bus čia. 765 00:33:07,060 --> 00:33:08,700 Taigi dabar aš pridėjo 17. 766 00:33:08,700 --> 00:33:10,810 Ir nors šie vaikinai blokavimas ekranas, tai gerai, 767 00:33:10,810 --> 00:33:12,300 nes mes galime jį pamatyti čia. 768 00:33:12,300 --> 00:33:12,910 Atsiprašau. 769 00:33:12,910 --> 00:33:13,810 >> Auditorija: Mes galime judėti - 770 00:33:13,810 --> 00:33:14,660 >> Davidas Malan: Ne, viskas gerai. 771 00:33:14,660 --> 00:33:16,000 Tai didžiulis ten. 772 00:33:16,000 --> 00:33:18,580 Taigi 17 dabar viduje eilėje. 773 00:33:18,580 --> 00:33:21,332 Man reikia atnaujinti, kuri laukai dabar nors? 774 00:33:21,332 --> 00:33:23,210 Gerai, tikrai dydis. 775 00:33:23,210 --> 00:33:26,430 Ir kaip apie priekyje? 776 00:33:26,430 --> 00:33:27,040 Gerai, Nr. 777 00:33:27,040 --> 00:33:30,200 Priekinis neturėtų keistis, nes skirtingai nuo kamino, mes 778 00:33:30,200 --> 00:33:31,370 nori išlaikyti teisingumą. 779 00:33:31,370 --> 00:33:35,150 Taigi, jei 9 atėjo pirma, mes norime 9 bus pirmasis iš linijos 780 00:33:35,150 --> 00:33:36,420 ir į parduotuvę. 781 00:33:36,420 --> 00:33:37,220 >> Iš tiesų, galime pamatyti, kad. 782 00:33:37,220 --> 00:33:42,235 Prieš mes įterpti 22, galime eiti į priekį ir dequeue 9. 783 00:33:42,235 --> 00:33:42,970 Kas tavo vardas? 784 00:33:42,970 --> 00:33:43,680 >> Auditorija: Jake. 785 00:33:43,680 --> 00:33:45,440 >> Davidas Malan: Jake vyksta būti dequeued dabar. 786 00:33:45,440 --> 00:33:48,050 Taigi jums vaikščioti į parduotuvę. 787 00:33:48,050 --> 00:33:49,880 Ir apsimesti, kad parduotuvė yra ten. 788 00:33:49,880 --> 00:33:51,970 Taigi dabar, ką reikia - DIT-DIT-dit! 789 00:33:51,970 --> 00:33:53,400 Kas turi įvykti dabar? 790 00:33:53,400 --> 00:33:54,490 Dizainas sprendimas. 791 00:33:54,490 --> 00:33:56,825 Taigi nėra blogai instinktas, bet - kas tavo vardas? 792 00:33:56,825 --> 00:33:57,090 >> Auditorija: Davidas. 793 00:33:57,090 --> 00:33:57,500 >> Davidas Malan: David. 794 00:33:57,500 --> 00:33:58,810 Taigi, ką Dovydas daryti? 795 00:33:58,810 --> 00:34:02,590 Jis bando rūšiuoti nustatyti duomenis struktūra ir judėti iš savo vietos 796 00:34:02,590 --> 00:34:04,100 į Jake buvusio vietą. 797 00:34:04,100 --> 00:34:06,740 Ir tai gerai, jei mes pasirengę pripažinti, kad, kaip 798 00:34:06,740 --> 00:34:08,199 įgyvendinimas išsamiai. 799 00:34:08,199 --> 00:34:11,100 Bet pirmiausia, galime atnaujinti duomenis struktūrą, kol mes tai padaryti. 800 00:34:11,100 --> 00:34:14,139 Kadangi aš ne mylėti visų idėją žmonės keičiasi šioje eilutėje. 801 00:34:14,139 --> 00:34:17,360 >> Tai ne big deal, jei Davidas jis su vienas žingsnis, bet vėlgi, prisiminkite 802 00:34:17,360 --> 00:34:20,360 kai mes turėjo aštuonis savanorių etapas ir mes padarėme kaip budas 803 00:34:20,360 --> 00:34:22,600 rūšiuoti, kur mes turėjo pradėti perkelti visus aplink. 804 00:34:22,600 --> 00:34:23,790 Kad gavau brangus, tiesa? 805 00:34:23,790 --> 00:34:28,330 Tai verčia mane šliaužioti apie Didelės O n, didelis O n kvadratu dar kartą. 806 00:34:28,330 --> 00:34:30,650 Tai ne jausmas, kaip idealus rezultatas. 807 00:34:30,650 --> 00:34:32,080 >> Taigi galime tik atnaujinti šiuo klausimu. 808 00:34:32,080 --> 00:34:35,120 Taigi iš eilės dydis nebėra 2. 809 00:34:35,120 --> 00:34:37,090 Tai dabar tiesiog 1. 810 00:34:37,090 --> 00:34:40,360 Bet dabar aš galiu atnaujinti kažką Aš ne atnaujinti anksčiau, 811 00:34:40,360 --> 00:34:41,130 priekyje sąrašo. 812 00:34:41,130 --> 00:34:45,420 Galėčiau tik pasakyti, yra tai, kad 1 vieta? 813 00:34:45,420 --> 00:34:49,770 Taigi dabar mes turime šiukšlių vertę čia šiukšlių vertė čia, ir Dovydas 814 00:34:49,770 --> 00:34:51,469 viduryje šio atliekomis. 815 00:34:51,469 --> 00:34:54,980 Tačiau duomenų struktūros vis dar yra nesugadintos. 816 00:34:54,980 --> 00:34:58,540 >> Ir iš tiesų, aš net nereikia pakeisti Jake buvusią numeris 817 00:34:58,540 --> 00:35:00,460 9, nes who cares. 818 00:35:00,460 --> 00:35:04,470 Turiu pakankamai informacijos dabar dydžio, kad aš žinau, yra vienas žmogus 819 00:35:04,470 --> 00:35:05,030 tai eilė. 820 00:35:05,030 --> 00:35:08,340 Ir aš žinau, kad tas asmuo yra vieta 1, o ne 0. 821 00:35:08,340 --> 00:35:09,760 Nesu skaičiavimas. 822 00:35:09,760 --> 00:35:11,300 Taigi 1, taip pat. 823 00:35:11,300 --> 00:35:13,410 Taigi, duomenų struktūros vis dar Gerai. 824 00:35:13,410 --> 00:35:14,330 >> Na, kas bus toliau? 825 00:35:14,330 --> 00:35:15,010 Leiskite į eilę - 826 00:35:15,010 --> 00:35:15,370 koks tavo vardas? 827 00:35:15,370 --> 00:35:16,160 >> Auditorija: Callen. 828 00:35:16,160 --> 00:35:16,580 >> Davidas Malan: Callen. 829 00:35:16,580 --> 00:35:20,770 Leiskite į eilę tam Callen ir 22 dabar eilėje. 830 00:35:20,770 --> 00:35:22,300 Taigi dabar, kas turi pakeisti čia? 831 00:35:22,300 --> 00:35:24,380 Priekinis nesiruošia pakeisti, žinoma. 832 00:35:24,380 --> 00:35:27,160 Dydis ketina keisti ir 2 dar kartą. 833 00:35:27,160 --> 00:35:31,590 Ir 22 baigiasi čia, 9 vis dar yra, bet tai efektyviai 834 00:35:31,590 --> 00:35:32,600 šiukšlių vertė dabar. 835 00:35:32,600 --> 00:35:35,910 Tai tiesiog Jake praeities atgyvena. 836 00:35:35,910 --> 00:35:39,200 >> Taigi dabar kas atsitiks, jei Aš dequeue Dovydą? 837 00:35:39,200 --> 00:35:41,560 Vienas paskutinės operacijos, dequeue Davidas. 838 00:35:41,560 --> 00:35:46,070 Mes galime pakeisti, bet siūlau tegul tai kaip tiek darbo, kiek įmanoma. 839 00:35:46,070 --> 00:35:50,280 Dabar mano duomenų struktūros eina atsargines dydis nuo 2 ir 1. 840 00:35:50,280 --> 00:35:53,730 Tačiau nuo eilės priekyje dabar tampa 2. 841 00:35:53,730 --> 00:35:56,640 Man nereikia pakeisti šiuos numerius tik dar, nes jie 842 00:35:56,640 --> 00:35:58,230 tik šiukšlių vertės. 843 00:35:58,230 --> 00:35:59,720 >> Bet dabar, kas atsitinka? 844 00:35:59,720 --> 00:36:03,280 Tarkime, aš į eilę save, 26? 845 00:36:03,280 --> 00:36:05,890 Aš jaučiuosi kaip aš priklausau čia. 846 00:36:05,890 --> 00:36:06,890 Taigi, aš vis enqueued. 847 00:36:06,890 --> 00:36:08,760 Taigi I rūšies priklauso čia. 848 00:36:08,760 --> 00:36:11,300 Ir nors jūs ne visai vertinu tai vizualiai ant scenos, 849 00:36:11,300 --> 00:36:15,075 nes mes turime daug galimybių, turėčiau ne stovėti čia, kodėl? 850 00:36:15,075 --> 00:36:16,290 >> Auditorija: Jūs iš ribų. 851 00:36:16,290 --> 00:36:16,370 >> Davidas Malan: Teisingai. 852 00:36:16,370 --> 00:36:16,940 Aš iš ribų. 853 00:36:16,940 --> 00:36:19,330 Aš indeksuojami ne tik Ribas šiame masyve. 854 00:36:19,330 --> 00:36:23,420 Aš tikrai turėtų būti viena iš galimi trys vietos. 855 00:36:23,420 --> 00:36:25,150 O dabar, kur labiausiai natūralus eiti? 856 00:36:25,150 --> 00:36:27,760 Siūlau mes skolintomis savaitę vienas triukas. 857 00:36:27,760 --> 00:36:30,150 Mod operatorius, procentais. 858 00:36:30,150 --> 00:36:36,850 Kadangi aš techniškai stovėjo 3 vieta, bet aš 3 mod pajėgumus, 859 00:36:36,850 --> 00:36:40,250 taigi 3 proc ženklas, 3 - 860 00:36:40,250 --> 00:36:40,970 pajėgumas yra 3. 861 00:36:40,970 --> 00:36:41,720 Kas tai? 862 00:36:41,720 --> 00:36:43,700 Kas likutį jums padalinti 3 iš 3? 863 00:36:43,700 --> 00:36:44,070 0. 864 00:36:44,070 --> 00:36:48,140 >> Taigi, kad iškelia mane buvo Jake buvo kuri yra tikrai gera. 865 00:36:48,140 --> 00:36:50,370 Taigi dabar įgyvendinimas tai dalykas vyksta 866 00:36:50,370 --> 00:36:51,250 būti galvos skausmas šiek tiek. 867 00:36:51,250 --> 00:36:53,740 Tai tikrai tik viena eilutė galvos skausmas, kodo. 868 00:36:53,740 --> 00:36:56,580 Bet bent jau dabar yra šiukšlių vertė ne čia, o ten du 869 00:36:56,580 --> 00:36:57,910 teisėtų ints čia. 870 00:36:57,910 --> 00:37:04,160 Ir aš teigia, kad dabar mes padarėme ką mes turime padaryti, kol 871 00:37:04,160 --> 00:37:08,600 mes pakeisime ką Jake vertė turėjo būti 26. 872 00:37:08,600 --> 00:37:12,110 >> Mes dabar turime pakankamai informacijos, dar išlaikyti vientisumą 873 00:37:12,110 --> 00:37:13,060 Šios duomenų struktūra. 874 00:37:13,060 --> 00:37:17,160 Mes vis dar natūra iš laimės, kai mes norite įterpti keturis ar daugiau viso 875 00:37:17,160 --> 00:37:20,740 elementai, bet aš bent jau gali padaryti gana efektyviau naudoti ši konstanta 876 00:37:20,740 --> 00:37:21,740 laikas, iš tikrųjų. 877 00:37:21,740 --> 00:37:27,150 Aš neturiu jaudintis keičiasi Kiekvienas žmogus, kaip Dovydo polinkis buvo. 878 00:37:27,150 --> 00:37:30,816 >> Bet koks šūsnis klausimų, ar tai eilė? 879 00:37:30,816 --> 00:37:32,184 >> Auditorija: Ar priežastis jums reikia dydžio, kad žinote 880 00:37:32,184 --> 00:37:34,010 kur yra žmogus? 881 00:37:34,010 --> 00:37:34,770 >> Davidas Malan: Būtent. 882 00:37:34,770 --> 00:37:38,230 Man reikia žinoti, iš masyvo dydį nes man reikia tiksliai žinoti, kaip 883 00:37:38,230 --> 00:37:41,940 daugelis šių vertybių yra teisėtas, ir taip, kad galiu rasti kur dėti 884 00:37:41,940 --> 00:37:42,800 kitas asmuo. 885 00:37:42,800 --> 00:37:43,300 Būtent. 886 00:37:43,300 --> 00:37:44,580 Dydis - 887 00:37:44,580 --> 00:37:46,360 Tiesą sakant, mes ne atnaujinti šį dar. 888 00:37:46,360 --> 00:37:48,380 Aš pridėjo save ne 26. 889 00:37:48,380 --> 00:37:51,760 Dydis yra dabar, o ne 1, bet 2. 890 00:37:51,760 --> 00:37:57,780 Taigi, dabar tai tikrai padeda man rasti galvos sąraše, kuris yra ne 0, o ne 891 00:37:57,780 --> 00:37:59,250 1, bet 2. 892 00:37:59,250 --> 00:38:01,665 Sąrašo priekyje iš tiesų yra skaičius 22. 893 00:38:01,665 --> 00:38:05,120 Kadangi jis atėjo pirmas, todėl jis turėtų būti leidžiama į parduotuvę prieš mane, 894 00:38:05,120 --> 00:38:08,780 nors vizualiai aš stoviu arčiau parduotuvės. 895 00:38:08,780 --> 00:38:09,220 >> Viskas gerai? 896 00:38:09,220 --> 00:38:12,410 Ar plojimų šių vaikinai ir mes galime juos iš ten. 897 00:38:12,410 --> 00:38:17,090 >> [Plojimai] 898 00:38:17,090 --> 00:38:18,150 >> Davidas Malan: galėčiau leisti jūs nuolat dėklą. 899 00:38:18,150 --> 00:38:20,760 Mes galime pamatyti, kas atsitiks, jei norite, bet gal ir ne. 900 00:38:20,760 --> 00:38:21,590 Gerai. 901 00:38:21,590 --> 00:38:25,380 Taigi, kas dabar, kad palikti mums? 902 00:38:25,380 --> 00:38:28,900 Na, leiskite man pasiūlyti, kad yra keletas kitų duomenų struktūros galėtume 903 00:38:28,900 --> 00:38:33,810 pradėti pridedant mūsų įrankių rinkinys, kad bus tikrųjų gali būti gana, gana aktualus, nes 904 00:38:33,810 --> 00:38:35,270 mes pasinerti į interneto stuff. 905 00:38:35,270 --> 00:38:38,150 Kuris vėl turi pobūdžio ryšį į medžių formos 906 00:38:38,150 --> 00:38:40,550 kažkas vadinamas DOM, dokumentų objekto modelį. 907 00:38:40,550 --> 00:38:42,370 Bet mes pamatysime daugiau kad prieš ilgas. 908 00:38:42,370 --> 00:38:46,260 >> Leiskite man pasiūlyti definitionally, kad mes skambinti medį dabar ką gali žinoti, kaip 909 00:38:46,260 --> 00:38:48,820 daugiau šeimos medį, kur kažkiek protėvį 910 00:38:48,820 --> 00:38:49,790 šaknys medžio. 911 00:38:49,790 --> 00:38:54,480 Patriarchalinės ar matriarch ne pačiame viršuje medžių. 912 00:38:54,480 --> 00:38:56,700 Be savo sutuoktinio, šiuo atveju. 913 00:38:56,700 --> 00:39:00,940 Bet dabar mes turime tai, ką mes vadiname vaikai, kurie mazgai, kad pakabinti 914 00:39:00,940 --> 00:39:05,480 nuo kairiojo vaiko ar teisinga vaikui, rodykles kaip parodyta čia. 915 00:39:05,480 --> 00:39:10,490 >> Kitaip tariant, medis duomenų struktūros kompiuterių, medis turi nulį 916 00:39:10,490 --> 00:39:11,480 ar daugiau mazgų. 917 00:39:11,480 --> 00:39:13,500 Jei jis turi bent vieną mazgą, tai vadinama šaknis. 918 00:39:13,500 --> 00:39:15,700 Tai, ką vizualiai, kad mes atkreipiame viršuje. 919 00:39:15,700 --> 00:39:20,280 Ir tai mazgas, kaip bet kuris kitas mazgas, galite yra lygus nuliui, vieną, ar du, ar trys, 920 00:39:20,280 --> 00:39:23,600 ar vis dėlto daug vaikų duomenų struktūra palaiko. 921 00:39:23,600 --> 00:39:29,150 Šiuo atveju, šaknis, saugojimas vertė viena, turi du vaikus, 2 ir 3 dalis, 922 00:39:29,150 --> 00:39:33,020 todėl mes paprastai vadiname 2 kairę vaikas ir 3 dešinėje vaikas. 923 00:39:33,020 --> 00:39:36,940 >> Ir tada, kai mes gauti iki 5, 6, ir 7, 6 gali būti vadinamas vidurinis vaikas. 924 00:39:36,940 --> 00:39:38,940 Jei turite keturis vaikus, ji tampa paini. 925 00:39:38,940 --> 00:39:42,260 Taigi mes nustoti naudoti tokio pobūdžio sparčiųjų žodžiu. 926 00:39:42,260 --> 00:39:44,580 Bet tai tikrai tik šeimos medis. 927 00:39:44,580 --> 00:39:48,880 Ir lapai čia yra mazgai, kad patys neturi vaikų. 928 00:39:48,880 --> 00:39:52,540 Jie pakabinti išbrauktas iš medžio apačioje. 929 00:39:52,540 --> 00:39:56,940 >> Taigi, kaip galėtume įgyvendinti medį, kad turi tik du vaikus maksimaliai? 930 00:39:56,940 --> 00:39:58,410 Mes jį vadiname dvejetainis medis. 931 00:39:58,410 --> 00:40:00,960 Patinka vėl reiškia du, šiuo atveju, kaip dvejetainiu. 932 00:40:00,960 --> 00:40:04,830 Ir todėl jis gali turėti nulis, vienas, arba du vaikai maksimaliai. 933 00:40:04,830 --> 00:40:08,650 >> Aš siūlau, kad mes įgyvendinti mazgas tos su int n struktūrą, 934 00:40:08,650 --> 00:40:11,910 ir tada dvi rodyklės, vienas vadinamas į kairę, vienas vadinamas teisus. 935 00:40:11,910 --> 00:40:14,830 Tačiau tai tik gražus savavališkai konvencijomis. 936 00:40:14,830 --> 00:40:18,170 Ir kas malonu dabar, ypač jei rūšies kovojo konceptualiai su 937 00:40:18,170 --> 00:40:21,300 rekursija, arba manoma, kad tai buvo ne tikrai sprendimas nieko, 938 00:40:21,300 --> 00:40:23,120 ypač, jei galėtumėte paleisti iš atminties. 939 00:40:23,120 --> 00:40:26,600 Dabar, kad mes kalbame apie duomenų struktūros ir algoritmai, kurie leidžia 940 00:40:26,600 --> 00:40:31,030 mums išanalizuoti ir jais manipuliuoti, Pasirodo, kad rekursija grįžta 941 00:40:31,030 --> 00:40:34,240 daug įtikinamų jei ne gražus būdas. 942 00:40:34,240 --> 00:40:38,670 >> Taigi tai aš siūlau yra įgyvendinimas Apie Search funkcija. 943 00:40:38,670 --> 00:40:39,870 Kadangi du įėjimai - 944 00:40:39,870 --> 00:40:41,570 todėl galvoti apie tai, kaip juodąją dėžę. 945 00:40:41,570 --> 00:40:46,560 Kadangi du įėjimai, N, int ir Rodyklė į medį, rodyklė 946 00:40:46,560 --> 00:40:50,020 mazgas, ar tikrai iš medžio šaknis, aš teigia, kad ši funkcija gali grįžti 947 00:40:50,020 --> 00:40:53,530 true arba false, kad vertė n yra viduje šio medžio. 948 00:40:53,530 --> 00:40:55,210 >> Kas viduje šios juodosios dėžės? 949 00:40:55,210 --> 00:40:57,440 Na, keturi filialai. 950 00:40:57,440 --> 00:40:58,385 Pirmasis tik tikrina. 951 00:40:58,385 --> 00:41:00,490 Jei medis yra niekinis, tiesiog grįžti klaidinga. 952 00:41:00,490 --> 00:41:04,580 Jei nėra mazgas, nėra n nėra skaičius, tiesiog grįžti klaidinga. 953 00:41:04,580 --> 00:41:12,330 Jei nors n, vertė ieškote Nes yra mažesnis nei medžio rodyklės n ir 954 00:41:12,330 --> 00:41:15,180 tiesiog, kad būtų aišku, ką tai reiškia, kai Aš rašau medį ir tada rodyklę 955 00:41:15,180 --> 00:41:18,150 žymėjimas, n? 956 00:41:18,150 --> 00:41:18,690 Būtent. 957 00:41:18,690 --> 00:41:21,970 Tai reiškia, kad dereference rodyklė vadinamas medį. 958 00:41:21,970 --> 00:41:26,750 Eiti ten, ir tada gauti viduje, kad mazgas ir gauti savo lauką, vadinamą n. 959 00:41:26,750 --> 00:41:30,810 Ir tada palyginti faktinį n, kad buvo perėjo į paieškos prieš jį. 960 00:41:30,810 --> 00:41:35,390 >> Taigi, jei n yra mažesnis nei n vertę Medyje mazgas pati, gerai, 961 00:41:35,390 --> 00:41:36,720 Ką tai reiškia? 962 00:41:36,720 --> 00:41:40,690 Tai reiškia, kad nieko iš pirmo žvilgsnio. 963 00:41:40,690 --> 00:41:40,900 Teisė? 964 00:41:40,900 --> 00:41:45,560 Tiesiog patinka, kai jūs turite masyvas vertės, galbūt jūs norėtumėte taikyti dvejetainis 965 00:41:45,560 --> 00:41:48,290 ieškoti kaip atskirties forma ir užkariauti. 966 00:41:48,290 --> 00:41:51,790 Bet kas prielaida buvo mums reikia, kad komponentų paiešką dirbti ne visi 967 00:41:51,790 --> 00:41:54,510 telefonų knygoje ir ankstesni pavyzdžiai? 968 00:41:54,510 --> 00:41:55,530 >> Kaip turi būti išspręstos. 969 00:41:55,530 --> 00:41:59,490 Taigi, galime patobulinti medžio apibrėžimas čia negali būti tik medis, kuris gali 970 00:41:59,490 --> 00:42:00,880 turite vaikų skaičių. 971 00:42:00,880 --> 00:42:04,700 Ne tik dvejetainis medis, kuris gali turi 0, 1, arba 2 maksimaliai. 972 00:42:04,700 --> 00:42:09,700 Bet kaip dvejetainis paieškos medis, arba BST kuri yra tik išgalvotas būdas pasakyti 973 00:42:09,700 --> 00:42:15,430 dvejetainis medis, pavyzdžiui, kad kiekvienas mazgas kairėje vaikas, jei yra, yra 974 00:42:15,430 --> 00:42:16,830 mažiau nei mazgas. 975 00:42:16,830 --> 00:42:20,170 Ir kiekvienas mazgas teisė vaikas, jei yra, yra didesnis 976 00:42:20,170 --> 00:42:21,740 nei mazgas pati. 977 00:42:21,740 --> 00:42:25,200 >> Taigi, kitaip tariant, jei jums buvo atkreipti medis iš, visus numerius yra 978 00:42:25,200 --> 00:42:30,620 tinkamai subalansuoti taip, kad jei jūs turite 55 kaip šaknis, 33 gali eiti 979 00:42:30,620 --> 00:42:33,090 jo kairėje, nes ji yra mažiau nei 55. 980 00:42:33,090 --> 00:42:36,430 77 galite pereiti į savo teisę, nes tai didesnis nei 55. 981 00:42:36,430 --> 00:42:40,750 Bet dabar pastebėti, tą patį apibrėžimą, tai rekursinis apibrėžimas žodžiu, 982 00:42:40,750 --> 00:42:42,600 turi taikyti 33. 983 00:42:42,600 --> 00:42:47,610 33 kairės pusės vaikas turi būti mažesnis nei tai, ir 33 teisė vaikas, 44, turi būti 984 00:42:47,610 --> 00:42:48,580 didesnis nei jo. 985 00:42:48,580 --> 00:42:51,670 >> Taigi tai yra dvejetainis paieškos medis, ir Aš siūlau, naudojant šiek tiek 986 00:42:51,670 --> 00:42:53,910 rekursija, dabar mes galime rasti n. 987 00:42:53,910 --> 00:42:59,160 Taigi, jei n yra mažesnis nei reikšmė N, kad yra dabartinis mazgas, aš ruošiuosi eiti 988 00:42:59,160 --> 00:43:04,090 į priekį ir kamuolio išmušimas iš rankų, taip sakant, ir tik grįžti bet atsakymas yra 989 00:43:04,090 --> 00:43:08,470 ieškoti n nuo medžio kairėje vaikas. 990 00:43:08,470 --> 00:43:11,370 Pranešimas vėl, ši funkcija tiesiog tikisi mazgas STAR ženklu, 991 00:43:11,370 --> 00:43:12,780 rodyklė mazgas. 992 00:43:12,780 --> 00:43:17,360 Taigi tikrai galiu tik daryti medį rodyklė į kairę, kuris bus 993 00:43:17,360 --> 00:43:18,400 mane į kitą mazgą. 994 00:43:18,400 --> 00:43:19,480 Bet kas tai yra mazgas? 995 00:43:19,480 --> 00:43:22,820 >> Na, pagal šią deklaraciją, Kairėje pusėje yra tiesiog rodyklė, kad tik 996 00:43:22,820 --> 00:43:27,090 tai aš einančios į paieškos funkcija skiriasi rodyklė, ty 997 00:43:27,090 --> 00:43:30,750 vienas, kad yra mano kairę vaiko medį. 998 00:43:30,750 --> 00:43:36,040 Taigi šiuo atveju, rodyklė į 33, jei tai yra mūsų pavyzdys įvesties Tuo tarpu, jei 999 00:43:36,040 --> 00:43:40,740 n yra didesnė už vertę n, dabartinis mazgas medžio, tada aš 1000 00:43:40,740 --> 00:43:43,370 ketina eiti į priekį ir kamuolio išmušimas iš rankų į kitas kryptis ir tiesiog pasakyti, aš ne 1001 00:43:43,370 --> 00:43:47,280 žinoti, jei ši vertė n yra medyje, bet aš žinau, jei ji yra, tai žemyn mano 1002 00:43:47,280 --> 00:43:49,090 teisė filialas, taip sakant. 1003 00:43:49,090 --> 00:43:53,120 Taigi leiskite man skambučių rekursyviai ieškoti, Praėję n vėl, bet einančios 1004 00:43:53,120 --> 00:43:54,580 rodyklė mano dešinėje vaikui. 1005 00:43:54,580 --> 00:44:00,020 >> Kitaip tariant, jei aš šiuo metu 55 ir aš ieškau už 99, aš žinau, kad 99 1006 00:44:00,020 --> 00:44:04,270 yra didesnis nei 55, taip kaip aš persiplėšė telefonų knyga savaites ir mes 1007 00:44:04,270 --> 00:44:07,140 nuskriejo tiesiai, panašiai mes esame ketina eiti čia. 1008 00:44:07,140 --> 00:44:11,960 Ir aš nežinau, jei tai ne mano dešinėje vaikas, ir tai ne, 77 yra, bet 1009 00:44:11,960 --> 00:44:13,210 Žinau, kad ta kryptimi. 1010 00:44:13,210 --> 00:44:18,770 Taigi aš vadinu paiešką mano dešinėje vaikas, 77, ir tegul paieškos paveikslą iš 1011 00:44:18,770 --> 00:44:24,950 ten, jei 99 tai savavališkas pavyzdys yra iš tikrųjų ten. 1012 00:44:24,950 --> 00:44:26,900 >> Kitur, kas galutinis atveju? 1013 00:44:26,900 --> 00:44:28,620 Jei medis yra niekinis yra vienas atvejis. 1014 00:44:28,620 --> 00:44:31,890 Jei n yra mažesnis nei dabartinis mazgas vertė yra kitas atvejis. 1015 00:44:31,890 --> 00:44:35,120 Jei n yra didesnis nei dabartinis mazgas vertė yra Trečiasis atvejis. 1016 00:44:35,120 --> 00:44:38,250 Kas ketvirtas ir paskutinis atvejis? 1017 00:44:38,250 --> 00:44:39,480 Manau, kad mes iš atvejų, tiesa? 1018 00:44:39,480 --> 00:44:44,690 Jis turi būti, kad n yra dabartinis mazgas, kad aš ant. 1019 00:44:44,690 --> 00:44:49,640 >> Taigi, jei aš ieškoti 55 šiuo metu į istoriją, kad filialas 1020 00:44:49,640 --> 00:44:51,780 medis sugrįš tiesa. 1021 00:44:51,780 --> 00:44:55,380 Taigi, kas įdomu tai, kad mes iš tikrųjų, skirtingai nuo savaitėmis anksčiau, mes natūra 1022 00:44:55,380 --> 00:44:56,740 iš turi dvi pagrindo atvejus. 1023 00:44:56,740 --> 00:44:58,300 Ir jie neturi būti visi viršuje. 1024 00:44:58,300 --> 00:45:01,390 Viršuje yra bazinį scenarijų, nes jei medis yra niekinis, nieko daryti. 1025 00:45:01,390 --> 00:45:03,410 Tiesiog grįžti sunkiai koduojami vertė neteisinga. 1026 00:45:03,410 --> 00:45:07,400 >> Apačioje filialas yra tarsi pagal nutylėjimą, pagal kurią, jei mes tikrinamas 1027 00:45:07,400 --> 00:45:11,550 null, mes patikrino, ar ji turėtų būti į kairę, bet tai neturėtų būti, mes 1028 00:45:11,550 --> 00:45:14,640 patikrino, ar ji turėtų būti gerai, bet jis neturėtų būti, aiškiai jis turi būti 1029 00:45:14,640 --> 00:45:15,870 ten, kur mes esame. 1030 00:45:15,870 --> 00:45:16,780 Štai bazinį scenarijų. 1031 00:45:16,780 --> 00:45:19,920 Taigi, čia yra du pasikartojantys atvejai įtvirtinta ten viduryje. 1032 00:45:19,920 --> 00:45:21,630 Bet aš galėjo parašyti tai bet kokia tvarka. 1033 00:45:21,630 --> 00:45:24,520 Aš tiesiog pagalvojau, kad rūšies jaučiamas natūralus pirmiausia patikrinti dėl galimos klaidos, 1034 00:45:24,520 --> 00:45:28,340 tada patikrinkite, ar į kairę, tada patikrinkite, ar teisinga, tada manyti, kad esate ne mazgas 1035 00:45:28,340 --> 00:45:30,630 jūs iš tikrųjų ieško. 1036 00:45:30,630 --> 00:45:36,240 >> Tad kodėl tai galėtų būti naudinga? 1037 00:45:36,240 --> 00:45:37,910 Taigi paaiškėja - 1038 00:45:37,910 --> 00:45:42,110 ir leiskite man pereiti į kibinimas čia tai į internetą. 1039 00:45:42,110 --> 00:45:44,920 Mes ketiname pradėti naudoti ne programavimo kalba per pirmąjį, tačiau 1040 00:45:44,920 --> 00:45:46,030 žymėjimo kalba. 1041 00:45:46,030 --> 00:45:48,740 Žymėjimo kalba yra viena, kad panašios dvasios programavimo 1042 00:45:48,740 --> 00:45:51,715 kalba, bet tai nesuteikia Jums gebėjimas išreikšti save logiškai. 1043 00:45:51,715 --> 00:45:55,070 Ji tik suteikia jums galimybę išreikšti save struktūriškai. 1044 00:45:55,070 --> 00:45:57,960 >> Jeigu norite įdėti kažką puslapyje, interneto puslapis? 1045 00:45:57,960 --> 00:45:59,200 Kokios spalvos norite padaryti? 1046 00:45:59,200 --> 00:46:00,950 Kas šrifto dydį jūs norite padaryti? 1047 00:46:00,950 --> 00:46:02,970 Kokiais žodžiais jūs iš tikrųjų noriu tinklalapyje? 1048 00:46:02,970 --> 00:46:04,060 Štai žymėjimo kalba. 1049 00:46:04,060 --> 00:46:07,690 Bet tada mes labai greitai pristatyti Javaskriptą, kuris yra pilnavertis 1050 00:46:07,690 --> 00:46:08,560 programavimo kalba. 1051 00:46:08,560 --> 00:46:12,530 Labai panašus sintaksiškai išvaizda iki C, bet teks kai 1052 00:46:12,530 --> 00:46:15,200 gražus, galingesnis, daugiau patogios funkcijos. 1053 00:46:15,200 --> 00:46:18,050 >> Ir vienas iš nusivylimų į tai taškas semestrą yra tai, kad mes atsiųsime 1054 00:46:18,050 --> 00:46:22,065 greičiau įgyvendinti speller kur kas mažiau eilučių kodo, naudojant kitas kalbas 1055 00:46:22,065 --> 00:46:25,580 nei C leidžia daryti, bet priežastis ųjų mes greitai suprasti. 1056 00:46:25,580 --> 00:46:27,750 Tai bus pirmasis toks tinklalapis. 1057 00:46:27,750 --> 00:46:30,120 Tai bus visiškai underwhelming, Pirmasis mes darome. 1058 00:46:30,120 --> 00:46:31,400 Tai bus tiesiog pasakyti, hello world. 1059 00:46:31,400 --> 00:46:34,010 Bet jei jūs niekada matė jį anksčiau, tai yra, HTML, 1060 00:46:34,010 --> 00:46:35,670 Hypertext Markup Language. 1061 00:46:35,670 --> 00:46:39,310 >> Jeigu jūs einate į tam tikrą meniu pasirinkties labiausiai bet kokia naršykle, bet interneto puslapyje 1062 00:46:39,310 --> 00:46:43,160 interneto, jūs galite pamatyti HTML kad kai kurie žmonės rašė 1063 00:46:43,160 --> 00:46:44,400 sukurti, kad interneto puslapyje. 1064 00:46:44,400 --> 00:46:47,850 Ir tai tikriausiai neatrodo taip trumpas arba tvarkingas, kaip šis. 1065 00:46:47,850 --> 00:46:51,400 Bet tai bus sekti jų pavyzdį atviros gembės ir nerijos ribos ir 1066 00:46:51,400 --> 00:46:53,660 raidės ir galimai numeriai. 1067 00:46:53,660 --> 00:46:56,770 >> Aš maniau aš jums kibinimas nuo to, ką galėsite padaryti 1068 00:46:56,770 --> 00:46:57,950 po to, kai CS50. 1069 00:46:57,950 --> 00:47:02,620 Leiskite man eiti į cs.harvard.edu / Rob, mūsų pačių Rob Bowden puslapį. 1070 00:47:02,620 --> 00:47:06,080 Jis padarė tai už mus. 1071 00:47:06,080 --> 00:47:07,490 Taigi, jūs netrukus galės tai padaryti. 1072 00:47:07,490 --> 00:47:10,660 Ir taip pat, ką girdėjote šį rytą - 1073 00:47:10,660 --> 00:47:12,480 ką girdėjote šį rytą - 1074 00:47:12,480 --> 00:47:13,780 >> [Hamster ŠOKIŲ MUZIKA] 1075 00:47:13,780 --> 00:47:15,702 >> - Ty jūs galėsite padaryti tai. 1076 00:47:15,702 --> 00:47:16,790 Kad mūsų laukia trečiadienį. 1077 00:47:16,790 --> 00:47:17,791 Pamatysime jums tada. 1078 00:47:17,791 --> 00:47:22,950 >> [Hamster ŠOKIŲ MUZIKA] 1079 00:47:22,950 --> 00:47:24,300 Davidas Malan: Kitame CS50 - 1080 00:47:24,300 --> 00:47:31,670