1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Vika 6] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Þetta er CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Þetta er CS50, og þetta er upphaf viku 6, 5 00:00:12,000 --> 00:00:16,000 svo a par af nýjum verkfærum eru nú í boði fyrir þig að taka kostur af, 6 00:00:16,000 --> 00:00:19,000 fyrst sem heitir CS50 stíl. 7 00:00:19,000 --> 00:00:22,000 Stuðlar eru ef þú ert eins og mig eða einhverju kennslu félagar, 8 00:00:22,000 --> 00:00:26,000 þú hefur sennilega séð forrit sem lét stíl lítur svolítið eitthvað eins og this. 9 00:00:26,000 --> 00:00:30,000 Kannski þú byrjar að skera nokkrar horn seint í nótt, eða þú munt takast á við það síðar, 10 00:00:30,000 --> 00:00:32,000 og þá kemur TF CA yfir á skrifstofutíma. 11 00:00:32,000 --> 00:00:34,000 Þá er það erfitt fyrir okkur að lesa. 12 00:00:34,000 --> 00:00:38,000 Jæja, þetta númer er setningafræðilega rétt, og það mun þýða, og það mun í raun að keyra. 13 00:00:38,000 --> 00:00:40,000 En það er örugglega ekki a 5 fyrir stíl. 14 00:00:40,000 --> 00:00:45,000 >> En ef við förum inn í þessa skrá hér- 15 00:00:45,000 --> 00:00:48,000 og eftir að ég hef conditions2.c- 16 00:00:48,000 --> 00:00:55,000 og ég að keyra þessa nýju stjórn, style50 á þessari skrá conditions2.c, Enter, 17 00:00:55,000 --> 00:00:57,000 eftir að það er upplýst mig um að það hefur verið stílfærð. 18 00:00:57,000 --> 00:01:00,000 Gedit eftir að skrá hefur verið breytt á diski, 19 00:01:00,000 --> 00:01:08,000 og ef ég smelli endurhlaða, eru öll vandamál nú sjálfvirk. 20 00:01:08,000 --> 00:01:15,000 [Lófaklapp] 21 00:01:15,000 --> 00:01:17,000 Það er eitt af því sem við gerðum um helgina. 22 00:01:17,000 --> 00:01:20,000 Gera sér grein fyrir að það er ófullkomin vegna þess að það eru sumir kóða 23 00:01:20,000 --> 00:01:23,000 að það einfaldlega mun ekki vera fær um að stylize fullkomlega, 24 00:01:23,000 --> 00:01:26,000 en átta sig á þessu er nú tól sem þú getur nýtt sér 25 00:01:26,000 --> 00:01:33,000 ef aðeins til snyrtilegu upp sumir af the fleiri errantly sett hrokkið axlabönd og þess háttar. 26 00:01:33,000 --> 00:01:36,000 >> En meira sannfærandi er nú CS50 Athuga. 27 00:01:36,000 --> 00:01:39,000 Með CS50 athuga, getur þú í raun að framkvæma sömu prófanir misskilning 28 00:01:39,000 --> 00:01:42,000 eigin kóðann þinn að kennslu styrkþegar geta. 29 00:01:42,000 --> 00:01:44,000 Þetta er a stjórn lína tól sem kemur nú í tækið 30 00:01:44,000 --> 00:01:46,000 eins fljótt og þú gerir að update50 eins og á 31 00:01:46,000 --> 00:01:49,000 pset 4 forskriftir, og þú notar það í raun svona. 32 00:01:49,000 --> 00:01:51,000 Þú keyra skipunina check50. 33 00:01:51,000 --> 00:01:56,000 Þá fara í stjórn lína rifrildi, eða fleiri almennt þekktur eins og a rofi eða fána. 34 00:01:56,000 --> 00:01:58,000 Almennt eru það sem hafa bandstrik kallað skipta 35 00:01:58,000 --> 00:02:02,000 að lína forrit, svo-C skilgreinir 36 00:02:02,000 --> 00:02:04,000 þær athuganir sem þú vilt keyra. 37 00:02:04,000 --> 00:02:07,000 >> Prófin sem þú vilt keyra er bent einstaklega með þessum streng, 38 00:02:07,000 --> 00:02:10,000 2012/pset4/resize. 39 00:02:10,000 --> 00:02:13,000 Með öðrum orðum, það er bara handahófskennt en einstakt band 40 00:02:13,000 --> 00:02:18,000 sem við notum til einstaklega þekkja réttmæti próf pset 4 er. 41 00:02:18,000 --> 00:02:21,000 Og þá tilgreina rúm aðskilin lista yfir skrár sem þú vilt hlaða inn 42 00:02:21,000 --> 00:02:24,000 til CS50 stöðva fyrir greiningu. 43 00:02:24,000 --> 00:02:29,000 Fyrir dæmi, ef ég fer í lausn mína hér fyrir resize.c- 44 00:02:29,000 --> 00:02:31,000 láta mig opna stærri flugstöðinni glugga- 45 00:02:31,000 --> 00:02:42,000 og ég fara á undan og keyra segjum check50-C 2012/pset4/resize, 46 00:02:42,000 --> 00:02:46,000 og þá skal ég fara á undan og tilgreina nöfn á skrám, 47 00:02:46,000 --> 00:02:49,000 resize.c, og þá högg inn, það samþjappaður, 48 00:02:49,000 --> 00:02:53,000 Það hleður, tékka það og ég brást bara allt fullt af prófum. 49 00:02:53,000 --> 00:02:59,000 Einn í rauðu efst til vinstri segir að resize.c og BMP til. 50 00:02:59,000 --> 00:03:01,000 Það var próf. Það var spurningin sem við spurði. 51 00:03:01,000 --> 00:03:04,000 Og það er óánægður vegna þess að svarið var falskur. 52 00:03:04,000 --> 00:03:08,000 The hvítur texti fyrir neðan það segir gert ráð bmp.h að vera til, og það er einfaldlega mér að kenna. 53 00:03:08,000 --> 00:03:11,000 Ég gleymdi að senda það, þannig að ég þarf að hlaða bæði skrár, 54 00:03:11,000 --> 00:03:14,000 resize.c og bmp.h. 55 00:03:14,000 --> 00:03:17,000 En nú taka öllum öðrum prófum eru í gular vegna þess að þeir hafa keyra, 56 00:03:17,000 --> 00:03:21,000 og svo er broskalla andlit lóðrétt vegna þess að hann er hvorki ánægður né leiður, 57 00:03:21,000 --> 00:03:25,000 en við verðum að ráða bót þessi mál í rautt áður en hin fer að hlaupa. 58 00:03:25,000 --> 00:03:27,000 >> Leyfðu mér að laga þetta. 59 00:03:27,000 --> 00:03:30,000 Leyfðu mér að minnka og endursýning þetta, í þetta sinn með bmp.h einnig 60 00:03:30,000 --> 00:03:34,000 á the stjórn lína, inn, og nú ef allt fer vel, 61 00:03:34,000 --> 00:03:38,000 það er að fara að athuga og svo aftur vegna-halda þinn andardráttur- 62 00:03:38,000 --> 00:03:42,000 allt grænt, sem þýðir að ég er að gera mjög vel á pset 4 svo langt. 63 00:03:42,000 --> 00:03:44,000 Þú getur séð og álykta af lýsandi texta hér 64 00:03:44,000 --> 00:03:47,000 nákvæmlega hvað það er sem við höfum prófað. 65 00:03:47,000 --> 00:03:49,000 Við prófuð fyrst að gera skrár til? 66 00:03:49,000 --> 00:03:51,000 Við prófuð þá er resize.c þýða? 67 00:03:51,000 --> 00:03:58,000 Þá erum við prófa er það ekki búa til 1x1 pixla BMP þegar n er Resize þáttur, er 1. 68 00:03:58,000 --> 00:04:01,000 Nú, ef þú hefur ekki hugmynd um hvað n er, verður þú að þegar kafa í pset 4, 69 00:04:01,000 --> 00:04:04,000 en það er einfaldlega geðheilbrigði athuga til að tryggja að þú sért ekki að breyta stærð 70 00:04:04,000 --> 00:04:08,000 mynd á öllum ef Resize þáttur er 1. 71 00:04:08,000 --> 00:04:14,000 Ef, hins vegar resizes það 1x1 pixla til a 1x1 pixla BMP til 2x2 rétt 72 00:04:14,000 --> 00:04:19,000 þegar n er 2, þá álíka eyðublöð, mitt í samræmi við það. 73 00:04:19,000 --> 00:04:22,000 >> Í stuttu máli, þetta er ætlað til, einn, gera The Crossing fingur 74 00:04:22,000 --> 00:04:25,000 út af the jafna rétt áður en þú sendir pset þínu. 75 00:04:25,000 --> 00:04:28,000 Þú vilja vita nákvæmlega hvað TF mun brátt vita 76 00:04:28,000 --> 00:04:30,000 Þegar þú ferð um að senda inn nokkrar af þessum vandamál setur, 77 00:04:30,000 --> 00:04:34,000 og einnig er kennslufræðilegt hvatning virkilega að setja 78 00:04:34,000 --> 00:04:37,000 tækifæri í framan þig þannig að þegar þú veist fyrirfram 79 00:04:37,000 --> 00:04:39,000 að það er villur í kóðanum þínum og prófanir sem eru ekki liðin, 80 00:04:39,000 --> 00:04:43,000 þú getur sett í skilvirkari tími upp að framan til að leysa þau vandamál 81 00:04:43,000 --> 00:04:45,000 frekar en að missa stig, fá viðbrögð frá TF þinni, 82 00:04:45,000 --> 00:04:48,000 og þá fara, "ahh," eins og ég ætti að hafa mynstrağur það út. 83 00:04:48,000 --> 00:04:50,000 Nú að minnsta kosti það er tól til að hjálpa þér að finna það. 84 00:04:50,000 --> 00:04:52,000 Það er ekki að fara að benda á hvar villan er, en það mun segja þér 85 00:04:52,000 --> 00:04:54,000 hvað er einkenni af því. 86 00:04:54,000 --> 00:04:57,000 >> Nú átta sig á próf eru ekki endilega tæmandi. 87 00:04:57,000 --> 00:04:59,000 Bara vegna þess að þú fá a skjár fullur af grænu broskalla andlit 88 00:04:59,000 --> 00:05:02,000 þýðir ekki að númerið þitt sé fullkominn, en það þýðir 89 00:05:02,000 --> 00:05:06,000 að það hefur staðist ákveðnar prófanir sem mælt er með því að sérstakur. 90 00:05:06,000 --> 00:05:08,000 Stundum við munum ekki gefa út ávísanir. 91 00:05:08,000 --> 00:05:10,000 Fyrir dæmi, whodunit, einn af þeim þáttum pset 4, 92 00:05:10,000 --> 00:05:15,000 er eins konar vonbrigðum ef við gefa þér 93 00:05:15,000 --> 00:05:18,000 svar um hvað það er, og það er a tala af lifnaðarhættir til að sýna 94 00:05:18,000 --> 00:05:21,000 hver maður er í þeirri rauðu hávaða. 95 00:05:21,000 --> 00:05:24,000 The sérstakur verður alltaf tilgreina í framtíðinni fyrir pset 5 og áfram 96 00:05:24,000 --> 00:05:26,000 það eftirlit til fyrir þig. 97 00:05:26,000 --> 00:05:28,000 Þú munt taka eftir að það er þetta hvíta URL neðst. 98 00:05:28,000 --> 00:05:30,000 Fyrir nú, þetta er bara sjúkdómsgreiningar framleiðsla. 99 00:05:30,000 --> 00:05:33,000 Ef þú heimsækir þessi slóð, munt þú fá a heild búnt af brjálaður, dulinn skilaboð 100 00:05:33,000 --> 00:05:36,000 að þú ert velkomin til að horfa í gegnum, en það er að mestu leyti fyrir starfsfólk 101 00:05:36,000 --> 00:05:41,000 svo að við getum greina og kemba galla í check50 sjálfu. 102 00:05:41,000 --> 00:05:46,000 >> Án fjaðrafok, við skulum fara til þar sem við var horfið. 103 00:05:46,000 --> 00:05:48,000 CS50 bókasafn tókum sem sjálfsagðan hlut í nokkrar vikur, 104 00:05:48,000 --> 00:05:52,000 en svo í síðustu viku, við byrjuðum flögnun aftur einn af lögum hennar. 105 00:05:52,000 --> 00:05:55,000 Við byrjuðum að setja hliðar band í hag hvað í staðinn? 106 00:05:55,000 --> 00:05:57,000 [Nemendur] Char. 107 00:05:57,000 --> 00:05:59,000 Char *, sem hefur verið char * allan þennan tíma, 108 00:05:59,000 --> 00:06:03,000 en nú að við þurfum ekki að láta sem það er í raun gögn tegund band. 109 00:06:03,000 --> 00:06:06,000 Fremur, það er verið samheiti nokkurs konar fyrir char *, 110 00:06:06,000 --> 00:06:09,000 og band er röð af stöfum, 111 00:06:09,000 --> 00:06:14,000 Svo hvers vegna er það skynsamleg að tákna strengi eins char * s? 112 00:06:14,000 --> 00:06:20,000 Hvað er a char * tákna í samhengi við þessa hugmynd um streng? 113 00:06:20,000 --> 00:06:23,000 Já. >> [Nemandi] Fyrsta staf. 114 00:06:23,000 --> 00:06:25,000 Gott, fyrsta staf, en ekki alveg í fyrsta staf. 115 00:06:25,000 --> 00:06:27,000 Það er-[Nemendur] Address. 116 00:06:27,000 --> 00:06:29,000 Gott, heimilisfang fyrstu persónu. 117 00:06:29,000 --> 00:06:33,000 Allt sem er nauðsynlegt til að tákna streng í minni í tölvu 118 00:06:33,000 --> 00:06:36,000 er bara einstakt heimilisfang fyrstu bæti þess. 119 00:06:36,000 --> 00:06:38,000 Þú þarft ekki einu sinni að vita hversu lengi það er 120 00:06:38,000 --> 00:06:42,000 því hvernig er hægt að reikna það út virk? 121 00:06:42,000 --> 00:06:44,000 [Nemandi] String lengd. 122 00:06:44,000 --> 00:06:48,000 Þú getur hringt í band lengd, framúrskarandi, en hvernig er band lengd vinna? 123 00:06:48,000 --> 00:06:50,000 Hvað þýðir það að gera? Já. 124 00:06:50,000 --> 00:06:52,000 [Nemandi] Halda áfram þar til þú færð núll staf. 125 00:06:52,000 --> 00:06:54,000 Já, nákvæmlega iterates, það bara með for lykkju, en lykkja, 126 00:06:54,000 --> 00:06:57,000 hvað frá * til enda, og endirinn er fulltrúa 127 00:06:57,000 --> 00:07:01,000 með \ 0, svokölluð nul eðli, nul, 128 00:07:01,000 --> 00:07:05,000 ekki að rugla saman við null, sem bendi, 129 00:07:05,000 --> 00:07:07,000 sem mun koma upp í samræðum aftur í dag. 130 00:07:07,000 --> 00:07:11,000 >> Við skrældar aftur lag af GetInt, og þá tókum við a líta á GetString, 131 00:07:11,000 --> 00:07:14,000 og muna að bæði í þessum aðgerðum, eða í raun, 132 00:07:14,000 --> 00:07:18,000 GetString, var með ákveðna aðgerð 133 00:07:18,000 --> 00:07:21,000 í raun flokka, það er að lesa eða greina, inntak notandans. 134 00:07:21,000 --> 00:07:25,000 Og hvað var það nýtt hlutverk? 135 00:07:25,000 --> 00:07:27,000 Scanf eða sscanf. Það kemur reyndar í nokkrum mismunandi bragði. 136 00:07:27,000 --> 00:07:31,000 Það er scanf, það er sscanf, það fscanf. 137 00:07:31,000 --> 00:07:35,000 Fyrir nú, þó, við skulum leggja áherslu á einn auðveldlega sýnd, 138 00:07:35,000 --> 00:07:38,000 og láta mig fara á undan og opna upp í tækinu 139 00:07:38,000 --> 00:07:41,000 skrá eins og þetta, scanf1.c. 140 00:07:41,000 --> 00:07:43,000 Þetta er frábær einfalt forrit, 141 00:07:43,000 --> 00:07:46,000 en það er eitthvað sem við höfum aldrei gert 142 00:07:46,000 --> 00:07:48,000 án aðstoð CS50 bókasafn. 143 00:07:48,000 --> 00:07:51,000 Þetta fær int frá notanda. Hvernig virkar það? 144 00:07:51,000 --> 00:07:53,000 Jæja, í línu 16 þar, 145 00:07:53,000 --> 00:07:56,000 eftir að við lýsa int heitir X, og á þessum tímapunkti í sögunni, 146 00:07:56,000 --> 00:07:58,000 hvað er gildi x? 147 00:07:58,000 --> 00:08:00,000 [Inaudible nemandi svar] 148 00:08:00,000 --> 00:08:02,000 [David M.] Einmitt, hver veit, sumir sorp gildi hugsanlega, svo í 17, segja okkur bara notanda 149 00:08:02,000 --> 00:08:06,000 gefa mér númer, skaltu og skref 18 er þar sem það fær áhugavert. 150 00:08:06,000 --> 00:08:11,000 Scanf virðist láni hugmynd frá printf á að það notar þessi snið númer innan gæsalappa. 151 00:08:11,000 --> 00:08:13,000 % D er auðvitað heiltala. 152 00:08:13,000 --> 00:08:21,000 En hvers vegna er ég komið í & X í staðinn fyrir bara x? 153 00:08:21,000 --> 00:08:24,000 Hið fyrra er rétt. Já. 154 00:08:24,000 --> 00:08:26,000 [Inaudible nemandi svar] 155 00:08:26,000 --> 00:08:31,000 Einmitt, ef markmið þessarar áætlunar, eins og virka GetInt sig, 156 00:08:31,000 --> 00:08:34,000 er að fá int frá notanda ég get framhjá aðgerðir 157 00:08:34,000 --> 00:08:38,000 allar breytur sem ég vil, en ef ég má gefa þeim með tilvísun 158 00:08:38,000 --> 00:08:41,000 eða heimilisfang eða músina, allt samheiti fyrir tilgangi í dag, 159 00:08:41,000 --> 00:08:46,000 þá hefur þessi aðgerð ekki getu til að breyta the innihald af þessi breytu. 160 00:08:46,000 --> 00:08:49,000 Þetta myndi fara í eintaki bara eins og buggy útgáfu skipti 161 00:08:49,000 --> 00:08:51,000 sem við höfum talað um nokkrum sinnum núna. 162 00:08:51,000 --> 00:08:54,000 >> En í staðinn, með því að gera & x, ég bókstaflega farið í það? 163 00:08:54,000 --> 00:08:57,000 [Námsmaður] Heimilisfangið. >> Heimilisfang x. 164 00:08:57,000 --> 00:09:01,000 Það er eins og að teikna kort fyrir virka heitir scanf og segja hér, 165 00:09:01,000 --> 00:09:04,000 Þetta eru leiðbeiningar til a klumpur af minni í tölvunni 166 00:09:04,000 --> 00:09:07,000 að þú getur farið geymt einhverja heiltölu inn 167 00:09:07,000 --> 00:09:10,000 Í röð fyrir sscanf að nú gera það 168 00:09:10,000 --> 00:09:13,000 hvaða rekstraraðili, hvaða stykki af setningafræði er það að fara til verða að nota 169 00:09:13,000 --> 00:09:19,000 jafnvel þó við getum ekki séð það vegna þess að einhver annar skrifaði þessa aðgerð? 170 00:09:19,000 --> 00:09:21,000 Með öðrum orðum - hvað er það? 171 00:09:21,000 --> 00:09:23,000 [Nemandi] X lesa. 172 00:09:23,000 --> 00:09:27,000 Það er að fara að vera einhver lestur, en aðeins með tilliti til x hér. 173 00:09:27,000 --> 00:09:30,000 Ef scanf er framhjá heimilisfang X, 174 00:09:30,000 --> 00:09:35,000 setningafræðilega, hvaða rekstraraðila er skylt að vera til staðar 175 00:09:35,000 --> 00:09:38,000 inni í framkvæmd scanf þannig að scanf 176 00:09:38,000 --> 00:09:42,000 getur í raun skrifa númer 2 á þetta netfang? 177 00:09:42,000 --> 00:09:44,000 Já, þannig að *. 178 00:09:44,000 --> 00:09:47,000 Muna að * er dereference stjórnandi okkar, sem í raun þýðir að fara þangað. 179 00:09:47,000 --> 00:09:50,000 >> Þegar þú hefur verið afhent netfang, eins og raunin er hér, 180 00:09:50,000 --> 00:09:53,000 scanf er líklega, ef við skoðuðum í raun í kringum uppruna sínum kóða- 181 00:09:53,000 --> 00:09:59,000 er að gera * x eða jafngildi í raun að fara á þetta netfang og setja nokkrar gildi þar. 182 00:09:59,000 --> 00:10:02,000 Nú, eins og fyrir því hvernig scanf fær inntak af lyklaborði, 183 00:10:02,000 --> 00:10:04,000 við munum veifa höndum okkar út í dag. 184 00:10:04,000 --> 00:10:07,000 Bara gera ráð fyrir því að stýrikerfi gerir sscanf að tala 185 00:10:07,000 --> 00:10:11,000 á lyklaborði notandans, en á þessum tímapunkti nú í línu 19, 186 00:10:11,000 --> 00:10:14,000 þegar við prenta einfaldlega út x, virðist það vera raunin 187 00:10:14,000 --> 00:10:17,000 að scanf hefur sett int í x. 188 00:10:17,000 --> 00:10:19,000 Það er nákvæmlega hvernig scanf virkar, og muna í síðustu viku 189 00:10:19,000 --> 00:10:25,000 það er einmitt hvernig GetString og GetInt og önnur fjölskylda hans aðgerðir 190 00:10:25,000 --> 00:10:28,000 endanum virkar, að vísu með smá breytileika eins sscanf, 191 00:10:28,000 --> 00:10:31,000 sem þýðir grannskoða band í staðinn á lyklaborðinu. 192 00:10:31,000 --> 00:10:33,000 En við skulum kíkja á smá dreifni þetta. 193 00:10:33,000 --> 00:10:37,000 Árið scanf2, ruglaður ég reyndar upp. 194 00:10:37,000 --> 00:10:42,000 Hvað er rangt-og ég mun fela athugasemd sem útskýrir allt- 195 00:10:42,000 --> 00:10:47,000 hvað er athugavert við þetta kerfi, útgáfa 2? 196 00:10:47,000 --> 00:10:55,000 Vertu eins tæknileg og kostur er. 197 00:10:55,000 --> 00:10:57,000 Það lítur mjög vel út. 198 00:10:57,000 --> 00:11:03,000 Það er fallega indented, en- 199 00:11:03,000 --> 00:11:07,000 Jæja, hvernig um skulum prune það niður styttri spurningum? 200 00:11:07,000 --> 00:11:17,000 Line 16. Hvað er lína 16 gera í nákvæmum en tæknilega ensku? 201 00:11:17,000 --> 00:11:20,000 Getting a lítill óþægilega. Já, Michael. 202 00:11:20,000 --> 00:11:25,000 [Nemandi] Það er að benda á fyrsta staf í streng. 203 00:11:25,000 --> 00:11:27,000 >> Allt í lagi, nálægt. Leyfðu mér að klip að svolítið. 204 00:11:27,000 --> 00:11:33,000 Bendir á fyrsta staf í streng, þú ert að lýsa breytilega heitir biðminni 205 00:11:33,000 --> 00:11:36,000 sem benda til að fyrstu heimilisfang streng, 206 00:11:36,000 --> 00:11:39,000 eða frekar, sem mun benda nánar tiltekið í a bleikju. 207 00:11:39,000 --> 00:11:42,000 Takið það er í raun ekki benda hvar vegna þess að það er engin verkefni rekstraraðila. 208 00:11:42,000 --> 00:11:46,000 Það er ekkert jafn merki, svo allt sem við erum að gera er að úthlutun breytu kallað biðminni. 209 00:11:46,000 --> 00:11:49,000 Það verður að vera 32 bita því það bendi, 210 00:11:49,000 --> 00:11:52,000 og innihald biðminni væntanlega að lokum 211 00:11:52,000 --> 00:11:57,000 mun innihalda veffang bleikju, en nú, hvað þýðir biðminni innihalda? 212 00:11:57,000 --> 00:11:59,000 Bara sumir svikinn, hver veit, sumir sorp gildi, 213 00:11:59,000 --> 00:12:03,000 vegna þess að við höfum ekki beinlínis frumstilla hana, þannig að við ættum ekki að gera ráð fyrir neinu. 214 00:12:03,000 --> 00:12:06,000 Jæja, svo nú lína 17 er-hvað er lína 17 að gera? 215 00:12:06,000 --> 00:12:08,000 Kannski sem mun hita þetta upp. 216 00:12:08,000 --> 00:12:10,000 Það prentar band, ekki satt? 217 00:12:10,000 --> 00:12:12,000 Það prentar String þóknast. 218 00:12:12,000 --> 00:12:15,000 >> Lína 18 er eins konar þekki nú í að við sáum bara dreifni þessa 219 00:12:15,000 --> 00:12:18,000 en með mismunandi sniði kóða, svo í línu 18, 220 00:12:18,000 --> 00:12:23,000 við erum að segja scanf hér er heimilisfang klumpur af minni. 221 00:12:23,000 --> 00:12:27,000 Ég vil að þú hringi í band, eins og gefið í skyn af% s, 222 00:12:27,000 --> 00:12:32,000 en vandamálið er að við höfum ekki gert nokkra hluti hér. 223 00:12:32,000 --> 00:12:35,000 Það er eitt af þeim vandamálum? 224 00:12:35,000 --> 00:12:38,000 [Nemandi] Það er að reyna að dereference núll músina. 225 00:12:38,000 --> 00:12:41,000 Gott, NULL eða bara annars óþekkt ábendingum. 226 00:12:41,000 --> 00:12:45,000 Þú ert fötlun scanf netfang, en þú sagðir bara í smá stund síðan 227 00:12:45,000 --> 00:12:49,000 að það netfang er einhver sorp gildi vegna þess að við ekki í raun að framselja það til nokkuð, 228 00:12:49,000 --> 00:12:53,000 og svo að þú ert að segja scanf raun að fara að setja streng hér 229 00:12:53,000 --> 00:12:56,000 en við vitum ekki hvar hér er enn, 230 00:12:56,000 --> 00:12:59,000 þannig að við höfum ekki í raun úthlutað minni fyrir biðminni. 231 00:12:59,000 --> 00:13:03,000 Þar að auki er það líka ekki einu sinni að segja scanf? 232 00:13:03,000 --> 00:13:06,000 Segjum þetta var klumpur af minni, og það var ekki sorp gildi, 233 00:13:06,000 --> 00:13:09,000 en þú ert samt ekki að segja scanf eitthvað mikilvægt. 234 00:13:09,000 --> 00:13:12,000 [Nemandi] Þar sem það er í raun, að merkið. 235 00:13:12,000 --> 00:13:15,000 Merkið, þannig að í þessu tilfelli, það er allt í lagi. 236 00:13:15,000 --> 00:13:18,000 Þar TAG er þegar lýst sem bendillinn 237 00:13:18,000 --> 00:13:22,000 við * stykki af setningafræði, þurfum við ekki að nota merkið 238 00:13:22,000 --> 00:13:25,000 því það er nú þegar með netfang, en ég held að ég heyrði það hér. 239 00:13:25,000 --> 00:13:27,000 [Nemandi] Hversu stór er það? 240 00:13:27,000 --> 00:13:29,000 Gott, erum við ekki að segja scanf hversu stórt þetta biðminni er, 241 00:13:29,000 --> 00:13:32,000 sem þýðir að jafnvel þótt biðminni væri músina, 242 00:13:32,000 --> 00:13:35,000 við erum að segja scanf, setja streng hér 243 00:13:35,000 --> 00:13:38,000 en hér gæti verið 2 bæti, það gæti verið 10 bytes, gæti það verið megabæti. 244 00:13:38,000 --> 00:13:41,000 Scanf hefur ekki hugmynd um, og vegna þess að þetta er klumpur af minni 245 00:13:41,000 --> 00:13:43,000 væntanlega er það ekki band enn. 246 00:13:43,000 --> 00:13:48,000 Það er bara band þegar þú skrifar stafi og \ 0 til að klumpur af minni. 247 00:13:48,000 --> 00:13:51,000 Nú er það bara einhver klumpur af minni. 248 00:13:51,000 --> 00:13:55,000 Scanf mun ekki vita hvenær á að hætta að skrifa á þetta netfang. 249 00:13:55,000 --> 00:13:59,000 >> Ef þú manst nokkur dæmi á liðnum árum þar sem ég slóst handahófi á lyklaborðinu 250 00:13:59,000 --> 00:14:03,000 reyna að flæða í biðminni, og við ræddum á föstudaginn um einmitt það. 251 00:14:03,000 --> 00:14:07,000 Ef að andstæðingurinn sprauta einhvern veginn inn í forritinu miklu stærri orð 252 00:14:07,000 --> 00:14:10,000 eða setningu eða setningu þá var von þú getur umframmagn 253 00:14:10,000 --> 00:14:13,000 a klumpur af minni, sem hægt er að hafa slæm áhrif, 254 00:14:13,000 --> 00:14:15,000 eins og að taka yfir allt kerfið sjálft. 255 00:14:15,000 --> 00:14:17,000 Við þurfum að laga þetta einhvern veginn. 256 00:14:17,000 --> 00:14:20,000 Leyfðu mér að súmma út og fara í útgáfu 3 af þessu forriti. 257 00:14:20,000 --> 00:14:22,000 Það er a lítill hluti betri. 258 00:14:22,000 --> 00:14:24,000 Í þessari útgáfu, taka mismuninn. 259 00:14:24,000 --> 00:14:27,000 Í línu 16, er ég aftur að lýsa yfir breytilega heitir biðminni, 260 00:14:27,000 --> 00:14:29,000 en hvað er það núna? 261 00:14:29,000 --> 00:14:33,000 Það er óákveðinn greinir í ensku fylking af 16 tákn. 262 00:14:33,000 --> 00:14:36,000 Þetta er gott vegna þess að þetta þýðir að ég get nú sagt scanf 263 00:14:36,000 --> 00:14:39,000 hér er raunveruleg klumpur af minni. 264 00:14:39,000 --> 00:14:42,000 Þú getur næstum hugsa um fylki sem vera ábendingum nú, 265 00:14:42,000 --> 00:14:44,000 jafnvel þótt þeir séu ekki í raun jafngildir. 266 00:14:44,000 --> 00:14:47,000 Þær haga sér á annan hátt í mismunandi samhengi. 267 00:14:47,000 --> 00:14:50,000 En það er vissulega raunin að biðminni vísar 268 00:14:50,000 --> 00:14:53,000 16 samliggjandi chars því það er það fylki er 269 00:14:53,000 --> 00:14:55,000 og hefur verið í nokkrar vikur núna. 270 00:14:55,000 --> 00:14:59,000 >> Hér er ég að segja scanf hér er klumpur af minni. 271 00:14:59,000 --> 00:15:01,000 Í þetta sinn, það er í raun a klumpur af minni, 272 00:15:01,000 --> 00:15:07,000 en hvers vegna er þetta forrit enn virkjanlegur? 273 00:15:07,000 --> 00:15:11,000 Hvað er rangt samt? 274 00:15:11,000 --> 00:15:14,000 Ég hef sagt að gefa mér 16 bæti en- 275 00:15:14,000 --> 00:15:16,000 [Nemandi] Hvað ef þeir slá í meira en 16? 276 00:15:16,000 --> 00:15:20,000 Einmitt, hvað ef notandinn slær inn 17 stafi eða 1700 stafi? 277 00:15:20,000 --> 00:15:23,000 Í staðreynd, við skulum sjá hvort við getum ekki ferð yfir þetta mistök núna. 278 00:15:23,000 --> 00:15:25,000 Það er betra en ekki fullkominn. 279 00:15:25,000 --> 00:15:28,000 Leyfðu mér að fara á undan og keyra gera scanf3 að þýða þetta forrit. 280 00:15:28,000 --> 00:15:34,000 Leyfðu mér að hlaupa scanf3, String takk: Halló, og við virðast vera í lagi. 281 00:15:34,000 --> 00:15:37,000 Leyfðu mér að reyna örlítið lengur einn, Hello there. 282 00:15:37,000 --> 00:15:42,000 Jæja, við skulum gera Hello there hvernig ert þú í dag, Enter. 283 00:15:42,000 --> 00:15:54,000 Getting konar heppin hér, við skulum segja halló það hvernig þú ert. 284 00:15:54,000 --> 00:15:56,000 Damn það. 285 00:15:56,000 --> 00:16:03,000 Jæja, svo við fengum heppinn. Við skulum sjá hvort við getum ekki lagað þetta. 286 00:16:03,000 --> 00:16:06,000 Nei, það er ekki að fara að láta mig afrita. 287 00:16:06,000 --> 00:16:09,000 Við skulum reyna þetta aftur. 288 00:16:09,000 --> 00:16:12,000 Allt í lagi, að standa við. 289 00:16:12,000 --> 00:16:20,000 Við munum sjá hversu lengi ég get þykjast að einblína á meðan enn að gera þetta. 290 00:16:20,000 --> 00:16:23,000 Damn það. Það er frekar við, reyndar. 291 00:16:23,000 --> 00:16:26,000 Svona. 292 00:16:26,000 --> 00:16:30,000 Point gert. 293 00:16:30,000 --> 00:16:34,000 >> Þetta vandræðaleg en það er líka, það er einnig einn af heimildum miklu rugli 294 00:16:34,000 --> 00:16:38,000 þegar þú skrifar forrit sem hafa galla vegna þess að þeir vart sjálfir 295 00:16:38,000 --> 00:16:40,000 aðeins einu sinni í a á meðan stundum. 296 00:16:40,000 --> 00:16:43,000 Staðreyndin er að jafnvel ef númerið er alveg brotinn, 297 00:16:43,000 --> 00:16:46,000 það gæti bara verið alveg brotinn einu sinni í a á meðan 298 00:16:46,000 --> 00:16:49,000 því stundum, í raun er það sem gerist stýrikerfi úthlutar 299 00:16:49,000 --> 00:16:52,000 aðeins meira minni en þú þarft í raun fyrir hvað sem ástæða, 300 00:16:52,000 --> 00:16:57,000 og svo enginn annar er að nota minni rétt eftir klumpur þinn 16 stafi, 301 00:16:57,000 --> 00:17:01,000 þannig að ef þú ferð í 17, 18, 19, hvað sem er, það er ekki svo stór samningur. 302 00:17:01,000 --> 00:17:04,000 Nú, tölva, jafnvel ef það er ekki hrun á þeim tímapunkti, 303 00:17:04,000 --> 00:17:09,000 gæti hugsanlega notað bæti númer 17 eða 18 eða 19 fyrir eitthvað annað, 304 00:17:09,000 --> 00:17:14,000 á hvaða tímapunkti gögn sem þú setur þarna, að vísu of langur, 305 00:17:14,000 --> 00:17:18,000 er að fara að fá plága hugsanlega af einhverjum öðrum virka. 306 00:17:18,000 --> 00:17:21,000 Það er ekki endilega að fara að standa í stað, 307 00:17:21,000 --> 00:17:23,000 en það mun ekki endilega valda seg kenna. 308 00:17:23,000 --> 00:17:26,000 En í þessu tilfelli, enda ég loksins nóg stafi 309 00:17:26,000 --> 00:17:29,000 sem ég farið í raun hluti mína af minni og bam, 310 00:17:29,000 --> 00:17:33,000 stýrikerfið sagði, "Því miður, það er ekki gott, skiptingu kenna." 311 00:17:33,000 --> 00:17:38,000 >> Og við skulum sjá nú ef það er hér í mínum skrá- 312 00:17:38,000 --> 00:17:40,000 eftir að ég hef þessa skrá hér, algerlega. 313 00:17:40,000 --> 00:17:42,000 Takið eftir að þetta er aftur kallað algerlega sorphaugur. 314 00:17:42,000 --> 00:17:46,000 Það er í raun skrá sem inniheldur efni af minni forritsins þíns 315 00:17:46,000 --> 00:17:48,000 á þeim stað þar sem hún hrundi, 316 00:17:48,000 --> 00:17:51,000 og bara að reyna smá dæmi hér láta mig fara hér 317 00:17:51,000 --> 00:17:57,000 og keyra gdb á scanf3 og þá tilgreina þriðja rök kallast algerlega, 318 00:17:57,000 --> 00:18:01,000 og taka hér að ef ég lista kóðann, 319 00:18:01,000 --> 00:18:06,000 við munum vera fær eins og venjulega með gdb til að byrja að ganga í gegnum þetta forrit, 320 00:18:06,000 --> 00:18:10,000 og ég get keyrt það og um leið og ég högg-eins með skref stjórn í GDB- 321 00:18:10,000 --> 00:18:13,000 um leið og ég högg the hugsanlega gallaðir línu eftir að slá í mikið band, 322 00:18:13,000 --> 00:18:16,000 Ég skal vera fær til raunverulega þekkja það hér. 323 00:18:16,000 --> 00:18:19,000 Meira um þetta, þó, í kafla varðar hugarangur algerlega 324 00:18:19,000 --> 00:18:22,000 og þess háttar þannig að þú getur í raun pota í kring inni í kjarna sorphaugur 325 00:18:22,000 --> 00:18:27,000 og sjá hvaða línu program mistókst þér. 326 00:18:27,000 --> 00:18:32,000 Einhverjar spurningar þá á ábendingum og heimilisföng? 327 00:18:32,000 --> 00:18:36,000 Því í dag um, við erum að fara að byrja að taka sem sjálfsögðum hlut að þessir hlutir eru 328 00:18:36,000 --> 00:18:40,000 og við vitum nákvæmlega hvað þeir eru. 329 00:18:40,000 --> 00:18:42,000 Já. 330 00:18:42,000 --> 00:18:46,000 >> [Nemandi] Hvernig kemur þú ekki að setja merkið við hliðina á hluta- 331 00:18:46,000 --> 00:18:48,000 Góð spurning. 332 00:18:48,000 --> 00:18:51,000 Hvernig kem ég þurfti ekki að setja merkið við hliðina á eðli array eins og ég gerði áður 333 00:18:51,000 --> 00:18:53,000 með flest dæmi okkar? 334 00:18:53,000 --> 00:18:55,000 Stutta svarið er fylki er svolítið sérstakt. 335 00:18:55,000 --> 00:18:59,000 Þú getur næstum hugsa biðminni sem raunverulega vera heimilisfang, 336 00:18:59,000 --> 00:19:03,000 og það bara gerist svo að vera raunin að veldi krappi tákn 337 00:19:03,000 --> 00:19:06,000 er þægindi svo að við getum farið inn krappi 0, krappi 1, 338 00:19:06,000 --> 00:19:10,000 krappi 2, án þess að þurfa að nota * tákn. 339 00:19:10,000 --> 00:19:13,000 Það er hluti af hvítri lygi því fylki og ábendingum 340 00:19:13,000 --> 00:19:17,000 eru í raun svolítið öðruvísi, en þeir geta oft en ekki alltaf að nota jöfnum höndum. 341 00:19:17,000 --> 00:19:21,000 Í stuttu máli, þegar aðgerð er von bendi til klumpur af minni, 342 00:19:21,000 --> 00:19:24,000 þú getur annaðhvort fara framhjá það netfang sem var skilað með malloc, 343 00:19:24,000 --> 00:19:29,000 og við munum sjá malloc aftur áður en langt, eða þú geta fara framhjá það nafn fylki. 344 00:19:29,000 --> 00:19:32,000 Þú þarft ekki að gera merkið og fylki þar sem þeir eru 345 00:19:32,000 --> 00:19:34,000 raun eins og viðtakandi. 346 00:19:34,000 --> 00:19:36,000 Það er ein undantekning. 347 00:19:36,000 --> 00:19:39,000 The hornklofum gera þá sérstaka. 348 00:19:39,000 --> 00:19:41,000 >> Væri hægt að setja merkið við hliðina á biðminni? 349 00:19:41,000 --> 00:19:43,000 Ekki í þessu tilfelli. 350 00:19:43,000 --> 00:19:46,000 Það myndi ekki virka vegna þess, aftur, á þessu horni tilfelli 351 00:19:46,000 --> 00:19:49,000 þar fylki eru ekki alveg í raun heimilisföng. 352 00:19:49,000 --> 00:19:54,000 En við munum kannski koma aftur til að áður en langt með öðrum dæmum. 353 00:19:54,000 --> 00:19:56,000 Við skulum reyna að leysa vandamál hér. 354 00:19:56,000 --> 00:20:00,000 Við höfum gögn uppbygging sem við höfum verið að nota í nokkurn tíma þekkt sem fylki. 355 00:20:00,000 --> 00:20:02,000 Tilfelli í benda, það er það sem við áttum bara. 356 00:20:02,000 --> 00:20:04,000 En fylki hafa sumir upsides og downsides. 357 00:20:04,000 --> 00:20:06,000 Fylki er ágætur af hverju? 358 00:20:06,000 --> 00:20:11,000 Hvað er einn hlutur sem þú vilt-að því marki sem þú vilt fylki-um fylki? 359 00:20:11,000 --> 00:20:13,000 Hvað er hentugt um þá? Hvað er sannfærandi? 360 00:20:13,000 --> 00:20:18,000 Af hverju gerði við kynna þær í fyrsta sæti? 361 00:20:18,000 --> 00:20:20,000 Já. 362 00:20:20,000 --> 00:20:27,000 [Nemandi] Þeir geta geymt mikið af gögnum, og þú þarft ekki að nota allt hlutur. 363 00:20:27,000 --> 00:20:29,000 Hægt er að nota hluta. 364 00:20:29,000 --> 00:20:32,000 Gott, með fjölda sem þú getur geymt mikið af gögnum, 365 00:20:32,000 --> 00:20:35,000 og þú þarft ekki endilega að nota allt það, þannig að þú getur overallocate, 366 00:20:35,000 --> 00:20:39,000 sem gæti verið hentugt ef þú veist ekki fyrirfram hversu margir eitthvað að búast við. 367 00:20:39,000 --> 00:20:41,000 >> GetString er fullkomið dæmi. 368 00:20:41,000 --> 00:20:44,000 GetString, skrifað af okkur, hefur ekki hugmynd um hversu margir chars til að ætla, 369 00:20:44,000 --> 00:20:48,000 svo er staðreynd að við getum tekið klumpur af samfelldu minni gott. 370 00:20:48,000 --> 00:20:51,000 Fylki leysa einnig vandamál við sáum par vikum nú 371 00:20:51,000 --> 00:20:54,000 þar sem númerið þitt byrjar að flytjast í eitthvað mjög illa hönnuð. 372 00:20:54,000 --> 00:20:57,000 Muna að ég bjó til nemenda uppbyggingu heitir David, 373 00:20:57,000 --> 00:21:00,000 og þá var það í raun og veru val, þó, 374 00:21:00,000 --> 00:21:04,000 að hafa breytilega nefndi og aðra breytu sem heitir, að ég held, hús, 375 00:21:04,000 --> 00:21:08,000 og annar breytu sem heitir ID vegna þess að í þeirri sögu sem ég vildi þá að kynna eitthvað annað 376 00:21:08,000 --> 00:21:11,000 eins og Rob í the program, þannig að þá ákvað ég að bíða í eina mínútu, 377 00:21:11,000 --> 00:21:13,000 Ég þarf að endurnefna þessar breytur. 378 00:21:13,000 --> 00:21:16,000 Við skulum kalla mitt NAME1 ID1, house1. 379 00:21:16,000 --> 00:21:20,000 Við skulum kalla er Rob NAME2 house2, ID2. 380 00:21:20,000 --> 00:21:22,000 En bíddu í eina mínútu, hvað um Tommy? 381 00:21:22,000 --> 00:21:24,000 Þá höfðum við þrjár breytur. 382 00:21:24,000 --> 00:21:27,000 Við kynntum einhver annar, fjórum breytum. 383 00:21:27,000 --> 00:21:30,000 Heimurinn byrjaði að fá sóðalegur mjög fljótt, 384 00:21:30,000 --> 00:21:33,000 þannig að við kynntum structs, og hvað er sannfærandi um strúktúr? 385 00:21:33,000 --> 00:21:39,000 Hvað er a C struct láta þig gera? 386 00:21:39,000 --> 00:21:42,000 Það er í raun óþægilega dag. 387 00:21:42,000 --> 00:21:44,000 Hvað? >> [Inaudible nemandi svar] 388 00:21:44,000 --> 00:21:47,000 Já, sérstaklega typedef leyfir þér að búa til nýjar upplýsingar tegund, 389 00:21:47,000 --> 00:21:51,000 og struct er struct leitarorð, gerir þér kleift að þjappa 390 00:21:51,000 --> 00:21:54,000 hugtök sem tengjast stykki af gögnum saman 391 00:21:54,000 --> 00:21:56,000 og eftir það kalla þá eitthvað eins nemanda. 392 00:21:56,000 --> 00:21:58,000 >> Það var gott því að nú getum við sitja 393 00:21:58,000 --> 00:22:03,000 miklu fleiri tegund af eðli samræmi hugtakið nemanda í breytu 394 00:22:03,000 --> 00:22:07,000 fremur en geðþótta hafa einn fyrir band, eitt að kenni, og svo framvegis. 395 00:22:07,000 --> 00:22:10,000 Fylki er gott vegna þess að þeir leyfa okkur að byrja að þrífa upp númerið okkar. 396 00:22:10,000 --> 00:22:13,000 En það er ókostur nú af fjölda? 397 00:22:13,000 --> 00:22:15,000 Hvað er hægt að gera ekki? Já. 398 00:22:15,000 --> 00:22:17,000 [Nemandi] Þú þarft að vita hversu stór hún er. 399 00:22:17,000 --> 00:22:19,000 Þú þarft að vita hversu stór hún er, svo það er góður af a sársauki. 400 00:22:19,000 --> 00:22:21,000 Þessir af þú með fyrri forritun reynslu vita að í fullt af tungumálum, 401 00:22:21,000 --> 00:22:24,000 eins og Java, getur þú beðið klumpur af minni, sérstaklega fylki, 402 00:22:24,000 --> 00:22:28,000 hversu stór þú ert og að lengd, eign, svo að segja, og það er mjög þægilegt. 403 00:22:28,000 --> 00:22:32,000 Í C, getur þú ekki einu sinni kalla strlen á almenna fjölbreytta 404 00:22:32,000 --> 00:22:35,000 því strlen, sem orðið gefur til kynna, er aðeins fyrir strengi, 405 00:22:35,000 --> 00:22:39,000 og er hægt að reikna út lengd band vegna þessa manna samningi 406 00:22:39,000 --> 00:22:43,000 að hafa \ 0, en fylki, fleiri generically, er bara klumpur af minni. 407 00:22:43,000 --> 00:22:46,000 Ef það er fylki af ints, það er ekki að fara að vera einhver sérstakur karakter 408 00:22:46,000 --> 00:22:48,000 lok að bíða eftir þér. 409 00:22:48,000 --> 00:22:50,000 Þú verður að muna lengd fylki. 410 00:22:50,000 --> 00:22:54,000 Annar ókostur af fjölda alin höfuð sitt í GetString sig. 411 00:22:54,000 --> 00:22:59,000 Hvað er annar hæðir af fylki? 412 00:22:59,000 --> 00:23:01,000 Herra, bara þú og ég í dag. 413 00:23:01,000 --> 00:23:04,000 [Inaudible nemandi svar] >> Það er það? 414 00:23:04,000 --> 00:23:06,000 Það er lýst á mánudaginn. 415 00:23:06,000 --> 00:23:09,000 Jæja, lýsti á mánudaginn. Af hverju ertu ekki eins og það? 416 00:23:09,000 --> 00:23:13,000 [Nemandi] Vegna þess að það verður endurnýtt. 417 00:23:13,000 --> 00:23:15,000 Það verður endurnýtt. 418 00:23:15,000 --> 00:23:18,000 Jæja, ef þú notar array til að úthluta minni, 419 00:23:18,000 --> 00:23:21,000 þú getur ekki, til dæmis, á að skila því það er á mánudaginn. 420 00:23:21,000 --> 00:23:23,000 Jæja, það er ókostur. 421 00:23:23,000 --> 00:23:25,000 Og hvernig óður í annar með fjölda? 422 00:23:25,000 --> 00:23:28,000 Þegar þú skiptir það, þú ert svona ruglaður ef þú þarft meira pláss 423 00:23:28,000 --> 00:23:30,000 en það fylki hefur. 424 00:23:30,000 --> 00:23:34,000 >> Þá kynntum við, muna, malloc, sem gaf okkur möguleika á að breytilega úthluta minni. 425 00:23:34,000 --> 00:23:37,000 En hvað ef við reyndum annar heimur með öllu? 426 00:23:37,000 --> 00:23:40,000 Hvað ef við vildum leysa nokkra af þessum vandamálum 427 00:23:40,000 --> 00:23:45,000 svo við stað-minn penni er sofnaður hér- 428 00:23:45,000 --> 00:23:51,000 hvað ef við vildum stað að í raun búa til heim sem er ekki lengur eins og þetta? 429 00:23:51,000 --> 00:23:56,000 Þetta er fylki, og, að sjálfsögðu, af þessu tagi versnar þegar við högg enda fylking, 430 00:23:56,000 --> 00:24:00,000 og ég er ekki lengur pláss fyrir aðra heiltölu eða annan staf. 431 00:24:00,000 --> 00:24:03,000 Hvað ef við segjum konar preemptively vel, hví ekki við slaka 432 00:24:03,000 --> 00:24:07,000 Þessi krafa um að allar þessar klumpur af minni að vera samliggjandi aftur til baka, 433 00:24:07,000 --> 00:24:10,000 og hvers vegna ekki, þegar ég þarf að int eða á char, 434 00:24:10,000 --> 00:24:12,000 bara gefa mér pláss fyrir einn af þeim? 435 00:24:12,000 --> 00:24:14,000 Og þegar ég þarf annað, gefa mér annað rúm, 436 00:24:14,000 --> 00:24:16,000 og þegar ég þarf annað, gefa mér annað rúm. 437 00:24:16,000 --> 00:24:19,000 Kosturinn sem nú er að ef einhver annar 438 00:24:19,000 --> 00:24:21,000 tekur minni hérna, ekki máli. 439 00:24:21,000 --> 00:24:25,000 Ég tek þetta viðbótar klumpur af minni hér og svo þetta. 440 00:24:25,000 --> 00:24:28,000 >> Nú, aðeins grípa hér er að nánast er eins og ég hef 441 00:24:28,000 --> 00:24:30,000 a heild búnt af mismunandi breytum. 442 00:24:30,000 --> 00:24:33,000 Þetta er eins og fimm mismunandi breytum hugsanlega. 443 00:24:33,000 --> 00:24:36,000 En hvað ef við stela hugmynd frá strengi 444 00:24:36,000 --> 00:24:41,000 þar sem við tengja einhvern veginn þetta saman hugtök, og hvað ef ég gerði þetta? 445 00:24:41,000 --> 00:24:44,000 Þetta er mjög illa gerður ör mín. 446 00:24:44,000 --> 00:24:46,000 En geri ráð fyrir að hver þessara klumpur af minni 447 00:24:46,000 --> 00:24:52,000 benti til annars, og þessi strákur, sem hefur ekkert systkini til hægri handar, 448 00:24:52,000 --> 00:24:54,000 hefur ekki svo ör. 449 00:24:54,000 --> 00:24:56,000 Þetta er í raun það sem er kallað tengda listanum. 450 00:24:56,000 --> 00:25:00,000 Þetta er ný gögn uppbygging sem gerir okkur kleift að úthluta klumpur af minni, 451 00:25:00,000 --> 00:25:03,000 þá annað, þá annað, þá annað, hvenær sem við viljum 452 00:25:03,000 --> 00:25:07,000 á dagskrá, og við muna að þeir eru allir einhvern veginn tengjast 453 00:25:07,000 --> 00:25:11,000 við bókstaflega chaining þá saman, og við gerðum það pictorially hér með ör. 454 00:25:11,000 --> 00:25:15,000 En í kóða, hvað væri vélbúnaður með sem þú getur einhvern veginn að tengja, 455 00:25:15,000 --> 00:25:20,000 næstum eins og grunni, einn klumpur til annars klumpur? 456 00:25:20,000 --> 00:25:22,000 Við gætum notað músina, ekki satt? 457 00:25:22,000 --> 00:25:25,000 Vegna raun ör sem er að gerast í vinstra veldi, 458 00:25:25,000 --> 00:25:31,000 þessi strákur hér til þessa, gæti innihaldið innan þessa torginu 459 00:25:31,000 --> 00:25:34,000 ekki bara ints, ekki bara bleikju, en hvað ef ég úthlutað í raun 460 00:25:34,000 --> 00:25:37,000 smá auka pláss svo að nú, 461 00:25:37,000 --> 00:25:41,000 hvert klumpur mín minni, jafnvel þótt það sé að fara að kosta mig, 462 00:25:41,000 --> 00:25:45,000 nú lítur svolítið meira rétthyrnd þar einn klumpur af minni 463 00:25:45,000 --> 00:25:47,000 er notað til að tala, eins og númer 1, 464 00:25:47,000 --> 00:25:50,000 og þá ef þetta strákur geymir númer 2, 465 00:25:50,000 --> 00:25:52,000 Þessi annar klumpur af minni er notað fyrir örina, 466 00:25:52,000 --> 00:25:54,000 eða fleiri concretely, bendi. 467 00:25:54,000 --> 00:25:59,000 Og ætla ég að geyma númer 3 hérna á meðan ég nota þetta til að benda á að þessi strákur, 468 00:25:59,000 --> 00:26:02,000 og nú þessi strákur, við skulum gera ráð fyrir að ég vil aðeins þrjár slíkar klumpur af minni. 469 00:26:02,000 --> 00:26:05,000 Ég draga línu í gegnum að kynna null. 470 00:26:05,000 --> 00:26:07,000 Það er engin viðbótar staf. 471 00:26:07,000 --> 00:26:10,000 >> Reyndar, þetta er hvernig við getum farið um framkvæmd 472 00:26:10,000 --> 00:26:12,000 eitthvað sem er kallað tengda listanum. 473 00:26:12,000 --> 00:26:18,000 A tengda listanum er ný gögn uppbygging, og það er a stepping steinn til 474 00:26:18,000 --> 00:26:21,000 miklu áhugamaður gögn uppbygging sem byrja að leysa vandamál 475 00:26:21,000 --> 00:26:23,000 sömu nótum og Facebook-gerð vandamál og Google-gerð vandamál 476 00:26:23,000 --> 00:26:26,000 þar sem þú hefur mikið gagnagrunna, og það ekki lengur sker það 477 00:26:26,000 --> 00:26:29,000 að geyma allt contiguously og nota eitthvað eins og línuleg leit 478 00:26:29,000 --> 00:26:31,000 eða jafnvel eitthvað eins og tvöfaldur leit. 479 00:26:31,000 --> 00:26:33,000 Þú vilt jafnvel betri gangi sinnum. 480 00:26:33,000 --> 00:26:37,000 Í raun einn af heilögum Grails við munum tala um síðar í þessari viku eða næstu 481 00:26:37,000 --> 00:26:41,000 er reiknirit sem keyra tími fasti. 482 00:26:41,000 --> 00:26:44,000 Með öðrum orðum, það tekur alltaf sama tíma sama 483 00:26:44,000 --> 00:26:47,000 hversu stór inntak er, en það myndi örugglega vera sannfærandi, 484 00:26:47,000 --> 00:26:49,000 jafnvel meira svo en eitthvað lógaritmískum. 485 00:26:49,000 --> 00:26:51,000 Hvað er þetta á skjánum hér? 486 00:26:51,000 --> 00:26:55,000 Hver ferhyrninga er einmitt það sem ég teiknaði bara með höndunum. 487 00:26:55,000 --> 00:26:59,000 En málið alla leið til vinstri er sérstök breyta. 488 00:26:59,000 --> 00:27:02,000 Það er að fara að vera einn músina því einn Gotcha 489 00:27:02,000 --> 00:27:04,000 með tengda lista, sem þessir hlutir eru kallaðir, 490 00:27:04,000 --> 00:27:09,000 er að þú þarft að hanga á öðrum enda tengda listanum. 491 00:27:09,000 --> 00:27:13,000 >> Rétt eins og með streng, þú þarft að vita um heimilisfang fyrstu bleikju. 492 00:27:13,000 --> 00:27:15,000 Sami samningur fyrir tengd listum. 493 00:27:15,000 --> 00:27:19,000 Þú þarft að vita um heimilisfang fyrsta klumpur af minni 494 00:27:19,000 --> 00:27:25,000 því þaðan, getur þú náð í hvert hitt. 495 00:27:25,000 --> 00:27:27,000 Hæðir. 496 00:27:27,000 --> 00:27:30,000 Hvaða verð erum við að borga fyrir þessa fjölhæfni að hafa breytilega 497 00:27:30,000 --> 00:27:34,000 umtalsverðar gögn uppbygging að ef við þurfum alltaf meira minni, allt í lagi, 498 00:27:34,000 --> 00:27:37,000 bara úthluta eitt klumpur og draga músina frá 499 00:27:37,000 --> 00:27:39,000 gamla í nýja hala á listanum? 500 00:27:39,000 --> 00:27:41,000 Já. 501 00:27:41,000 --> 00:27:43,000 [Nemandi] Það tekur um það bil tvöfalt mikið pláss. 502 00:27:43,000 --> 00:27:45,000 Það tekur tvöfalt meira pláss, svo það er örugglega ókostur, og við höfum séð þetta 503 00:27:45,000 --> 00:27:48,000 tradeoff fyrir milli tíma og rúmi og sveigjanleika 504 00:27:48,000 --> 00:27:51,000 Þegar nú þurfum við ekki 32 bita fyrir hvert af þessum tölum. 505 00:27:51,000 --> 00:27:57,000 Við þurfum í raun 64, 32 fyrir fjölda og 32 fyrir músina. 506 00:27:57,000 --> 00:27:59,000 En hey, ég hef 2 gígabæta vinnsluminni. 507 00:27:59,000 --> 00:28:02,000 Bæta við öðru 32 bita hér og hér virðist ekki það stór af a samningur. 508 00:28:02,000 --> 00:28:05,000 En stóra gagnagrunna, bætir það örugglega allt að bókstaflega tvöfalt meira. 509 00:28:05,000 --> 00:28:09,000 Hvað er annar hæðir nú, eða hvað lögun gefa okkur upp, 510 00:28:09,000 --> 00:28:12,000 Ef við komum fram lista af hlutum með tengda listanum og ekki array? 511 00:28:12,000 --> 00:28:14,000 [Nemandi] Þú getur ekki fara yfir það aftur. 512 00:28:14,000 --> 00:28:16,000 Þú getur ekki fara yfir það aftur, þannig að þú ert góður af ruglaður ef þú ert að ganga 513 00:28:16,000 --> 00:28:19,000 frá vinstri til hægri með því að nota a for lykkju eða meðan lykkja 514 00:28:19,000 --> 00:28:21,000 og þá átta sig, "Oh, ég vil fara aftur til the byrjun af the listi." 515 00:28:21,000 --> 00:28:26,000 Þú getur ekki vegna þess að þessar ábendingar fara aðeins frá vinstri til hægri eins og örvarnar sýna. 516 00:28:26,000 --> 00:28:29,000 >> Nú, getur þú manst upphaf listann við aðra breytu, 517 00:28:29,000 --> 00:28:31,000 en það er flókið að hafa í huga. 518 00:28:31,000 --> 00:28:35,000 An array, sama hversu langt þú ferð, þú getur alltaf gert mínus, mínus, mínus, mínus 519 00:28:35,000 --> 00:28:37,000 og fara aftur þaðan sem þú komst. 520 00:28:37,000 --> 00:28:40,000 Hvað er annar hæðir hér? Já. 521 00:28:40,000 --> 00:28:43,000 [Inaudible nemandi spurning] 522 00:28:43,000 --> 00:28:47,000 Þú getur, svo þú hefur í raun bara lagt til gögn uppbygging kallast tvöfalt tengist lista, 523 00:28:47,000 --> 00:28:50,000 og örugglega, myndir þú bæta við öðru bendi öllum þessum ferhyrninga 524 00:28:50,000 --> 00:28:53,000 það fer hina áttina, að kosti þeirra 525 00:28:53,000 --> 00:28:55,000 er nú hægt að fara fram og til baka, 526 00:28:55,000 --> 00:28:59,000 hæðir sem er þú nú ert að nota þrisvar sinnum eins mikið minni og áður 527 00:28:59,000 --> 00:29:04,000 og einnig að bæta flókið í skilmálar af kóða sem þú þarft að skrifa til að fá það rétt. 528 00:29:04,000 --> 00:29:08,000 En þetta eru allt kannski mjög sanngjarn Tradeoffs, ef viðsnúningur er enn mikilvægara. 529 00:29:08,000 --> 00:29:10,000 Já. 530 00:29:10,000 --> 00:29:12,000 [Nemandi] Þú getur líka ekki 2D tengda listanum. 531 00:29:12,000 --> 00:29:16,000 Gott, getur þú í raun ekki hafa a 2D tengda listanum. 532 00:29:16,000 --> 00:29:18,000 Þú gætir. Það er ekki nærri eins auðvelt og fylki. 533 00:29:18,000 --> 00:29:21,000 Eins og fjölda, þú opna krappi, lokað BRACKET, opið krappi, lokuð krappi, 534 00:29:21,000 --> 00:29:23,000 og þú færð smá 2-víddar uppbygging. 535 00:29:23,000 --> 00:29:26,000 Þú getur innleiða 2-víddar tengda listanum 536 00:29:26,000 --> 00:29:29,000 ef þú bæta við-eins og þú lagt-þriðja bendi öllum þessum hlutum, 537 00:29:29,000 --> 00:29:34,000 og ef þú hugsa um annan lista sem koma á þig 3D stíl 538 00:29:34,000 --> 00:29:40,000 frá skjánum til að okkur öllum, sem er bara önnur keðja af einhverju tagi. 539 00:29:40,000 --> 00:29:45,000 Við gætum gert það, en það er ekki eins einfalt og slá opinn krappi, ferningur krappi. Já. 540 00:29:45,000 --> 00:29:48,000 [Inaudible nemandi spurning] 541 00:29:48,000 --> 00:29:50,000 Gott, þannig að þetta er alvöru kicker. 542 00:29:50,000 --> 00:29:54,000 >> Þetta reiknirit sem við höfum pined yfir, eins og ó, leit tvöfaldur, 543 00:29:54,000 --> 00:29:57,000 þú getur leitað að fjölda tölur á borð 544 00:29:57,000 --> 00:30:01,000 eða símaskránni svo miklu hraðar ef þú notar skipta og sigra 545 00:30:01,000 --> 00:30:05,000 og tvöfaldur leit reiknirit, en tvöfaldur leita þarf tvær forsendur. 546 00:30:05,000 --> 00:30:09,000 Einn, sem gagna var raðað. 547 00:30:09,000 --> 00:30:11,000 Nú getum við væntanlega halda þessu raðað, 548 00:30:11,000 --> 00:30:14,000 svo kannski það er ekki áhyggjuefni, en tvöfaldur leita einnig gert ráð fyrir 549 00:30:14,000 --> 00:30:18,000 að þú hefðir handahófi aðgang að lista yfir númer, 550 00:30:18,000 --> 00:30:21,000 og fylki leyfa þér að hafa handahófi aðgang, og af handahófi aðgang, 551 00:30:21,000 --> 00:30:24,000 Ég meina ef þú ert að gefa fylki, hversu mikinn tíma tekur það þig 552 00:30:24,000 --> 00:30:26,000 að fá að krappi 0? 553 00:30:26,000 --> 00:30:29,000 Eina aðgerð, þú notar bara [0] og þú ert rétt þar. 554 00:30:29,000 --> 00:30:33,000 Hversu mörg skref tekur það að fá að stað 10? 555 00:30:33,000 --> 00:30:36,000 Eitt skref, fara bara að [10] og að þú ert þarna. 556 00:30:36,000 --> 00:30:40,000 Á hinn bóginn, hvernig gera þú fá til 10 heiltölu í tengda listanum? 557 00:30:40,000 --> 00:30:42,000 Þú þarft að byrja á byrjun þar sem að þú ert bara að muna 558 00:30:42,000 --> 00:30:45,000 upphafið að tengist lista, rétt eins og streng er minnst 559 00:30:45,000 --> 00:30:48,000 með heimilisfang fyrstu bleikju þess, og til að finna þessi 10 int 560 00:30:48,000 --> 00:30:53,000 eða að 10 staf í streng, þú þarft að leita á öllum fjandinn hlutur. 561 00:30:53,000 --> 00:30:55,000 >> Aftur, við erum ekki að leysa öll vandamál okkar. 562 00:30:55,000 --> 00:31:00,000 Við erum að kynna nýjar, en það fer alveg eftir hvað þú ert að reyna að hanna fyrir. 563 00:31:00,000 --> 00:31:04,000 Hvað varðar framkvæmd þessa getum við lánað hugmynd frá að nemandi uppbyggingu. 564 00:31:04,000 --> 00:31:07,000 The setningafræði er mjög svipuð, en nú er hugmyndin er svolítið abstrakt 565 00:31:07,000 --> 00:31:09,000 en hús og nafn og kt. 566 00:31:09,000 --> 00:31:13,000 En ég leggja til að við gætum haft gögn uppbygging í C 567 00:31:13,000 --> 00:31:17,000 sem kallast hnút, og síðasta orð á mynd gefur til kynna, 568 00:31:17,000 --> 00:31:21,000 inni í hnút, og hnúturinn er bara almenn gámur í tölvunarfræði. 569 00:31:21,000 --> 00:31:25,000 Það er venjulega dregin sem hring eða ferning eða rétthyrning sem við höfum gert. 570 00:31:25,000 --> 00:31:27,000 Og í þessum gögnum uppbyggingu, höfum við int, N, 571 00:31:27,000 --> 00:31:29,000 þannig að fjöldi ég vil geyma. 572 00:31:29,000 --> 00:31:36,000 En hvað er þetta annað lína, struct hnút * næst? 573 00:31:36,000 --> 00:31:40,000 Hvers vegna er þetta rétt, eða hvaða hlutverk er þetta sem spila, 574 00:31:40,000 --> 00:31:42,000 jafnvel þó að það sé svolítið dulinn við fyrstu sýn? 575 00:31:42,000 --> 00:31:44,000 Já. 576 00:31:44,000 --> 00:31:46,000 [Inaudible nemandi svar] 577 00:31:46,000 --> 00:31:50,000 Einmitt, þannig að * konar gleðispillir að það bendi á einhvers konar. 578 00:31:50,000 --> 00:31:53,000 Nafn þessa bendillinn er geðþótta næst, 579 00:31:53,000 --> 00:32:00,000 en við hefðum getað kallað það eitthvað sem við viljum, en hvað hefur þetta bendillinn benda til? 580 00:32:00,000 --> 00:32:03,000 [Nemandi] Annar hnútur. >> Einmitt, bendir það til annars slíks hnút. 581 00:32:03,000 --> 00:32:05,000 >> Nú, þetta er tegund af forvitni C. 582 00:32:05,000 --> 00:32:09,000 Muna að C er lesið af þýðanda toppur til botn, vinstri til hægri, 583 00:32:09,000 --> 00:32:13,000 sem þýðir ef-þetta er lítið annað en það sem við gerðum við nemanda. 584 00:32:13,000 --> 00:32:16,000 Þegar við skilgreint nemanda, í raun við ekki setja orð þarna. 585 00:32:16,000 --> 00:32:18,000 Það sagði bara typedef. 586 00:32:18,000 --> 00:32:20,000 Þá höfðum við int id, String nafn, band hús, 587 00:32:20,000 --> 00:32:23,000 og þá nemandi neðst á strúktúr. 588 00:32:23,000 --> 00:32:26,000 Þessi yfirlýsing er svolítið öðruvísi vegna þess, 589 00:32:26,000 --> 00:32:28,000 aftur, C þýðandi er dálítið heimsk. 590 00:32:28,000 --> 00:32:30,000 Það er bara að fara að lesa toppur til botn, 591 00:32:30,000 --> 00:32:33,000 þannig að ef það nær 2 línu hér 592 00:32:33,000 --> 00:32:37,000 þar næst er lýst og það sér, ó, hér er breytu sem heitir Next. 593 00:32:37,000 --> 00:32:39,000 Það bendi til að strúktúrinn hnút. 594 00:32:39,000 --> 00:32:42,000 The þýðanda er að fara að átta sig á hvað er struct hnút? 595 00:32:42,000 --> 00:32:44,000 Ég hef aldrei heyrt um þetta verk áður, 596 00:32:44,000 --> 00:32:47,000 vegna þess að orðið hnút gæti ekki annað birtast 597 00:32:47,000 --> 00:32:49,000 þar til botn, svo það er þetta offramboð. 598 00:32:49,000 --> 00:32:53,000 Þú þarft að segja struct hnút hér, sem þú getur þá stytt síðar 599 00:32:53,000 --> 00:32:56,000 takk typedef niður hér, en þetta er vegna þess að 600 00:32:56,000 --> 00:33:02,000 við erum að vísa uppbyggingu sig inni í byggingu. 601 00:33:02,000 --> 00:33:05,000 Það er einn Gotcha þar. 602 00:33:05,000 --> 00:33:07,000 >> Nokkrar áhugaverðar vandamál eru að fara að koma. 603 00:33:07,000 --> 00:33:09,000 Við höfum fengið lista yfir númer. Hvernig setja okkur inn í það? 604 00:33:09,000 --> 00:33:11,000 Hvernig leita við það? Hvernig eyði við af því? 605 00:33:11,000 --> 00:33:13,000 Sérstaklega nú að við verðum að stjórna öllum þessum ábendingum. 606 00:33:13,000 --> 00:33:15,000 Þú hélt ábendingar voru konar hugur-beygja 607 00:33:15,000 --> 00:33:17,000 þegar þú hefðir einn af þeim að reyna bara að lesa int til þess. 608 00:33:17,000 --> 00:33:20,000 Nú verðum við að vinna virði heilan lista er. 609 00:33:20,000 --> 00:33:22,000 Hvers vegna eigum við ekki að taka 5-mínútna hlé okkar hér, og þá munum við koma 610 00:33:22,000 --> 00:33:34,000 sumir gott fólk upp á svið til að gera einmitt það. 611 00:33:34,000 --> 00:33:36,000 >> C er miklu skemmtilegra þegar það er aðhafst út. 612 00:33:36,000 --> 00:33:39,000 Hver myndi bókstaflega eins og að vera fyrstur? 613 00:33:39,000 --> 00:33:41,000 Jæja, koma upp. Þú ert fyrst. 614 00:33:41,000 --> 00:33:44,000 Hver vill vera 9? Allt í lagi, 9. 615 00:33:44,000 --> 00:33:46,000 Hvernig óður í 9? 17? 616 00:33:46,000 --> 00:33:51,000 Smá klíku hér. 22 og 26 í þeirri fremstu röð. 617 00:33:51,000 --> 00:33:53,000 Og þá hvernig um einhvern þarna verið bent á. 618 00:33:53,000 --> 00:33:57,000 Þú ert 34. Jæja, 34, koma upp. 619 00:33:57,000 --> 00:33:59,000 Fyrst er þarna. Jæja, allir fjórir ykkur. 620 00:33:59,000 --> 00:34:01,000 Og hver var við að segja fyrir 9? 621 00:34:01,000 --> 00:34:04,000 Hver er 9 okkar? 622 00:34:04,000 --> 00:34:07,000 Hver vill í raun að vera 9? Allt í lagi, komdu, vera 9. 623 00:34:07,000 --> 00:34:10,000 Hér förum. 624 00:34:10,000 --> 00:34:13,000 34, munum við hitta þig þarna. 625 00:34:13,000 --> 00:34:17,000 Í fyrsta hluta er að þér að líta svona. 626 00:34:17,000 --> 00:34:21,000 26, 22, 17, gott. 627 00:34:21,000 --> 00:34:25,000 Ef þú getur staðið á til hliðar, vegna þess að við erum að fara að malloc þér í smá stund. 628 00:34:25,000 --> 00:34:29,000 >> Gott, gott. 629 00:34:29,000 --> 00:34:32,000 Jæja, frábært, þannig að við skulum spyrja nokkrar spurningar hér. 630 00:34:32,000 --> 00:34:34,000 Og í raun, hvað er nafnið þitt? >> Anita. 631 00:34:34,000 --> 00:34:37,000 Anita, allt í lagi, komdu hérna. 632 00:34:37,000 --> 00:34:41,000 Anita er að fara að hjálpa okkur að leysa svona eitt nokkuð einfaldri spurningu í fyrsta, 633 00:34:41,000 --> 00:34:44,000 sem er hvernig þú finnur hvort tala er á listanum? 634 00:34:44,000 --> 00:34:48,000 Nú, eftir að fyrsta, fulltrúi hér með Lucas, 635 00:34:48,000 --> 00:34:52,000 er svolítið öðruvísi, og svo er stykki hans pappír vísvitandi hliðar 636 00:34:52,000 --> 00:34:55,000 því það er ekki alveg eins mikill og ekki taka upp eins margar bita, 637 00:34:55,000 --> 00:34:58,000 jafnvel þótt tæknilega hefur hann sömu stærð af pappír bara snúið. 638 00:34:58,000 --> 00:35:01,000 En hann er svolítið öðruvísi því að hann er aðeins 32 bita fyrir músina, 639 00:35:01,000 --> 00:35:05,000 og allir þessir gaurar eru 64 bitar, helmingur sem er fjöldi, helmingur sem er bendi. 640 00:35:05,000 --> 00:35:08,000 En bendillinn er ekki lýst, þannig að ef þið gætu nokkuð awkwardly 641 00:35:08,000 --> 00:35:12,000 nota vinstri hendina til að benda á mann við hliðina á þér. 642 00:35:12,000 --> 00:35:14,000 Og þú ert númer 34. Hvað er nafn þitt? 643 00:35:14,000 --> 00:35:16,000 Ari. 644 00:35:16,000 --> 00:35:19,000 Ari, svo í raun, halda pappír í hægri hendi þinni, og vinstri hönd fer beint niður. 645 00:35:19,000 --> 00:35:21,000 Þú tákna null vinstri. 646 00:35:21,000 --> 00:35:24,000 >> Nú er mönnum mynd okkar mjög stöðug. 647 00:35:24,000 --> 00:35:26,000 Þetta er í raun hvernig ábendingum vinna. 648 00:35:26,000 --> 00:35:29,000 Og ef þú getur scrunch svolítið með þessum hætti þannig að ég er ekki í vegi þínum. 649 00:35:29,000 --> 00:35:34,000 Anita hér, finna mér númer 22, 650 00:35:34,000 --> 00:35:40,000 en gera ráð fyrir þvingun af ekki menn halda upp stykki af pappír, 651 00:35:40,000 --> 00:35:43,000 en þetta er listi, og þú hefur aðeins Lucas til að byrja með 652 00:35:43,000 --> 00:35:46,000 vegna þess að hann er bókstaflega fyrsta músina. 653 00:35:46,000 --> 00:35:51,000 Segjum að þú sjálfur ert músina, og svo þú hefur líka möguleika á að benda á eitthvað. 654 00:35:51,000 --> 00:35:56,000 Af hverju ertu ekki að byrja á því að benda á nákvæmlega hvað Lucas er að benda á? 655 00:35:56,000 --> 00:35:58,000 Gott, og láta mig enact þetta út hérna. 656 00:35:58,000 --> 00:36:04,000 Bara fyrir sakir umræðu, láta mig draga upp auða síðu hérna. 657 00:36:04,000 --> 00:36:06,000 Hvernig stafa þú nafnið þitt? >> Anita. 658 00:36:06,000 --> 00:36:08,000 Allt í lagi, Anita. 659 00:36:08,000 --> 00:36:18,000 Segjum hnút * Anita = Lucas. 660 00:36:18,000 --> 00:36:22,000 Jæja, eigum við ekki að hringja í þig Lucas. Við ættum að hringja fyrst. 661 00:36:22,000 --> 00:36:25,000 Hvers vegna er þetta í raun í samræmi við raunveruleikann hér? 662 00:36:25,000 --> 00:36:27,000 Einn, fyrsta er þegar til. 663 00:36:27,000 --> 00:36:30,000 Fyrst hefur verið úthlutað væntanlega einhvers staðar hérna. 664 00:36:30,000 --> 00:36:35,000 Hnútur * fyrst, og það hefur verið úthlutað til lista einhvern veginn. 665 00:36:35,000 --> 00:36:37,000 Ég veit ekki hvernig það gerðist. Það gerðist áður en flokkur byrjaði. 666 00:36:37,000 --> 00:36:40,000 Þetta tengist listi af mönnum hefur verið búin til. 667 00:36:40,000 --> 00:36:44,000 Og nú á þessum tímapunkti í sögunni-þetta er allt að fara á Facebook virðist síðar- 668 00:36:44,000 --> 00:36:49,000 á þessum tímapunkti í sögunni, hefur Anita verið frumstilla að vera jöfn fyrstu, 669 00:36:49,000 --> 00:36:51,000 sem þýðir ekki að Anita stig á Lucas. 670 00:36:51,000 --> 00:36:53,000 Frekar bendir hún á það sem hann bendir á 671 00:36:53,000 --> 00:36:57,000 vegna þess að sama netfang sem er innan 32 bita Lucas er - 1, 2, 3 - 672 00:36:57,000 --> 00:37:01,000 er nú einnig innan 32 bita Anita er - 1, 2, 3. 673 00:37:01,000 --> 00:37:05,000 >> Nú finna 22. Hvernig myndir þú fara að gera þetta? 674 00:37:05,000 --> 00:37:07,000 Hvað er það? >> Point til hvað. 675 00:37:07,000 --> 00:37:11,000 Benda á hvað, svo fara á undan og starfa það út eins og besta sem þú getur hér. 676 00:37:11,000 --> 00:37:15,000 Gott, gott, og nú þú ert að benda á-hvað er nafnið þitt með 22? 677 00:37:15,000 --> 00:37:18,000 Ramon. >> Ramon, svo Ramon er að halda upp 22. 678 00:37:18,000 --> 00:37:20,000 Þú hefur nú gert ávísun. 679 00:37:20,000 --> 00:37:24,000 Er Ramon == 22, og ef svo er, til dæmis, við getum aftur satt. 680 00:37:24,000 --> 00:37:26,000 Leyfðu mér-en þessir krakkar standa hér nokkuð awkwardly- 681 00:37:26,000 --> 00:37:32,000 Leyfðu mér að gera eitthvað fljótt eins bool finna. 682 00:37:32,000 --> 00:37:37,000 Ég ætla að fara á undan og segja (hnút * listi, int n). 683 00:37:37,000 --> 00:37:39,000 Ég kem aftur með ykkur. Ég er bara að skrifa nokkur númer. 684 00:37:39,000 --> 00:37:45,000 Og nú ætla ég að fara á undan og gera þetta, hnúturinn * Anita = lista. 685 00:37:45,000 --> 00:37:51,000 Og ég ætla að halda áfram og segja að á meðan (Anita! = NULL). 686 00:37:51,000 --> 00:37:57,000 >> The samlíking hér að hafa smá strekkt, en á meðan (Anita! = NULL), hvað ég vil gera? 687 00:37:57,000 --> 00:38:03,000 Mig vantar leið til að vísa 688 00:38:03,000 --> 00:38:05,000 er heiltala sem Anita er að benda á. 689 00:38:05,000 --> 00:38:08,000 Í the fortíð, þegar við höfðum mannvirki, sem hnúturinn er, 690 00:38:08,000 --> 00:38:11,000 við notuðum punktur tákn, og við myndum segja eitthvað eins og 691 00:38:11,000 --> 00:38:15,000 anita.n, en vandamálið hér er að Anita er ekki strúktúr í sjálfu. 692 00:38:15,000 --> 00:38:17,000 Hvað er hún? 693 00:38:17,000 --> 00:38:21,000 Hún er músina, svo í raun, ef við viljum nota þetta punktur tákn- 694 00:38:21,000 --> 00:38:23,000 og þetta er að fara að líta vísvitandi smá Cryptic- 695 00:38:23,000 --> 00:38:28,000 við verðum að gera eitthvað eins og að fara til vinstri handar hvað Anita er að benda á 696 00:38:28,000 --> 00:38:31,000 og þá fá á sviði sem kallast n. 697 00:38:31,000 --> 00:38:35,000 Anita er músina, en það er * Anita? 698 00:38:35,000 --> 00:38:38,000 Hvað finnst þér þegar þú ferð til hvað Anita er að benda á? 699 00:38:38,000 --> 00:38:42,000 A struct, hnút, og hnút, muna, er reit sem heitir N 700 00:38:42,000 --> 00:38:47,000 vegna þess að það er, man, þessar 2 svið, við hliðina og n, 701 00:38:47,000 --> 00:38:50,000 sem við sáum í smá stund síðan hérna. 702 00:38:50,000 --> 00:38:53,000 >> Til að í raun líkja þessu í kóða, 703 00:38:53,000 --> 00:39:02,000 við gætum gert þetta og segja að ef ((* Anita). N == N) N sem ég er að leita að. 704 00:39:02,000 --> 00:39:04,000 Takið eftir að fallið var samþykkt í fjölda mér þykir vænt um. 705 00:39:04,000 --> 00:39:10,000 Þá get ég farið á undan og gera eitthvað eins og aftur sanna. 706 00:39:10,000 --> 00:39:12,000 Annars, ef það er ekki málið, hvað ég vil gera? 707 00:39:12,000 --> 00:39:19,000 Hvernig þýða ég að kóða það Anita gerði svo innsæi með því að ganga í gegnum listann? 708 00:39:19,000 --> 00:39:26,000 Hvað ætti ég að gera upp hér til að líkja Anita taka þessi skref til vinstri, þessi skref til vinstri? 709 00:39:26,000 --> 00:39:28,000 [Inaudible nemandi svar] >> Hvað er það? 710 00:39:28,000 --> 00:39:30,000 [Inaudible nemandi svar] 711 00:39:30,000 --> 00:39:34,000 Gott, ekki slæm hugmynd, en í fortíðinni, þegar við höfum gert þetta, höfum við gert Anita + + 712 00:39:34,000 --> 00:39:37,000 vegna þess að það myndi bæta númer 1 til Anita, 713 00:39:37,000 --> 00:39:40,000 sem myndi gjarnan benda á næsta mann, eins og Ramon, 714 00:39:40,000 --> 00:39:44,000 eða sá sem við hliðina á honum, eða við hliðina á honum maður niður línu. 715 00:39:44,000 --> 00:39:49,000 En það er ekki alveg gott hér vegna þess að það er þetta sem líta út eins og í minni? 716 00:39:49,000 --> 00:39:54,000 Ekki. Við verðum að gera það. 717 00:39:54,000 --> 00:40:00,000 Það lítur út eins og þetta í minni, og jafnvel þó að ég hef dregið 1 og 2 og 3 nálægt hvort öðru, 718 00:40:00,000 --> 00:40:03,000 ef við líkja virkilega þetta-getur þú krakkar, en samt benda á sama fólkið, 719 00:40:03,000 --> 00:40:07,000 geta sumir ykkar taka af handahófi skref til baka, sumir af þú að handahófi skref fram? 720 00:40:07,000 --> 00:40:10,000 >> Þessi sóðaskapur er enn tengd lista, 721 00:40:10,000 --> 00:40:13,000 en þessir krakkar gætu verið hvar sem er í minni, 722 00:40:13,000 --> 00:40:15,000 svo Anita + + er ekki að fara að vinna af hverju? 723 00:40:15,000 --> 00:40:19,000 Hvað er á staðsetningu Anita + +? 724 00:40:19,000 --> 00:40:21,000 Hver veit. 725 00:40:21,000 --> 00:40:24,000 Það er einhver önnur gildi sem bara gerist svo að vera milligöngu 726 00:40:24,000 --> 00:40:28,000 meðal allra þessara hnúður fyrir tilviljun vegna þess að við erum ekki með fylki. 727 00:40:28,000 --> 00:40:30,000 Við úthlutað hvert þessara tengipunkta sig. 728 00:40:30,000 --> 00:40:32,000 Jæja, ef þú krakkar geta hreinsa ykkur aftur upp. 729 00:40:32,000 --> 00:40:37,000 Leyfðu mér að leggja til að í stað þess að Anita + +, við gerum í staðinn Anita fær- 730 00:40:37,000 --> 00:40:42,000 Jæja, af hverju ekki við að fara til hvað Anita er að benda á og þá gera. næst? 731 00:40:42,000 --> 00:40:45,000 Með öðrum orðum, förum við í Ramon, sem er að halda fjölda 22, 732 00:40:45,000 --> 00:40:51,000 og þá. næsta er eins og Anita væri afritun vinstri músina sína. 733 00:40:51,000 --> 00:40:54,000 En hún vildi ekki fara lengra en Ramon því við fundum 22. 734 00:40:54,000 --> 00:40:56,000 En það væri hugmynd. Nú, þetta er Guð-hræðilegt sóðaskapur. 735 00:40:56,000 --> 00:40:59,000 Heiðarlega, enginn mun nokkru sinni muna þessa setningafræði, og svo sem betur fer, 736 00:40:59,000 --> 00:41:04,000 það er í raun lítið vísvitandi-ó, þú ekki raunverulega sjá hvað ég skrifaði. 737 00:41:04,000 --> 00:41:08,000 Það væri meira sannfærandi ef þú gætir. Voila! 738 00:41:08,000 --> 00:41:10,000 >> Á bak við tjöldin, ég var að leysa vandamál með þessum hætti. 739 00:41:10,000 --> 00:41:14,000 Anita, að taka þessi skref til vinstri, 740 00:41:14,000 --> 00:41:18,000 fyrst, eigum við að fara á það heimilisfang sem Anita er að benda á 741 00:41:18,000 --> 00:41:23,000 og þar sem hún finnur ekki aðeins N, sem við köflóttur bara fyrir sakir samanburður er, 742 00:41:23,000 --> 00:41:25,000 en þú verður einnig að finna næsta - í þessu tilviki, 743 00:41:25,000 --> 00:41:28,000 Vinstri hönd Ramon er að benda á næsta hnút á listanum. 744 00:41:28,000 --> 00:41:32,000 En þetta er Guð-hræðilegt sóðaskapur sem ég vísað áðan, 745 00:41:32,000 --> 00:41:34,000 en það kemur í ljós C leyfir okkur að einfalda þetta. 746 00:41:34,000 --> 00:41:40,000 Í stað þess að skrifa (* Anita), getum við í staðinn bara skrifa Anita-> n, 747 00:41:40,000 --> 00:41:45,000 og það er nákvæmlega sama virka, en það er miklu meira innsæi, 748 00:41:45,000 --> 00:41:48,000 og það er mikið meira í samræmi við mynd sem við höfum verið að teikna 749 00:41:48,000 --> 00:41:50,000 allan þennan tíma með því að nota örvarnar. 750 00:41:50,000 --> 00:41:57,000 >> Loks gera það sem við þurfum að gera í lok þessarar áætlunar? 751 00:41:57,000 --> 00:42:00,000 Það er ein lína af kóða sem eftir er. 752 00:42:00,000 --> 00:42:02,000 Return hvað? 753 00:42:02,000 --> 00:42:05,000 False, því ef við komumst í gegnum allt á meðan lykkja 754 00:42:05,000 --> 00:42:10,000 og Anita er í raun, null, það þýðir að hún fór alla leið til the endir af the listi 755 00:42:10,000 --> 00:42:12,000 þar sem hún var að benda á-hvað heitirðu aftur? 756 00:42:12,000 --> 00:42:15,000 Vinstri Ari. >> Ara er hönd, sem er null. 757 00:42:15,000 --> 00:42:18,000 Anita er nú null, og ég grein fyrir að þú ert bara að standa hér awkwardly í Limbó 758 00:42:18,000 --> 00:42:21,000 því ég er að fara burt á eintal hérna, 759 00:42:21,000 --> 00:42:23,000 en við munum taka þig aftur í bara smá stund. 760 00:42:23,000 --> 00:42:27,000 Anita er núll á þeim tímapunkti í sögunni, þannig að á meðan lykkja lýkur, 761 00:42:27,000 --> 00:42:30,000 og við verðum að fara aftur rangt því ef hún fékk alla leið til null músina Ari er 762 00:42:30,000 --> 00:42:34,000 þá var engin tala sem hún leitaði í listanum. 763 00:42:34,000 --> 00:42:39,000 Við getum hreinsa þetta upp líka, en þetta er mjög góð framkvæmd þá 764 00:42:39,000 --> 00:42:43,000 á traversal virka, finna virka fyrir tengda listanum. 765 00:42:43,000 --> 00:42:48,000 Það er enn línuleg leit, en það er ekki eins einfalt eins og + + bendi 766 00:42:48,000 --> 00:42:52,000 eða + + sem ég breyta því að nú getum við ekki giska 767 00:42:52,000 --> 00:42:54,000 þar sem hver þessara hnútar eru í minni. 768 00:42:54,000 --> 00:42:57,000 Við verðum að bókstaflega fylgja slóð af breadcrumbs eða, nánar tiltekið, 769 00:42:57,000 --> 00:43:00,000 ábendingum, til að komast frá einum hnút til annars. 770 00:43:00,000 --> 00:43:02,000 >> Nú skulum reyna annað. Anita, viltu koma aftur hingað? 771 00:43:02,000 --> 00:43:06,000 Hvers vegna eigum við ekki að fara á undan og veita einn viðmælandann frá áhorfendum? 772 00:43:06,000 --> 00:43:08,000 Malloc-hvað er nafnið þitt? >> Rebecca. 773 00:43:08,000 --> 00:43:10,000 Rebecca. Rebecca hefur verið malloced frá áhorfendum, 774 00:43:10,000 --> 00:43:13,000 og hún er nú að geyma fjölda 55. 775 00:43:13,000 --> 00:43:17,000 Og markmiðið á móti er nú að Anita að setja 776 00:43:17,000 --> 00:43:22,000 Rebecca í tengda listanum hér í viðeigandi stað. 777 00:43:22,000 --> 00:43:24,000 Komdu hérna í smástund. 778 00:43:24,000 --> 00:43:28,000 Ég hef gert eitthvað eins og this. 779 00:43:28,000 --> 00:43:32,000 Ég hef gert hnút *. Og hvað er nafnið þitt aftur? 780 00:43:32,000 --> 00:43:34,000 Rebecca. >> Rebecca, allt í lagi. 781 00:43:34,000 --> 00:43:41,000 Rebecca fær malloc (sizeof (hnút)). 782 00:43:41,000 --> 00:43:44,000 Rétt eins og við höfum úthlutað hluti eins og nemendur og whatnot í fortíðinni, 783 00:43:44,000 --> 00:43:46,000 við þurfum að stærð hnút, svo nú Rebecca 784 00:43:46,000 --> 00:43:49,000 er að benda á það? 785 00:43:49,000 --> 00:43:52,000 Rebecca hefur tvær sviðum inni í henni, einn sem er 55. 786 00:43:52,000 --> 00:43:55,000 Við skulum gera það, Rebecca-> = 55. 787 00:43:55,000 --> 00:44:00,000 En svo Rebecca-> Næsta ætti að-eins núna, hönd hennar er góður hver veit? 788 00:44:00,000 --> 00:44:03,000 Það er að benda á einhverjum sorp gildi, svo hvers vegna ekki gott mál 789 00:44:03,000 --> 00:44:07,000 við gerum amk þetta þannig að vinstri hönd er nú við hlið hennar. 790 00:44:07,000 --> 00:44:09,000 Nú Anita, taka það áfram. 791 00:44:09,000 --> 00:44:11,000 Þú hefur Rebecca hafði verið úthlutað. 792 00:44:11,000 --> 00:44:20,000 Fara á undan og finna hvar við ættum að setja Rebecca. 793 00:44:20,000 --> 00:44:25,000 Gott, mjög gott. 794 00:44:25,000 --> 00:44:28,000 Jæja, gott, og nú þurfum við að bjóða upp á smá leiðsögn, 795 00:44:28,000 --> 00:44:30,000 svo að þú hafir náð Ari. 796 00:44:30,000 --> 00:44:33,000 Vinstri hönd hans er núll, en Rebecca greinilega tilheyrir hægri, 797 00:44:33,000 --> 00:44:36,000 svo hvernig verðum við að breyta þessu tengda listanum 798 00:44:36,000 --> 00:44:38,000 í því skyni að setja Rebecca í viðeigandi stað? 799 00:44:38,000 --> 00:44:42,000 Ef þú gætir bókstaflega færa vinstri hendur fólks í kring eins og þörf er á, 800 00:44:42,000 --> 00:44:48,000 Við munum laga vandamál þannig. 801 00:44:48,000 --> 00:44:52,000 Jæja, gott, og á meðan, vinstri hönd Rebekku er nú við hlið hennar. 802 00:44:52,000 --> 00:44:54,000 >> Það var of auðvelt. 803 00:44:54,000 --> 00:44:57,000 Við skulum reyna að úthlutun-we're næstum búin, 20. 804 00:44:57,000 --> 00:44:59,000 Jæja, koma upp. 805 00:44:59,000 --> 00:45:04,000 20 hefur verið úthlutað, svo látið mig fara á undan og segja aftur hér 806 00:45:04,000 --> 00:45:07,000 við höfum bara gert hnút * Saad. 807 00:45:07,000 --> 00:45:11,000 Við höfum malloc (sizeof (hnút)). 808 00:45:11,000 --> 00:45:16,000 Við gerum þá sama nákvæmlega setningafræði eins og við gerðum áður en fyrir 20, 809 00:45:16,000 --> 00:45:20,000 og ég ætla að gera næst = NULL, og nú er komið að Anita 810 00:45:20,000 --> 00:45:23,000 að setja þig inn í tengda listanum, ef þú gætir spilað það nákvæmlega sama hlutverki. 811 00:45:23,000 --> 00:45:30,000 Keyra. 812 00:45:30,000 --> 00:45:32,000 Allt í lagi, gott. 813 00:45:32,000 --> 00:45:38,000 Nú hugsa vandlega áður en þú byrjar að færa vinstri hönd í kring. 814 00:45:38,000 --> 00:45:46,000 Þú fékk langmest óþægilega hlutverk í dag. 815 00:45:46,000 --> 00:45:59,000 Skal hvers hönd flutt fyrst? 816 00:45:59,000 --> 00:46:02,000 Jæja, bíddu, ég er að heyra sumir ekki er. 817 00:46:02,000 --> 00:46:07,000 Ef sumir gott fólk myndi kurteislega eins og að hjálpa til að leysa óþægilega ástand hér. 818 00:46:07,000 --> 00:46:11,000 Vinstri hönd Hvers ætti að uppfæra fyrst kannski? Já. 819 00:46:11,000 --> 00:46:13,000 [Nemandi] er Saad. 820 00:46:13,000 --> 00:46:15,000 Jæja, er Saad, hvers vegna, þó? 821 00:46:15,000 --> 00:46:17,000 [Inaudible nemandi svar] 822 00:46:17,000 --> 00:46:19,000 Gott, vegna þess að ef við færa-hvað er nafnið þitt? >> Marshall. 823 00:46:19,000 --> 00:46:22,000 Marshall, ef við færa höndina fyrst niður að núll, 824 00:46:22,000 --> 00:46:25,000 nú höfum við bókstaflega munaðarlaus fjóra menn á þessum lista 825 00:46:25,000 --> 00:46:29,000 því að hann var sá eini sem bendir á Ramon og allir til vinstri, 826 00:46:29,000 --> 00:46:31,000 svo að uppfæra það bendi fyrst var slæmt. 827 00:46:31,000 --> 00:46:33,000 Við skulum losa það. 828 00:46:33,000 --> 00:46:37,000 Gott, og nú fara á undan og færa viðeigandi vinstri hönd sem vísar á Ramon. 829 00:46:37,000 --> 00:46:39,000 Þetta finnst smá óþarfi. 830 00:46:39,000 --> 00:46:41,000 Nú er það tveir menn benda á Ramon, en það er allt í lagi 831 00:46:41,000 --> 00:46:43,000 því nú hvernig annars er hægt að uppfæra við listann? 832 00:46:43,000 --> 00:46:48,000 Hvað hins vegar þarf að færa? 833 00:46:48,000 --> 00:46:53,000 Excellent, nú höfum við tapað öllum minni? 834 00:46:53,000 --> 00:46:57,000 Nei, svo gott, við skulum sjá hvort við getum ekki bætt þetta einu sinni enn. 835 00:46:57,000 --> 00:47:00,000 >> Mallocing eitt síðasta skipti, númer 5. 836 00:47:00,000 --> 00:47:04,000 Alla leið í bakið, koma niður. 837 00:47:04,000 --> 00:47:08,000 Það er mjög spennandi. 838 00:47:08,000 --> 00:47:15,000 [Lófaklapp] 839 00:47:15,000 --> 00:47:17,000 Hvað er nafn þitt? >> Ron. 840 00:47:17,000 --> 00:47:19,000 Ron, allt í lagi, þú ert malloced sem númer 5. 841 00:47:19,000 --> 00:47:23,000 Við höfum bara keyrð kóða sem er nánast eins og þessi 842 00:47:23,000 --> 00:47:26,000 með bara öðru nafni. 843 00:47:26,000 --> 00:47:28,000 Excellent. 844 00:47:28,000 --> 00:47:38,000 Nú, Anita, gangi þér vel að setja númer 5 í listanum núna. 845 00:47:38,000 --> 00:47:43,000 Gott, og? 846 00:47:43,000 --> 00:47:47,000 Frábært, þannig að þetta er í raun þriðja þriggja öllum tilvikum. 847 00:47:47,000 --> 00:47:49,000 Við áttum fyrst einhver í árslok, Rebecca. 848 00:47:49,000 --> 00:47:51,000 Við fórum svo í einhvern í miðju. 849 00:47:51,000 --> 00:47:53,000 Nú höfum við einhvern í upphafi, og í þessu dæmi, 850 00:47:53,000 --> 00:47:56,000 við þurftum nú að uppfæra Lucas í fyrsta sinn 851 00:47:56,000 --> 00:48:00,000 vegna þess að fyrsti þáttur á listanum nú að benda á nýjan hnút, 852 00:48:00,000 --> 00:48:03,000 sem aftur á móti, er að benda á hnút númer 9.. 853 00:48:03,000 --> 00:48:06,000 >> Þetta var gríðarlega óþægilega sýning, ég er viss, 854 00:48:06,000 --> 00:48:08,000 svo stór umferð lófaklapp fyrir þessar krakkar ef þú gætir. 855 00:48:08,000 --> 00:48:11,000 Fallega gert. 856 00:48:11,000 --> 00:48:17,000 Það er allt. Þú getur haldið stykki af pappír sem lítið minni. 857 00:48:17,000 --> 00:48:22,000 Það kemur í ljós að gera þetta í kóða 858 00:48:22,000 --> 00:48:26,000 er ekki alveg eins einfalt og bara að færa allt í kring 859 00:48:26,000 --> 00:48:28,000 og bendir ábendingum á mismunandi hlutum. 860 00:48:28,000 --> 00:48:31,000 En átta sig á að þegar það kemur tími til að framkvæma eitthvað eins og 861 00:48:31,000 --> 00:48:34,000 a tengda listanum eða afbrigði af henni ef þú leggir áherslu á mjög 862 00:48:34,000 --> 00:48:38,000 þessar helstu grundvallaratriði, að bit-stærð vandamál ég þarf að reikna út, 863 00:48:38,000 --> 00:48:43,000 er það þessi hönd eða þetta vegar grein fyrir því að það sé annars nokkuð flókið forrit 864 00:48:43,000 --> 00:48:47,000 getur í raun að minnka nokkuð einföld byggja blokkir eins og þetta. 865 00:48:47,000 --> 00:48:51,000 >> Við skulum taka það í flóknari átt enn. 866 00:48:51,000 --> 00:48:53,000 Við höfum nú hugmyndina um tengda lista. 867 00:48:53,000 --> 00:48:57,000 Vér-takk fyrir tillögu þangað aftur-a tvöfalt tengist lista, 868 00:48:57,000 --> 00:49:01,000 sem lítur nánast eins, en nú höfum við tvo punkta inni á strúktúr 869 00:49:01,000 --> 00:49:05,000 í staðinn fyrir eitt, og við gætum líklega kalla þær ábendingar fyrri og næsta 870 00:49:05,000 --> 00:49:08,000 eða til vinstri eða hægri, en við gerum, í raun þarf tvær þeirra. 871 00:49:08,000 --> 00:49:10,000 Kóðinn myndi vera a lítill fleiri þátt. 872 00:49:10,000 --> 00:49:12,000 Anita hefði þurft að gera meiri vinnu hér á sviðinu. 873 00:49:12,000 --> 00:49:15,000 En við gætum vissulega innleiða svona byggingu. 874 00:49:15,000 --> 00:49:19,000 Hvað varðar að keyra tíma, þó, hvað væri í gangi tíma 875 00:49:19,000 --> 00:49:24,000 fyrir Anita að finna númer n í tengda listanum núna? 876 00:49:24,000 --> 00:49:27,000 Enn stór O n, þannig að það er ekkert betra en línuleg leit. 877 00:49:27,000 --> 00:49:29,000 Við getum ekki gert tvöfaldur leita, þó, aftur. 878 00:49:29,000 --> 00:49:34,000 Hvers vegna var það málið? Þú getur ekki hoppað í kring. 879 00:49:34,000 --> 00:49:36,000 Jafnvel þó að við sjáum augljóslega alla menn á sviðinu, 880 00:49:36,000 --> 00:49:39,000 og Anita gæti hafa eyeballed það og sagði: "Hér er um miðja lista," 881 00:49:39,000 --> 00:49:42,000 hún myndi ekki vita að ef hún væri tölvuforrit 882 00:49:42,000 --> 00:49:47,000 vegna þess að eina sem hún þurfti að latch á að í upphafi atburðarás 883 00:49:47,000 --> 00:49:50,000 var Lucas, sem var fyrsta músina. 884 00:49:50,000 --> 00:49:53,000 Hún vildi endilega að fylgja þessum tenglum, 885 00:49:53,000 --> 00:49:56,000 telja leið hennar þangað til hún fann það bil í miðju, 886 00:49:56,000 --> 00:49:58,000 og jafnvel þá, er hún ekki að fara að vita þegar hún er komin á miðju 887 00:49:58,000 --> 00:50:01,000 nema hún fer alla leið til enda til að reikna út hversu margir eru, 888 00:50:01,000 --> 00:50:05,000 þá backtracks, og að of væri erfitt nema þú hefðir 889 00:50:05,000 --> 00:50:07,000 a tvöfalt tengdur listi af einhverju tagi. 890 00:50:07,000 --> 00:50:10,000 >> Leysa nokkur vandamál í dag, en kynna öðrum. 891 00:50:10,000 --> 00:50:12,000 Hvað um mismunandi gögn uppbygging samtals? 892 00:50:12,000 --> 00:50:15,000 Þetta er mynd af stæði í Mather House, 893 00:50:15,000 --> 00:50:19,000 og í þessu tilfelli, við höfum gögn uppbygging við höfum konar einnig verið að tala um. 894 00:50:19,000 --> 00:50:22,000 Við ræddum um stafla í tengslum við minni, 895 00:50:22,000 --> 00:50:26,000 og það er tegund af vísvitandi hét því að stafla í skilmálar af minni 896 00:50:26,000 --> 00:50:31,000 er í raun gögn uppbygging sem hefur fleiri og fleiri efni lagskipt ofan á það. 897 00:50:31,000 --> 00:50:35,000 En áhugaverður hlutur óður í stafla, eins og raunin er í raun og veru, 898 00:50:35,000 --> 00:50:38,000 er að það er sérstakt konar gögn uppbygging. 899 00:50:38,000 --> 00:50:42,000 Það er gögn uppbygging þar sem fyrsti þáttur í 900 00:50:42,000 --> 00:50:46,000 er síðasta þáttur út. 901 00:50:46,000 --> 00:50:50,000 Ef þú ert í fyrsta bakki til að setja inn á mánudaginn, 902 00:50:50,000 --> 00:50:53,000 þú ert að fara að vera því miður síðasta bakkanum til að taka burt á mánudaginn, 903 00:50:53,000 --> 00:50:55,000 og það er ekki endilega gott. 904 00:50:55,000 --> 00:50:58,000 Hins vegar er hægt að hugsa um það á hinn veginn, 905 00:50:58,000 --> 00:51:02,000 síðast í er fyrsta út. 906 00:51:02,000 --> 00:51:05,000 >> Nú, ekki allir aðstæður koma upp í hugann þar sem hafa stafla 907 00:51:05,000 --> 00:51:08,000 gögn uppbygging þar sem þú ert að eign 908 00:51:08,000 --> 00:51:13,000 af síðasta, fyrst út, er í raun sannfærandi? 909 00:51:13,000 --> 00:51:16,000 Er það góður hlutur? Er það slæmt? 910 00:51:16,000 --> 00:51:19,000 Það er ákveðið a slæmur hlutur ef stæði væru ekki allir eins 911 00:51:19,000 --> 00:51:21,000 og þeir voru allir sérstakar mismunandi litum eða whatnot, 912 00:51:21,000 --> 00:51:24,000 og liturinn sem þú vilt er alveg neðst. 913 00:51:24,000 --> 00:51:26,000 Auðvitað getur þú ekki fengið það án mikillar fyrirhafnar. 914 00:51:26,000 --> 00:51:28,000 Þú þarft að byrja efst og vinna þig niður. 915 00:51:28,000 --> 00:51:31,000 Á sama hátt, hvað ef þú værir einn af þessum aðdáandi stráka 916 00:51:31,000 --> 00:51:34,000 sem bíður upp alla nóttina að reyna að fá iPhone og línur upp 917 00:51:34,000 --> 00:51:36,000 á stað eins og þetta? 918 00:51:36,000 --> 00:51:40,000 Væri ekki gaman ef Apple Store 919 00:51:40,000 --> 00:51:42,000 voru gögn stakkur uppbyggingu? 920 00:51:42,000 --> 00:51:44,000 Yay? Nay? 921 00:51:44,000 --> 00:51:47,000 Það er bara gott fyrir fólk sem mæta á síðustu mögulegt mínútu 922 00:51:47,000 --> 00:51:50,000 og þá fá grænt af biðröð. 923 00:51:50,000 --> 00:51:52,000 Og í raun, sú staðreynd að ég var svo hneigðist að segja biðröð 924 00:51:52,000 --> 00:51:56,000 er í raun í samræmi við það sem við myndum kalla þessa tegund af gögn uppbygging, 925 00:51:56,000 --> 00:51:59,000 einn í raun, þar sem röð skiptir máli, 926 00:51:59,000 --> 00:52:02,000 og þú vilt að fyrsta til að vera sá fyrsti úr 927 00:52:02,000 --> 00:52:04,000 ef aðeins fyrir sakir manna sanngirni. 928 00:52:04,000 --> 00:52:07,000 Við munum almennt kalla að gögn biðröð uppbygging. 929 00:52:07,000 --> 00:52:11,000 >> Það kemur í ljós að auki tengd listum, getum við byrjað að nota þessar sömu undirstöðu hugmyndir 930 00:52:11,000 --> 00:52:15,000 og byrja að búa til ný og mismunandi gerðir af lausnum á vandamálum. 931 00:52:15,000 --> 00:52:19,000 Til dæmis, í tilviki stafla, gætum við hönd stafla 932 00:52:19,000 --> 00:52:22,000 nota gögn uppbygging eins og þetta, myndi ég leggja til. 933 00:52:22,000 --> 00:52:26,000 Í þessu tilfelli, hef ég lýst struct, og ég hef sagt innan þessa uppbyggingu 934 00:52:26,000 --> 00:52:30,000 er fylki af númerum og þá breytu sem heitir stærð, 935 00:52:30,000 --> 00:52:33,000 og ég er að fara að kalla þetta sem stafla. 936 00:52:33,000 --> 00:52:35,000 Nú, af hverju virkar þetta í raun? 937 00:52:35,000 --> 00:52:43,000 Í tilviki stafla, gæti ég draga þetta í raun á skjánum sem fylki. 938 00:52:43,000 --> 00:52:47,000 Hér er stakkur minn. Þeir eru númer. 939 00:52:47,000 --> 00:52:50,000 Og við munum draga þá eins og þetta, þetta, þetta, þetta, þetta. 940 00:52:50,000 --> 00:52:53,000 Og þá hef ég eitthvað annað gögn meðlimur hér, 941 00:52:53,000 --> 00:52:58,000 sem heitir stærð, þannig að þetta er stærð, og það er númer, 942 00:52:58,000 --> 00:53:02,000 og sameiginlega, allt iPad hér er ein stakkur uppbyggingu. 943 00:53:02,000 --> 00:53:07,000 Nú, við vanræksla, stærð hefur væntanlega fengið að frumstilla til 0, 944 00:53:07,000 --> 00:53:11,000 og hvað er inni í array af tölum í upphafi 945 00:53:11,000 --> 00:53:14,000 þegar ég úthluta fyrsta fylki? 946 00:53:14,000 --> 00:53:16,000 Sorp. Hver veit? Og það skiptir í raun ekki máli. 947 00:53:16,000 --> 00:53:20,000 Það skiptir ekki máli hvort það er 1, 2, 3, 4, 5, alveg af handahófi 948 00:53:20,000 --> 00:53:25,000 með óheppni geymd í uppbyggingu minni vegna þess að svo lengi sem ég veit að stærð stafla 949 00:53:25,000 --> 00:53:29,000 er 0, svo ég veit programmatically, ekki horfa á einhver atriði í fylki. 950 00:53:29,000 --> 00:53:31,000 Það skiptir ekki máli hvað er þarna. 951 00:53:31,000 --> 00:53:34,000 Ekki líta á þá, eins og væri vísbendingu um stærð 0. 952 00:53:34,000 --> 00:53:38,000 >> En býst nú ég fara á undan og setja eitthvað inn í stafla. 953 00:53:38,000 --> 00:53:42,000 Mig langar til að setja númer 5, þannig að ég setti númer 5 hér, 954 00:53:42,000 --> 00:53:45,000 og hvað þá set ég hérna? 955 00:53:45,000 --> 00:53:48,000 Nú myndi ég reyndar setja niður 1 fyrir stærð, 956 00:53:48,000 --> 00:53:50,000 og nú er stafla stærð 1. 957 00:53:50,000 --> 00:53:53,000 Hvað ef ég fer á undan og setja númerið, við skulum segja, 7 næst? 958 00:53:53,000 --> 00:53:57,000 Þetta þá verður uppfærð til 2, og þá munum við gera 9, 959 00:53:57,000 --> 00:54:02,000 og þá verður uppfærð 3. 960 00:54:02,000 --> 00:54:05,000 En áhugaverður lögun nú þessa stafla er að 961 00:54:05,000 --> 00:54:09,000 Ég ætlast til að fjarlægja hvaða þáttur ef ég vil skjóta 962 00:54:09,000 --> 00:54:12,000 eitthvað burt af á mánudaginn, svo að segja? 963 00:54:12,000 --> 00:54:14,000 9 myndi vera the fyrstur hlutur til að fara. 964 00:54:14,000 --> 00:54:18,000 Hvernig ætti myndin að breyta ef ég vil skjóta stak af á mánudaginn, 965 00:54:18,000 --> 00:54:20,000 Líkt og bakka í Mather? 966 00:54:20,000 --> 00:54:22,000 Já. >> [Nemandi] Stilla stærð til 2. 967 00:54:22,000 --> 00:54:27,000 Einmitt, er allt sem ég set stærð við 2, og hvað á ég að gera með fjölda? 968 00:54:27,000 --> 00:54:29,000 Ég þarf ekki að gera neitt. 969 00:54:29,000 --> 00:54:32,000 Ég gæti, bara til að vera anal, setja 0 þar eða a -1 eða eitthvað til að signify 970 00:54:32,000 --> 00:54:34,000 að þetta er ekki legit gildi, en það skiptir ekki máli því 971 00:54:34,000 --> 00:54:37,000 Ég get tekið utan fylkisins sig hversu lengi hún er 972 00:54:37,000 --> 00:54:41,000 þannig að ég veit aðeins líta á fyrstu tvö atriði í þessu fylki. 973 00:54:41,000 --> 00:54:47,000 Nú, ef ég fer og bæta númer 8 við þennan fjölda, hvernig virkar myndin breytist næst? 974 00:54:47,000 --> 00:54:50,000 Þetta verður 8, og þetta verður 3. 975 00:54:50,000 --> 00:54:52,000 Ég er að skera nokkrar horn hér. 976 00:54:52,000 --> 00:54:56,000 Nú höfum við 5, 7, 8, og við erum aftur í stærð 3. 977 00:54:56,000 --> 00:54:58,000 Þetta er frekar einfalt að framkvæma, 978 00:54:58,000 --> 00:55:06,000 en þegar við erum að fara að sjá þessa hönnun ákvörðun? 979 00:55:06,000 --> 00:55:09,000 Hvenær byrjar það að fara mjög, mjög rangt? Já. 980 00:55:09,000 --> 00:55:11,000 [Inaudible nemandi svar] 981 00:55:11,000 --> 00:55:13,000 Þegar þú vilt fara til baka og fá fyrsta þáttur sem þú setur inn 982 00:55:13,000 --> 00:55:18,000 >> Það kemur í ljós hérna þó stafla er fylki undir hetta, 983 00:55:18,000 --> 00:55:21,000 þessi gögn uppbygging sem við höfum byrjað að tala um eru einnig almennt þekktur sem 984 00:55:21,000 --> 00:55:25,000 abstract gagnauppbyggingu þar hvernig þeir eru til framkvæmda 985 00:55:25,000 --> 00:55:27,000 er alveg fyrir utan lið. 986 00:55:27,000 --> 00:55:31,000 A gögn uppbygging eins og stafla er ætlað að bæta við stuðning 987 00:55:31,000 --> 00:55:35,000 starfsemi eins og ýta, sem ýtir á bakka inn á mánudaginn, 988 00:55:35,000 --> 00:55:39,000 og popp, sem fjarlægir stak af á mánudaginn, og það er það. 989 00:55:39,000 --> 00:55:43,000 Ef þú varst að sækja kóða einhvers annars sem nú þegar innleitt 990 00:55:43,000 --> 00:55:46,000 þetta hlutur sem kallast stafla, sem maður hefði skrifað 991 00:55:46,000 --> 00:55:49,000 aðeins tvo valkosti fyrir þig, ýta og popp, sem tilgangurinn í lífinu 992 00:55:49,000 --> 00:55:51,000 væri að gera einmitt það. 993 00:55:51,000 --> 00:55:54,000 Þú eða hann eða hana, sem framkvæmd þessi forrit 994 00:55:54,000 --> 00:55:58,000 hefði verið alveg einn að ákveða hvernig á að framkvæma 995 00:55:58,000 --> 00:56:00,000 merkingarfræði þrýsta og pabbi undir hetta 996 00:56:00,000 --> 00:56:03,000 eða virkni þrýsta og pabbi. 997 00:56:03,000 --> 00:56:07,000 Og ég hef gert nokkuð skammsýn ákvörðun hér 998 00:56:07,000 --> 00:56:10,000 með því að innleiða stafla mitt við þessari einföldu gögn uppbygging hvers vegna? 999 00:56:10,000 --> 00:56:12,000 Hvenær þessi gögn uppbyggingu brot? 1000 00:56:12,000 --> 00:56:18,000 Á hvaða atriði þarf ég að skila villu þegar notandi kallar ýta, til dæmis? 1001 00:56:18,000 --> 00:56:20,000 [Nemandi] Ef það er ekki meira pláss. 1002 00:56:20,000 --> 00:56:23,000 Einmitt, ef það er ekki meira pláss, ef ég hef farið yfir getu, 1003 00:56:23,000 --> 00:56:27,000 sem er öllum húfur því það bendir til þess að það er einhvers konar alheims fasti. 1004 00:56:27,000 --> 00:56:30,000 Jæja, þá er ég bara að fara að segja, "Því miður, ég get ekki ýta annað gildi 1005 00:56:30,000 --> 00:56:32,000 inn á mánudaginn, "mikið eins og í Mather. 1006 00:56:32,000 --> 00:56:36,000 >> Á einhverjum tímapunkti, þá eru þeir að fara til högg the toppur hluti af þeim litla skáp. 1007 00:56:36,000 --> 00:56:39,000 Það er ekkert meira pláss eða getu á mánudaginn, á hver benda að það er einhvers konar villa. 1008 00:56:39,000 --> 00:56:42,000 Þeir verða að setja á hluti annars staðar, bakkanum annars staðar, 1009 00:56:42,000 --> 00:56:44,000 eða hvergi á öllum. 1010 00:56:44,000 --> 00:56:47,000 Nú, með biðröð, gætum við koma það er öðruvísi lítið. 1011 00:56:47,000 --> 00:56:50,000 A biðröð er svolítið öðruvísi í því undir hetta, það getur verið hrint í framkvæmd 1012 00:56:50,000 --> 00:56:54,000 sem fjölda, en hvers vegna, í þessu tilfelli er ég að leggja 1013 00:56:54,000 --> 00:56:59,000 einnig hafa höfuð þáttur tákna höfuð listanum 1014 00:56:59,000 --> 00:57:06,000 framan á listanum, fyrsta manneskjan í samræmi við Apple verslun, auk stærð? 1015 00:57:06,000 --> 00:57:14,000 Hvers vegna þarf ég að viðbótar gögnum og hér? 1016 00:57:14,000 --> 00:57:16,000 Hugsaðu til baka hvað númer er 1017 00:57:16,000 --> 00:57:18,000 ef ég hef dregið það sem hér segir. 1018 00:57:18,000 --> 00:57:21,000 Segjum þetta er nú biðröð stað mánudaginn, 1019 00:57:21,000 --> 00:57:24,000 Munurinn er-bara eins og Apple Store-biðröð er sanngjörn. 1020 00:57:24,000 --> 00:57:27,000 Fyrsti maður í samræmi við upphaf listanum, númer 5 í þessu tilviki, 1021 00:57:27,000 --> 00:57:30,000 hann eða hún er að fara að láta inn í búðina fyrst. 1022 00:57:30,000 --> 00:57:32,000 Við skulum gera það. 1023 00:57:32,000 --> 00:57:35,000 Segjum að þetta sé ástand biðröð mínum á þessari stundu í tíma, og nú er Apple Store 1024 00:57:35,000 --> 00:57:39,000 opnast og fyrsta manneskjan, númer 5, er leitt inn í búðina. 1025 00:57:39,000 --> 00:57:43,000 Hvernig breyti ég mynd nú að ég hef de-biðröð fyrsta manneskjan 1026 00:57:43,000 --> 00:57:47,000 á the andlit af the lína? 1027 00:57:47,000 --> 00:57:50,000 Hvað er það? >> [Nemandi] Breyttu biðröð. 1028 00:57:50,000 --> 00:57:52,000 Breyttu höfuðið, svo hverfur 5. 1029 00:57:52,000 --> 00:57:56,000 Í raun og veru, það er eins og-hvernig best sé að gera þetta? 1030 00:57:56,000 --> 00:58:00,000 Í raun og veru, það er eins og þessi strákur hverfur. 1031 00:58:00,000 --> 00:58:03,000 Hvað myndi númer 7 gera í raun verslun? 1032 00:58:03,000 --> 00:58:05,000 Þeir myndu taka stórt skref fram á við. 1033 00:58:05,000 --> 00:58:08,000 >> En það hafa komið við að meta þegar það kemur að því að fylki 1034 00:58:08,000 --> 00:58:10,000 og færa það í kring? 1035 00:58:10,000 --> 00:58:12,000 Það er góður af sóa tíma þínum, ekki satt? 1036 00:58:12,000 --> 00:58:16,000 Af hverju þarftu að vera svo anal að hafa fyrsta manneskjan 1037 00:58:16,000 --> 00:58:21,000 á the byrjun af the lína í líkamlega upphaf klumpur af minni? 1038 00:58:21,000 --> 00:58:23,000 Það er alveg óþarfi. Hvers vegna? 1039 00:58:23,000 --> 00:58:26,000 Hvað gæti ég man bara í staðinn? >> [Inaudible nemandi svar] 1040 00:58:26,000 --> 00:58:30,000 Einmitt, ég gat bara muna með þessari frekari gögn félagi höfuð 1041 00:58:30,000 --> 00:58:34,000 að nú er yfirmaður lista ekki lengur 0, þar sem það var smá stund síðan. 1042 00:58:34,000 --> 00:58:39,000 Nú það er í raun númer 1. Á þennan hátt, fæ ég smá fínstillingu. 1043 00:58:39,000 --> 00:58:44,000 Bara vegna þess að ég hef de-biðröð einhver úr línu í upphafi línu á Apple Store 1044 00:58:44,000 --> 00:58:47,000 þýðir ekki allir að skipta, sem muna er línuleg aðgerð. 1045 00:58:47,000 --> 00:58:50,000 Ég get í staðinn eyða stöðugt skipti 1046 00:58:50,000 --> 00:58:53,000 og ná svo miklu hraðari svörun. 1047 00:58:53,000 --> 00:58:56,000 En verð ég að borga er það að fá að auka árangur 1048 00:58:56,000 --> 00:58:58,000 og ekki þurfa að skipta öllum? 1049 00:58:58,000 --> 00:59:01,000 Já. >> [Inaudible nemandi svar] 1050 00:59:01,000 --> 00:59:04,000 Get bætt við fleiri fólk, vel að vandinn er þverstæðum 1051 00:59:04,000 --> 00:59:07,000 til þess að við erum ekki að breytast fólk í kring. 1052 00:59:07,000 --> 00:59:11,000 Það er samt fylki, svo hvort við vakt alla eða ekki- 1053 00:59:11,000 --> 00:59:13,000 ó, ég sé hvað þú átt við, allt í lagi. 1054 00:59:13,000 --> 00:59:16,000 Reyndar er ég sammála því sem þú ert að segja í því að það er nánast eins og 1055 00:59:16,000 --> 00:59:19,000 við erum nú ekki að fara að nota upphaf þessa array lengur 1056 00:59:19,000 --> 00:59:22,000 því ef ég fjarlægja 5, þá skal ég taka 7. 1057 00:59:22,000 --> 00:59:24,000 En ég setti bara fólk til hægri. 1058 00:59:24,000 --> 00:59:28,000 >> Mér finnst eins og ég sé að sóa rúm, og að lokum biðröð minn disintegrates í neitt, 1059 00:59:28,000 --> 00:59:31,000 þannig að við gátum bara hafa fólk wraparound, 1060 00:59:31,000 --> 00:59:35,000 og við gætum hugsa um þessa array raun nokkurs konar hringlaga byggingu, 1061 00:59:35,000 --> 00:59:38,000 en við notum hvað rekstraraðila í C til að gera þessi tegund af wraparound? 1062 00:59:38,000 --> 00:59:40,000 [Inaudible nemandi svar] >> The modulo rekstraraðila. 1063 00:59:40,000 --> 00:59:43,000 Það væri svolítið pirrandi að hugsa um hvernig þú gera wraparound, 1064 00:59:43,000 --> 00:59:46,000 en við gætum gert það, og við gætum byrjað að setja fólk á hvað er notað til að vera andlit af the lína, 1065 00:59:46,000 --> 00:59:52,000 en við bara muna með þessum höfuð breytu sem í raun höfuð af the lína í raun er. 1066 00:59:52,000 --> 00:59:57,000 Hvað ef, í staðinn, markmið okkar að lokum, þó, 1067 00:59:57,000 --> 01:00:00,000 var að horfa upp tölur, eins og við gerðum hér á sviðinu með Anita, 1068 01:00:00,000 --> 01:00:02,000 en við viljum í raun það besta af öllum þessum heimum? 1069 01:00:02,000 --> 01:00:05,000 Við viljum meiri fágun en array gerir 1070 01:00:05,000 --> 01:00:09,000 vegna þess að við viljum að getu við breytilega vaxa gögn uppbygging. 1071 01:00:09,000 --> 01:00:12,000 En við viljum ekki að þurfa að grípa til einhvers sem við bent á 1072 01:00:12,000 --> 01:00:15,000 í fyrsta fyrirlestrinum var ekki ákjósanlegur reiknirit, 1073 01:00:15,000 --> 01:00:17,000 sem línuleg leit. 1074 01:00:17,000 --> 01:00:21,000 Það kemur í ljós að þú getur í raun að ná 1075 01:00:21,000 --> 01:00:24,000 eða að minnsta kosti nálægt stöðugum tíma, þar sem einhver eins og Anita, 1076 01:00:24,000 --> 01:00:27,000 ef hún stillir gögn uppbygging hennar ekki að vera tengd lista, 1077 01:00:27,000 --> 01:00:30,000 ekki að vera stafla, ekki að vera biðröð, gæti í raun 1078 01:00:30,000 --> 01:00:33,000 koma upp með gögn uppbygging sem gerir hana að horfa upp hluti, 1079 01:00:33,000 --> 01:00:37,000 jafnvel orð, ekki bara tölur, á því sem við munum kalla stöðugt tíma. 1080 01:00:37,000 --> 01:00:40,000 >> Og í raun, að leita á undan, einn af psets í þessum flokki er nánast alltaf 1081 01:00:40,000 --> 01:00:43,000 sem framkvæmd Villupúki, þar 1082 01:00:43,000 --> 01:00:46,000 við gefa þér aftur sumir 150.000 ensk orð og markmiðið er að 1083 01:00:46,000 --> 01:00:51,000 hlaða þær inn minni og hratt að geta svarað spurningum á forminu 1084 01:00:51,000 --> 01:00:54,000 er þetta orð stafsett rétt? 1085 01:00:54,000 --> 01:00:58,000 Og það væri virkilega sjúga ef þú hefðir til að iterate gegnum allar 150.000 orð til að svara því. 1086 01:00:58,000 --> 01:01:02,000 En í raun, munum við sjá að við getum gert það í mjög fljótur tíma. 1087 01:01:02,000 --> 01:01:06,000 Og það er að fara að taka að innleiða eitthvað sem kallast a kjötkássa borð, 1088 01:01:06,000 --> 01:01:09,000 og jafnvel þó að við fyrstu sýn þessi hlutur sem kallast kjötkássa borð er að fara til 1089 01:01:09,000 --> 01:01:12,000 skulum ná þessum frábær hraður svar sinnum, 1090 01:01:12,000 --> 01:01:18,000 það kemur í ljós að það er í raun vandamál. 1091 01:01:18,000 --> 01:01:23,000 Þegar það kemur tími til að framkvæma þetta í heitir-aftur, er ég að gera það aftur. 1092 01:01:23,000 --> 01:01:25,000 Ég er sá eini hérna. 1093 01:01:25,000 --> 01:01:28,000 Þegar það kemur tími til að framkvæma þetta verk kallað kjötkássa borð, 1094 01:01:28,000 --> 01:01:30,000 við erum að fara að þurfa að taka ákvörðun. 1095 01:01:30,000 --> 01:01:32,000 Hversu stór ætti þessi hlutur að vera í raun og veru? 1096 01:01:32,000 --> 01:01:36,000 Og þegar við byrjum að setja tölur inn í þetta kjötkássa töflunni 1097 01:01:36,000 --> 01:01:38,000 hvernig ætlum við að geyma þá á þann hátt 1098 01:01:38,000 --> 01:01:42,000 að við getum fengið þá aftur út eins fljótt og við fengum þá í? 1099 01:01:42,000 --> 01:01:45,000 En við munum sjá áður en langt að þessi spurning 1100 01:01:45,000 --> 01:01:48,000 þegar afmæli allra í bekknum verður alveg germane. 1101 01:01:48,000 --> 01:01:51,000 Það kemur í ljós að í þessu herbergi, höfum við fengið nokkur hundruð manns, 1102 01:01:51,000 --> 01:01:56,000 þannig líkurnar að tveir af okkur hafa sama afmæli er sennilega nokkuð há. 1103 01:01:56,000 --> 01:01:58,000 Hvað ef það voru aðeins 40 af okkur í þessu herbergi? 1104 01:01:58,000 --> 01:02:02,000 Hverjar eru líkurnar á að tvær manneskjur hafa sama afmæli? 1105 01:02:02,000 --> 01:02:04,000 [Nemendur] Yfir 50%. 1106 01:02:04,000 --> 01:02:06,000 Já, yfir 50%. Í staðreynd, ég kom einu sinni töflu. 1107 01:02:06,000 --> 01:02:08,000 Það kemur í ljós og þetta er í raun bara laumast forsýning- 1108 01:02:08,000 --> 01:02:12,000 Ef það er aðeins 58 af okkur í þessu herbergi, en líkurnar á að 2 af okkur 1109 01:02:12,000 --> 01:02:16,000 hafa sama afmæli er gríðarlega mikil, nánast 100%, 1110 01:02:16,000 --> 01:02:20,000 og það er að fara að valda a heild búnt af skaða fyrir okkur á miðvikudag. 1111 01:02:20,000 --> 01:02:24,000 >> Með því að segja, við skulum fresta hér. Við munum sjá þig á miðvikudag. 1112 01:02:24,000 --> 01:02:28,000 [Lófaklapp] 1113 01:02:28,000 --> 01:02:30,000 [CS50.TV]