1 00:00:00,000 --> 00:00:11,860 2 00:00:11,860 --> 00:00:13,120 >> SPEAKER 1: Okei, joten olemme takaisin. 3 00:00:13,120 --> 00:00:14,480 Tervetuloa CS50. 4 00:00:14,480 --> 00:00:16,510 Tämä on viikon lopussa seitsemän. 5 00:00:16,510 --> 00:00:20,200 Joten muistaa, että viime kerralla, aloimme katsot hieman kehittyneempiä 6 00:00:20,200 --> 00:00:21,100 tietorakenteita. 7 00:00:21,100 --> 00:00:25,110 Koska tähän asti, kaikki olimme todella käytössämme oli tämä, array. 8 00:00:25,110 --> 00:00:29,340 >> Mutta ennen kuin hävitä array ei kovin kiinnostavaa, joka todellakin se 9 00:00:29,340 --> 00:00:33,570 itse asiassa on, mitkä ovat joitakin plussia tämän yksinkertaisia ​​tietoja 10 00:00:33,570 --> 00:00:34,560 rakenne toistaiseksi? 11 00:00:34,560 --> 00:00:36,110 Mitä se hyvä? 12 00:00:36,110 --> 00:00:39,450 Sikäli kuin olemme nähneet? 13 00:00:39,450 --> 00:00:42,540 Mitä sinulla on? 14 00:00:42,540 --> 00:00:44,028 Mitään. 15 00:00:44,028 --> 00:00:45,020 >> Opiskelija: [kuultavissa]. 16 00:00:45,020 --> 00:00:45,395 >> SPEAKER 1: Mikä tuo on? 17 00:00:45,395 --> 00:00:46,410 >> Opiskelija: [kuultavissa]. 18 00:00:46,410 --> 00:00:47,000 >> SPEAKER 1: Kiinteä koko. 19 00:00:47,000 --> 00:00:51,260 OK, niin miksi on kiinteä koko hyvä vaikka? 20 00:00:51,260 --> 00:00:53,180 >> Opiskelija: [kuultavissa]. 21 00:00:53,180 --> 00:00:56,240 >> SPEAKER 1: OK, joten se on tehokas mielessä, että voit jakaa 22 00:00:56,240 --> 00:01:00,070 kiinteä määrä tilaa, mikä toivottavasti Juuri niin paljon 23 00:01:00,070 --> 00:01:01,180 tilaa kuin haluat. 24 00:01:01,180 --> 00:01:02,720 Niin, että voisi olla aivan plus. 25 00:01:02,720 --> 00:01:06,530 >> Mikä on toinen jopa puolella array? 26 00:01:06,530 --> 00:01:07,610 Niin? 27 00:01:07,610 --> 00:01:08,750 >> Opiskelija: [kuultavissa]. 28 00:01:08,750 --> 00:01:09,550 >> SPEAKER 1: Kaikki - anteeksi? 29 00:01:09,550 --> 00:01:11,270 >> Opiskelija: [kuultavissa]. 30 00:01:11,270 --> 00:01:13,620 >> SPEAKER 1: Kaikki laatikot muistiin tai vierekkäin. 31 00:01:13,620 --> 00:01:15,220 Ja se on hyödyllistä - miksi? 32 00:01:15,220 --> 00:01:15,970 Se on aivan totta. 33 00:01:15,970 --> 00:01:18,611 Mutta miten voimme hyödyntää tätä totuutta? 34 00:01:18,611 --> 00:01:21,500 >> Opiskelija: [kuultavissa]. 35 00:01:21,500 --> 00:01:24,490 >> SPEAKER 1: Aivan, voimme seurata jossa kaikki on vain tuntemalla 36 00:01:24,490 --> 00:01:28,560 yksi osoite, eli osoite, ensimmäinen tavu, että kimpale muisti. 37 00:01:28,560 --> 00:01:30,420 Tai jos merkkijono, osoite, ensimmäinen 38 00:01:30,420 --> 00:01:31,460 nieriää, että merkkijono. 39 00:01:31,460 --> 00:01:33,330 Ja sieltä voimme löytää merkkijonon loppuun. 40 00:01:33,330 --> 00:01:35,710 Voimme löytää toinen elementti, Kolmas elementti, ja niin edelleen. 41 00:01:35,710 --> 00:01:38,740 >> Ja niin hieno tapa kuvata, että piirre on, että ryhmät antavat meille 42 00:01:38,740 --> 00:01:40,020 random access. 43 00:01:40,020 --> 00:01:44,330 Vain käyttämällä hakasulkeen merkintä ja numero, voit hypätä 44 00:01:44,330 --> 00:01:48,070 tietty alkio jatkuvassa aikaa, iso O 45 00:01:48,070 --> 00:01:49,810 yhden, niin sanoakseni. 46 00:01:49,810 --> 00:01:51,080 >> Mutta siellä on ollut joitakin haittoja. 47 00:01:51,080 --> 00:01:53,110 Mikä joukko ei tee kovin helposti? 48 00:01:53,110 --> 00:01:55,810 49 00:01:55,810 --> 00:01:57,170 Mitä se ole hyvä? 50 00:01:57,170 --> 00:01:58,810 >> Opiskelija: [kuultavissa]. 51 00:01:58,810 --> 00:01:59,860 >> SPEAKER 1: Mikä tuo on? 52 00:01:59,860 --> 00:02:00,530 >> Opiskelija: [kuultavissa]. 53 00:02:00,530 --> 00:02:01,460 >> SPEAKER 1: Toiminnan laajentaminen koko. 54 00:02:01,460 --> 00:02:04,800 Joten haittoja array ovat juuri päinvastoin 55 00:02:04,800 --> 00:02:05,540 puolensa ovat. 56 00:02:05,540 --> 00:02:07,610 Joten yksi haittoja on että se on kiinteä koko. 57 00:02:07,610 --> 00:02:09,400 Joten et voi todella kasvattaa sitä. 58 00:02:09,400 --> 00:02:13,510 Voit jakaa uudelleen isompi kimpale muistiin, ja sitten siirtyä vanhan elementtejä 59 00:02:13,510 --> 00:02:14,460 uuteen array. 60 00:02:14,460 --> 00:02:18,060 Ja sitten vapaa vanha array varten Esimerkiksi käyttämällä malloc tai vastaavalla 61 00:02:18,060 --> 00:02:21,180 toiminto nimeltään realloc, joka allokoi uudelleen muistiin. 62 00:02:21,180 --> 00:02:25,490 >> Realloc, kuten syrjään, yrittää antaa sinulle muisti, joka on vieressä array 63 00:02:25,490 --> 00:02:26,610 että sinulla on jo. 64 00:02:26,610 --> 00:02:28,740 Mutta se saattaa viedä asioita noin kokonaan. 65 00:02:28,740 --> 00:02:30,710 Mutta lyhyesti sanottuna se on kallista, eikö? 66 00:02:30,710 --> 00:02:33,440 Koska jos sinulla on kimpale muisti Tässä koko, mutta todella haluat yhden 67 00:02:33,440 --> 00:02:36,710 Tämän koon, ja haluat säilyttää alkuperäinen elementtejä, sinulla on 68 00:02:36,710 --> 00:02:40,510 karkeasti lineaarisen ajan kopiointi prosessi että täytyy tapahtua kohteesta 69 00:02:40,510 --> 00:02:41,900 vanha array uusia. 70 00:02:41,900 --> 00:02:44,630 Ja todellisuus kysyy toiminta järjestelmä uudelleen ja uudelleen ja 71 00:02:44,630 --> 00:02:48,340 jälleen suurissa erissä muistia voi alkaa maksaa sinulle aikaa. 72 00:02:48,340 --> 00:02:52,250 Joten se on sekä siunaus että kirous naamioida, että nämä ryhmät 73 00:02:52,250 --> 00:02:53,860 ovat kiinteä koko. 74 00:02:53,860 --> 00:02:56,790 Mutta jos otamme käyttöön sen sijaan jotain näin, jota kutsutaan linkitetyn 75 00:02:56,790 --> 00:03:00,580 lista, saamme muutaman upsides ja muutamia haittoja täällä hyvin. 76 00:03:00,580 --> 00:03:05,780 >> Joten linkitetty lista on yksinkertaisesti tietoa rakenne koostuu C structs tässä 77 00:03:05,780 --> 00:03:09,850 tapauksessa, jossa struct, muistaa, on vain säiliön yhden tai useamman erityisen 78 00:03:09,850 --> 00:03:11,100 tyyppisiä muuttujia. 79 00:03:11,100 --> 00:03:16,110 Tässä tapauksessa, mitä tietotyyppejä näyttävät olevan sisällä struct että 80 00:03:16,110 --> 00:03:17,600 Edellisen kerran soitimme solmu? 81 00:03:17,600 --> 00:03:19,380 Kukin näistä suorakaiteen on solmu. 82 00:03:19,380 --> 00:03:22,660 Ja kukin pienempi suorakulmio sisällä se on tietotyyppi. 83 00:03:22,660 --> 00:03:25,300 Millaisia ​​Sanoimmeko he olivat maanantaina? 84 00:03:25,300 --> 00:03:26,478 Niin? 85 00:03:26,478 --> 00:03:27,870 >> Opiskelija: [kuultavissa]. 86 00:03:27,870 --> 00:03:30,721 >> SPEAKER 1: vaihteleva ja osoitin tai tarkemmin, int, N, 87 00:03:30,721 --> 00:03:32,180 ja osoitin alareunassa. 88 00:03:32,180 --> 00:03:35,360 Molemmat noista sattuvat olemaan 32 bittiä kello ainakin tietokoneen kuin tämä CS50 89 00:03:35,360 --> 00:03:37,980 Laite, ja niin he laadittu tasapuolisesti koko. 90 00:03:37,980 --> 00:03:42,260 >> Joten mitä käytät osoitinta joskin ilmeisesti? 91 00:03:42,260 --> 00:03:47,690 Miksi lisätä tämän nuoli nyt, kun ryhmät olivat niin mukava ja puhdas ja yksinkertainen? 92 00:03:47,690 --> 00:03:50,460 Mitä osoitin tekemässä Meille jokainen näistä solmuista? 93 00:03:50,460 --> 00:03:52,160 >> Opiskelija: [kuultavissa]. 94 00:03:52,160 --> 00:03:52,465 >> Kaiutin 1: Aivan. 95 00:03:52,465 --> 00:03:54,120 Se kertoo, missä seuraava on. 96 00:03:54,120 --> 00:03:57,350 Joten minä tavallaan käyttää vertausta käyttäen lanka tavallaan 97 00:03:57,350 --> 00:03:59,180 pujota nämä solmut yhdessä. 98 00:03:59,180 --> 00:04:01,760 Ja se on juuri sitä, mitä olemme tekemässä osoittimet, koska jokainen näistä 99 00:04:01,760 --> 00:04:06,360 paloina muisti saattaa olla vierekkäisiä, takaisin takaisin takaisin 100 00:04:06,360 --> 00:04:09,500 sisällä RAM, koska joka kerta kun soita malloc sanoen, anna minulle tarpeeksi 101 00:04:09,500 --> 00:04:12,510 tavua uusi solmu, se saattaa olla tässä tai se voi olla täällä. 102 00:04:12,510 --> 00:04:13,120 Se voi olla täällä. 103 00:04:13,120 --> 00:04:13,730 Se voi olla täällä. 104 00:04:13,730 --> 00:04:14,640 Et vain tiedä. 105 00:04:14,640 --> 00:04:17,880 >> Mutta käyttämällä viitteitä osoitteet solmut, voit ompele 106 00:04:17,880 --> 00:04:22,370 yhteen tavalla, joka näyttää visuaalisesti kuten lista, vaikka nämä asiat ovat 107 00:04:22,370 --> 00:04:26,770 kaikki levittää koko yksi tai teidän kaksi tai neljä gigatavua RAM-muistia 108 00:04:26,770 --> 00:04:28,760 sisällä oman tietokoneen. 109 00:04:28,760 --> 00:04:33,230 >> Joten haittapuoli, sitten on linkitetty lista on mitä? 110 00:04:33,230 --> 00:04:34,670 Mikä hinta olemme ilmeisesti maksaa? 111 00:04:34,670 --> 00:04:36,010 >> Opiskelija: [kuultavissa]. 112 00:04:36,010 --> 00:04:36,920 >> SPEAKER 1: Enemmän tilaa, eikö? 113 00:04:36,920 --> 00:04:39,340 Olemme tässä tapauksessa kaksinkertaistunut määrä tilaa, koska olemme käyneet 114 00:04:39,340 --> 00:04:43,500 32 bittiä jokaisen solmun jokaisen int, joten nyt 64 bittiä, koska meidän on 115 00:04:43,500 --> 00:04:45,050 pitää noin osoitin samoin. 116 00:04:45,050 --> 00:04:48,860 Saat lisää tehokkuutta, jos struct on suurempi kuin tämä yksinkertainen asia. 117 00:04:48,860 --> 00:04:52,020 Jos sinulla todella on opiskelija sisällä josta on pari merkkijonojen 118 00:04:52,020 --> 00:04:55,430 nimi ja talon, ehkä henkilötunnus, ehkä jotkut muut alat yhteensä. 119 00:04:55,430 --> 00:04:59,000 >> Joten jos sinulla on riittävän suuri struct, sitten ehkä kustannukset osoittimen 120 00:04:59,000 --> 00:05:00,010 ei niin iso juttu. 121 00:05:00,010 --> 00:05:03,570 Tämä on hieman nurkkaan tapauksessa, että olemme tallentaa niin yksinkertainen primitiivinen 122 00:05:03,570 --> 00:05:04,760 sisällä linkitetty lista. 123 00:05:04,760 --> 00:05:05,790 Mutta kohta on sama. 124 00:05:05,790 --> 00:05:08,230 Olet varmasti menoja enemmän muistiin, mutta saatko 125 00:05:08,230 --> 00:05:08,990 joustavuus. 126 00:05:08,990 --> 00:05:12,280 Koska nyt jos haluan lisätä elementin alussa luettelon 127 00:05:12,280 --> 00:05:14,340 Minun täytyy myöntää uuden solmun. 128 00:05:14,340 --> 00:05:17,180 Ja minun täytyy vain päivittää niitä nuolet jotenkin vain siirtämällä 129 00:05:17,180 --> 00:05:17,980 joitakin viitteitä ympäri. 130 00:05:17,980 --> 00:05:20,580 >> Jos haluan lisätä jotain osaksi listan keskeltä, en tarvitse 131 00:05:20,580 --> 00:05:24,410 työntää kaikki sivuun, kuten teimme viikon aiemmin meidän vapaaehtoisille, jotka 132 00:05:24,410 --> 00:05:25,700 edustettuna jono. 133 00:05:25,700 --> 00:05:29,470 Voin vain jakaa uusi solmu ja Sitten vain pisteen nuolet 134 00:05:29,470 --> 00:05:32,290 eri suuntiin, koska se ei ole on edelleen todellinen 135 00:05:32,290 --> 00:05:35,670 muistin todellinen kaltainen rivi Olen laatinut se tässä näytössä. 136 00:05:35,670 --> 00:05:38,400 >> Ja sitten lopuksi, jos haluat lisätä jotain listan loppuun, se 137 00:05:38,400 --> 00:05:39,210 vieläkin helpompaa. 138 00:05:39,210 --> 00:05:43,320 Tämä on tavallaan mielivaltainen merkintätapa, mutta 34: n osoitin, ota arvaus. 139 00:05:43,320 --> 00:05:46,710 Mikä on arvo sen osoittimen kaikkein todennäköisesti tehdä tavallaan kuin vanha 140 00:05:46,710 --> 00:05:47,700 koulun antenni siellä? 141 00:05:47,700 --> 00:05:48,920 >> Opiskelija: [kuultavissa]. 142 00:05:48,920 --> 00:05:49,900 >> SPEAKER 1: Se on luultavasti null. 143 00:05:49,900 --> 00:05:52,710 Ja todellakin, että on yksi tekijän edustus null. 144 00:05:52,710 --> 00:05:56,310 Ja se on nolla, koska olet täysin täytyy tietää, missä lopussa linkitetyn 145 00:05:56,310 --> 00:06:00,050 lista on, ettet pidä seuraavat ja jälkeen ja sen jälkeen nämä nuolet 146 00:06:00,050 --> 00:06:01,170 noin roskat arvoa. 147 00:06:01,170 --> 00:06:06,230 Joten null tulee merkitsemään, että ei ole useamman solmun oikealla numero 34, 148 00:06:06,230 --> 00:06:07,200 tässä tapauksessa. 149 00:06:07,200 --> 00:06:10,270 >> Niin ehdotamme, että voimme toteuttaa tämä solmu koodi. 150 00:06:10,270 --> 00:06:12,130 Ja olemme nähneet tällaista syntaksin ennen. 151 00:06:12,130 --> 00:06:15,090 Typedef vain määritellään uusi tyyppi meitä, antaa meille synonyymi kuten 152 00:06:15,090 --> 00:06:17,100 string oli char *. 153 00:06:17,100 --> 00:06:21,030 Tässä tapauksessa se tulee antaa meille pika merkintätapa jotta struct solmu 154 00:06:21,030 --> 00:06:24,010 voi sen sijaan vain olla kirjoitettu solmu, joka on paljon puhtaampaa. 155 00:06:24,010 --> 00:06:25,360 Se on paljon vähemmän monisanainen. 156 00:06:25,360 --> 00:06:30,080 >> Sisällä solmu on ilmeisesti int Kutsutaan, ja sitten struct solmu * 157 00:06:30,080 --> 00:06:34,670 mikä tarkoittaa juuri sitä, mitä halusimme nuolet tarkoittaa, osoitin toiseen 158 00:06:34,670 --> 00:06:36,940 solmu täsmälleen samaa tietotyyppiä. 159 00:06:36,940 --> 00:06:40,300 Ja ehdotan, että voisimme toteuttaa hakutoiminto, kuten tämä, joka on 160 00:06:40,300 --> 00:06:41,890 Ensi silmäyksellä saattaa tuntua hieman monimutkainen. 161 00:06:41,890 --> 00:06:43,330 Mutta katsotaanpa sen yhteydessä. 162 00:06:43,330 --> 00:06:45,480 >> Anna minun mennä yli laitteen täällä. 163 00:06:45,480 --> 00:06:48,460 Saanen avata tiedosto nimeltä lista nolla piste h. 164 00:06:48,460 --> 00:06:53,950 Ja joka sisältää vain määritelmän me Näin juuri hetki sitten tämän tiedon 165 00:06:53,950 --> 00:06:55,390 tyyppi nimeltään solmu. 166 00:06:55,390 --> 00:06:57,350 Joten kokosimme että otetaan piste h-tiedosto. 167 00:06:57,350 --> 00:07:01,430 >> Ja syrjään, vaikka tämä ohjelma, joka olet tulleet on 168 00:07:01,430 --> 00:07:05,410 ole kovin monimutkainen, se on todellakin yleissopimus kun kirjoitat ohjelman 169 00:07:05,410 --> 00:07:10,270 laittaa asioita, kuten tietotyyppejä, vetää vakiot joskus, sisäpuolelle 170 00:07:10,270 --> 00:07:13,210 otsikkotiedoston eikä välttämättä kaikki C-tiedosto, varmasti kun 171 00:07:13,210 --> 00:07:17,370 ohjelmat saavat suurempia, jotta et tiedä mistä etsiä sekä 172 00:07:17,370 --> 00:07:20,840 asiakirjat joissakin tapauksissa, tai perusasiat, kuten tämä, 173 00:07:20,840 --> 00:07:22,360 määritelmä joidenkin tyyppi. 174 00:07:22,360 --> 00:07:25,680 >> Jos minä nyt avata luettelon nolla piste c, huomaat muutamia asioita. 175 00:07:25,680 --> 00:07:29,090 Se sisältää muutamia header-tiedostot, useimmat jonka olemme nähneet aiemmin. 176 00:07:29,090 --> 00:07:31,980 Se sisältää omat header-tiedosto. 177 00:07:31,980 --> 00:07:35,200 >> Ja syrjään, miksi se on kaksinkertainen lainaukset tässä, toisin kuin kulma 178 00:07:35,200 --> 00:07:38,340 suluissa linjalla, että Olen korostanut siellä? 179 00:07:38,340 --> 00:07:39,180 >> Opiskelija: [kuultavissa]. 180 00:07:39,180 --> 00:07:40,460 >> SPEAKER 1: Joo niin se on paikallinen tiedosto. 181 00:07:40,460 --> 00:07:44,300 Joten jos se on paikallinen tiedosto oman täällä linjalla 15, joka esimerkiksi käytät 182 00:07:44,300 --> 00:07:46,570 lainausmerkit sijaan ja kulma suluissa. 183 00:07:46,570 --> 00:07:48,270 >> Nyt tämä on tavallaan mielenkiintoinen. 184 00:07:48,270 --> 00:07:51,830 Huomaa, että olen ilmoittanut maailmanlaajuisen muuttuja tässä ohjelmassa on line 18 185 00:07:51,830 --> 00:07:55,910 soittaa ensin, idea on tämä olemaan osoitin ensimmäiseen 186 00:07:55,910 --> 00:07:59,190 solmun minun linkitetty lista, ja olen alustetaan se null, koska olen 187 00:07:59,190 --> 00:08:02,310 ei myönnetty mitään todellista solmut vielä. 188 00:08:02,310 --> 00:08:07,570 >> Joten tämä merkitsee, kuvallisesti, mitä me näki hetki sitten kuva 189 00:08:07,570 --> 00:08:10,090 että osoitin pitkälle vasen puoli. 190 00:08:10,090 --> 00:08:12,260 Joten nyt, että osoitin ei ole nuolta. 191 00:08:12,260 --> 00:08:14,590 Se sen sijaan on vain nolla. 192 00:08:14,590 --> 00:08:17,880 Mutta se edustaa mitä tulee osoite ensimmäinen varsinainen 193 00:08:17,880 --> 00:08:19,480 solmu tässä luettelossa. 194 00:08:19,480 --> 00:08:22,120 Joten olen lisännyt sen on maailmanlaajuinen koska, kuten näet, kaikki tämä 195 00:08:22,120 --> 00:08:25,310 Ohjelma ei elämässä on toteuttaa linkitetyn listan minulle. 196 00:08:25,310 --> 00:08:27,050 >> Nyt olen saanut muutamia prototyyppejä täällä. 197 00:08:27,050 --> 00:08:31,190 Päätin toteuttaa ominaisuuksia, kuten poisto, lisäys, etsiminen ja 198 00:08:31,190 --> 00:08:31,740 läpikäyminen - 199 00:08:31,740 --> 00:08:35,210 viimeksi vain on kävellä koko lista, tulostaa sen osat. 200 00:08:35,210 --> 00:08:36,750 Ja nyt tässä on minun tärkein rutiinia. 201 00:08:36,750 --> 00:08:39,890 Ja me ei viettää liian paljon aikaa Näiden koska tämä on tavallaan, toivottavasti 202 00:08:39,890 --> 00:08:41,780 vanha juttu jo. 203 00:08:41,780 --> 00:08:45,370 >> Aion tehdä seuraavat kun käyttäjä tekee yhteistyötä. 204 00:08:45,370 --> 00:08:47,300 Joten, aion tulostaa pois tästä valikosta. 205 00:08:47,300 --> 00:08:49,420 Ja olen alustettu sitä siististi kuin pystyin. 206 00:08:49,420 --> 00:08:52,240 Jos käyttäjä on yksi, joka tarkoittaa he haluavat poistaa jotain. 207 00:08:52,240 --> 00:08:54,560 Jos käyttäjä on kaksi, se tarkoittaa, että he haluavat lisätä jotain. 208 00:08:54,560 --> 00:08:55,930 Ja niin edelleen. 209 00:08:55,930 --> 00:08:58,270 Aion kehottaa sitten sitten komento. 210 00:08:58,270 --> 00:08:59,300 Ja sitten aion käyttää GetInt. 211 00:08:59,300 --> 00:09:02,790 >> Joten tämä on todella yksinkertainen menuing käyttöliittymä, jossa voit vain kirjoittaa 212 00:09:02,790 --> 00:09:05,270 numero kartoitus yhteen nämä komennot. 213 00:09:05,270 --> 00:09:08,730 Ja nyt minulla on mukava puhdas kytkin ilmoitus, että menee päälle 214 00:09:08,730 --> 00:09:10,090 riippumatta käyttäjän kirjoitetaan sisään 215 00:09:10,090 --> 00:09:12,180 Ja jos ne kirjoitetaan yhteen, minä soittaa poistaa ja rikkoa. 216 00:09:12,180 --> 00:09:14,380 Jos ne kirjoitetaan kaksi, minä soittaa lisätä ja rikkoa. 217 00:09:14,380 --> 00:09:16,490 >> Ja nyt huomaan koonneet jokaisen Näiden samalla linjalla. 218 00:09:16,490 --> 00:09:18,360 Tämä on vain tyylillinen päätös. 219 00:09:18,360 --> 00:09:20,210 Yleensä olemme nähneet jotain näin. 220 00:09:20,210 --> 00:09:23,260 Mutta minä vain päättänyt, suoraan sanottuna, minun ohjelma näytti enemmän luettavissa koska 221 00:09:23,260 --> 00:09:25,980 se oli vain neljä tapauksissa vain luettelo sen näin. 222 00:09:25,980 --> 00:09:28,360 Täysin laillinen käyttö tyyliin. 223 00:09:28,360 --> 00:09:31,480 Ja aion tehdä tätä niin kauan kuin Käyttäjä ei ole kirjoittanut nolla, jota 224 00:09:31,480 --> 00:09:33,910 päätti tarkoittaa he haluavat lopettaa. 225 00:09:33,910 --> 00:09:36,630 >> Joten nyt huomaa, mitä olen aikoo tehdä täällä. 226 00:09:36,630 --> 00:09:38,650 Aion vapauttaa lista ilmeisesti. 227 00:09:38,650 --> 00:09:40,230 Mutta siitä lisää vain hetken. 228 00:09:40,230 --> 00:09:41,640 Katsotaanpa ensin suorittaa tämän ohjelman. 229 00:09:41,640 --> 00:09:45,250 Joten haluan tehdä isompi terminaali ikkuna, piste slash listan 0. 230 00:09:45,250 --> 00:09:49,510 Aion mennä eteenpäin ja kytkennässä kirjoittamalla kaksi, numero kuin 50, ja nyt 231 00:09:49,510 --> 00:09:51,590 näet listan on nyt 50. 232 00:09:51,590 --> 00:09:53,380 Ja minun tekstiä vain vierittää ylös hieman. 233 00:09:53,380 --> 00:09:55,940 Joten nyt huomaa luettelo sisältää numero 50. 234 00:09:55,940 --> 00:09:58,220 >> Tehdään toinen insert ottamalla kaksi. 235 00:09:58,220 --> 00:10:01,630 Katsotaanpa kirjoittaa numeron kuin yksi. 236 00:10:01,630 --> 00:10:03,940 Luettelo on nyt yksi, sen jälkeen 50. 237 00:10:03,940 --> 00:10:06,020 Joten tämä on vain teksti-edustus luettelon. 238 00:10:06,020 --> 00:10:10,550 Ja antaa lisätä yhden numeron kuten numero 42, joka on toivottavasti 239 00:10:10,550 --> 00:10:14,620 ehdi keskellä, koska Tämän ohjelman erityisesti lajittelee sen 240 00:10:14,620 --> 00:10:16,320 osia, koska se lisää ne. 241 00:10:16,320 --> 00:10:17,220 Joten siellä meillä on. 242 00:10:17,220 --> 00:10:20,730 Super yksinkertainen ohjelma, joka voisi ehdottomasti ovat käyttäneet erilaisia, mutta 243 00:10:20,730 --> 00:10:23,280 sattuvat olemaan avulla linkitetty lista vain niin voin dynaamisesti 244 00:10:23,280 --> 00:10:24,610 kasvaa ja kutista se. 245 00:10:24,610 --> 00:10:28,470 >> Joten katsomaan hakuun, jos olen suorita komento kolme, haluan etsiä 246 00:10:28,470 --> 00:10:31,040 varten, sanovat, numero 43. 247 00:10:31,040 --> 00:10:34,190 Ja mitään ei ilmeisesti löytynyt, koska sain takaisin mitään vastausta. 248 00:10:34,190 --> 00:10:35,010 Joten tämä uudelleen. 249 00:10:35,010 --> 00:10:35,690 Etsi. 250 00:10:35,690 --> 00:10:39,520 Katsotaanpa etsi 50, tai pikemminkin etsiä 42, joka on mukava 251 00:10:39,520 --> 00:10:40,850 pikku hienovarainen merkitys. 252 00:10:40,850 --> 00:10:42,610 Ja löysin elämän tarkoitus on. 253 00:10:42,610 --> 00:10:44,990 Numero 42, jos et tiedä viittaus, googlettaa. 254 00:10:44,990 --> 00:10:45,350 Selvä. 255 00:10:45,350 --> 00:10:47,130 Joten mitä on tämä ohjelma tehnyt minulle? 256 00:10:47,130 --> 00:10:50,660 Se vain saa minut lisätä näin mennessä ja etsiä elementtejä. 257 00:10:50,660 --> 00:10:53,650 >> Katsotaan eteenpäin, niin, että jotka toimivat me vilkaisi 258 00:10:53,650 --> 00:10:55,360 maanantain teaser. 259 00:10:55,360 --> 00:10:59,620 Joten tämä toiminto, väitän, etsii elementti luettelossa ensimmäisenä 260 00:10:59,620 --> 00:11:03,830 yksi, kehotukset käyttäjä ja sitten soittaa GetInt saada todellista int 261 00:11:03,830 --> 00:11:05,060 että haluat etsiä. 262 00:11:05,060 --> 00:11:06,460 >> Sitten huomaa tätä. 263 00:11:06,460 --> 00:11:10,690 Aion luoda väliaikainen muuttuja linjassa 188 nimeltään osoitin - 264 00:11:10,690 --> 00:11:11,270 PTR - 265 00:11:11,270 --> 00:11:12,440 voinut soittaa se mitään. 266 00:11:12,440 --> 00:11:16,140 Ja se on osoitin solmuun koska sanoin solmu * siellä. 267 00:11:16,140 --> 00:11:19,900 Ja olen alustaa sen olevan yhtä suuri Ensimmäinen niin että minä tehokkaasti minun 268 00:11:19,900 --> 00:11:22,860 sormella, niin sanoakseni, on hyvin Ensimmäinen osa luettelon. 269 00:11:22,860 --> 00:11:27,460 Joten jos oikea käteni tässä PTR olen osoittaen sama asia, että ensimmäinen 270 00:11:27,460 --> 00:11:28,670 on suunnattu. 271 00:11:28,670 --> 00:11:31,430 >> Joten nyt takaisin koodi, mitä tapahtuu seuraavaksi - 272 00:11:31,430 --> 00:11:35,070 Tämä on yhteinen paradigma iteroidessaan yli tapaisen 273 00:11:35,070 --> 00:11:35,970 linkitetty lista. 274 00:11:35,970 --> 00:11:40,410 Aion tee alla osoitin ei ole sama null Joten vaikka 275 00:11:40,410 --> 00:11:47,530 minun sormi ei osoita joitakin null arvo, jos osoitin nuoli n on n. 276 00:11:47,530 --> 00:11:52,290 Me huomaat ensin, että n on mitä käyttäjän kirjoitetaan kohti GetInts soittaa täällä. 277 00:11:52,290 --> 00:11:54,280 >> Ja osoitin nuoli n tarkoittaa mitä? 278 00:11:54,280 --> 00:11:59,020 No jos palaamme kuvan tänne, jos minulla on sormella osoittaen 279 00:11:59,020 --> 00:12:02,960 että ensimmäinen solmu, joka sisältää yhdeksän, nuoli tarkoittaa sitä mennä, että 280 00:12:02,960 --> 00:12:08,860 solmu ja napata arvo paikassa n, Tässä tapauksessa tietoja kentän Kutsutaan. 281 00:12:08,860 --> 00:12:14,120 >> Sivuhuomautuksena - ja näimme pari viikkoa sitten, kun joku kysyi - 282 00:12:14,120 --> 00:12:18,840 Tämä syntaksi on uusi, mutta se ei antaa meille voimia, jotka me 283 00:12:18,840 --> 00:12:20,040 ei vielä ole. 284 00:12:20,040 --> 00:12:25,325 Mikä oli tämä lause vastaa käyttäen dot merkintä ja tähti pari 285 00:12:25,325 --> 00:12:29,490 viikkoa sitten, kun me vedetään pois Tämän kerroksen hieman ennenaikaisesti? 286 00:12:29,490 --> 00:12:31,780 >> Opiskelija: [kuultavissa]. 287 00:12:31,780 --> 00:12:38,880 >> SPEAKER 1: Aivan, se oli tähti, ja niin se oli tähti dot n kanssa 288 00:12:38,880 --> 00:12:41,930 Suluissa täällä, joka näyttää, rehellisesti, mielestäni paljon 289 00:12:41,930 --> 00:12:43,320 enemmän arvoituksellinen lukea. 290 00:12:43,320 --> 00:12:46,270 Mutta tähden osoitin, kuten aina, keinoin mennä sinne. 291 00:12:46,270 --> 00:12:49,090 Ja kun olet siellä, mitä tietoja kenttään haluat käyttää? 292 00:12:49,090 --> 00:12:52,730 No käytät piste merkintätapa käyttää structs tietokenttä, ja minä 293 00:12:52,730 --> 00:12:54,140 nimenomaan haluavat n. 294 00:12:54,140 --> 00:12:56,240 >> Suoraan sanottuna, Väitän tätä on vain vaikeampi lukea. 295 00:12:56,240 --> 00:12:58,080 Se on vaikeampi muistaa missä älä suluissa mennä, 296 00:12:58,080 --> 00:12:59,030 tähti ja kaikki tämä. 297 00:12:59,030 --> 00:13:02,150 Joten maailman hyväksynyt joitakin syntaktisia sokeria, niin sanoakseni. 298 00:13:02,150 --> 00:13:04,740 Vain seksikäs tapa sanoa, tämä vastaa, ja 299 00:13:04,740 --> 00:13:05,970 ehkä enemmän intuitiivinen. 300 00:13:05,970 --> 00:13:09,600 Jos osoitin on todellakin osoitin, nuoli notaatio keinoin mennä sinne ja löytää 301 00:13:09,600 --> 00:13:11,890 kenttään tässä tapauksessa Kutsutaan. 302 00:13:11,890 --> 00:13:13,660 >> Joten jos löydän sen, huomaa, mitä teen. 303 00:13:13,660 --> 00:13:17,430 Olen yksinkertaisesti tulostaa, löysin prosenttia i, kytkemällä arvon kyseiselle int. 304 00:13:17,430 --> 00:13:20,730 Kehotan nukkua yhden sekunnin juuri sellaista tauon asioita näytön 305 00:13:20,730 --> 00:13:22,900 antaa käyttäjälle toisen imeä mitä juuri tapahtui. 306 00:13:22,900 --> 00:13:24,290 Ja sitten tauko. 307 00:13:24,290 --> 00:13:26,330 Muuten, mitä teen? 308 00:13:26,330 --> 00:13:30,960 Päivitän osoitin yhtä osoitin nuolta. 309 00:13:30,960 --> 00:13:35,840 >> Joten vain tehdä selväksi, tämä tarkoittaa mennä siellä käyttäen my old-school merkintätapa. 310 00:13:35,840 --> 00:13:39,580 Joten tämä tarkoittaa vain mennä mihin tahansa olet osoittaen, joka hyvin 311 00:13:39,580 --> 00:13:43,660 Ensimmäinen tapaus on olen osoittaen struct yhdeksän siinä. 312 00:13:43,660 --> 00:13:44,510 Joten olen mennyt sinne. 313 00:13:44,510 --> 00:13:47,880 Ja sitten piste merkintä tarkoittaa, saada arvo seuraavaksi. 314 00:13:47,880 --> 00:13:50,470 >> Mutta arvo, vaikka se on laadittu niin kapea, on vain numero. 315 00:13:50,470 --> 00:13:51,720 Se on numeerinen osoite. 316 00:13:51,720 --> 00:13:55,670 Joten tämä yksi rivi koodia, onko kirjoitettu näin, enemmän arvoituksellinen 317 00:13:55,670 --> 00:14:00,190 tavalla, tai näin, hieman intuitiivinen tapa, tarkoittaa vain sitä, vedä kättäni 318 00:14:00,190 --> 00:14:03,460 ensimmäisestä solmusta seuraavaan, ja sitten seuraavaksi, ja sitten 319 00:14:03,460 --> 00:14:05,320 seuraava, ja niin edelleen. 320 00:14:05,320 --> 00:14:09,920 >> Joten emme vatvoa muiden toteutuksia lisätä ja poistaa 321 00:14:09,920 --> 00:14:14,030 ja läpikäynti, kaksi ensimmäistä jotka ovat melko mukana. 322 00:14:14,030 --> 00:14:17,010 Ja mielestäni se on melko helppo saada menetetään, kun tekee sen suullisesti. 323 00:14:17,010 --> 00:14:19,890 Mutta mitä voimme tehdä tässä yrittää selvittää, miten 324 00:14:19,890 --> 00:14:21,640 kannattaa tehdä visuaalisesti. 325 00:14:21,640 --> 00:14:24,800 Koska ehdotan, että jos me haluat lisätä osat tähän 326 00:14:24,800 --> 00:14:26,680 olemassa lista, joka on viisi elementtiä - 327 00:14:26,680 --> 00:14:29,530 9, 17, 22, 26, ja 33 - 328 00:14:29,530 --> 00:14:33,300 jos olisin menossa toteuttaa tämän koodi, minun täytyy miettiä, miten mennä 329 00:14:33,300 --> 00:14:34,160 noin näin. 330 00:14:34,160 --> 00:14:37,720 >> Ja ehdotan ottaen pienin askelin jolloin tässä tapauksessa tarkoitan, mitä 331 00:14:37,720 --> 00:14:41,090 mahdollisia skenaarioita, että me saattaa kohdata yleensä? 332 00:14:41,090 --> 00:14:44,120 Kun toteutetaan lisäosa linkitetyn lista, tämä vain sattuu olemaan 333 00:14:44,120 --> 00:14:46,090 Erityisenä esimerkkinä koko viisi. 334 00:14:46,090 --> 00:14:50,420 No jos haluat lisätä numeron, kuten sanovat numero yksi, ja 335 00:14:50,420 --> 00:14:53,380 ylläpitäminen lajitellaan järjestyksessä, jossa ilmeisesti ei numero yksi on 336 00:14:53,380 --> 00:14:55,686 mennä tässä konkreettisen esimerkin? 337 00:14:55,686 --> 00:14:56,840 Kuten alussa. 338 00:14:56,840 --> 00:15:00,030 >> Mutta mikä on mielenkiintoista on, että Jos haluat lisätä yhden tähän 339 00:15:00,030 --> 00:15:04,100 lista, mitä erityisiä osoitin tarvitsee päivitetään ilmeisesti? 340 00:15:04,100 --> 00:15:04,610 First. 341 00:15:04,610 --> 00:15:07,830 Joten Väitän, tämä on ensimmäinen tapaus että kannattaa harkita, 342 00:15:07,830 --> 00:15:11,140 skenaario, johon asetat at listan alkuun. 343 00:15:11,140 --> 00:15:15,400 >> Katsotaanpa nyppiä pois ehkä yhtä helppoa tai jopa helpompaa tapauksessa suhteellisesti. 344 00:15:15,400 --> 00:15:18,110 Oletetaan Haluan lisätä numero 35 lajitellaan järjestyksessä. 345 00:15:18,110 --> 00:15:20,600 Se ilmeisesti kuuluu sinne. 346 00:15:20,600 --> 00:15:25,320 Joten mitä osoitin ilmeisesti on menossa on saatettava ajan tasalle, että skenaario? 347 00:15:25,320 --> 00:15:30,060 34: n osoitin tulossa ole nolla mutta osoite struct 348 00:15:30,060 --> 00:15:31,800 sisältää numeron 35. 349 00:15:31,800 --> 00:15:32,750 Niin, että tapauksessa kaksi. 350 00:15:32,750 --> 00:15:36,190 Joten jo, olen tavallaan quantizing kuinka paljon työtä minun täytyy tehdä täällä. 351 00:15:36,190 --> 00:15:39,880 >> Ja lopuksi, ilmeinen keskellä kyseessä on todellakin, keskellä, jos haluan 352 00:15:39,880 --> 00:15:45,870 laita jotain sanoa 23, joka menee välillä 23 ja 26, mutta 353 00:15:45,870 --> 00:15:48,680 nyt asiat saavat hieman enemmän mukana, koska mitä 354 00:15:48,680 --> 00:15:52,800 viitteitä tarvitse muuttaa? 355 00:15:52,800 --> 00:15:56,680 Joten 22 on ilmeisesti syytä muuttaa koska hän ei voi osoittaa 26 enää. 356 00:15:56,680 --> 00:16:00,320 Hän tarvitsee osoittamaan uuteen solmuun Minun täytyy myöntää soittamalla 357 00:16:00,320 --> 00:16:01,770 malloc tai jokin vastaava. 358 00:16:01,770 --> 00:16:05,990 >> Mutta sitten on myös, että uusi solmu, 23 tässä tapauksessa, että sen osoitin 359 00:16:05,990 --> 00:16:07,870 osoittaen kenelle? 360 00:16:07,870 --> 00:16:08,560 26. 361 00:16:08,560 --> 00:16:10,380 Ja siellä tulee olemaan Jotta toiminnan täällä. 362 00:16:10,380 --> 00:16:13,410 Koska jos teen tämän tyhmästi, ja minä esimerkiksi alku alussa 363 00:16:13,410 --> 00:16:16,040 lista, ja minun tavoite on lisätä 23. 364 00:16:16,040 --> 00:16:18,610 Ja voin tarkistaa, se kuuluu täällä, lähellä yhdeksän? 365 00:16:18,610 --> 00:16:18,950 Ei. 366 00:16:18,950 --> 00:16:20,670 Onko se kuulu tänne, vieressä 17? 367 00:16:20,670 --> 00:16:20,940 Ei. 368 00:16:20,940 --> 00:16:22,530 Onko se kuuluu tässä vieressä 22? 369 00:16:22,530 --> 00:16:23,300 Kyllä. 370 00:16:23,300 --> 00:16:26,400 >> Nyt jos olen tyhmä täällä, eikä ajattelu tämä läpi, voisin 371 00:16:26,400 --> 00:16:28,320 jakaa minun uusi solmu 23. 372 00:16:28,320 --> 00:16:32,080 Saatan päivittää osoitinta solmu nimeltään 22, osoittaen 373 00:16:32,080 --> 00:16:33,080 se on uusi solmu. 374 00:16:33,080 --> 00:16:36,140 Ja sitten mitä minun täytyy päivittää Uuden solmun osoitin olla? 375 00:16:36,140 --> 00:16:38,120 >> Opiskelija: [kuultavissa]. 376 00:16:38,120 --> 00:16:38,385 >> Kaiutin 1: Aivan. 377 00:16:38,385 --> 00:16:39,710 Osoittaen 26. 378 00:16:39,710 --> 00:16:45,590 Mutta dammit jos en jo päivittää 22: n osoitin kohtaan tätä kaveria, ja 379 00:16:45,590 --> 00:16:48,260 nyt minulla on orpoja, loput luettelon, niin sanoakseni. 380 00:16:48,260 --> 00:16:52,140 Joten jotta toiminnan täällä tulee olemaan tärkeä. 381 00:16:52,140 --> 00:16:55,100 >> Voit tehdä tämän voisin varastaa, eli kuusi vapaaehtoista. 382 00:16:55,100 --> 00:16:57,650 Ja katsotaanpa jos emme voi tehdä tätä visuaalisesti sijasta code-viisas. 383 00:16:57,650 --> 00:16:59,330 Ja meillä on ihania stressiä pallot sinulle tänään. 384 00:16:59,330 --> 00:17:02,510 OK, miten yksi, kaksi, vuonna takaisin - on lopulta kyse. 385 00:17:02,510 --> 00:17:04,530 kolme, neljä, molemmat kaverit loppuun. 386 00:17:04,530 --> 00:17:05,579 Ja viisi, kuusi. 387 00:17:05,579 --> 00:17:05,839 Toki. 388 00:17:05,839 --> 00:17:06,450 Viisi ja kuusi. 389 00:17:06,450 --> 00:17:08,390 Hyvä ja tulemme ja te seuraavan kerran. 390 00:17:08,390 --> 00:17:09,640 Okei, tule ylös. 391 00:17:09,640 --> 00:17:12,010 392 00:17:12,010 --> 00:17:14,819 >> Okei, koska olet täällä ensin, haluaisit olla yksi hankalasti 393 00:17:14,819 --> 00:17:16,119 Google Glass täällä? 394 00:17:16,119 --> 00:17:19,075 Okei, niin, OK, Glass, tallentaa videota. 395 00:17:19,075 --> 00:17:22,720 396 00:17:22,720 --> 00:17:24,589 OK, olet hyvä mennä. 397 00:17:24,589 --> 00:17:27,950 >> Okei, joten jos te voi tulla täällä, olen valmis etukäteen 398 00:17:27,950 --> 00:17:30,110 joitakin numeroita. 399 00:17:30,110 --> 00:17:31,240 Okei, tule tänne. 400 00:17:31,240 --> 00:17:33,440 Ja miksi et mene hieman lisäksi, että tapa. 401 00:17:33,440 --> 00:17:35,520 Ja katsotaanpa, mikä on nimesi, Google Glass? 402 00:17:35,520 --> 00:17:35,910 >> Opiskelija: Ben. 403 00:17:35,910 --> 00:17:36,230 >> SPEAKER 1: Ben? 404 00:17:36,230 --> 00:17:38,380 OK, Ben, sinun tulee ensin, kirjaimellisesti. 405 00:17:38,380 --> 00:17:40,580 Joten aiomme lähettää sinulle loppuun vaiheessa. 406 00:17:40,580 --> 00:17:41,670 Kunnossa, ja sinun nimesi on? 407 00:17:41,670 --> 00:17:41,990 >> Opiskelija: Jason. 408 00:17:41,990 --> 00:17:44,530 >> SPEAKER 1: Jason, OK voit ll olla numero yhdeksän. 409 00:17:44,530 --> 00:17:46,700 Joten jos haluat seurata Ben niin. 410 00:17:46,700 --> 00:17:47,010 >> Opiskelija: Jill. 411 00:17:47,010 --> 00:17:49,630 >> SPEAKER 1: Jill, aiot olla 17, jonka olisin tehnyt tämän enemmän 412 00:17:49,630 --> 00:17:51,260 älykkäästi, olisin alkoi toisessa päässä. 413 00:17:51,260 --> 00:17:52,370 Et mennä näin. 414 00:17:52,370 --> 00:17:53,030 22. 415 00:17:53,030 --> 00:17:53,670 Ja sinä olet? 416 00:17:53,670 --> 00:17:53,980 >> Opiskelija: Mary. 417 00:17:53,980 --> 00:17:56,130 >> SPEAKER 1: Mary, olet 22. 418 00:17:56,130 --> 00:17:58,420 Ja sinun nimesi on? 419 00:17:58,420 --> 00:17:58,810 >> Opiskelija: Chris. 420 00:17:58,810 --> 00:18:00,100 >> SPEAKER 1: Chris, olet 26. 421 00:18:00,100 --> 00:18:00,740 Ja sitten lopuksi. 422 00:18:00,740 --> 00:18:01,400 >> Opiskelija: Diana. 423 00:18:01,400 --> 00:18:02,670 >> SPEAKER 1: Diana, voit olla 34. 424 00:18:02,670 --> 00:18:03,920 Niin tulet tänne. 425 00:18:03,920 --> 00:18:06,360 >> Okei, niin täydellinen lajiteltu tilata jo. 426 00:18:06,360 --> 00:18:09,600 Ja mennään eteenpäin ja tehdä tämän jotta voimme todella - 427 00:18:09,600 --> 00:18:11,720 Ben olet juuri sellainen näköinen ulos tyhjästä siellä. 428 00:18:11,720 --> 00:18:15,670 OK, joten mennään eteenpäin ja kuvata tämän käyttää aseita, aivan kuten olin tarkalleen, 429 00:18:15,670 --> 00:18:16,250 mitä tapahtuu. 430 00:18:16,250 --> 00:18:19,540 Joten mene eteenpäin ja antaa itsellenne jalka tai kaksi keskenänne. 431 00:18:19,540 --> 00:18:22,900 Ja mennä eteenpäin ja kohta yhdellä kädellä kuka sinun pitäisi osoittaen 432 00:18:22,900 --> 00:18:23,470 perustuu tähän. 433 00:18:23,470 --> 00:18:25,890 Ja jos olet null vain pisteen suoraan alas lattialle. 434 00:18:25,890 --> 00:18:27,690 OK, niin hyvä. 435 00:18:27,690 --> 00:18:32,290 >> Joten nyt meillä on linkitetty lista, ja haluan ehdottaa, että minä näytellä 436 00:18:32,290 --> 00:18:35,110 PTR, joten en viitsi kuljettaa tämän ympäri. 437 00:18:35,110 --> 00:18:37,830 Ja sitten - joku tyhmä yleissopimus - voit soittaa tähän mitä haluat - 438 00:18:37,830 --> 00:18:39,800 edeltäjä osoitin, pred osoitin - 439 00:18:39,800 --> 00:18:43,930 se on vain lempinimi annoimme meidän näyte koodin vasempaan käteeni. 440 00:18:43,930 --> 00:18:47,240 Toisaalta, jotka aiotaan pitää seurata, kuka on kuka 441 00:18:47,240 --> 00:18:48,400 seuraavissa tilanteissa. 442 00:18:48,400 --> 00:18:52,390 >> Niin kai, ensin haluan nyppiä pois että ensimmäinen esimerkki asennat sanoa 443 00:18:52,390 --> 00:18:54,330 20 listaan. 444 00:18:54,330 --> 00:18:57,160 Joten aion tarvitsevat jonkun ilmentävät numero 20 meille. 445 00:18:57,160 --> 00:18:58,950 Joten minun täytyy malloc joku yleisöltä. 446 00:18:58,950 --> 00:18:59,380 Tule ylös. 447 00:18:59,380 --> 00:19:00,340 Mikä sinun nimesi on? 448 00:19:00,340 --> 00:19:01,300 >> Opiskelija: Brian. 449 00:19:01,300 --> 00:19:05,270 >> SPEAKER 1: Brian, kaikki hyvin, joten on solmu, joka sisälsi 20. 450 00:19:05,270 --> 00:19:06,810 Okei, tule tänne. 451 00:19:06,810 --> 00:19:10,025 Ja tietenkin, jos ei Brian kuuluu? 452 00:19:10,025 --> 00:19:12,190 Niin, keskellä - itse asiassa, Hetkinen. 453 00:19:12,190 --> 00:19:13,420 Teemme tämän epäkunnossa. 454 00:19:13,420 --> 00:19:17,170 Teemme tämän paljon vaikeampaa kuin se tarvitsee ensin. 455 00:19:17,170 --> 00:19:21,210 OK, aiomme ilmaiseksi Brian ja realloc Brian viisi. 456 00:19:21,210 --> 00:19:23,680 >> OK, joten nyt haluamme lisätä Brian viisi. 457 00:19:23,680 --> 00:19:25,960 Joten tule tänne vieressä Ben vain hetken. 458 00:19:25,960 --> 00:19:28,250 Ja voit luultavasti kertoa jos tämä tarina on menossa. 459 00:19:28,250 --> 00:19:30,500 Mutta katsotaanpa miettiä tarkasti Jotta toiminnan. 460 00:19:30,500 --> 00:19:32,880 Ja se on juuri tämä visuaalinen että menee riviin 461 00:19:32,880 --> 00:19:34,080 kanssa, että näytteen koodi. 462 00:19:34,080 --> 00:19:40,120 Joten tässä olen PTR osoittaa aluksi ole Ben, sinänsä, mutta mitä tahansa 463 00:19:40,120 --> 00:19:43,245 Arvostamme hän on, joka tässä tapauksessa on - mitä sinun nimesi olikaan? 464 00:19:43,245 --> 00:19:43,670 >> Opiskelija: Jason. 465 00:19:43,670 --> 00:19:47,350 >> SPEAKER 1: Jason, joten molemmat Ben ja minä osoittaen Jason tällä hetkellä. 466 00:19:47,350 --> 00:19:49,700 Joten nyt minun täytyy selvittää, mistä Brian kuuluvat? 467 00:19:49,700 --> 00:19:53,500 Joten ainoa asia on pääsy nyt on hänen n tieto. 468 00:19:53,500 --> 00:19:58,280 Joten aion tarkistaa, on Brian alle Jason? 469 00:19:58,280 --> 00:19:59,770 Vastaus on totta. 470 00:19:59,770 --> 00:20:03,680 >> Joten mitä nyt täytyy tapahtua, oikeassa järjestyksessä? 471 00:20:03,680 --> 00:20:07,120 Minun täytyy päivittää kuinka monta viitteitä yhteensä tässä tarinassa? 472 00:20:07,120 --> 00:20:10,720 Jos käteni on vielä suunnattu Jason ja kätesi - jos haluat 473 00:20:10,720 --> 00:20:12,930 laita kättä kuin, tavallaan, I tiedä, kysymysmerkki. 474 00:20:12,930 --> 00:20:14,070 OK, hyvä. 475 00:20:14,070 --> 00:20:15,670 >> Okei, niin olet muutamia ehdokkaita. 476 00:20:15,670 --> 00:20:20,500 Joko Ben tai I tai Brian tai Jason tai kaikki muutkin, jotka 477 00:20:20,500 --> 00:20:21,370 viitteitä täytyy muuttaa? 478 00:20:21,370 --> 00:20:23,260 Kuinka monta yhteensä? 479 00:20:23,260 --> 00:20:24,080 >> OK, niin kaksi. 480 00:20:24,080 --> 00:20:27,090 Oma osoitin ei ole oikeastaan ​​väliä enää koska olen vain väliaikainen. 481 00:20:27,090 --> 00:20:31,370 Joten se on nämä kaksi kaveria, oletettavasti, sekä Ben ja Brian. 482 00:20:31,370 --> 00:20:34,410 Joten haluaisin ehdottaa, että päivitämme Ben, koska hän on ensimmäinen. 483 00:20:34,410 --> 00:20:36,350 Ensimmäinen osa tästä luettelosta nyt olemaan Brian. 484 00:20:36,350 --> 00:20:38,070 Niin Ben piste Brian. 485 00:20:38,070 --> 00:20:39,320 OK, mitä nyt? 486 00:20:39,320 --> 00:20:41,950 487 00:20:41,950 --> 00:20:43,460 >> Kuka saa osoitti kenelle? 488 00:20:43,460 --> 00:20:44,710 >> Opiskelija: [kuultavissa]. 489 00:20:44,710 --> 00:20:46,180 >> SPEAKER 1: OK niin Brian on kohtaan on Jason. 490 00:20:46,180 --> 00:20:48,360 Mutta minä olen menettänyt seurata, että osoitin? 491 00:20:48,360 --> 00:20:49,980 Tiedän missä Jason on? 492 00:20:49,980 --> 00:20:50,790 >> Opiskelija: [kuultavissa]. 493 00:20:50,790 --> 00:20:52,620 >> SPEAKER 1: teen, koska olen tilapäinen osoitin. 494 00:20:52,620 --> 00:20:55,110 Ja oletettavasti, en ole muuttunut kohtaan on uusi solmu. 495 00:20:55,110 --> 00:20:58,300 Joten voimme yksinkertaisesti Brian kohta klo kuka olen osoittaen. 496 00:20:58,300 --> 00:20:59,000 Ja olemme tehneet. 497 00:20:59,000 --> 00:21:01,890 Joten jos yksi, lisäys on listan alussa. 498 00:21:01,890 --> 00:21:02,950 Siellä oli kaksi pääasiallista vaihetta. 499 00:21:02,950 --> 00:21:06,750 Yksi, meillä on päivittää Ben, ja sitten meillä on myös päivittää Brian. 500 00:21:06,750 --> 00:21:09,230 Ja sitten ei tarvitse vaivata traipsing läpi loput 501 00:21:09,230 --> 00:21:12,680 lista, koska meillä on jo löytänyt sijainti, koska hän kuului 502 00:21:12,680 --> 00:21:14,080 jätti ensimmäisen elementin. 503 00:21:14,080 --> 00:21:15,400 >> Okei, joten melko suoraviivaista. 504 00:21:15,400 --> 00:21:18,110 Itse asiassa tuntuu olemme melkein joten tämä liian monimutkainen. 505 00:21:18,110 --> 00:21:20,240 Joten nyt nyppiä pois loppuun luettelon, ja katso, 506 00:21:20,240 --> 00:21:21,380 monimutkaisuus alkaa. 507 00:21:21,380 --> 00:21:24,560 Joten jos nyt olen alloc yleisöltä. 508 00:21:24,560 --> 00:21:25,540 Jokainen haluaa pelata 55? 509 00:21:25,540 --> 00:21:26,700 Okei, olen nähnyt kätesi ensin. 510 00:21:26,700 --> 00:21:29,620 Tule ylös. 511 00:21:29,620 --> 00:21:30,030 Joo. 512 00:21:30,030 --> 00:21:31,177 Mikä sinun nimesi on? 513 00:21:31,177 --> 00:21:32,310 >> Opiskelija: [kuultavissa]. 514 00:21:32,310 --> 00:21:33,240 >> Kaiutin 1: Habata. 515 00:21:33,240 --> 00:21:33,890 OK, tule ylös. 516 00:21:33,890 --> 00:21:35,730 Sinulta numero 55. 517 00:21:35,730 --> 00:21:37,820 Joten te, tietenkin, kuuluvat lopussa luettelosta. 518 00:21:37,820 --> 00:21:41,850 Joten toistaa simulointi kanssani on PTR vain hetken. 519 00:21:41,850 --> 00:21:44,050 Joten olen ensin menossa osoitat mitä Ben on suunnattu. 520 00:21:44,050 --> 00:21:45,900 Olemme molemmat osoittaa nyt Brian. 521 00:21:45,900 --> 00:21:48,420 Joten 55 on vähintään viisi. 522 00:21:48,420 --> 00:21:52,510 Joten aion päivittää itseäni osoittaa Brian seuraava osoitin, joka 523 00:21:52,510 --> 00:21:54,450 Nyt on tietenkin Jason. 524 00:21:54,450 --> 00:21:57,310 55 on vähintään yhdeksän, joten Aion päivittää PTR. 525 00:21:57,310 --> 00:21:58,890 Aion päivittää PTR. 526 00:21:58,890 --> 00:22:02,290 Aion päivittää PTR Olen menossa päivittää PTR. 527 00:22:02,290 --> 00:22:05,060 Ja aion - hmm, mitä nimesi uudelleen? 528 00:22:05,060 --> 00:22:05,560 >> Opiskelija: Diana. 529 00:22:05,560 --> 00:22:09,190 >> SPEAKER 1: Diana osoittaa, tietenkin, klo null vasemmalla kädellään. 530 00:22:09,190 --> 00:22:13,030 Joten miten Habata todella kuuluvat selkeästi? 531 00:22:13,030 --> 00:22:15,050 Vasemmalle, täällä. 532 00:22:15,050 --> 00:22:19,460 Joten mistä tiedän laittaa hänet tänne Mielestäni olen mokannut. 533 00:22:19,460 --> 00:22:22,420 Sillä mitä PTR taidetta tällä hetkellä? 534 00:22:22,420 --> 00:22:23,240 Null. 535 00:22:23,240 --> 00:22:25,580 Joten vaikka visuaalisesti, voimme tietenkin nähdä kaikki nämä 536 00:22:25,580 --> 00:22:26,610 kaverit täällä lavalla. 537 00:22:26,610 --> 00:22:29,680 En ole pidetty kirjaa edellisen henkilö luettelosta. 538 00:22:29,680 --> 00:22:33,210 Minulla ei ole sormi pois, Tässä tapauksessa solmu numero 34. 539 00:22:33,210 --> 00:22:34,760 >> Joten todella alkaa tämän yli. 540 00:22:34,760 --> 00:22:37,560 Joten nyt en oikeastaan ​​tarvitse Toinen paikallinen muuttuja. 541 00:22:37,560 --> 00:22:40,980 Ja tämä on mitä näet vuonna todellinen näyte C-koodia, jos sillä minä menen, 542 00:22:40,980 --> 00:22:45,860 kun päivitän oikean käteni kohtaan Jason, mikä jättää Brian takana, I 543 00:22:45,860 --> 00:22:51,440 parempi alkaa käyttää minun vasen käsi päivittää missä olin, niin että menen 544 00:22:51,440 --> 00:22:52,700 läpi tämä luettelo - 545 00:22:52,700 --> 00:22:55,040 enemmän hankalasti kuin aioin nyt täällä visuaalisesti - 546 00:22:55,040 --> 00:22:56,740 Aion päästä luettelon loppuun. 547 00:22:56,740 --> 00:23:00,020 >> Tämä käsi on edelleen nolla, mikä on melko hyödytön, muut kuin osoittamaan 548 00:23:00,020 --> 00:23:02,980 Olen selvästi listan loppuun, mutta nyt ainakin minulla on tämä 549 00:23:02,980 --> 00:23:08,270 edeltäjä osoitin osoittelee täällä, joten mitä nyt kädet ja mitä viitteitä tarvitsevat 550 00:23:08,270 --> 00:23:10,150 päivitetään? 551 00:23:10,150 --> 00:23:13,214 Jonka käsi haluat määrittää uudelleen ensimmäisen? 552 00:23:13,214 --> 00:23:15,190 >> Opiskelija: [kuultavissa]. 553 00:23:15,190 --> 00:23:16,220 >> SPEAKER 1: OK, niin Dianan. 554 00:23:16,220 --> 00:23:21,110 Minne haluat viitata Dianan vasen osoitin? 555 00:23:21,110 --> 00:23:23,620 Klo 55, oletettavasti, jotta olemme asetettu siellä. 556 00:23:23,620 --> 00:23:25,560 Ja missä olisi 55 osoitinta mennä? 557 00:23:25,560 --> 00:23:27,000 Alas, mikä null. 558 00:23:27,000 --> 00:23:28,890 Ja käteni, tässä vaiheessa ei väliä, koska ne olivat vain 559 00:23:28,890 --> 00:23:30,070 tilapäinen muuttujia. 560 00:23:30,070 --> 00:23:31,030 Joten nyt olemme tehneet. 561 00:23:31,030 --> 00:23:34,650 >> Joten lisää monimutkaisuutta - ja paljon se ei ole niin vaikea toteuttaa, 562 00:23:34,650 --> 00:23:38,660 mutta meidän toissijainen muuttuja tehdä Varmista, että ennen kuin voin siirtää oikealle 563 00:23:38,660 --> 00:23:42,140 käsi, kun päivitän arvo minun vasen käsi, pred osoitin tässä tapauksessa, joten 564 00:23:42,140 --> 00:23:45,860 että olen jäljessä osoitin seurata missä olin. 565 00:23:45,860 --> 00:23:49,360 Nyt kun syrjään, jos olet ajatellut tätä kautta, tämä tuntuu se 566 00:23:49,360 --> 00:23:51,490 hieman harmittaa on pidettävä seurata tämän vasemman käden. 567 00:23:51,490 --> 00:23:54,015 >> Mikä olisi toinen ratkaisu Tähän ongelmaan on ollut? 568 00:23:54,015 --> 00:23:56,500 Jos sinulla suunnitella uudelleen tietoja rakenne puhumme 569 00:23:56,500 --> 00:23:59,630 läpi juuri nyt? 570 00:23:59,630 --> 00:24:02,690 Jos tämä juuri sellainen tuntuu hieman ärsyttävää on, kuten, kaksi osoitinta 571 00:24:02,690 --> 00:24:08,430 läpi listan, kuka muu voisi ovat, täydellisessä maailmassa, ylläpidetään 572 00:24:08,430 --> 00:24:10,160 tietoa, että me tarvitsemme? 573 00:24:10,160 --> 00:24:11,360 Niin? 574 00:24:11,360 --> 00:24:12,610 >> Opiskelija: [kuultavissa]. 575 00:24:12,610 --> 00:24:15,160 576 00:24:15,160 --> 00:24:16,150 >> Kaiutin 1: Aivan. 577 00:24:16,150 --> 00:24:19,130 Oikealle niin siellä on todella mielenkiintoinen alkiot idea. 578 00:24:19,130 --> 00:24:22,470 Ja tämä ajatus aiemmin osoitin, osoittaen edelliseen elementtiin. 579 00:24:22,470 --> 00:24:25,580 Mitä jos vain kirjattu, että sisällä listan itse? 580 00:24:25,580 --> 00:24:27,810 Ja se tulee olemaan vaikea visualisoida Tämän ilman kaikkia paperi 581 00:24:27,810 --> 00:24:28,830 putoaa lattialle. 582 00:24:28,830 --> 00:24:31,860 Mutta oletetaan, että nämä kaverit käyttää sekä heidän kätensä ovat aiemmin 583 00:24:31,860 --> 00:24:35,950 osoitin, ja seuraavaksi osoitin, mikä toteuta me kutsumme kaksin verroin 584 00:24:35,950 --> 00:24:36,830 linkitetty lista. 585 00:24:36,830 --> 00:24:41,090 Joka sallisi minun tavallaan taaksepäin, paljon helpommin ilman minua, 586 00:24:41,090 --> 00:24:43,800 ohjelmoija, joiden pitää seurata manuaalisesti - 587 00:24:43,800 --> 00:24:44,980 todella manuaalisesti - 588 00:24:44,980 --> 00:24:47,280 , missä olin ollut aikaisemmin luettelossa. 589 00:24:47,280 --> 00:24:48,110 Joten emme tee sitä. 590 00:24:48,110 --> 00:24:50,950 Me pitää se yksinkertainen, koska se on menossa on hintansa, kaksi kertaa 591 00:24:50,950 --> 00:24:53,450 paljon tilaa viitteitä, jos haluat toinen. 592 00:24:53,450 --> 00:24:55,760 Mutta se on todellakin yhteistä data rakenne tunnetaan 593 00:24:55,760 --> 00:24:57,410 kaksinkertaisesti linkitetty lista. 594 00:24:57,410 --> 00:25:01,310 >> Tehdään lopullinen esimerkki tästä ja laita nämä kaverit pois kurjuudesta. 595 00:25:01,310 --> 00:25:03,270 Joten malloc 20. 596 00:25:03,270 --> 00:25:05,320 Tule ylös käytävällä siellä. 597 00:25:05,320 --> 00:25:06,280 Okei, mikä on nimesi? 598 00:25:06,280 --> 00:25:07,440 >> Opiskelija: [kuultavissa]. 599 00:25:07,440 --> 00:25:07,855 >> SPEAKER 1: Anteeksi? 600 00:25:07,855 --> 00:25:08,480 >> Opiskelija: [kuultavissa]. 601 00:25:08,480 --> 00:25:09,410 >> SPEAKER 1: Demeron? 602 00:25:09,410 --> 00:25:10,230 OK tulla ylös. 603 00:25:10,230 --> 00:25:11,910 Sinulla on 20. 604 00:25:11,910 --> 00:25:14,720 Olet ilmeisesti menossa kuuluvat 17-22. 605 00:25:14,720 --> 00:25:16,150 Joten haluan oppia minun oppitunti. 606 00:25:16,150 --> 00:25:18,150 Aion aloittaa osoitin osoittaen Brian. 607 00:25:18,150 --> 00:25:21,190 Ja aion olla minun vasen käsi vain päivittää Brian kuin muutan 608 00:25:21,190 --> 00:25:23,600 Jason, tarkkailun tekee 20 vähemmän kuin yhdeksän? 609 00:25:23,600 --> 00:25:24,060 Ei. 610 00:25:24,060 --> 00:25:25,430 On 20 vähemmän kuin 17? 611 00:25:25,430 --> 00:25:25,880 Ei. 612 00:25:25,880 --> 00:25:27,450 On 20 alle 22? 613 00:25:27,450 --> 00:25:28,440 Kyllä. 614 00:25:28,440 --> 00:25:34,070 Joten mitä viitteitä tai käsissä tarvitse muuttaa jos he osoittavat nyt? 615 00:25:34,070 --> 00:25:37,070 >> Joten voimme tehdä 17 osoittaen 20. 616 00:25:37,070 --> 00:25:37,860 Niin se on hieno. 617 00:25:37,860 --> 00:25:40,080 Missä haluamme tuoda osoitin nyt? 618 00:25:40,080 --> 00:25:41,330 22. 619 00:25:41,330 --> 00:25:45,410 Ja me tiedämme, missä 22 on jälleen kiitos minun tilapäinen osoitin. 620 00:25:45,410 --> 00:25:46,760 Joten olemme OK siellä. 621 00:25:46,760 --> 00:25:49,440 Joten koska tämä väliaikainen varastointi Olen pitänyt kirjaa, jossa jokainen on. 622 00:25:49,440 --> 00:25:55,055 Ja nyt voit visuaalisesti mennä, jos kuulut, ja nyt tarvitaan 1, 2, 3, 623 00:25:55,055 --> 00:25:58,410 4, 5, 6, 7, 8, 9 stressi pallot, ja aplodit 624 00:25:58,410 --> 00:25:59,770 nämä kaverit, jos voisimme. 625 00:25:59,770 --> 00:26:00,410 Hienosti tehty. 626 00:26:00,410 --> 00:26:05,320 >> [APPLAUSE] 627 00:26:05,320 --> 00:26:06,330 >> SPEAKER 1: Okei. 628 00:26:06,330 --> 00:26:09,860 Ja saatat pitää kappaletta paperimääriä muistoesineitä. 629 00:26:09,860 --> 00:26:15,930 >> Okei, niin, luota minuun se on paljon helpompi kulkea, että 630 00:26:15,930 --> 00:26:17,680 ihmisillä kuin se on itse koodi. 631 00:26:17,680 --> 00:26:22,690 Mutta mitä löydät vain hetken nyt, että sama - Voi kiitos. 632 00:26:22,690 --> 00:26:23,630 Kiitos - 633 00:26:23,630 --> 00:26:29,360 on, että huomaat, että samoja tietoja rakenne, linkitetty lista, voi todella 634 00:26:29,360 --> 00:26:33,200 käyttää rakennuspalikka entistä kehittyneempiä tietorakenteita. 635 00:26:33,200 --> 00:26:37,620 >> Ja ymmärtää liian teema on, että olemme ehdottomasti käyttöön lisää 636 00:26:37,620 --> 00:26:40,060 monimutkaisuuden huomioon ottamista Tämän algoritmin. 637 00:26:40,060 --> 00:26:43,940 Paikoilleen, ja jos kävimme läpi sitä, poisto ja etsimistä, on hieman 638 00:26:43,940 --> 00:26:46,660 monimutkaisempi kuin se oli kanssa array. 639 00:26:46,660 --> 00:26:48,040 Mutta saamme dynaamisuus. 640 00:26:48,040 --> 00:26:50,180 Saamme mukautuva tietorakenne. 641 00:26:50,180 --> 00:26:54,010 >> Mutta jälleen kerran, me maksamme hintaa ottaa joitakin lisää monimutkaisuutta, sekä 642 00:26:54,010 --> 00:26:54,910 sen toteuttamisesta. 643 00:26:54,910 --> 00:26:56,750 Ja me luopuneet random access. 644 00:26:56,750 --> 00:27:00,450 Ja ollakseni rehellinen, siellä ei ole kivoja Puhdista slide Voin kertoa teille, että 645 00:27:00,450 --> 00:27:03,120 sanoo tässä on, miksi linkitetty lista on parempi kuin joukko. 646 00:27:03,120 --> 00:27:04,100 Ja jättää asian siihen. 647 00:27:04,100 --> 00:27:07,520 Koska teema toistuisi nyt, vaikka enemmän lähiviikkoina, on 648 00:27:07,520 --> 00:27:10,200 että siellä ei ole välttämättä oikea vastaus. 649 00:27:10,200 --> 00:27:13,830 >> Siksi meillä on erillinen akseli muotoilun ongelma sarjaa. 650 00:27:13,830 --> 00:27:17,700 Se on hyvin tilannekohtainen haluatko käyttää näitä tietoja 651 00:27:17,700 --> 00:27:21,750 rakenteen tai että yksi, ja se riippuu siitä, mitä asioita sinulle kannalta 652 00:27:21,750 --> 00:27:24,620 resurssien ja monimutkaisuus. 653 00:27:24,620 --> 00:27:28,830 >> Mutta saanen ehdottaa, että ihanteellinen tiedot rakenne, pyhä Graal, olisi 654 00:27:28,830 --> 00:27:32,200 jotain, joka on vakiona aika, riippumatta siitä, kuinka paljon tavaraa on 655 00:27:32,200 --> 00:27:36,940 sen sisällä, eikö olisi mahtavaa, jos tietorakenne palasi vastauksia 656 00:27:36,940 --> 00:27:37,920 vakioaikaisia. 657 00:27:37,920 --> 00:27:38,330 Kyllä. 658 00:27:38,330 --> 00:27:40,110 Tämä sana on teidän valtava sanakirja. 659 00:27:40,110 --> 00:27:41,550 Tai no, tämä sana ei ole. 660 00:27:41,550 --> 00:27:43,270 Tai tällaisia ​​ongelmia siellä. 661 00:27:43,270 --> 00:27:46,360 No katsotaanpa emme voi ainakin ottaa askel kohti sitä. 662 00:27:46,360 --> 00:27:50,190 >> Saanen ehdottaa uutta tietoa rakenne voidaan käyttää eri asioita, 663 00:27:50,190 --> 00:27:52,260 tässä tapauksessa kutsutaan tiiviste. 664 00:27:52,260 --> 00:27:55,590 Ja niin olemme todella takaisin vilkuillen klo array, tässä tapauksessa, ja 665 00:27:55,590 --> 00:28:00,550 jokseenkin mielivaltaisesti, olen laatinut tämän hash taulukon array eräänlainen 666 00:28:00,550 --> 00:28:02,810 kaksiulotteinen array - 667 00:28:02,810 --> 00:28:05,410 tai pikemminkin se on kuvattu täällä kaksi ulotteinen array - mutta tämä on vain 668 00:28:05,410 --> 00:28:10,770 taulukon koko 26, niin että jos me soita array, pöytä kiinnike 669 00:28:10,770 --> 00:28:12,440 nolla on suorakulmion yläosassa. 670 00:28:12,440 --> 00:28:15,090 Pöytäkiinnikkeen 25 on suorakulmion alareunassa. 671 00:28:15,090 --> 00:28:18,620 Ja näin voisin piirtää tiedot rakennetta, jossa haluan tallentaa 672 00:28:18,620 --> 00:28:19,790 ihmisten nimet. 673 00:28:19,790 --> 00:28:24,370 >> Joten esimerkiksi, enkä piirtää Koko juttu täällä yläpuolella, jos olen 674 00:28:24,370 --> 00:28:29,160 oli tämä joukko, jonka minä lähden nyt soittaa hash table, ja tämä on jälleen 675 00:28:29,160 --> 00:28:31,360 sijainti nolla. 676 00:28:31,360 --> 00:28:34,840 Tämä tässä on paikka yksi, ja niin edelleen. 677 00:28:34,840 --> 00:28:37,880 Väitän, että haluan käyttää tätä tietoa rakenne, vuoksi keskustelua, 678 00:28:37,880 --> 00:28:42,600 tallentaa ihmisten nimet, Alice ja Bob ja Charlie ja muita nimiä. 679 00:28:42,600 --> 00:28:46,110 Joten ajatella tätä nyt alkuja vaikkapa sanakirja 680 00:28:46,110 --> 00:28:47,520 jossa on paljon sanoja. 681 00:28:47,520 --> 00:28:49,435 Ne sattuvat olemaan nimet meidän esimerkki tästä. 682 00:28:49,435 --> 00:28:52,560 Ja tämä on aivan liian germane, kenties täytäntöön oikoluku, kuten me 683 00:28:52,560 --> 00:28:54,400 ehkä ongelmien asetettu kuusi. 684 00:28:54,400 --> 00:28:59,300 >> Joten jos meillä on joukko Koko 26 niin, että tämä on 25. sijainti 685 00:28:59,300 --> 00:29:03,390 alareunassa, ja väitän, että Alice on ensimmäinen sana sanakirja 686 00:29:03,390 --> 00:29:07,260 nimiä, jotka haluan lisätä RAM-muistiin, tähän tietorakenne, jossa ovat 687 00:29:07,260 --> 00:29:12,480 vaistot kertoo, että Alicen nimi pitäisi mennä tässä array? 688 00:29:12,480 --> 00:29:13,510 >> Meillä on 26 vaihtoehtoa. 689 00:29:13,510 --> 00:29:14,990 Jos haluamme laittaa hänet? 690 00:29:14,990 --> 00:29:16,200 Haluamme hänet kiinnike nolla, eikö? 691 00:29:16,200 --> 00:29:18,280 Alice, kutsukaamme että nolla. 692 00:29:18,280 --> 00:29:20,110 Ja B on yksi, ja C on kaksi. 693 00:29:20,110 --> 00:29:22,600 Joten aiomme kirjoittaa Alicen nimi täällä. 694 00:29:22,600 --> 00:29:24,890 Jos me aseta Bob, hänen nimi menee täällä. 695 00:29:24,890 --> 00:29:27,280 Charlie menee täällä. 696 00:29:27,280 --> 00:29:30,500 Ja niin edelleen alas Tämä tietorakenne. 697 00:29:30,500 --> 00:29:32,090 >> Tämä on ihana tietorakenne. 698 00:29:32,090 --> 00:29:32,730 Miksi? 699 00:29:32,730 --> 00:29:37,460 No mitä on käyntiaika lisäämällä ihmisen nimi tähän 700 00:29:37,460 --> 00:29:39,850 tietorakenne juuri nyt? 701 00:29:39,850 --> 00:29:43,702 Koska tämä taulukko on toteutettu, todella, kuten array. 702 00:29:43,702 --> 00:29:44,940 No se on jatkuvasti ajan. 703 00:29:44,940 --> 00:29:45,800 Se on järjestyksessä yksi. 704 00:29:45,800 --> 00:29:46,360 Miksi? 705 00:29:46,360 --> 00:29:48,630 >> No miten voit määrittää jossa Alice kuuluu? 706 00:29:48,630 --> 00:29:51,000 Näytät joka kirjaimen nimensä? 707 00:29:51,000 --> 00:29:51,490 Ensimmäinen. 708 00:29:51,490 --> 00:29:54,350 Ja voit päästä sinne, jos se on merkkijono, vain katsomalla merkkijono 709 00:29:54,350 --> 00:29:55,200 kiinnike nolla. 710 00:29:55,200 --> 00:29:57,110 Joten zeroth luonnetta merkkijono. 711 00:29:57,110 --> 00:29:57,610 Se on helppoa. 712 00:29:57,610 --> 00:30:00,350 Teimme että Crypto toimeksianto viikkoa sitten. 713 00:30:00,350 --> 00:30:05,310 Ja sitten kun tiedät, että Alicen kirjain Capital, voimme vähentää 714 00:30:05,310 --> 00:30:08,160 pois 65 tai pääoman itse, joka antaa meille nolla. 715 00:30:08,160 --> 00:30:10,940 Joten nyt tiedämme, että Alice kuuluu paikassa nolla. 716 00:30:10,940 --> 00:30:14,240 >> Ja koska osoitin näitä tietoja rakenne, jonkinlainen, kuinka kauan 717 00:30:14,240 --> 00:30:18,840 se vie minut löytää paikka nollaan array? 718 00:30:18,840 --> 00:30:22,080 Vain yksi askel, oikea Se on vakiona aika koska random access me 719 00:30:22,080 --> 00:30:23,780 Ehdotettu oli ominaisuus array. 720 00:30:23,780 --> 00:30:28,570 Joten lyhyt, kuvauksen, mitä indeksi Alicen nimi on, joka on vuonna 721 00:30:28,570 --> 00:30:32,610 Tässä tapauksessa on, tai haluan vain ratkaista että nolla, jossa B on yksi-ja C on 722 00:30:32,610 --> 00:30:34,900 kaksi, miettiminen, että ulos on vakio ajan. 723 00:30:34,900 --> 00:30:38,510 Minun täytyy vain katsoa hänen ensimmäinen kirjain, mietitään, jossa nolla on 724 00:30:38,510 --> 00:30:40,460 matriisi on myös jatkuvasti aikaa. 725 00:30:40,460 --> 00:30:42,140 Joten teknisesti se on kuten kaksi vaihetta nyt. 726 00:30:42,140 --> 00:30:43,330 Mutta se on silti jatkuvasti. 727 00:30:43,330 --> 00:30:46,880 Joten me kutsumme että iso O yhden, joten olemme Lisätään Alice tähän taulukkoon 728 00:30:46,880 --> 00:30:48,440 vakioaikaisia. 729 00:30:48,440 --> 00:30:50,960 >> Mutta tietenkin olen nyt naiivi täällä, eikö? 730 00:30:50,960 --> 00:30:53,240 Mitä jos Aaron luokassa? 731 00:30:53,240 --> 00:30:53,990 Tai Alicia? 732 00:30:53,990 --> 00:30:57,230 Tai muu nimet alkavat A. Jos aiomme laittaa 733 00:30:57,230 --> 00:31:00,800 että henkilö, eikö? 734 00:31:00,800 --> 00:31:03,420 Siis, nyt siellä on vain kolme ihmiset pöydälle, joten ehkä me 735 00:31:03,420 --> 00:31:07,490 pitäisi laittaa Aaron paikassa nolla yksi kaksi kolme. 736 00:31:07,490 --> 00:31:09,480 >> Oikea, voisin laittaa tänne. 737 00:31:09,480 --> 00:31:13,350 Mutta sitten, jos yritämme lisätä Davidin Tässä lista, jossa ei David mennä? 738 00:31:13,350 --> 00:31:15,170 Nyt meidän järjestelmä alkaa murtua alas, oikealle? 739 00:31:15,170 --> 00:31:19,210 Koska nyt David päätyy tänne jos Aaron on itse asiassa täällä. 740 00:31:19,210 --> 00:31:23,060 Ja nyt tämä koko ajatus ottaa puhdasta tietoa rakenne, joka antaa meille 741 00:31:23,060 --> 00:31:28,010 vakioaikaisia ​​lisäyksiä ei ole enää vakioaikaisia, koska minun täytyy 742 00:31:28,010 --> 00:31:31,240 Tarkista, oh, perkele, joku on jo Alice sijainti. 743 00:31:31,240 --> 00:31:35,320 >> Saanen koetin loput tästä tiedot rakenne, etsivät paikka laittaa 744 00:31:35,320 --> 00:31:37,130 joku Aaronin nimi. 745 00:31:37,130 --> 00:31:39,390 Ja niin sekin alkaa ottaa lineaarista aikaa. 746 00:31:39,390 --> 00:31:42,710 Lisäksi, jos nyt haluat löytää Aaron tässä tietorakenne, ja sinä 747 00:31:42,710 --> 00:31:45,430 tarkista, ja Aaronin nimi ei ole täällä. 748 00:31:45,430 --> 00:31:47,960 Parasta olisi vain sanoa Aaronin ei tietorakenne. 749 00:31:47,960 --> 00:31:51,530 Mutta jos et alkaa tehdä tilaa Aaron jossa olisi pitänyt D 750 00:31:51,530 --> 00:31:55,600 tai E, voit pahimmassa tapauksessa täytyy tarkistaa koko tietorakenne, vuonna 751 00:31:55,600 --> 00:31:59,480 jolloin se lankeaa jotain lineaarista pöydän koko. 752 00:31:59,480 --> 00:32:00,920 >> Niin okei, minä korjata. 753 00:32:00,920 --> 00:32:04,200 Ongelmana tässä on se, että minulla oli 26 elementtejä tässä array. 754 00:32:04,200 --> 00:32:05,000 Anna minun muuttaa sitä. 755 00:32:05,000 --> 00:32:06,010 Oho. 756 00:32:06,010 --> 00:32:10,600 Saanen muuttaa sitä niin, että melko hyvinvointia koko 26 yhteensä, huomaa pohjassa 757 00:32:10,600 --> 00:32:12,720 indeksin tulee vaihtaa n miinus 1. 758 00:32:12,720 --> 00:32:16,610 Jos 26 on selvästi liian pieni ihmisille " nimiä, koska siellä on tuhansia 759 00:32:16,610 --> 00:32:20,830 nimet maailmassa, haluan vain tehdä 100 tai 1000 tai 10000. 760 00:32:20,830 --> 00:32:22,960 Haluan vain jakaa paljon enemmän tilaa. 761 00:32:22,960 --> 00:32:27,230 >> No se ei välttämättä vähene todennäköisyys, että meillä ei ole kahta 762 00:32:27,230 --> 00:32:31,510 ihmiset nimet alkavat, ja niin, olit menossa yrittää laittaa 763 00:32:31,510 --> 00:32:33,120 nimet paikassa nolla edelleen. 764 00:32:33,120 --> 00:32:36,850 He vielä törmäävät, joka tarkoittaa tarvitsemme vielä ratkaisu laittaa 765 00:32:36,850 --> 00:32:41,020 Alice ja Aaron ja Alicia ja muut nimet alkavat muualla. 766 00:32:41,020 --> 00:32:43,460 Mutta kuinka suuri ongelma tämä on? 767 00:32:43,460 --> 00:32:46,870 Mikä todennäköisyys, että olet on törmäyksiä tiedot 768 00:32:46,870 --> 00:32:48,240 rakenne näin? 769 00:32:48,240 --> 00:32:52,570 >> No, minäpä - Palaamme tähän kysymykseen täällä. 770 00:32:52,570 --> 00:32:55,530 Ja katsokaa kuinka voisimme ratkaista se ensin. 771 00:32:55,530 --> 00:32:58,480 Saanen vetää tätä ehdotusta täällä. 772 00:32:58,480 --> 00:33:02,020 Mitä me vain kuvattu on algoritmi, heuristista kutsutaan lineaarinen 773 00:33:02,020 --> 00:33:05,030 hyvää siitä, että jos olet yrittänyt lisätä jotain täällä tiedot 774 00:33:05,030 --> 00:33:08,920 rakenne, jota kutsutaan hash table, ja ei ole tilaa siellä, 775 00:33:08,920 --> 00:33:12,000 todella koetin tietorakenne tarkkailun, on tämä käytettävissä? 776 00:33:12,000 --> 00:33:13,430 Onko tämä Saatavilla on tämä käytettävissä? 777 00:33:13,430 --> 00:33:13,980 Onko tämä saatavilla? 778 00:33:13,980 --> 00:33:17,550 Ja kun se vihdoin on, asetat nimi, joka alun perin 779 00:33:17,550 --> 00:33:19,370 muualla kyseisessä paikassa. 780 00:33:19,370 --> 00:33:23,360 Mutta pahimmassa tapauksessa vain paikalla saattaa olla hyvin pohjaan tietoja 781 00:33:23,360 --> 00:33:25,090 rakenne, aivan lopussa array. 782 00:33:25,090 --> 00:33:30,130 >> Joten lineaarinen luotaa, pahimmassa tapauksessa lankeaa lineaarinen algoritmi, jossa 783 00:33:30,130 --> 00:33:34,500 Aaron, jos hän sattuu lisätään viime Tässä tietorakenne, hän voisi 784 00:33:34,500 --> 00:33:39,540 törmäävät tämä ensimmäinen paikka, mutta sitten lopulta huono tuuri aivan lopussa. 785 00:33:39,540 --> 00:33:43,940 Joten tämä ei ole pysyvä aika pyhä Graal meille. 786 00:33:43,940 --> 00:33:47,650 Tämä lähestymistapa lisäämällä elementtejä tietojen rakennetta kutsutaan hash 787 00:33:47,650 --> 00:33:52,050 taulukko ei näytä olevan vakioaikavälein ainakaan yleisessä tapauksessa. 788 00:33:52,050 --> 00:33:54,000 Se voi siirtää joksikin lineaarinen. 789 00:33:54,000 --> 00:33:56,970 >> Joten mitä jos päätämme törmäykset hieman eri tavalla? 790 00:33:56,970 --> 00:34:00,740 Joten tässä on kehittyneempi lähestymistapa mitä vielä 791 00:34:00,740 --> 00:34:02,800 kutsutaan tiiviste. 792 00:34:02,800 --> 00:34:05,890 Ja hash, kuten syrjään, mitä Siis on indeksi, joka 793 00:34:05,890 --> 00:34:07,070 Aiemmin viittasin. 794 00:34:07,070 --> 00:34:09,810 Hash jotain voi olla mielletään verbi. 795 00:34:09,810 --> 00:34:13,690 >> Joten jos hash Alicen nimi, hash funktio, niin sanotusti, 796 00:34:13,690 --> 00:34:14,710 tulee palauttaa numeron. 797 00:34:14,710 --> 00:34:18,199 Tässä tapauksessa on nolla, jos hän kuuluu osoitteessa sijainti nolla, yksi, jos hän kuuluu osoitteessa 798 00:34:18,199 --> 00:34:20,000 sijainti yksi, ja niin edelleen. 799 00:34:20,000 --> 00:34:24,360 Joten minun hash-toiminto on ollut toistaiseksi Super yksinkertainen, vain katsomalla 800 00:34:24,360 --> 00:34:26,159 ensimmäinen kirjain jonkun nimen. 801 00:34:26,159 --> 00:34:29,090 Mutta hajautusfunktio vie niin input palan tietoja, 802 00:34:29,090 --> 00:34:30,210 string, int riippumatta. 803 00:34:30,210 --> 00:34:32,239 Ja se sylkee tyypillisesti useita. 804 00:34:32,239 --> 00:34:35,739 Ja että määrä on silloin, että tiedot elementti kuuluu tietorakenne 805 00:34:35,739 --> 00:34:37,800 tunnetaan täällä tiiviste. 806 00:34:37,800 --> 00:34:41,400 >> Joten intuitiivisesti, tämä on hieman eri yhteydessä. 807 00:34:41,400 --> 00:34:44,170 Tämä itse asiassa viittaa esimerkiksi joihin syntymäpäivät, jossa 808 00:34:44,170 --> 00:34:46,850 saattaa olla niin monta kuin 31 päivää kuussa. 809 00:34:46,850 --> 00:34:52,239 Mutta mitä tämä henkilö päättää tehdä törmäystilanteessa? 810 00:34:52,239 --> 00:34:55,304 Yhteydessä nyt, ei törmäys nimiä, mutta törmäys syntymäpäivistä, 811 00:34:55,304 --> 00:35:00,760 jos kaksi ihmistä on sama syntymäpäivä on 2. lokakuun esimerkiksi. 812 00:35:00,760 --> 00:35:02,120 >> Opiskelija: [kuultavissa]. 813 00:35:02,120 --> 00:35:05,010 >> SPEAKER 1: Joo, joten tässä meillä on hankittua linkitetyt. 814 00:35:05,010 --> 00:35:07,830 Niin se näyttää hieman eri tavalla kuin olemme tehneet jo aiemmin. 815 00:35:07,830 --> 00:35:10,790 Mutta me näytämme on array vasemmalla puolella. 816 00:35:10,790 --> 00:35:13,230 Se on yksi indeksi, ilman erityistä syytä. 817 00:35:13,230 --> 00:35:14,630 Mutta se on silti array. 818 00:35:14,630 --> 00:35:16,160 Se on joukko osoittimia. 819 00:35:16,160 --> 00:35:20,670 Ja jokainen näistä seikoista, kukin Näissä piireissä tai viiltää - slash 820 00:35:20,670 --> 00:35:23,970 edustavat null - jokainen viitteitä on ilmeisesti osoittaa 821 00:35:23,970 --> 00:35:25,730 mitä tietoja rakenne? 822 00:35:25,730 --> 00:35:26,890 Linkitetty lista. 823 00:35:26,890 --> 00:35:30,530 >> Joten nyt meillä on mahdollisuus kova koodi ohjelmaamme 824 00:35:30,530 --> 00:35:32,010 pöydän koko. 825 00:35:32,010 --> 00:35:35,360 Tässä tapauksessa tiedämme, että koskaan enintään 31 päivää kuukaudessa. 826 00:35:35,360 --> 00:35:38,480 Niin kova koodaus arvo kuin 31 kohtuullisia yhteydessä. 827 00:35:38,480 --> 00:35:42,700 Yhteydessä nimet, kova koodaus 26 ei ole kohtuuton, sen kansan 828 00:35:42,700 --> 00:35:46,340 nimet vain aloittaa, esimerkiksi aakkoset johon Z. 829 00:35:46,340 --> 00:35:50,180 >> Voimme ahtaa ne kaikki, että tiedot rakennetta niin kauan kuin, kun saamme 830 00:35:50,180 --> 00:35:55,330 törmäys, emme laita nimiä täällä, me sen sijaan ajatella näiden solujen 831 00:35:55,330 --> 00:36:00,270 ei niin jouset itse, mutta osoittimia, esimerkiksi Alice. 832 00:36:00,270 --> 00:36:03,660 Ja sitten Alice voi olla toinen osoitin toiseen alkavan nimen 833 00:36:03,660 --> 00:36:06,150 A. Ja Bob todella menee tänne. 834 00:36:06,150 --> 00:36:10,850 >> Ja jos siellä on toinen nimi alkaa B, hän päätyy tänne. 835 00:36:10,850 --> 00:36:15,070 Ja niin jokainen osia taulukossa kaksi, jos suunniteltu tätä 836 00:36:15,070 --> 00:36:17,350 hieman enemmän taitavasti - 837 00:36:17,350 --> 00:36:18,125 tulla - 838 00:36:18,125 --> 00:36:22,950 jos olemme suunnitelleet tätä hieman taitavasti, tulee nyt mukautuva tiedot 839 00:36:22,950 --> 00:36:27,720 rakenne, jossa ei ole ehdoton raja kuinka monta elementtiä voit lisätä 840 00:36:27,720 --> 00:36:30,700 siihen, koska jos sinulla on törmäys, se käy hyvin. 841 00:36:30,700 --> 00:36:34,690 Vain mennä eteenpäin ja liittää sen mitä näimme vähän sitten oli 842 00:36:34,690 --> 00:36:38,290 tunnetaan linkitetty lista. 843 00:36:38,290 --> 00:36:39,690 >> No katsotaanpa tauon vain hetken. 844 00:36:39,690 --> 00:36:42,570 Mikä on todennäköisyys törmäyksen ensimmäinen paikka? 845 00:36:42,570 --> 00:36:45,480 Oikea, ehkä olen yli ajattelu, ehkä Olen yli Engineering tätä ongelmaa, 846 00:36:45,480 --> 00:36:46,370 koska tiedät mitä? 847 00:36:46,370 --> 00:36:49,070 Kyllä, voin keksiä mielivaltaisia esimerkkejä päältä pääni, kuten 848 00:36:49,070 --> 00:36:52,870 Allison ja Aaron, mutta todellisuudessa Annettu tasaisen jakautumisen 849 00:36:52,870 --> 00:36:56,990 tuloa, että on joitakin satunnaisia ​​lisäyksiä osaksi tietorakenne, mitä todella on 850 00:36:56,990 --> 00:36:58,580 todennäköisyys törmäyksen? 851 00:36:58,580 --> 00:37:01,670 No kääntyy pois, se on itse asiassa Super High. 852 00:37:01,670 --> 00:37:03,850 Minäpä yleistää tätä Ongelmana on, kuten tässä. 853 00:37:03,850 --> 00:37:08,890 >> Joten huoneessa n CS50 opiskelijoita, mitä todennäköisyys, että ainakin 854 00:37:08,890 --> 00:37:11,010 kaksi opiskelijaa huoneessa on sama syntymäpäivä? 855 00:37:11,010 --> 00:37:13,346 Joten ei mitä. muutaman hund - 856 00:37:13,346 --> 00:37:16,790 200, 300 ihmistä täällä ja useita sata ihmistä kotona tänään. 857 00:37:16,790 --> 00:37:20,670 Joten jos halusi kysyä itseltämme, mitä on todennäköisyys kaksi ihmistä 858 00:37:20,670 --> 00:37:23,930 tässä huoneessa, jolla on sama syntymäpäivä, Voimme selvittää tämän. 859 00:37:23,930 --> 00:37:26,250 Ja väitän todella olemassa kaksi ihmisiä, joilla on sama syntymäpäivä. 860 00:37:26,250 --> 00:37:29,560 >> Esimerkiksi, ei kukaan on syntymäpäivä tänään? 861 00:37:29,560 --> 00:37:31,340 Eilen? 862 00:37:31,340 --> 00:37:32,590 Huomenna? 863 00:37:32,590 --> 00:37:35,980 Okei, joten se tuntuu aion täytyy tehdä tämä 363 tai niin enemmän 864 00:37:35,980 --> 00:37:39,500 kertaa todella selvittää jos meillä on törmäys. 865 00:37:39,500 --> 00:37:42,350 Tai voisimme vain tehdä tämän matemaattisesti eikä ikävän 866 00:37:42,350 --> 00:37:43,200 näin. 867 00:37:43,200 --> 00:37:44,500 Ja ehdottaa seuraavaa. 868 00:37:44,500 --> 00:37:48,740 >> Joten ehdotan, että voisimme mallintaa todennäköisyys kaksi ihmistä, joilla 869 00:37:48,740 --> 00:37:55,320 sama syntymäpäivä kuin todennäköisyydellä 1 miinus todennäköisyys ei ole sellainen, jossa 870 00:37:55,320 --> 00:37:56,290 sama syntymäpäivä. 871 00:37:56,290 --> 00:37:59,960 Niin saat tämän, ja tämä on vain fancy tapa kirjoittaa tätä, sillä 872 00:37:59,960 --> 00:38:03,090 Ensimmäinen henkilö huoneessa, hän voi olla mikä tahansa yksi mahdollinen 873 00:38:03,090 --> 00:38:07,370 synttärit olettaen 365 päivää vuodessa, pyydän anteeksi henkilöiden 874 00:38:07,370 --> 00:38:08,760 29 helmikuu syntymäpäivä. 875 00:38:08,760 --> 00:38:13,470 >> Joten ensimmäinen henkilö tässä huoneessa on ilmainen olla minkä tahansa määrän synttärit 876 00:38:13,470 --> 00:38:18,280 ulos 365 mahdollisuudet niin, että teemme sen 365 jaettuna 365, 877 00:38:18,280 --> 00:38:18,990 , joka on yksi. 878 00:38:18,990 --> 00:38:22,700 Seuraava henkilö huoneessa, jos tavoite on välttää törmäys, voi vain 879 00:38:22,700 --> 00:38:26,460 on hänen syntymäpäivänsä, miten monia mahdollisia päivää? 880 00:38:26,460 --> 00:38:27,610 364. 881 00:38:27,610 --> 00:38:31,430 Joten toinen termi tämä ilmaus on lähinnä tekee, että matematiikka meille 882 00:38:31,430 --> 00:38:33,460 vähentämällä pois yksi mahdollinen päivä. 883 00:38:33,460 --> 00:38:36,390 Ja sitten seuraavana päivänä, seuraavana päivänä, Seuraavana päivänä alas kokonaismäärä 884 00:38:36,390 --> 00:38:38,100 ihmisiä huoneeseen. 885 00:38:38,100 --> 00:38:41,290 >> Ja jos me sitten harkita, mikä sitten on todennäköisyys ei ulottaa kaikkien 886 00:38:41,290 --> 00:38:45,265 ainutlaatuinen syntymäpäivät, mutta jälleen 1 miinus että, mitä saamme on ilmaus 887 00:38:45,265 --> 00:38:47,810 että voi hyvin fancifully näyttää tältä. 888 00:38:47,810 --> 00:38:50,330 Mutta se on mielenkiintoisempaa tarkastella visuaalisesti. 889 00:38:50,330 --> 00:38:55,120 Tämä on kaavio, jossa x-akseli on ihmisten määrä huoneessa, 890 00:38:55,120 --> 00:38:56,180 määrä syntymäpäiviä. 891 00:38:56,180 --> 00:38:59,840 Y-akselilla on todennäköisyys Törmäyksen kaksi ihmistä 892 00:38:59,840 --> 00:39:01,230 jolla on sama syntymäpäivä. 893 00:39:01,230 --> 00:39:05,020 >> Ja takeaway tämä kaari että heti kun saat pitävän 40 894 00:39:05,020 --> 00:39:11,110 opiskelijat, olet ylös 90% todennäköisyydellä combinatorically kahden 895 00:39:11,110 --> 00:39:13,550 henkilöä tai enemmän ottaa sama syntymäpäivä. 896 00:39:13,550 --> 00:39:18,600 Ja kun saat pitävän 58 ihmistä on lähes 100%: n mahdollisuus kahden 897 00:39:18,600 --> 00:39:21,310 ihmisiä huoneeseen ovat menossa sama syntymäpäivä, vaikka siellä 898 00:39:21,310 --> 00:39:26,650 365 tai 366 mahdollista kauhat ja vain 58 henkilöä huoneessa. 899 00:39:26,650 --> 00:39:29,900 Vain tilastollisesti olet todennäköisesti saada törmäykset, jotka lyhyellä 900 00:39:29,900 --> 00:39:31,810 motivoi tätä keskustelua. 901 00:39:31,810 --> 00:39:35,890 Että vaikka saamme fancy täällä, ja alkaa ottaa näitä ketjuja, olemme yhä 902 00:39:35,890 --> 00:39:36,950 menossa on törmäyksiä. 903 00:39:36,950 --> 00:39:42,710 >> Joten Tässä herääkin kysymys, mikä on aiheutuvia kustannuksia lisäykset ja poistot 904 00:39:42,710 --> 00:39:44,850 osaksi tietorakenne näin? 905 00:39:44,850 --> 00:39:46,630 No saanen ehdottaa - 906 00:39:46,630 --> 00:39:51,570 ja anna minun mennä takaisin ruudun yli täällä - jos meillä on n elementtejä 907 00:39:51,570 --> 00:39:56,330 lista, joten jos yritämme lisätä n alkiota, ja meillä on 908 00:39:56,330 --> 00:39:58,050 kuinka monta yhteensä kauhat? 909 00:39:58,050 --> 00:40:03,450 Sanotaan 31 yhteensä kauhat tapauksessa syntymäpäiviä. 910 00:40:03,450 --> 00:40:09,240 Mitä enimmäispituus yksi Näiden ketjujen mahdollisesti? 911 00:40:09,240 --> 00:40:12,670 >> Jos taas on olemassa 31 mahdollista syntymäpäivät tiettynä kuukautena. 912 00:40:12,670 --> 00:40:14,580 Ja me vain paakkuuntuu kaikille - 913 00:40:14,580 --> 00:40:15,580 Oikeastaan ​​se on tyhmä esimerkki. 914 00:40:15,580 --> 00:40:16,960 Tehdään 26. sijaan. 915 00:40:16,960 --> 00:40:20,890 Joten jos todella on ihmisiä, joiden nimet aloittaa-Z, mikä antaa 916 00:40:20,890 --> 00:40:22,780 us 26 mahdollisuuksia. 917 00:40:22,780 --> 00:40:25,920 Ja me tietorakenteen kuten yksi me vain näki, jolloin meillä on 918 00:40:25,920 --> 00:40:30,210 joukko osoittimia, joista jokainen pistettä linkitetty lista, jossa 919 00:40:30,210 --> 00:40:32,360 Ensimmäinen luettelo on kaikille nimellä Alice. 920 00:40:32,360 --> 00:40:35,770 Toisessa luettelossa on jokaisen kanssa alkavan nimen, joka alkaa 921 00:40:35,770 --> 00:40:36,980 B ja niin edelleen. 922 00:40:36,980 --> 00:40:41,020 >> Mikä on todennäköisesti pituus kunkin nämä luettelot jos oletamme nice clean 923 00:40:41,020 --> 00:40:45,410 jakelu nimet AZ koko tietorakenne? 924 00:40:45,410 --> 00:40:50,210 On n ihmisiä tietorakenne jaettuna 26, jos ne ovat kauniisti 925 00:40:50,210 --> 00:40:52,110 hajallaan koko tietorakenne. 926 00:40:52,110 --> 00:40:54,970 Joten pituus kunkin näistä ketjut on n jaettu 26. 927 00:40:54,970 --> 00:40:57,380 Mutta iso O merkintä, mikä se on? 928 00:40:57,380 --> 00:41:00,100 929 00:41:00,100 --> 00:41:02,440 Mikä on todella? 930 00:41:02,440 --> 00:41:04,150 Joten se on oikeastaan ​​vain n, eikö? 931 00:41:04,150 --> 00:41:06,620 Koska olemme sanoneet aiemmin, että hyi jaat 26. 932 00:41:06,620 --> 00:41:08,710 Kyllä, todellisuudessa se on nopeampi. 933 00:41:08,710 --> 00:41:12,720 Mutta teoriassa, se ei ole pohjimmiltaan kaikki nopeammin. 934 00:41:12,720 --> 00:41:16,040 >> Joten meillä ei tunnu olevan kovin paljon lähempänä tätä pyhä Graal. 935 00:41:16,040 --> 00:41:17,750 Itse asiassa tämä on vain lineaarista aikaa. 936 00:41:17,750 --> 00:41:20,790 Pahus, tässä vaiheessa, miksi emme käyttää vain yhtä valtava linkitetty lista? 937 00:41:20,790 --> 00:41:23,510 Miksi emme vain käytä yhtä suuri array tallentaa nimiä 938 00:41:23,510 --> 00:41:25,010 jokainen huone? 939 00:41:25,010 --> 00:41:28,280 No, on siellä vielä jotain pakottavia noin tiiviste? 940 00:41:28,280 --> 00:41:30,810 Onko vielä jotain pakottavia noin tietorakenne 941 00:41:30,810 --> 00:41:33,940 joka näyttää tältä? 942 00:41:33,940 --> 00:41:35,182 Tämä. 943 00:41:35,182 --> 00:41:37,050 >> Opiskelija: [kuultavissa]. 944 00:41:37,050 --> 00:41:39,840 >> SPEAKER 1: Oikea, ja uudelleen, jos se on vain lineaarinen algoritmi, ja 945 00:41:39,840 --> 00:41:42,780 lineaarisen ajan tietorakenne, miksi en vain tallentaa jokaisen nimen iso 946 00:41:42,780 --> 00:41:44,210 array, tai iso linkitetty lista? 947 00:41:44,210 --> 00:41:47,010 Ja lopettamaan CS niin paljon vaikeampaa kuin sen pitäisi olla? 948 00:41:47,010 --> 00:41:49,600 949 00:41:49,600 --> 00:41:53,190 Mikä on vakuuttava tästä, vaikka vaikka en naarmuuntunut sitä? 950 00:41:53,190 --> 00:41:54,930 >> Opiskelija: [kuultavissa]. 951 00:41:54,930 --> 00:41:57,040 >> SPEAKER 1: Lisäykset eivät ole? 952 00:41:57,040 --> 00:41:58,140 Kallis enää. 953 00:41:58,140 --> 00:42:03,390 Joten lisäyksiä mahdollisesti voisi vielä olla jatkuvaa aikaa, vaikka tietosi 954 00:42:03,390 --> 00:42:07,910 rakenne näyttää tältä, joukko osoittimia, joista kukin on suunnattu 955 00:42:07,910 --> 00:42:09,550 mahdollisesti linkitetty lista. 956 00:42:09,550 --> 00:42:15,220 Miten voit saavuttaa jatkuvasti kerran asennus nimiä? 957 00:42:15,220 --> 00:42:16,280 Kiinni se etu, oikea? 958 00:42:16,280 --> 00:42:19,290 >> Jos uhraamme suunnittelu maalin aikaisemmin, jos halusimme säilyttää 959 00:42:19,290 --> 00:42:22,650 kaikkien nimet, esimerkiksi lajitellaan, tai kaikki numerot lavalla lajitellaan, 960 00:42:22,650 --> 00:42:25,020 Oletetaan, että meillä on lajittelemattoman linkitetty lista. 961 00:42:25,020 --> 00:42:29,960 Se vain maksaa meille yksi tai kaksi vaihetta, kuten tapauksessa Ben ja Brian 962 00:42:29,960 --> 00:42:32,750 aikaisemmin, lisätä elementin listan alkuun. 963 00:42:32,750 --> 00:42:36,090 Joten jos emme välitä lajittelu kaikki nimet alkavat tai kaikki 964 00:42:36,090 --> 00:42:39,660 nimet alkavat B, voimme silti saavuttamiseksi vakioaikaisia ​​paikoilleen. 965 00:42:39,660 --> 00:42:43,900 Nyt etsii Alice tai Bob tai nimi yleisemmin on vielä mitä? 966 00:42:43,900 --> 00:42:48,100 Se on iso O n jaettuna 26, vuonna ihanteellinen tapaus, jossa kaikki ovat tasaisesti 967 00:42:48,100 --> 00:42:51,190 jaetaan, missä on niin paljon n kuin on Z: n, joka on luultavasti 968 00:42:51,190 --> 00:42:52,220 epärealistinen. 969 00:42:52,220 --> 00:42:53,880 Mutta se on silti lineaarinen. 970 00:42:53,880 --> 00:42:57,120 >> Mutta täällä, palaamme kohta ja asymptoottinen merkintä on 971 00:42:57,120 --> 00:42:58,600 teoriassa totta. 972 00:42:58,600 --> 00:43:02,960 Mutta todellisessa maailmassa, jos väitän, että minun ohjelma voi tehdä jotain 26 kertaa 973 00:43:02,960 --> 00:43:06,210 nopeammin kuin omasi, jonka ohjelma aiotte mieluummin käyttää? 974 00:43:06,210 --> 00:43:09,660 Sinun tai minun, joka on 26 kertaa nopeampi? 975 00:43:09,660 --> 00:43:14,320 Realistisesti, henkilö, jonka on 26 kertaa nopeammin, vaikka teoriassa 976 00:43:14,320 --> 00:43:18,790 algoritmit käyttää samoissa asymptoottinen ajoaika. 977 00:43:18,790 --> 00:43:20,940 >> Saanen ehdottaa eri ratkaisu kokonaan. 978 00:43:20,940 --> 00:43:24,380 Ja jos tämä ei puhaltaa mieltäsi, olemme ulkona tietorakenteita. 979 00:43:24,380 --> 00:43:27,420 Joten tämä on se trie - 980 00:43:27,420 --> 00:43:28,520 Tällainen tyhmä nimi. 981 00:43:28,520 --> 00:43:32,880 Se tulee noudon ja sana on kirjoitettu trie, t-r-i-e, koska 982 00:43:32,880 --> 00:43:34,450 Tietenkin haku kuulostaa trie. 983 00:43:34,450 --> 00:43:36,580 Mutta se on historiaa sanan trie. 984 00:43:36,580 --> 00:43:40,980 >> Joten trie on todellakin jonkinlainen puu, ja se on myös pelata kyseistä sanaa. 985 00:43:40,980 --> 00:43:46,330 Ja vaikka et oikein näe sitä tämän visualisointi, triestä on 986 00:43:46,330 --> 00:43:50,790 puun rakenne, kuten sukupuun yksi kantaisä yläosassa ja paljon 987 00:43:50,790 --> 00:43:54,530 ja lapsenlapset ja lapsenlapset kuten lehdet pohjassa. 988 00:43:54,530 --> 00:43:58,100 Mutta jokainen solmu triestä on jono. 989 00:43:58,100 --> 00:44:00,680 Ja se on array - ja lähdetään pelkistettyjen hetkeksi - se on 990 00:44:00,680 --> 00:44:04,600 array, tässä tapauksessa, koon 26, jossa jokainen solmu taas on taulukon koko 991 00:44:04,600 --> 00:44:09,000 26, jossa zeroth tekijä, että array edustaa, ja viime 992 00:44:09,000 --> 00:44:11,810 elementti jokaisessa tällaisessa array edustaa Z. 993 00:44:11,810 --> 00:44:15,520 >> Joten ehdotan, niin, että nämä tiedot rakenne, joka tunnetaan trie, voi olla 994 00:44:15,520 --> 00:44:17,600 käytetään myös tallentaa sanat. 995 00:44:17,600 --> 00:44:21,740 Näimme hetki sitten, miten voisimme säilyttää sanoja, tai tässä tapauksessa nimiä, ja me 996 00:44:21,740 --> 00:44:25,440 näki aikaisemmin kuinka voimme tallentaa numeroita, mutta jos keskitymme nimiä tai jouset 997 00:44:25,440 --> 00:44:27,460 täällä, huomaa, mitä mielenkiintoista. 998 00:44:27,460 --> 00:44:32,210 Väitän, että nimi Maxwell on sisällä tämän datarakenteen. 999 00:44:32,210 --> 00:44:33,730 Missä näet Maxwell? 1000 00:44:33,730 --> 00:44:35,140 >> Opiskelija: [kuultavissa]. 1001 00:44:35,140 --> 00:44:36,240 >> SPEAKER 1: Vasemmalla. 1002 00:44:36,240 --> 00:44:39,910 Joten mitä mielenkiintoista tässä tiedot rakenne on kuin myymälä 1003 00:44:39,910 --> 00:44:46,200 string M-A-X-W-E-L-L kenoviivan nolla, kaikki contiguously, mitä sen sijaan tehdä 1004 00:44:46,200 --> 00:44:46,890 seuraa. 1005 00:44:46,890 --> 00:44:50,510 Jos tämä on trie kuten tietojen rakenteesta, kukin jonka solmut on jälleen array, 1006 00:44:50,510 --> 00:44:54,650 ja haluat tallentaa Maxwell, ensin indeksi ja niin juuri solmun, joten 1007 00:44:54,650 --> 00:44:57,810 puhua, ylin solmu, paikassa M, oikea, joten 1008 00:44:57,810 --> 00:44:59,160 karkeasti keskelle. 1009 00:44:59,160 --> 00:45:03,740 Ja sitten sieltä, voit seurata osoitin lapsisolmuilleen, niin sanoakseni. 1010 00:45:03,740 --> 00:45:06,150 Joten sukupuun mielessä, voit seurata sitä alaspäin. 1011 00:45:06,150 --> 00:45:09,030 Ja jotka johtavat sinut toiseen solmuun Vasemmalla, joka on 1012 00:45:09,030 --> 00:45:10,540 vain toinen joukko. 1013 00:45:10,540 --> 00:45:14,710 >> Ja sitten jos haluat tallentaa Maxwell, löydät osoittimen, joka edustaa 1014 00:45:14,710 --> 00:45:16,430 , Joka on tämä yksi täällä. 1015 00:45:16,430 --> 00:45:17,840 Sitten menet seuraavaan solmuun. 1016 00:45:17,840 --> 00:45:20,100 Ja ilmoitus - siksi kuvan hieman pettää - 1017 00:45:20,100 --> 00:45:21,990 tämä solmu näyttää erittäin pieniä. 1018 00:45:21,990 --> 00:45:26,050 Mutta tämän oikealla puolella on Y ja Z. Se on vain tekijä on katkaistu 1019 00:45:26,050 --> 00:45:27,630 kuvaa niin, että olet itse nähdä asiat. 1020 00:45:27,630 --> 00:45:30,400 Muuten tämä kuva olisi erittäin laaja. 1021 00:45:30,400 --> 00:45:36,180 Nyt voit indeksinä sijainti X, niin W, sitten E, niin L, sitten L. Mikä sitten 1022 00:45:36,180 --> 00:45:37,380 tämä uteliaisuus? 1023 00:45:37,380 --> 00:45:41,250 >> No, jos käytät tällaisia ​​uusia ottaa tallentamisesta merkkijono 1024 00:45:41,250 --> 00:45:44,500 tietorakenne, sinun pitää vielä olennaisesti ruksata tiedoissa 1025 00:45:44,500 --> 00:45:47,250 rakenne, joka sana loppuu tähän. 1026 00:45:47,250 --> 00:45:50,830 Toisin sanoen jokainen näistä solmuista jotenkin muistaa, että meillä 1027 00:45:50,830 --> 00:45:53,500 oikeastaan ​​seurannut kaikki nämä viitteet ja lähtevät hieman 1028 00:45:53,500 --> 00:45:58,370 leivän sisus alareunassa täällä tämän rakenne osoittaa M-A-X-W-E-L-L on 1029 00:45:58,370 --> 00:46:00,230 todellakin tässä tietorakenne. 1030 00:46:00,230 --> 00:46:02,040 >> Joten voisimme tehdä tämän seuraavasti. 1031 00:46:02,040 --> 00:46:06,810 Jokainen solmut kuvan me vain Sahassa on yksi, joukko koko 27. 1032 00:46:06,810 --> 00:46:10,550 Ja se on nyt 27, koska p asetettu kuusi, me todella antaa sinulle pilkullisilla 1033 00:46:10,550 --> 00:46:13,590 jotta voimme olla nimiä, kuten O'Reilly ja toiset heittomerkit. 1034 00:46:13,590 --> 00:46:14,820 Mutta sama ajatus. 1035 00:46:14,820 --> 00:46:17,710 Jokainen niistä on array pistettä struct 1036 00:46:17,710 --> 00:46:19,320 solmu, joten vain solmu. 1037 00:46:19,320 --> 00:46:21,430 Joten tämä on hyvin mieleen meidän linkitetyn listan. 1038 00:46:21,430 --> 00:46:24,550 >> Ja sitten minulla on totuusarvo, joissa pääsen soittaa sana, joka on vain olemaan 1039 00:46:24,550 --> 00:46:29,120 true, jos sana päättyy tämän solmu puussa. 1040 00:46:29,120 --> 00:46:32,870 Se tehokkaasti edustaa hieman kolmio näimme hetki sitten. 1041 00:46:32,870 --> 00:46:37,190 Joten jos sana päättyy, että solmun puu, että sana alalla on totta, 1042 00:46:37,190 --> 00:46:41,990 joka on käsitteellisesti tarkkailun pois, tai olemme piirustus tämän kolmion, kyllä ​​siellä 1043 00:46:41,990 --> 00:46:44,080 on sana täällä. 1044 00:46:44,080 --> 00:46:45,120 >> Joten tämä on trie. 1045 00:46:45,120 --> 00:46:48,540 Ja nyt kysymys on, mitä on sen käyntiaika? 1046 00:46:48,540 --> 00:46:49,930 Onko se iso O n? 1047 00:46:49,930 --> 00:46:51,410 Onko se jotain muuta? 1048 00:46:51,410 --> 00:46:57,330 No, jos olet n nimiä tällä tiedot rakenne, Maxwell on vain yksi 1049 00:46:57,330 --> 00:47:02,330 heille, mitä on käyntiaika lisäämällä tai löytää Maxwell? 1050 00:47:02,330 --> 00:47:06,230 1051 00:47:06,230 --> 00:47:09,050 Mitä käyntiaika lisäämällä Maxwell? 1052 00:47:09,050 --> 00:47:11,740 Jos on olemassa n muut nimet jo pöytään? 1053 00:47:11,740 --> 00:47:12,507 Niin? 1054 00:47:12,507 --> 00:47:15,429 >> Opiskelija: [kuultavissa]. 1055 00:47:15,429 --> 00:47:17,550 >> SPEAKER 1: Joo, se on pituus nimen, eikö? 1056 00:47:17,550 --> 00:47:24,420 Niin M--x-w-e-l-l niin se tuntuu tämä algoritmi on iso O seitsemän. 1057 00:47:24,420 --> 00:47:26,580 Nyt, tietenkin, nimi pituus vaihtelee. 1058 00:47:26,580 --> 00:47:27,380 Ehkä se on lyhyt nimi. 1059 00:47:27,380 --> 00:47:28,600 Ehkä se on pidempi nimi. 1060 00:47:28,600 --> 00:47:33,390 Mutta mitä Tärkeintä tässä on, että se jatkuva numero. 1061 00:47:33,390 --> 00:47:36,810 Ja ehkä se ei oikeastaan ​​ole vakio, mutta Jumala, jos realistisesti, vuonna 1062 00:47:36,810 --> 00:47:41,570 sanakirja, on luultavasti joitakin raja on kirjainten määrä 1063 00:47:41,570 --> 00:47:43,820 henkilön nimi tietyssä maassa. 1064 00:47:43,820 --> 00:47:46,940 >> Ja niin voimme olettaa, että -arvo on vakio. 1065 00:47:46,940 --> 00:47:47,750 En tiedä mitä se on. 1066 00:47:47,750 --> 00:47:50,440 Se on luultavasti suurempi kuin mielestämme se on. 1067 00:47:50,440 --> 00:47:52,720 Koska aina on joku nurkka tapauksessa hullu pitkä nimi. 1068 00:47:52,720 --> 00:47:56,360 Joten kutsua k, mutta se on silti jatkuva oletettavasti koska jokainen 1069 00:47:56,360 --> 00:48:00,190 nimi maailmassa, ainakin erityisesti maa, että pituus tai 1070 00:48:00,190 --> 00:48:01,780 lyhyempi, joten se on vakiona. 1071 00:48:01,780 --> 00:48:04,490 Mutta kun olemme sanoneet jotain on iso O vakioarvo, mikä tuo 1072 00:48:04,490 --> 00:48:07,760 todella vastaa? 1073 00:48:07,760 --> 00:48:10,420 Se on todella sama asia sanoneen vakioaikaisia. 1074 00:48:10,420 --> 00:48:11,530 >> Nyt olemme tavallaan huijausta, eikö? 1075 00:48:11,530 --> 00:48:15,340 Olemme eräänlainen hyödyntämällä teoriaa täällä sanoa, että hyvin, järjestys k on 1076 00:48:15,340 --> 00:48:17,450 oikeastaan ​​vain tilata yhden, ja se on jatkuvasti ajan. 1077 00:48:17,450 --> 00:48:18,200 Mutta se todella on. 1078 00:48:18,200 --> 00:48:22,550 Koska keskeinen oivallus on, että jos meillä on n nimet jo tässä 1079 00:48:22,550 --> 00:48:26,010 tietorakenne, ja lisäämme Maxwell, on paljon aikaa se vie meidät 1080 00:48:26,010 --> 00:48:29,530 aseta Maxwell lainkaan vaikutusta kuinka monet muut ihmiset 1081 00:48:29,530 --> 00:48:31,100 ovat tietorakenne? 1082 00:48:31,100 --> 00:48:31,670 Ei näytä olevan. 1083 00:48:31,670 --> 00:48:36,280 Jos olisin miljardia enemmän elementtejä tähän trie ja aseta Maxwell, on 1084 00:48:36,280 --> 00:48:38,650 hän lainkaan vaikutusta? 1085 00:48:38,650 --> 00:48:39,050 Ei. 1086 00:48:39,050 --> 00:48:42,950 Ja se on kuin mikään päivän tiedot rakenteet olemme nähneet tähän mennessä, jos 1087 00:48:42,950 --> 00:48:46,820 käyntiaika algoritmisi on täysin riippumaton siitä, kuinka paljon 1088 00:48:46,820 --> 00:48:51,430 tavaraa on tai ei ole jo siitä, että tietorakenne. 1089 00:48:51,430 --> 00:48:54,650 >> Ja niin tämä tarjoaa sinulle nyt mahdollisuuden p set kuusi, joka 1090 00:48:54,650 --> 00:48:58,310 jälleen mukana täytäntöön omia oikoluku, lukeminen 150000 1091 00:48:58,310 --> 00:49:01,050 sanoen, miten parhaiten säilyttää, että ei välttämättä ole selvä. 1092 00:49:01,050 --> 00:49:04,030 Ja vaikka olen pyrkinyt löytämään Graalin malja, en 1093 00:49:04,030 --> 00:49:05,330 väittävät, että trie on. 1094 00:49:05,330 --> 00:49:09,810 Itse asiassa, tiiviste voi hyvin osoittautua paljon tehokkaampaa. 1095 00:49:09,810 --> 00:49:10,830 Mutta ne ovat vain - 1096 00:49:10,830 --> 00:49:14,620 se on vain yksi suunnittelun päätöksiä joudut tekemään. 1097 00:49:14,620 --> 00:49:18,920 >> Mutta sulkemalla Otetaanpa 50 tai niin sekunnin kurkistaa, mitä on 1098 00:49:18,920 --> 00:49:22,190 eteenpäin ensi viikolla ja sen jälkeen me siirtyminen Tämän komentoriviltä 1099 00:49:22,190 --> 00:49:26,220 maailmassa, jos C-ohjelmien asioita web perusteella ja kuten PHP ja 1100 00:49:26,220 --> 00:49:30,350 JavaScript ja internet itse, protokollia, kuten HTTP, jonka olet 1101 00:49:30,350 --> 00:49:32,870 itsestäänselvyytenä vuosia nyt, ja kirjoittanut melkein joka 1102 00:49:32,870 --> 00:49:34,440 päivä, ehkä, tai nähnyt. 1103 00:49:34,440 --> 00:49:37,420 Ja alamme Taitat kerroksia, mikä on internet. 1104 00:49:37,420 --> 00:49:40,650 Ja mikä on koodi, joka taustalla nykypäivän työkaluja. 1105 00:49:40,650 --> 00:49:43,230 Joten 50 sekuntia tämän teaser täällä. 1106 00:49:43,230 --> 00:49:46,570 Annan sinulle Warriors of Net. 1107 00:49:46,570 --> 00:49:51,370 >> [VIDEOTOISTOSTA] 1108 00:49:51,370 --> 00:49:56,764 >> -Hän tuli viesti. 1109 00:49:56,764 --> 00:50:00,687 Koskevan pöytäkirjan kaikkia omia. 1110 00:50:00,687 --> 00:50:13,370 1111 00:50:13,370 --> 00:50:19,780 Hän tuli maailmaan julma palomuurit, piittaamaton reitittimet ja vaarat kaukana 1112 00:50:19,780 --> 00:50:22,600 pahempaa kuin kuolema. 1113 00:50:22,600 --> 00:50:23,590 Hän on nopea. 1114 00:50:23,590 --> 00:50:25,300 Hän on vahva. 1115 00:50:25,300 --> 00:50:27,700 Hän on TCPIP. 1116 00:50:27,700 --> 00:50:30,420 Ja hänellä on osoitteesi. 1117 00:50:30,420 --> 00:50:32,920 1118 00:50:32,920 --> 00:50:34,590 Warriors of the Net. 1119 00:50:34,590 --> 00:50:35,290 >> [END VIDEOTOISTOSTA] 1120 00:50:35,290 --> 00:50:38,070 >> SPEAKER 1: Näin internet on toimia ensi viikolla. 1121 00:50:38,070 --> 00:50:40,406