1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON Hirschhorna: Vabljeni vsi na oddelku Seven. 3 00:00:12,680 --> 00:00:15,040 Mi smo v sedmih teden tečaja. 4 00:00:15,040 --> 00:00:18,440 In ta prihajajoči četrtek je noč čarovnic, zato sem 5 00:00:18,440 --> 00:00:21,420 oblečen kot buče. 6 00:00:21,420 --> 00:00:23,460 Nisem mogel ukrivijo in dal na moji čevlji, tako da je, zakaj sem 7 00:00:23,460 --> 00:00:25,660 Samo nosil nogavice. 8 00:00:25,660 --> 00:00:29,220 Jaz tudi ne nosim ničesar pod to, da ne morem vzleteti, če je 9 00:00:29,220 --> 00:00:29,950 moteča za vas. 10 00:00:29,950 --> 00:00:31,860 Se opravičujem vnaprej za to. 11 00:00:31,860 --> 00:00:33,170 Vam ni treba predstavljati kaj se dogaja. 12 00:00:33,170 --> 00:00:34,240 Nosim boksarice. 13 00:00:34,240 --> 00:00:36,170 Torej je vse v redu. 14 00:00:36,170 --> 00:00:41,120 >> Imam daljšo zgodbo o tem, zakaj sem oblečen kot buče, ampak bom 15 00:00:41,120 --> 00:00:45,110 prihranite za kasneje v tem razdelku ker jaz želim, da bi začeli. 16 00:00:45,110 --> 00:00:47,720 Imamo veliko zanimivih stvari iti čez ta teden. 17 00:00:47,720 --> 00:00:51,810 Večina od njih se neposredno nanašajo na to Problem set teden, pravopisne napake. 18 00:00:51,810 --> 00:00:54,680 Bomo šli čez povezano Seznami in razpršene tabele 19 00:00:54,680 --> 00:00:57,160 za celoten del. 20 00:00:57,160 --> 00:01:02,490 Sem dal ta seznam se vsak teden, seznam Sredstva za vas, da vam pomaga z 21 00:01:02,490 --> 00:01:04,120 gradivo na tej poti. 22 00:01:04,120 --> 00:01:07,600 Če z izgubo, ali če iščete nekaj Za več informacij si oglejte enega od 23 00:01:07,600 --> 00:01:09,930 teh virov. 24 00:01:09,930 --> 00:01:14,530 >> Again, pset6 je pravopisnih napak, pset ta teden. 25 00:01:14,530 --> 00:01:17,690 In tudi vas spodbuja, in jaz Spodbujam vas, da uporabite kakšen drug 26 00:01:17,690 --> 00:01:20,320 sredstev posebej za to pset. 27 00:01:20,320 --> 00:01:23,390 Zlasti tri sem Navedene na zaslonu - 28 00:01:23,390 --> 00:01:27,160 GDB, ki smo bili seznanjeni z in se uporabi za nekaj časa sedaj, je 29 00:01:27,160 --> 00:01:29,270 bo zelo koristno ta teden. 30 00:01:29,270 --> 00:01:30,190 Zato sem dal to gor. 31 00:01:30,190 --> 00:01:32,910 Ampak ko delate s C, morate vedno uporabljati gdb, da 32 00:01:32,910 --> 00:01:34,430 razhroščevanje programov. 33 00:01:34,430 --> 00:01:36,660 Ta teden tudi valgrind. 34 00:01:36,660 --> 00:01:38,535 Ali kdo ve, kaj valgrind počne? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> PUBLIKA: To preverja spomin razpoka? 37 00:01:43,890 --> 00:01:45,950 >> JASON Hirschhorna: Valgrind Pregledi za spomin razpoka. 38 00:01:45,950 --> 00:01:49,970 Torej, če ste malloc nekaj v vašem Program, ki ste ga prosi za spomin. 39 00:01:49,970 --> 00:01:52,920 Ob koncu svojega programa, imate pisati brezplačno na vse, kar ste 40 00:01:52,920 --> 00:01:54,800 malloced, da bi spomin nazaj. 41 00:01:54,800 --> 00:01:58,420 Če ne boste napisali prosti konec in vaš program prihaja do zaključka, 42 00:01:58,420 --> 00:02:00,000 Vse se bo samodejno osvoboditi. 43 00:02:00,000 --> 00:02:02,340 In za majhne programe, je ni tako velika stvar. 44 00:02:02,340 --> 00:02:05,250 Ampak, če pišete daljše delovanje Program, ki se ne zapre, 45 00:02:05,250 --> 00:02:09,180 nujno, v nekaj minutah ali A nekaj sekund, nato pa spomin pušča 46 00:02:09,180 --> 00:02:10,710 lahko postane velik posel. 47 00:02:10,710 --> 00:02:14,940 >> Torej za pset6, pričakovanje je, da boste imeli nič spomin razpoka z 48 00:02:14,940 --> 00:02:15,910 vaš program. 49 00:02:15,910 --> 00:02:18,690 Če želite preveriti, memory leaks, teči valgrind in to vam bom dal nekaj lepih 50 00:02:18,690 --> 00:02:21,190 izhodna najemnin veš, ali ali ni bilo vse zastonj. 51 00:02:21,190 --> 00:02:23,940 Bomo vaditi z njo kasneje danes, upam. 52 00:02:23,940 --> 00:02:25,790 >> Končno, ukaz diff. 53 00:02:25,790 --> 00:02:28,900 Ste uporabili nekaj podobnega, da ga v pset5 z orodjem pokukati. 54 00:02:28,900 --> 00:02:30,780 Dovoljeno vas, da si notri. 55 00:02:30,780 --> 00:02:33,400 Ki ste ga uporabili tudi za razlikovanje, preveč, na Problem je določeno spec. 56 00:02:33,400 --> 00:02:35,950 Toda v ti dovolijo primerjanje dveh datotek. 57 00:02:35,950 --> 00:02:39,180 Lahko primerjate datoteko bitnih slik in info Glave rešitev za zaposlene in 58 00:02:39,180 --> 00:02:42,200 vaša rešitev v pset5 če ste se odločili, da jo uporabljajo. 59 00:02:42,200 --> 00:02:44,030 Prim vam bo omogočilo to, da, kot je dobro. 60 00:02:44,030 --> 00:02:48,620 Lahko primerjate pravilen odgovor za Problem ta teden naj bi vaš odgovor 61 00:02:48,620 --> 00:02:52,210 in videli, če je vrstic gor ali glejte kje so napake. 62 00:02:52,210 --> 00:02:55,870 >> Torej, to so tri dobre orodja, ki jo je treba uporabiti za ta teden, in 63 00:02:55,870 --> 00:02:58,130 vsekakor preverite svoj program s temi tremi orodji 64 00:02:58,130 --> 00:03:00,520 preden ga noter 65 00:03:00,520 --> 00:03:04,650 Še enkrat, kot sem že omenil vsak teden, Če imate kakršne koli povratne informacije za mene - tako 66 00:03:04,650 --> 00:03:06,470 pozitiven in konstruktiven - 67 00:03:06,470 --> 00:03:09,930 vas prosimo, da se odpravite na spletno stran na dnu te diapozitiv 68 00:03:09,930 --> 00:03:11,270 in vhod je tam. 69 00:03:11,270 --> 00:03:13,440 Res sem hvaležen za kakršen koli in vse povratne informacije. 70 00:03:13,440 --> 00:03:17,360 In če mi daš določene stvari, ki jih Jaz lahko naredim za izboljšanje ali da sem 71 00:03:17,360 --> 00:03:21,350 delaš dobro, da bi me rad naprej, bom vzel k srcu in 72 00:03:21,350 --> 00:03:24,040 res trudim poslušati za vaše mnenje. 73 00:03:24,040 --> 00:03:27,720 Ne morem obljubiti, da bom naredil Vse, čeprav, kot je nošenje 74 00:03:27,720 --> 00:03:30,700 bučno kostum vsak teden. 75 00:03:30,700 --> 00:03:34,020 >> Tako, da bomo porabili večino oddelek, kot sem že omenil, govorim o 76 00:03:34,020 --> 00:03:37,240 povezani seznami in hash tabele, ki bo neposredno uporabljajo za 77 00:03:37,240 --> 00:03:38,780 Problem nastavite ta teden. 78 00:03:38,780 --> 00:03:42,580 Povezani seznam, da bomo šli čez razmeroma hitro, ker smo porabili kar precej 79 00:03:42,580 --> 00:03:44,930 časa bo nad njim v oddelku. 80 00:03:44,930 --> 00:03:48,680 In tako bomo dobili naravnost v kodiranje probleme, povezane sezname. 81 00:03:48,680 --> 00:03:52,740 In potem na koncu bomo govorili o hash tabele in kako se uporabljajo za to 82 00:03:52,740 --> 00:03:55,280 Problem teden nastavljena. 83 00:03:55,280 --> 00:03:57,560 >> Videli ste to kodo prej. 84 00:03:57,560 --> 00:04:02,730 To je struct, in se opredeljuje nekaj novega, se imenuje vozlišče. 85 00:04:02,730 --> 00:04:10,660 In znotraj vozlišče je celo število tu in tam je kazalec 86 00:04:10,660 --> 00:04:11,830 drugo vozlišče. 87 00:04:11,830 --> 00:04:12,790 Videli smo pred tem. 88 00:04:12,790 --> 00:04:14,830 To je prišlo na površje Že nekaj tednov. 89 00:04:14,830 --> 00:04:18,680 Združuje kazalce, ki smo bili sodelovanje in konstruktov, ki omogočajo 90 00:04:18,680 --> 00:04:22,079 kombiniranje dveh različnih Stvari v eno vrsto podatkov. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Obstaja veliko dogaja na zaslonu. 93 00:04:26,490 --> 00:04:30,220 Ampak vse to naj bi bilo razmeroma seznanjeni s tabo. 94 00:04:30,220 --> 00:04:33,810 V prvi vrstici, smo razglasi novo vozlišče. 95 00:04:33,810 --> 00:04:41,650 In potem znotraj tega novega vozlišča, sem iz celo s tem, da vozlišče enem. 96 00:04:41,650 --> 00:04:44,950 Vidimo v naslednji vrstici delam printf ukaz, vendar sem posivel 97 00:04:44,950 --> 00:04:48,080 ukaz printf ker res Pomemben del je ta vrsta je tukaj - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Kaj pika pomeni? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> PUBLIKA: Pojdi na vozlišče in oceniti vrednost n za to. 102 00:04:57,240 --> 00:04:58,370 >> JASON Hirschhorna: To je Točno tako. 103 00:04:58,370 --> 00:05:03,300 Pika pomeni, dostop z N, part tega novega vozlišča. 104 00:05:03,300 --> 00:05:05,690 Naslednja postavka za kaj? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 Michael. 107 00:05:17,050 --> 00:05:21,910 >> PUBLIKA: Ustvarja novo vozlišče da bodo kazale na novo vozlišče. 108 00:05:21,910 --> 00:05:24,870 >> JASON Hirschhorna: Torej ne ustvariti novo vozlišče. 109 00:05:24,870 --> 00:05:26,120 Ustvarja kaj? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> PUBLIKA: kazalec. 112 00:05:29,300 --> 00:05:33,460 >> JASON Hirschhorna: kazalec na vozlišče, kot je navedeno v tem vozlišču * tukaj. 113 00:05:33,460 --> 00:05:34,800 Tako da ustvari kazalec na vozlišče. 114 00:05:34,800 --> 00:05:37,490 In ki vozlišče je obrnjena da, Michael? 115 00:05:37,490 --> 00:05:38,440 >> PUBLIKA: New vozel? 116 00:05:38,440 --> 00:05:39,240 >> JASON Hirschhorna: Novo vozlišče. 117 00:05:39,240 --> 00:05:43,020 In to je tam obrnjena ker smo ji dal naslov novega vozlišča. 118 00:05:43,020 --> 00:05:45,820 In zdaj, v tej vrstici vidimo dva različna načina 119 00:05:45,820 --> 00:05:46,910 izraža isto stvar. 120 00:05:46,910 --> 00:05:49,650 In sem želel poudariti, kako ti dve stvari so enake. 121 00:05:49,650 --> 00:05:54,740 V prvi vrsti smo dereference kazalec. 122 00:05:54,740 --> 00:05:55,830 Torej gremo na vozlišče. 123 00:05:55,830 --> 00:05:56,830 To je, kaj pomeni ta zvezda. 124 00:05:56,830 --> 00:05:57,930 Videli smo, da je pred s kazalci. 125 00:05:57,930 --> 00:05:59,280 Pojdi na to vozlišče. 126 00:05:59,280 --> 00:06:00,370 To je v oklepaju. 127 00:06:00,370 --> 00:06:04,610 In potem dostopate preko operaterja dot n element vozlišča. 128 00:06:04,610 --> 00:06:08,430 >> , Tako da je ob sintakso videli smo tukaj in zdaj 129 00:06:08,430 --> 00:06:09,670 uporabo s kazalcem. 130 00:06:09,670 --> 00:06:13,730 Seveda, da postane neke vrste zaseden, če pišete tiste oklepaje - 131 00:06:13,730 --> 00:06:14,940 da je zvezda in pika. 132 00:06:14,940 --> 00:06:16,220 To postane malo zaseden. 133 00:06:16,220 --> 00:06:18,500 Torej, imamo nekaj skladenjsko sladkorja. 134 00:06:18,500 --> 00:06:19,920 In ta tukaj - 135 00:06:19,920 --> 00:06:21,170 ptr_node-> n. 136 00:06:21,170 --> 00:06:25,400 137 00:06:25,400 --> 00:06:28,000 To počne točno isto stvar. 138 00:06:28,000 --> 00:06:30,840 Torej ti dve vrstic kode so enakovredna in bo storila 139 00:06:30,840 --> 00:06:31,650 točno isto stvar. 140 00:06:31,650 --> 00:06:34,210 >> Ampak sem želel izpostaviti tiste, preden gremo vse nadaljnje, tako da boste razumeli 141 00:06:34,210 --> 00:06:39,000 da je ta stvar tukaj je res samo skladenjska sladkor za Dereferenciranje 142 00:06:39,000 --> 00:06:44,200 kazalec, nato pa bo n del tega struct. 143 00:06:44,200 --> 00:06:45,525 Vsa vprašanja v zvezi s tem diapozitiv? 144 00:06:45,525 --> 00:06:53,020 145 00:06:53,020 --> 00:06:54,390 OK. 146 00:06:54,390 --> 00:06:58,510 >> Tako da smo šli skozi nekaj operacij, ki jih lahko storite na 147 00:06:58,510 --> 00:06:59,730 povezani seznam. 148 00:06:59,730 --> 00:07:05,770 Povezani seznam, odpoklic, je serija vozlišča, ki kažejo, da med seboj. 149 00:07:05,770 --> 00:07:12,470 In smo se običajno začnejo s kazalcem imenovani glavo, na splošno, ki kaže na 150 00:07:12,470 --> 00:07:14,040 Najprej v seznamu. 151 00:07:14,040 --> 00:07:18,900 Torej, v prvi vrstici tu, imamo izvirno L prva. 152 00:07:18,900 --> 00:07:21,370 Tako, da stvar, ki jo lahko zamislite - to besedilo, tukaj si lahko zamislite kot 153 00:07:21,370 --> 00:07:23,560 samo kazalec, ki smo jih shranijo nekje, da točke 154 00:07:23,560 --> 00:07:24,670 na prvi element. 155 00:07:24,670 --> 00:07:27,500 In v tem povezani seznam imamo štiri vozle. 156 00:07:27,500 --> 00:07:29,530 Vsako vozlišče je velika škatla. 157 00:07:29,530 --> 00:07:33,430 Večje okno v notranjosti velika polje je celo del. 158 00:07:33,430 --> 00:07:37,400 In potem imamo kazalec del. 159 00:07:37,400 --> 00:07:39,630 >> Ta polja ne privlači Lestvica ker kako velik je 160 00:07:39,630 --> 00:07:42,320 celo v bajti? 161 00:07:42,320 --> 00:07:43,290 Kako zdaj velik? 162 00:07:43,290 --> 00:07:43,710 Štiri. 163 00:07:43,710 --> 00:07:45,470 In kako velik je kazalec? 164 00:07:45,470 --> 00:07:45,940 Štiri. 165 00:07:45,940 --> 00:07:48,180 Torej res, če smo bili, da pripravi to obsega obe polji 166 00:07:48,180 --> 00:07:49,690 bi enake velikosti. 167 00:07:49,690 --> 00:07:52,870 V tem primeru želimo vstaviti Nekaj ​​v povezanem seznamu. 168 00:07:52,870 --> 00:07:57,190 Torej si lahko ogledate tukaj smo vstavljanje pet sva prečkala prek 169 00:07:57,190 --> 00:08:01,310 povezani seznam, kje najti pet gre, nato pa ga vstavite. 170 00:08:01,310 --> 00:08:03,560 >> Oglejmo prekinil niz in pojdi malo bolj počasi. 171 00:08:03,560 --> 00:08:05,510 Grem, da kaže na krovu. 172 00:08:05,510 --> 00:08:09,930 Torej, imamo pet vozlišče, ki Ustvarili smo v mallocs. 173 00:08:09,930 --> 00:08:11,190 Zakaj se vsi smejali? 174 00:08:11,190 --> 00:08:12,130 Samo hecam. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Zato smo malloced pet. 177 00:08:14,820 --> 00:08:16,310 Ustvarili smo to vozlišče nekje drugje. 178 00:08:16,310 --> 00:08:17,740 Imamo pripravljen iti. 179 00:08:17,740 --> 00:08:20,130 Začnemo na sprednjem delu naš seznam z dvema. 180 00:08:20,130 --> 00:08:22,380 In želimo, da vstavite v urejenem način. 181 00:08:22,380 --> 00:08:27,550 >> Torej, če smo videli dva in želimo postaviti v petih, kaj bomo storili, ko smo videli 182 00:08:27,550 --> 00:08:28,800 nekaj manj od nas? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Kaj? 185 00:08:33,520 --> 00:08:36,750 Želimo, da vstavite pet v to povezani seznam, držimo tako, da razporejene. 186 00:08:36,750 --> 00:08:37,520 Vidimo številka dve. 187 00:08:37,520 --> 00:08:38,769 Torej, kaj naj naredimo? 188 00:08:38,769 --> 00:08:39,179 Marcus? 189 00:08:39,179 --> 00:08:40,679 >> PUBLIKA: Call kazalec na naslednje vozlišče. 190 00:08:40,679 --> 00:08:42,530 >> JASON Hirschhorna: In zakaj gremo na naslednjega? 191 00:08:42,530 --> 00:08:45,970 >> PUBLIKA: Ker je naslednje vozlišče v seznamu. 192 00:08:45,970 --> 00:08:48,310 In vemo le to drugo lokacijo. 193 00:08:48,310 --> 00:08:50,410 >> JASON Hirschhorna: In pet večja kot dve, zlasti. 194 00:08:50,410 --> 00:08:51,600 Ker želimo, da ostane razvrščeni. 195 00:08:51,600 --> 00:08:52,730 Torej pet je večje od dva. 196 00:08:52,730 --> 00:08:54,460 Torej gremo na naslednjo. 197 00:08:54,460 --> 00:08:55,240 In zdaj smo dosegli štiri. 198 00:08:55,240 --> 00:08:56,490 In kaj se zgodi, ko smo dosegli štiri? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Pet je večje od štiri. 201 00:09:00,310 --> 00:09:01,460 Tako smo naprej. 202 00:09:01,460 --> 00:09:03,110 Zdaj pa smo že ob šestih. 203 00:09:03,110 --> 00:09:04,360 In kaj vidimo ob šestih? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Ja, Carlos? 206 00:09:09,608 --> 00:09:10,544 >> PUBLIKA: Šest je večje od pet. 207 00:09:10,544 --> 00:09:11,480 >> JASON Hirschhorna: Six je več kot pet. 208 00:09:11,480 --> 00:09:13,660 Tako, da je, če želimo vstaviti pet. 209 00:09:13,660 --> 00:09:17,320 Vendar pa imejte v mislih, da če bomo ima samo en kazalec tukaj - 210 00:09:17,320 --> 00:09:19,840 to je naš dodaten kazalec, da je prehaja skozi seznam. 211 00:09:19,840 --> 00:09:21,860 In mi kaže na šest. 212 00:09:21,860 --> 00:09:25,010 Izgubili smo spremljali, kaj pride pred šestimi. 213 00:09:25,010 --> 00:09:29,130 Torej, če želimo nekaj vstavili v Ta seznam je vodenje razporejene smo 214 00:09:29,130 --> 00:09:31,630 Verjetno je treba, koliko nasvetov? 215 00:09:31,630 --> 00:09:32,280 >> PUBLIKA: Two. 216 00:09:32,280 --> 00:09:32,920 >> JASON Hirschorn: Dva. 217 00:09:32,920 --> 00:09:35,720 Ena slediti toku ena in ena, da bi spremljali 218 00:09:35,720 --> 00:09:37,050 prejšnja. 219 00:09:37,050 --> 00:09:38,450 To je samo enkrat povezani seznam. 220 00:09:38,450 --> 00:09:39,670 To gre samo v eno smer. 221 00:09:39,670 --> 00:09:43,220 Če bi imeli dvojno povezani seznam, kjer Vse je poudaril, da stvar 222 00:09:43,220 --> 00:09:46,240 po njo in stvar pred njim, nato mi ne bi bilo treba storiti. 223 00:09:46,240 --> 00:09:49,350 Toda v tem primeru ne želimo izgubiti tir, kar je pred nami, v primeru 224 00:09:49,350 --> 00:09:53,350 moramo vstaviti pet nekje v sredini. 225 00:09:53,350 --> 00:09:55,610 Recimo, da so vstavljanje devet. 226 00:09:55,610 --> 00:09:57,260 Kaj bi se zgodilo, če imamo osem? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> PUBLIKA: Morali bi dobil to nulte točke. 229 00:10:04,880 --> 00:10:07,820 Namesto da nulte točke bi si moral dodati element in nato 230 00:10:07,820 --> 00:10:09,216 opozoriti na devet. 231 00:10:09,216 --> 00:10:09,700 >> JASON Hirschorn: Točno tako. 232 00:10:09,700 --> 00:10:10,600 Tako smo dobili osem. 233 00:10:10,600 --> 00:10:13,140 Dosežemo konec seznama, ker To kaže na null. 234 00:10:13,140 --> 00:10:16,330 In zdaj, namesto da bi to imelo za null moramo opozoriti na našo novo vozlišče. 235 00:10:16,330 --> 00:10:19,870 In smo postavili kazalec našo novo vozlišče na null. 236 00:10:19,870 --> 00:10:21,445 Ima kdo kakšna vprašanja o vstavljanju? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Kaj pa, če ne skrbi vodenje seznama razporejene? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> PUBLIKA: Zabij na začetek ali konec. 241 00:10:34,350 --> 00:10:35,510 >> JASON Hirschorn: Vrzi na začetek ali konec. 242 00:10:35,510 --> 00:10:37,276 Katerega naj storimo? 243 00:10:37,276 --> 00:10:38,770 Bobby? 244 00:10:38,770 --> 00:10:41,020 Zakaj konec? 245 00:10:41,020 --> 00:10:43,250 >> PUBLIKA: Ker začetek je že napolnjena. 246 00:10:43,250 --> 00:10:43,575 >> JASON Hirschorn: OK. 247 00:10:43,575 --> 00:10:44,360 Začetek je že napolnjena. 248 00:10:44,360 --> 00:10:46,090 Kdo želi nasprotovati Bobbyju. 249 00:10:46,090 --> 00:10:47,290 Marcus. 250 00:10:47,290 --> 00:10:48,910 >> PUBLIKA: No, boste verjetno želeli ga držijo na začetku, ker 251 00:10:48,910 --> 00:10:50,140 drugače, če ste jo dali na konec bi si morali 252 00:10:50,140 --> 00:10:51,835 prečkanje celoten seznam. 253 00:10:51,835 --> 00:10:52,990 >> JASON Hirschorn: Točno tako. 254 00:10:52,990 --> 00:10:57,970 Torej, če razmišljate o času izvajanja, teka vstavljanja na koncu 255 00:10:57,970 --> 00:11:00,110 bi n, velikost tega. 256 00:11:00,110 --> 00:11:03,080 Kaj je velik O teka vstavljanje na začetku? 257 00:11:03,080 --> 00:11:04,170 Constant čas. 258 00:11:04,170 --> 00:11:07,075 Torej, če vam ni mar za vodenje Nekaj ​​razporejene, veliko bolje, da samo 259 00:11:07,075 --> 00:11:08,420 vstavite na začetku tega seznama. 260 00:11:08,420 --> 00:11:10,320 In to je mogoče storiti v enakem času. 261 00:11:10,320 --> 00:11:13,900 262 00:11:13,900 --> 00:11:14,690 >> OK. 263 00:11:14,690 --> 00:11:18,870 Naslednja operacija našli, kar drugi - to smo oblikovali kot iskanje. 264 00:11:18,870 --> 00:11:22,470 Ampak bomo odmisliti povezani seznam za nek objekt. 265 00:11:22,470 --> 00:11:26,000 Vi ste videli kodo iskanje preden se je v predavanju. 266 00:11:26,000 --> 00:11:29,490 Vendar smo nekako le to storil z vstaviti, ali vsaj vstavljanje 267 00:11:29,490 --> 00:11:30,580 Nekaj ​​razporejene. 268 00:11:30,580 --> 00:11:36,350 Pogledaš skozi, bo vozlišče, ki ga vozlišče, dokler ne najdete številko, ki ste 269 00:11:36,350 --> 00:11:37,780 išče. 270 00:11:37,780 --> 00:11:39,670 Kaj se zgodi, če ne pridete Konec seznamu? 271 00:11:39,670 --> 00:11:43,020 Pravijo, iščem devet in I dosežejo konec seznama. 272 00:11:43,020 --> 00:11:44,270 Kaj naj naredimo? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> PUBLIKA: Return false? 275 00:11:48,110 --> 00:11:48,690 >> JASON Hirschorn: Return false. 276 00:11:48,690 --> 00:11:49,960 Nismo našli. 277 00:11:49,960 --> 00:11:52,010 Če pridete do konca seznama in niste našli številko, ki ste jo 278 00:11:52,010 --> 00:11:54,170 iščete, ni tam. 279 00:11:54,170 --> 00:11:55,420 Imate vprašanja nahajamo? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Če je to razvrščenega.Vse seznam, kaj bi drugačna za naše iskanje? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Ja. 284 00:12:08,103 --> 00:12:10,600 >> PUBLIKA: Bilo bi našli prvo vrednost ki je večja od enega 285 00:12:10,600 --> 00:12:12,390 iščete in nato vrne false. 286 00:12:12,390 --> 00:12:13,190 >> JASON Hirschorn: Točno tako. 287 00:12:13,190 --> 00:12:17,310 Torej, če je to razvrščenega.Vse seznam, če želimo priti do nekaj, kar je večje od tistega, kar 288 00:12:17,310 --> 00:12:20,180 iščemo, nam ni treba, da nadaljuj na koncu seznama. 289 00:12:20,180 --> 00:12:24,060 Mi lahko na tej točki vrne false ker ne gremo, da ga najdejo. 290 00:12:24,060 --> 00:12:27,340 Vprašanje je zdaj, smo se pogovarjali o vodenje povezanih seznamov razporejene, 291 00:12:27,340 --> 00:12:28,180 jih gojijo razvrščeni. 292 00:12:28,180 --> 00:12:30,050 To se dogaja, da nekaj, kar si Verjetno bomo morali razmišljati o 293 00:12:30,050 --> 00:12:34,240 ko, če kodiranje problem nastaviti pet Izberite razpršene tabele z ločeno 294 00:12:34,240 --> 00:12:36,360 verižni pristop, ki o tem bomo govorili kasneje. 295 00:12:36,360 --> 00:12:41,400 >> Vendar je vredno, da seznam sortirati in nato lahko morda imajo 296 00:12:41,400 --> 00:12:42,310 hitrejše iskanje? 297 00:12:42,310 --> 00:12:47,220 Ali je bolje, da se hitro vstaviti nekaj v stalnem runtime potem pa 298 00:12:47,220 --> 00:12:48,430 imajo več iskati? 299 00:12:48,430 --> 00:12:52,250 To je kompromis tam, da vam se mora odločiti, kaj je bolj primerno 300 00:12:52,250 --> 00:12:53,590 za svoj problem. 301 00:12:53,590 --> 00:12:56,680 In tam ni nujno, da ena popolnoma pravilen odgovor. 302 00:12:56,680 --> 00:12:59,520 Vsekakor pa to odločitev, ki jo dobite da bi, in verjetno dobro, da branijo 303 00:12:59,520 --> 00:13:05,270 da, recimo, komentar ali dva, zakaj ste izbrali eno nad drugo. 304 00:13:05,270 --> 00:13:06,490 >> Končno, brisanje. 305 00:13:06,490 --> 00:13:08,100 Videli smo izbrisali. 306 00:13:08,100 --> 00:13:09,180 To je podobno iskanju. 307 00:13:09,180 --> 00:13:11,020 Iščemo za element. 308 00:13:11,020 --> 00:13:12,390 Povejte, da smo poskušali izbrisati šest. 309 00:13:12,390 --> 00:13:14,450 Tako smo našli šest tukaj. 310 00:13:14,450 --> 00:13:18,860 Stvar, ki jo moramo narediti, da bomo storiti, je, da karkoli se kaže na 311 00:13:18,860 --> 00:13:21,220 šest - kot smo videli v koraku dve dol - 312 00:13:21,220 --> 00:13:26,500 kar se kaže na šest potrebami do preskočite šest sedaj in se spremeni v 313 00:13:26,500 --> 00:13:28,160 kar šest kaže, da. 314 00:13:28,160 --> 00:13:31,410 Nočemo, da bi kdaj starših ostalo naš seznam, ki ga pozabijo, da določi, da 315 00:13:31,410 --> 00:13:32,960 Predhodna kazalec. 316 00:13:32,960 --> 00:13:35,960 In potem včasih, odvisno o programu, pa bom samo 317 00:13:35,960 --> 00:13:37,380 v celoti izbrisati to vozlišče. 318 00:13:37,380 --> 00:13:40,135 Včasih boste želeli, da se vrnete vrednost, ki je v tem vozlišču. 319 00:13:40,135 --> 00:13:42,490 Torej, to je, kako črtanje dela. 320 00:13:42,490 --> 00:13:44,610 Vsa vprašanja glede izbrisati? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> PUBLIKA: Torej, če boste za brisanje da bi si samo uporabo brezplačno, ker 323 00:13:53,850 --> 00:13:55,655 verjetno je malloced? 324 00:13:55,655 --> 00:13:57,976 >> JASON Hirschorn: Če želite sprostiti nekaj, kar je ravno prav in vi 325 00:13:57,976 --> 00:13:58,540 ga malloced. 326 00:13:58,540 --> 00:14:00,410 Povejte, da smo želeli vrniti to vrednost. 327 00:14:00,410 --> 00:14:04,010 Morda bomo vrnili šest, nato pa brez to vozlišče in brez klic na njej. 328 00:14:04,010 --> 00:14:06,180 Ali pa bi verjetno pokličite brezplačno najprej in se nato vrne šest. 329 00:14:06,180 --> 00:14:11,210 330 00:14:11,210 --> 00:14:11,580 >> OK. 331 00:14:11,580 --> 00:14:14,010 Torej gremo na vaditi kodiranja. 332 00:14:14,010 --> 00:14:16,090 Bomo kodo tri funkcije. 333 00:14:16,090 --> 00:14:18,260 Prvi se imenuje insert_node. 334 00:14:18,260 --> 00:14:22,170 Torej imate kodo, ki sem vam po e-pošti, in Če gledate to kasneje 335 00:14:22,170 --> 00:14:28,020 lahko dostopate kodo v linked.c na spletni strani CS50. 336 00:14:28,020 --> 00:14:30,880 Toda v linked.c, da je nekaj Okostje kodo, ki je že 337 00:14:30,880 --> 00:14:32,280 je napisal za vas. 338 00:14:32,280 --> 00:14:34,560 In potem je tukaj še nekaj Funkcije morate pisati. 339 00:14:34,560 --> 00:14:36,380 >> Prvi bomo napišite insert_node. 340 00:14:36,380 --> 00:14:39,800 In kaj počne insert_node se pravi vstavi celo število. 341 00:14:39,800 --> 00:14:42,440 In ti daje celi števili v povezanem seznamu. 342 00:14:42,440 --> 00:14:45,470 In predvsem, morate da seznam razvrščeni 343 00:14:45,470 --> 00:14:47,650 od najmanjše do največje. 344 00:14:47,650 --> 00:14:51,360 Prav tako si ne želite, da vtikajte dvojnikov. 345 00:14:51,360 --> 00:14:54,600 Končno, kot lahko vidite insert_node vrne bool. 346 00:14:54,600 --> 00:14:57,140 Torej boš moral pustiti uporabnik ve ali vložek je ali ni 347 00:14:57,140 --> 00:15:00,800 Uspešno ga vrne resnična ali neresnična. 348 00:15:00,800 --> 00:15:02,580 Ob koncu tega programa - 349 00:15:02,580 --> 00:15:05,750 in v tej fazi ne potrebujete skrbeti za osvoboditev ničesar. 350 00:15:05,750 --> 00:15:11,790 Torej, vse kar delaš je pokazal celo in ga vstavite v seznamu. 351 00:15:11,790 --> 00:15:13,890 >> To je tisto, kar vas prosim, da storite zdaj. 352 00:15:13,890 --> 00:15:17,620 Again, v linked.c, ki ga Vse imajo, je koda okostje. 353 00:15:17,620 --> 00:15:20,980 In bi morali videti proti dnu Izjava vzorec funkcija. 354 00:15:20,980 --> 00:15:27,390 Vendar pa, preden gredo v to kodiranje v C, sem močno vam svetujemo, da gredo 355 00:15:27,390 --> 00:15:29,330 skozi korake smo bili vadil vsak teden. 356 00:15:29,330 --> 00:15:31,100 Smo že šli skozi slika tega. 357 00:15:31,100 --> 00:15:33,380 Torej bi morali imeti nekaj razumevanja kako to deluje. 358 00:15:33,380 --> 00:15:36,590 Vendar bi vas pozivam, da napišete nekateri psevdokoda pred potopom palcev 359 00:15:36,590 --> 00:15:38,640 In smo šli čez psevdokoda kot skupina. 360 00:15:38,640 --> 00:15:41,470 In potem, ko sem napisal svoj psevdokoda, in ko smo napisal naš 361 00:15:41,470 --> 00:15:45,850 psevdokoda kot skupina, lahko gredo v to kodiranje v C. 362 00:15:45,850 --> 00:15:49,980 >> Kot heads up, funkcija insert_node je verjetno najzahtevnejše od 363 00:15:49,980 --> 00:15:53,550 trije bomo pisati, ker sem dodali nekaj dodatnih omejitev za 364 00:15:53,550 --> 00:15:57,190 programiranje, zlasti ne boš šel, da vstavite katerokoli 365 00:15:57,190 --> 00:15:59,880 dvojnikov in da seznam mora ostati razvrščeni. 366 00:15:59,880 --> 00:16:02,660 Torej je to nepomembno programa da morate kodo. 367 00:16:02,660 --> 00:16:06,470 In zakaj ne vzameš 06:55 minut, samo da se dela na 368 00:16:06,470 --> 00:16:07,640 psevdokoda in kodo. 369 00:16:07,640 --> 00:16:09,460 In potem bomo začeli bo kot skupina. 370 00:16:09,460 --> 00:16:11,680 Še enkrat, če imate vprašanja, preprosto dvignite roko in pridem okoli. 371 00:16:11,680 --> 00:16:15,258 372 00:16:15,258 --> 00:16:16,508 . 373 00:16:16,508 --> 00:18:28,370 374 00:18:28,370 --> 00:18:30,120 >> Prav tako na splošno se ti - 375 00:18:30,120 --> 00:18:32,070 ali pa sem izrecno ne rečeš Lahko delo z ljudmi. 376 00:18:32,070 --> 00:18:36,500 Ampak očitno sem zelo Spodbujam vas, Če imate vprašanja, da se vprašajte 377 00:18:36,500 --> 00:18:39,840 sosed sedi poleg vas ali celo delati z nekom 378 00:18:39,840 --> 00:18:40,510 drugje, če želite. 379 00:18:40,510 --> 00:18:42,600 To ni nujno, da je posameznik tiha dejavnost. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Začnimo s pisanjem nekaterih psevdokoda na krovu. 382 00:20:16,330 --> 00:20:19,395 Kdo mi lahko pove prvo vrstico psevdokoda za ta program? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 Za to funkcijo, ne - insert_node. 385 00:20:23,640 --> 00:20:29,960 386 00:20:29,960 --> 00:20:31,830 Alden? 387 00:20:31,830 --> 00:20:36,560 >> PUBLIKA: Torej prva stvar, ki sem je bil ustvariti nov kazalec na vozlišče in I 388 00:20:36,560 --> 00:20:41,320 inicializirana to kaže na isti stvar, ki je seznam kaže, da. 389 00:20:41,320 --> 00:20:41,550 >> JASON Hirschorn: OK. 390 00:20:41,550 --> 00:20:45,190 Torej ste ustvarili nov kazalec na seznamu ni na vozlišče. 391 00:20:45,190 --> 00:20:45,420 >> PUBLIKA: Right. 392 00:20:45,420 --> 00:20:46,150 Ja. 393 00:20:46,150 --> 00:20:46,540 >> JASON Hirschorn: OK. 394 00:20:46,540 --> 00:20:48,221 In potem kaj želimo narediti? 395 00:20:48,221 --> 00:20:49,163 Kaj je potem to? 396 00:20:49,163 --> 00:20:50,105 Kaj pa vozlišče? 397 00:20:50,105 --> 00:20:51,050 Nimamo vozlišče. 398 00:20:51,050 --> 00:20:52,300 Pravkar smo imeli vrednosti. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Če želimo vstaviti vozlišče, kaj počnemo morate storiti, preden bomo lahko celo 401 00:20:58,890 --> 00:20:59,980 pomisli, da ga vstavimo? 402 00:20:59,980 --> 00:21:00,820 >> PUBLIKA: Oh, oprostite. 403 00:21:00,820 --> 00:21:02,160 moramo malloc prostor za vozlišče. 404 00:21:02,160 --> 00:21:02,455 >> JASON Hirschorn: Odlično. 405 00:21:02,455 --> 00:21:03,210 Naredimo - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Ne morejo doseči tako visoko. 408 00:21:06,065 --> 00:21:08,939 409 00:21:08,939 --> 00:21:09,897 OK. 410 00:21:09,897 --> 00:21:13,236 Mi smo šli dol, nato pa smo z uporabo dveh stolpcev. 411 00:21:13,236 --> 00:21:13,732 Ne morem iti, da - 412 00:21:13,732 --> 00:21:14,982 OK. 413 00:21:14,982 --> 00:21:23,660 414 00:21:23,660 --> 00:21:25,130 Ustvari novo vozlišče. 415 00:21:25,130 --> 00:21:29,380 Lahko ustvarite nov kazalec na seznam ali pa samo uporabite seznam, kot ga poznamo. 416 00:21:29,380 --> 00:21:30,720 Ne boste res morali storiti, da. 417 00:21:30,720 --> 00:21:31,750 >> Tako smo ustvarili novo vozlišče. 418 00:21:31,750 --> 00:21:32,010 Super. 419 00:21:32,010 --> 00:21:32,840 To je tisto, kar počnemo prvič. 420 00:21:32,840 --> 00:21:34,870 Kaj je naslednje? 421 00:21:34,870 --> 00:21:35,080 >> PUBLIKA: Počakajte. 422 00:21:35,080 --> 00:21:38,330 Moramo ustvariti novo vozlišče zdaj ali bi morali čakati, da se prepričajte, da 423 00:21:38,330 --> 00:21:42,260 ni nobenih dvojnikov vozlišča na seznamu, preden smo ga ustvarili? 424 00:21:42,260 --> 00:21:43,100 >> JASON Hirschorn: Dobro vprašanje. 425 00:21:43,100 --> 00:21:47,770 Oglejmo držite za kasneje, ker Večino časa bomo lahko ustvarjate 426 00:21:47,770 --> 00:21:48,220 novo vozlišče. 427 00:21:48,220 --> 00:21:49,110 Zato bomo še naprej, da je tu. 428 00:21:49,110 --> 00:21:51,006 Ampak to je dobro vprašanje. 429 00:21:51,006 --> 00:21:53,250 Če smo ga ustvarili in smo ugotovili, Dvojnik, na kaj mora biti 430 00:21:53,250 --> 00:21:54,490 storimo pred vrnitvijo? 431 00:21:54,490 --> 00:21:55,190 >> PUBLIKA: je prost. 432 00:21:55,190 --> 00:21:55,470 >> JASON Hirschorn: Ja. 433 00:21:55,470 --> 00:21:56,500 Verjetno ga osvobodi. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Kaj naj naredimo, ko smo ustvarite novo vozlišče? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> PUBLIKA: Mi dana Številka v vozlišču? 438 00:22:04,780 --> 00:22:05,140 >> JASON Hirschorn: Točno tako. 439 00:22:05,140 --> 00:22:07,190 Mi je dal številko - smo malloc prostor. 440 00:22:07,190 --> 00:22:08,160 Bom pustil, da vsi kot eno vrstico. 441 00:22:08,160 --> 00:22:08,720 Ampak imaš prav. 442 00:22:08,720 --> 00:22:10,305 Malloc smo prostor, nato pa smo dal številko noter 443 00:22:10,305 --> 00:22:12,585 Mi lahko celo nastavite kazalec del pa na null. 444 00:22:12,585 --> 00:22:13,720 Točno tako. 445 00:22:13,720 --> 00:22:17,400 In potem, kaj pa potem? 446 00:22:17,400 --> 00:22:18,490 Mi narisal to sliko na krovu. 447 00:22:18,490 --> 00:22:21,190 Torej, kaj naj naredimo? 448 00:22:21,190 --> 00:22:22,680 >> PUBLIKA: Mi gremo po seznamu. 449 00:22:22,680 --> 00:22:23,930 >> JASON Hirschorn: Pojdi po seznamu. 450 00:22:23,930 --> 00:22:30,620 451 00:22:30,620 --> 00:22:31,100 OK. 452 00:22:31,100 --> 00:22:34,280 In kaj smo preveriti pri vsakem vozlišču. 453 00:22:34,280 --> 00:22:35,955 Kurt, kaj bomo preveri za na vsakem vozlišču? 454 00:22:35,955 --> 00:22:41,640 >> PUBLIKA: Glejte, ali vrednost n od da vozlišče je večja od vrednosti n 455 00:22:41,640 --> 00:22:43,070 našega vozlišča. 456 00:22:43,070 --> 00:22:43,340 >> JASON Hirschorn: OK. 457 00:22:43,340 --> 00:22:44,280 Jaz bom naredil - 458 00:22:44,280 --> 00:22:45,855 Ja, v redu. 459 00:22:45,855 --> 00:22:48,160 Torej je n - 460 00:22:48,160 --> 00:22:59,040 Jaz bom rekel, če je vrednost večja od tega vozlišča, potem kaj naj naredimo? 461 00:22:59,040 --> 00:23:07,290 >> PUBLIKA: No, potem pa vstavite stvar tik pred tem. 462 00:23:07,290 --> 00:23:07,970 >> JASON Hirschorn: OK. 463 00:23:07,970 --> 00:23:09,410 Torej, če je večji od tega, potem želimo vstaviti. 464 00:23:09,410 --> 00:23:14,010 Vendar želimo, da jo vstavite tik pred ker smo tako bi morali biti 465 00:23:14,010 --> 00:23:16,070 sledenja, potem pa, kaj je bilo prej. 466 00:23:16,070 --> 00:23:22,690 Torej vstavite prej. 467 00:23:22,690 --> 00:23:25,120 Tako smo verjetno zamudili nekaj prej. 468 00:23:25,120 --> 00:23:27,770 Verjetno moramo biti ohranjanje tir, kaj se dogaja. 469 00:23:27,770 --> 00:23:28,460 Ampak bomo dobili nazaj. 470 00:23:28,460 --> 00:23:30,160 Torej, kaj vrednost je manjša od? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, kaj bomo storili, če vrednost je manjša od? 473 00:23:39,710 --> 00:23:43,000 >> PUBLIKA: Potem si nadaljuj razen če je to zadnja. 474 00:23:43,000 --> 00:23:43,550 >> JASON Hirschorn: mi je všeč. 475 00:23:43,550 --> 00:23:44,800 Torej pojdi na naslednje vozlišče. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Razen če je to zadnja - 478 00:23:48,930 --> 00:23:51,100 bomo verjetno preverjanje, da v smislu pogoja. 479 00:23:51,100 --> 00:23:54,870 Ampak ja, naslednje vozlišče. 480 00:23:54,870 --> 00:23:58,680 In to je že preveč nizka, tako da bomo premakniti tukaj. 481 00:23:58,680 --> 00:24:02,030 Ampak, če - 482 00:24:02,030 --> 00:24:03,280 lahko vsi videli to? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Če smo enaki, kaj naj naredimo? 485 00:24:11,610 --> 00:24:15,740 Če je vrednost poskušamo vstaviti je enaka vrednosti tega vozlišča? 486 00:24:15,740 --> 00:24:16,320 Ja? 487 00:24:16,320 --> 00:24:18,400 >> PUBLIKA: [neslišno]. 488 00:24:18,400 --> 00:24:18,850 >> JASON Hirschorn: Ja. 489 00:24:18,850 --> 00:24:19,290 Glede na to - 490 00:24:19,290 --> 00:24:20,090 Marcus je prav. 491 00:24:20,090 --> 00:24:21,330 Lahko bi morda naredil nekaj drugačnega. 492 00:24:21,330 --> 00:24:25,360 Toda glede na to, da smo jo ustvarili, tukaj moramo osvoboditi in se nato vrne. 493 00:24:25,360 --> 00:24:26,774 Oh fant. 494 00:24:26,774 --> 00:24:30,080 Je zdaj bolje? 495 00:24:30,080 --> 00:24:31,850 Kako je s tem? 496 00:24:31,850 --> 00:24:33,100 OK. 497 00:24:33,100 --> 00:24:35,360 498 00:24:35,360 --> 00:24:37,640 Brezplačno in potem, kaj počnemo vrne, [neslišno]? 499 00:24:37,640 --> 00:24:41,330 500 00:24:41,330 --> 00:24:44,110 OK. 501 00:24:44,110 --> 00:24:45,360 Nam manjka ničesar? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Torej, kje smo sledenja od predhodnega vozlišča? 504 00:24:59,650 --> 00:25:02,370 >> PUBLIKA: Mislim, da bi šel Po ustvariti novo vozlišče. 505 00:25:02,370 --> 00:25:02,600 >> JASON Hirschorn: OK. 506 00:25:02,600 --> 00:25:03,940 Torej, na začetku se bomo verjetno - 507 00:25:03,940 --> 00:25:07,175 ja, lahko ustvarimo kazalec na novo vozlišče, kot prejšnje vozlišče kazalca in 508 00:25:07,175 --> 00:25:09,600 trenutni kazalec vozlišče. 509 00:25:09,600 --> 00:25:12,640 Torej, kaj je, da vstavite tukaj. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Ustvarite sedanje in prejšnje kazalci na vozliščih. 512 00:25:26,900 --> 00:25:28,955 Toda, ko bomo prilagodili te kazalce? 513 00:25:28,955 --> 00:25:30,205 Kje naj naredimo, da v kodi? 514 00:25:30,205 --> 00:25:33,830 515 00:25:33,830 --> 00:25:34,160 Jeff? 516 00:25:34,160 --> 00:25:35,170 >> PUBLIKA: - razmere vrednost? 517 00:25:35,170 --> 00:25:36,420 >> JASON Hirschorn: Kateri eden zlasti? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> PUBLIKA: Jaz sem samo zmeden. 520 00:25:40,720 --> 00:25:44,200 Če je vrednost večja od tega vozlišča to ne pomeni, da si želijo, da gredo 521 00:25:44,200 --> 00:25:45,320 na naslednje vozlišče? 522 00:25:45,320 --> 00:25:49,515 >> JASON Hirschhorna: Torej, če je naš vrednost večja od vrednosti tega vozlišča. 523 00:25:49,515 --> 00:25:52,130 >> OBČINSTVO: Ja, potem bi želeli iti naprej po vrsti, kajne? 524 00:25:52,130 --> 00:25:52,590 >> JASON Hirschhorna: Right. 525 00:25:52,590 --> 00:25:53,840 Torej, ne bomo ga vstavite tukaj. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Če je vrednost nižja od tem vozlišču, nato pa gremo na naslednje vozlišče - ali pa smo 528 00:26:03,240 --> 00:26:03,835 vstaviti prej. 529 00:26:03,835 --> 00:26:05,966 >> PUBLIKA: Čakaj, ki je to vozlišče in ki je vrednost? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON Hirschhorna: Dobro vprašanje. 532 00:26:09,280 --> 00:26:13,260 Vrednost po tej definiciji funkcije je tisto, kar si mi dal. 533 00:26:13,260 --> 00:26:16,910 Torej vrednost je število smo dati. 534 00:26:16,910 --> 00:26:21,120 Torej, če je vrednost manj kot to vozlišče, potrebujemo čas, da vstavite. 535 00:26:21,120 --> 00:26:24,575 Če je vrednost večja od tega vozlišča gremo na naslednje vozlišče. 536 00:26:24,575 --> 00:26:26,790 In nazaj na prvotno vprašanje, čeprav, če - 537 00:26:26,790 --> 00:26:29,060 >> PUBLIKA: Če je vrednost večja od tega vozlišča. 538 00:26:29,060 --> 00:26:30,310 >> JASON Hirschhorna: In tako Kaj delamo tukaj? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Sladko. 541 00:26:38,160 --> 00:26:38,860 Da je pravilna. 542 00:26:38,860 --> 00:26:41,370 Jaz bom samo pisati posodabljanje kazalcev. 543 00:26:41,370 --> 00:26:44,010 Ampak ja, s sedanjim bi jo posodobili, da 544 00:26:44,010 --> 00:26:46,080 opozarjajo na naslednjega. 545 00:26:46,080 --> 00:26:47,330 Še kaj nam manjka? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Tako da bom ta tip kodo v gedit. 548 00:26:54,940 --> 00:26:58,375 In ko sem to naredil, lahko imate nekaj minut, da delajo na kodiranje 549 00:26:58,375 --> 00:28:19,240 To v C. 550 00:28:19,240 --> 00:28:20,940 >> Torej imam vhoda psevdokoda. 551 00:28:20,940 --> 00:28:22,940 Quick note, preden začnemo. 552 00:28:22,940 --> 00:28:25,560 Morda ne bomo mogli v celoti dokončati to v vseh 553 00:28:25,560 --> 00:28:27,300 tri od teh funkcij. 554 00:28:27,300 --> 00:28:30,630 Obstaja pravilni rešitve zanje da bom po e-pošti, da vas fantje 555 00:28:30,630 --> 00:28:33,730 Po oddelku, in da bo objavljene na CS50.net. 556 00:28:33,730 --> 00:28:35,640 Torej, jaz ne spodbujajo k iti pogled na oddelkih. 557 00:28:35,640 --> 00:28:40,550 Spodbujam vas, da poskusite to na vašem lastnik, in nato uporabite prakso 558 00:28:40,550 --> 00:28:41,760 Težave, da preverite svoje odgovore. 559 00:28:41,760 --> 00:28:47,070 Vse te spremembe so zasnovane za tesno nanašajo in se držati kaj 560 00:28:47,070 --> 00:28:48,400 kar morate storiti na problem nizu. 561 00:28:48,400 --> 00:28:53,820 Tako da mi vas spodbujamo, da prakticirali na svoje in nato uporabite kodo 562 00:28:53,820 --> 00:28:54,660 preverite svoje odgovore. 563 00:28:54,660 --> 00:28:57,060 Ker pa bi rad, da se premaknete na hash mize na neki točki v oddelku. 564 00:28:57,060 --> 00:28:58,150 Torej, morda ne bomo dobili skozi vse to. 565 00:28:58,150 --> 00:28:59,960 Vendar bomo storili, kolikor smo lahko zdaj. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Začnimo. 568 00:29:01,960 --> 00:29:04,770 Asam, kako ustvariti novo vozlišče? 569 00:29:04,770 --> 00:29:06,810 >> PUBLIKA: Vam struct *. 570 00:29:06,810 --> 00:29:09,640 >> JASON Hirschhorna: Tako smo imajo, da tu gor. 571 00:29:09,640 --> 00:29:10,040 Oh, oprostite. 572 00:29:10,040 --> 00:29:13,530 Pravite, da je zgradimo *. 573 00:29:13,530 --> 00:29:17,260 >> PUBLIKA: In potem [? vrste?] vozlišče ali c vozlišče. 574 00:29:17,260 --> 00:29:17,780 >> JASON Hirschhorna: OK. 575 00:29:17,780 --> 00:29:19,740 Jaz ga bom poklical new_node tako da bomo lahko ostali dosledni. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> PUBLIKA: In želite nastaviti, da na glavo, prvo vozlišče. 578 00:29:33,180 --> 00:29:33,580 >> JASON Hirschhorna: OK. 579 00:29:33,580 --> 00:29:37,290 Torej, zdaj je to kaže na - zato je to še ni ustvaril novo vozlišče. 580 00:29:37,290 --> 00:29:41,380 To je samo kaže na prvo vozlišče v seznamu. 581 00:29:41,380 --> 00:29:42,630 Kako ustvariti novo vozlišče? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Če rabim prostor za ustvarjanje novega vozlišča. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 In kako velik? 586 00:29:51,710 --> 00:30:00,390 >> PUBLIKA: velikost struct. 587 00:30:00,390 --> 00:30:01,150 >> JASON Hirschhorna: velikost struct. 588 00:30:01,150 --> 00:30:02,400 In kaj struct imenuje? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> PUBLIKA: Node? 591 00:30:09,840 --> 00:30:11,640 >> JASON Hirschhorna: Node. 592 00:30:11,640 --> 00:30:17,640 Torej malloc (sizeof (vozlišče)); nam daje prostor. 593 00:30:17,640 --> 00:30:19,740 In je ta linija - 594 00:30:19,740 --> 00:30:21,740 ena stvar je napačna v tej vrstici. 595 00:30:21,740 --> 00:30:24,430 Je new_node kazalec na struct? 596 00:30:24,430 --> 00:30:25,650 To je generično ime. 597 00:30:25,650 --> 00:30:26,520 Kaj je to - 598 00:30:26,520 --> 00:30:27,450 vozlišče, točno. 599 00:30:27,450 --> 00:30:29,340 To je vozlišče *. 600 00:30:29,340 --> 00:30:33,010 In kaj bomo storili takoj po smo malloc nekaj, Asan? 601 00:30:33,010 --> 00:30:34,476 Kaj je prva stvar, bomo naredili? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Kaj pa, če to ne deluje? 604 00:30:40,320 --> 00:30:42,430 >> PUBLIKA: Oh, preverite, če je opozarja na vozlišče? 605 00:30:42,430 --> 00:30:43,310 >> JASON Hirschhorna: Točno tako. 606 00:30:43,310 --> 00:30:46,750 Torej, če ste new_node enaka enaka null, kaj naj naredimo? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 To vrne bool, to funkcijo. 609 00:30:54,820 --> 00:30:57,760 Točno tako. 610 00:30:57,760 --> 00:30:58,450 Izgleda dobro. 611 00:30:58,450 --> 00:30:59,680 Kaj bi tam dodati? 612 00:30:59,680 --> 00:31:00,670 Mi bomo dodali stvari na koncu. 613 00:31:00,670 --> 00:31:03,160 Ampak, da do sedaj izgleda dobro. 614 00:31:03,160 --> 00:31:06,170 Ustvarite sedanje in prejšnje napotke. 615 00:31:06,170 --> 00:31:08,650 Michael, kako naj to naredim? 616 00:31:08,650 --> 00:31:12,810 >> PUBLIKA: Vi bi morali narediti vozlišče *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 To bi morali narediti eno ne za new_node ampak za 619 00:31:25,502 --> 00:31:26,905 vozlišča že imamo. 620 00:31:26,905 --> 00:31:27,230 >> JASON Hirschhorna: OK. 621 00:31:27,230 --> 00:31:29,255 Torej trenutni vozel sva naprej. 622 00:31:29,255 --> 00:31:30,505 Poklical bom to Valuta. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Vse je v redu. 625 00:31:39,770 --> 00:31:41,620 Odločili smo želeli obdržati dva, ker moramo vedeti 626 00:31:41,620 --> 00:31:42,870 kaj je pred njim. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Kaj so dobili inicializirana na? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> PUBLIKA: Njihova vrednost v našem seznamu. 631 00:31:54,180 --> 00:31:58,090 >> JASON Hirschhorna: Torej, kaj je Prva stvar, na našem seznamu? 632 00:31:58,090 --> 00:32:04,050 Ali pa, kako bomo vedeli, kje začetek našem seznamu je? 633 00:32:04,050 --> 00:32:08,015 >> PUBLIKA: Ali ni opravil v funkciji? 634 00:32:08,015 --> 00:32:08,466 >> JASON Hirschhorna: Right. 635 00:32:08,466 --> 00:32:09,716 Sprejet je bil leta tukaj. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Torej, če je to prešlo v funkciji, začetek seznama, kaj bi morali 638 00:32:18,980 --> 00:32:21,270 aktualnega enak? 639 00:32:21,270 --> 00:32:22,110 >> PUBLIKA: Seznam. 640 00:32:22,110 --> 00:32:22,900 >> JASON Hirschhorna: Seznam. 641 00:32:22,900 --> 00:32:24,090 Točno tako. 642 00:32:24,090 --> 00:32:26,290 Sedaj ima naslov začetek našega seznama. 643 00:32:26,290 --> 00:32:28,450 In kaj je prejšnja? 644 00:32:28,450 --> 00:32:31,920 >> PUBLIKA: Seznam minus ena? 645 00:32:31,920 --> 00:32:32,690 >> JASON Hirschhorna: Obstaja nič pred njim. 646 00:32:32,690 --> 00:32:34,580 Torej, kaj lahko storimo, da bi pomenilo nič? 647 00:32:34,580 --> 00:32:35,050 >> PUBLIKA: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON Hirschhorna: Ja. 649 00:32:35,450 --> 00:32:37,950 To se sliši kot dobra ideja. 650 00:32:37,950 --> 00:32:38,360 Popolna. 651 00:32:38,360 --> 00:32:39,630 Hvala vam. 652 00:32:39,630 --> 00:32:42,850 Pojdi po seznamu. 653 00:32:42,850 --> 00:32:45,490 Constantine, kako dolgo bomo iti skozi seznam? 654 00:32:45,490 --> 00:32:49,010 >> PUBLIKA: dokler ne bomo dosegli nič. 655 00:32:49,010 --> 00:32:49,390 >> JASON Hirschhorna: OK. 656 00:32:49,390 --> 00:32:50,430 Torej, če je, medtem ko je za zanke. 657 00:32:50,430 --> 00:32:52,200 Kaj počnemo? 658 00:32:52,200 --> 00:32:53,320 >> PUBLIKA: Morda za zanko? 659 00:32:53,320 --> 00:32:53,910 >> JASON Hirschhorna: Naredimo zanko. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> PUBLIKA: In smo rekli za - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 Do konca tekočega kazalca ni enaka null. 664 00:33:13,390 --> 00:33:19,160 >> JASON Hirschhorna: Torej, če vemo, Pogoj, kako lahko pišemo zanko 665 00:33:19,160 --> 00:33:21,740 temelji off tega pogoja. 666 00:33:21,740 --> 00:33:24,380 Kakšno zanke moramo uporabiti? 667 00:33:24,380 --> 00:33:25,260 >> PUBLIKA: Med. 668 00:33:25,260 --> 00:33:25,590 >> JASON Hirschhorna: Ja. 669 00:33:25,590 --> 00:33:27,130 Da je bolj smiselno, ki temelji off, kaj si rekel. 670 00:33:27,130 --> 00:33:29,430 Če želimo le, da gredo v smo, da bo samo vem, da je stvar, bi bilo 671 00:33:29,430 --> 00:33:31,680 občutek, da to while zanko. 672 00:33:31,680 --> 00:33:39,880 Medtem ko je trenutni ni enaka nič, če je vrednost manj kot to vozlišče. 673 00:33:39,880 --> 00:33:41,650 Akshar, daj mi to linijo. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> PUBLIKA: Če trenutni-> n n manjša od vrednosti. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Ali obratno, da. 678 00:34:03,260 --> 00:34:06,140 Switch to konzolo. 679 00:34:06,140 --> 00:34:06,620 >> JASON Hirschhorna: Žal mi je. 680 00:34:06,620 --> 00:34:08,760 >> PUBLIKA: Spremenite nosilec. 681 00:34:08,760 --> 00:34:10,914 >> JASON Hirschhorna: Torej, če je to večja od vrednosti. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Ker to je zmedeno z komentar zgoraj, bom to storil. 684 00:34:22,120 --> 00:34:22,480 Ampak ja. 685 00:34:22,480 --> 00:34:25,125 Če je naša vrednost manj kot to vozlišče, kaj naj naredimo? 686 00:34:25,125 --> 00:34:25,540 Oh. 687 00:34:25,540 --> 00:34:26,710 Ga imam tukaj. 688 00:34:26,710 --> 00:34:27,960 Vstavite prej. 689 00:34:27,960 --> 00:34:32,080 690 00:34:32,080 --> 00:34:32,370 OK. 691 00:34:32,370 --> 00:34:33,933 Kako bomo to storili? 692 00:34:33,933 --> 00:34:34,900 >> PUBLIKA: Je to še vedno jaz? 693 00:34:34,900 --> 00:34:36,150 >> JASON Hirschhorna: Ja. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> PUBLIKA: You - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> naslednji. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON Hirschhorna: Torej, kaj je da bo enako? 700 00:34:50,163 --> 00:34:52,070 >> PUBLIKA: To se dogaja, do enakega toka. 701 00:34:52,070 --> 00:34:53,889 >> JASON Hirschhorna: Točno tako. 702 00:34:53,889 --> 00:34:55,730 In tako drugi - 703 00:34:55,730 --> 00:34:56,730 kaj pa moramo posodobiti? 704 00:34:56,730 --> 00:34:59,982 >> PUBLIKA: Preverite, če mimo enaka null. 705 00:34:59,982 --> 00:35:01,870 >> JASON Hirschhorna: Če je prejšnja - 706 00:35:01,870 --> 00:35:03,730 tako da, če prej enaka null. 707 00:35:03,730 --> 00:35:05,990 >> PUBLIKA: To pomeni, da se dogaja da postane vodja. 708 00:35:05,990 --> 00:35:06,780 >> JASON Hirschhorna: To pomeni to je postal vodja. 709 00:35:06,780 --> 00:35:07,620 Torej, kaj naj naredimo? 710 00:35:07,620 --> 00:35:12,510 >> PUBLIKA: Mi glavo enaka new_node. 711 00:35:12,510 --> 00:35:16,690 >> JASON Hirschhorna: Head enaka new_node. 712 00:35:16,690 --> 00:35:20,540 In zakaj glavo tukaj, ne seznam? 713 00:35:20,540 --> 00:35:24,940 >> PUBLIKA: Ker je vodja globalne spremenljivka, katere izhodiščni kraj. 714 00:35:24,940 --> 00:35:26,190 >> JASON Hirschhorna: Sweet. 715 00:35:26,190 --> 00:35:33,750 716 00:35:33,750 --> 00:35:34,170 OK. 717 00:35:34,170 --> 00:35:36,150 In - 718 00:35:36,150 --> 00:35:53,796 >> PUBLIKA: Potem ti drugega prejšnja-> Naslednja enaka new_node. 719 00:35:53,796 --> 00:35:55,080 In potem vrne true. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON Hirschhorna: Kam smo postavili konec new_node? 722 00:36:02,700 --> 00:36:04,850 >> PUBLIKA: Jaz bi - 723 00:36:04,850 --> 00:36:06,180 Sem jih, da na začetku. 724 00:36:06,180 --> 00:36:07,430 >> JASON Hirschhorna: Torej, kaj je meja? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> PUBLIKA: Po if stavek preverjanje, če je to znano. 727 00:36:12,598 --> 00:36:13,057 >> JASON Hirschhorna: Tukaj? 728 00:36:13,057 --> 00:36:18,335 >> PUBLIKA: Jaz bi naredil new_node-> n enako vrednost. 729 00:36:18,335 --> 00:36:19,585 >> JASON Hirschhorna: Sliši se dobro. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Verjetno je smiselno - ne bomo morate vedeti, kaj seznam smo na 732 00:36:25,090 --> 00:36:26,280 ker smo edini, ki se ukvarjajo z eno listo. 733 00:36:26,280 --> 00:36:29,560 Torej bolje izjava funkcija to je samo, da se znebite tega 734 00:36:29,560 --> 00:36:34,360 v celoti in samo vstavite vrednost v glavo. 735 00:36:34,360 --> 00:36:35,930 Mi sploh ne potrebujete vedeti Kaj Seznam notri smo 736 00:36:35,930 --> 00:36:39,140 Ampak bom ga hranite za zdaj in nato pa ga spremenite po posodobitvi 737 00:36:39,140 --> 00:36:42,590 diapozitive in kodo. 738 00:36:42,590 --> 00:36:44,980 Tako da izgleda dobro za zdaj. 739 00:36:44,980 --> 00:36:46,560 Če je vrednost - kdo lahko to linijo? 740 00:36:46,560 --> 00:36:47,810 Če - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 Kaj delamo tukaj, Noah. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> PUBLIKA: Če je vrednost večja kot Curr-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON Hirschhorna: Kako gremo na naslednje vozlišče? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> PUBLIKA: Valuta-> n enako new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON Hirschhorna: Tako je n kateri del struct? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Celo število. 753 00:37:46,020 --> 00:37:50,420 In new_node je kazalec na vozlišče. 754 00:37:50,420 --> 00:37:51,880 Torej, kaj del curr bi morali posodobiti? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 Če ne n, potem kaj je na drugi strani? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Noah, kaj je na drugi strani. 759 00:38:22,810 --> 00:38:23,570 >> PUBLIKA: Oh, naslednji. 760 00:38:23,570 --> 00:38:25,645 >> JASON Hirschhorna: Naprej, točno. 761 00:38:25,645 --> 00:38:26,410 Točno tako. 762 00:38:26,410 --> 00:38:28,770 Naslednja je pravi. 763 00:38:28,770 --> 00:38:31,540 In kaj še potrebujemo posodobiti, Noah? 764 00:38:31,540 --> 00:38:32,840 >> PUBLIKA: Kazalci. 765 00:38:32,840 --> 00:38:34,840 >> JASON Hirschhorna: Do smo posodobili tok. 766 00:38:34,840 --> 00:38:36,090 >> PUBLIKA: Nazaj-> naslednji. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON Hirschhorna: Ja. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 OK, bomo premor. 771 00:38:58,370 --> 00:39:02,200 Kdo nam lahko pomagal? 772 00:39:02,200 --> 00:39:03,385 Manu, kaj naj storimo? 773 00:39:03,385 --> 00:39:05,615 >> PUBLIKA: Moraš nastaviti je enaka curr-> naslednji. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Vendar pa, da je pred prejšnjo vrstico. 776 00:39:11,630 --> 00:39:12,880 >> JASON Hirschhorna: OK. 777 00:39:12,880 --> 00:39:16,590 778 00:39:16,590 --> 00:39:18,260 Kaj drugega? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> PUBLIKA: Ne verjamem, da si pomenilo, da spremenite Valuta-> next. 781 00:39:22,680 --> 00:39:29,270 Mislim, da si hotel storiti Valuta enaka curr-> zraven, da gredo na naslednje vozlišče. 782 00:39:29,270 --> 00:39:30,500 >> JASON Hirschhorna: Žal mi je, kje? 783 00:39:30,500 --> 00:39:32,680 O tem, kaj linija? 784 00:39:32,680 --> 00:39:33,420 Ta linija? 785 00:39:33,420 --> 00:39:33,750 >> OBČINSTVO: Ja. 786 00:39:33,750 --> 00:39:35,745 Naredite curr enaka curr-> naslednji. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON Hirschhorna: Tako da je pravilna ker tok 789 00:39:43,360 --> 00:39:45,220 kazalec na vozlišče. 790 00:39:45,220 --> 00:39:48,550 In želimo, da kaže na naslednji vozlišče, kaj je že sedaj 791 00:39:48,550 --> 00:39:49,930 je poudaril, da. 792 00:39:49,930 --> 00:39:54,410 Valuta je sam zraven. 793 00:39:54,410 --> 00:39:58,620 Ampak, če smo bili posodobiti curr.next smo bi bilo treba posodobiti dejansko seznanil 794 00:39:58,620 --> 00:40:01,430 sama po sebi, ne tam, kjer je to kazalec je obrnjena. 795 00:40:01,430 --> 00:40:02,680 Kaj pa te vrstice, čeprav. 796 00:40:02,680 --> 00:40:05,160 797 00:40:05,160 --> 00:40:07,330 Avi? 798 00:40:07,330 --> 00:40:09,590 >> PUBLIKA: Nazaj-> naslednji enaka Valuta. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON Hirschhorna: Torej še enkrat, če je prejšnja kazalec na vozlišče, prev-> dostavo je 801 00:40:19,440 --> 00:40:23,020 dejanska kazalec v vozlišču. 802 00:40:23,020 --> 00:40:27,190 Torej, to bi bilo posodabljanje kazalec na vozlišče curr. 803 00:40:27,190 --> 00:40:28,570 Mi ne želimo posodobiti kazalec na vozlišče. 804 00:40:28,570 --> 00:40:30,570 Želimo posodobiti prejšnje. 805 00:40:30,570 --> 00:40:31,850 Torej, kako bomo to storili? 806 00:40:31,850 --> 00:40:34,250 >> PUBLIKA: To bi bilo šele prejšnja. 807 00:40:34,250 --> 00:40:34,565 >> JASON Hirschhorna: Right. 808 00:40:34,565 --> 00:40:35,560 Predhodni je kazalec na vozlišče. 809 00:40:35,560 --> 00:40:38,750 Zdaj smo jo spremeniti Novi kazalec na vozlišče. 810 00:40:38,750 --> 00:40:40,830 OK, gremo naprej navzdol. 811 00:40:40,830 --> 00:40:41,940 Končno, ta zadnji pogoj. 812 00:40:41,940 --> 00:40:44,896 Jeff, kaj delamo tukaj? 813 00:40:44,896 --> 00:40:47,515 >> PUBLIKA: Če je vrednost enak Curr-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON Hirschhorna: Žal mi je. 816 00:40:51,300 --> 00:40:52,372 Oh moj bog. 817 00:40:52,372 --> 00:40:54,330 Kaj? 818 00:40:54,330 --> 00:40:55,580 Vrednost == curr-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Kaj naj naredimo? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> PUBLIKA: Bi osvoboditi našo new_node, in potem boš vrne false. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON Hirschhorna: To je tisto, ki smo jih doslej napisal. 825 00:41:23,460 --> 00:41:25,710 Ima kdo kaj dodati, preden naredimo? 826 00:41:25,710 --> 00:41:35,460 827 00:41:35,460 --> 00:41:35,710 OK. 828 00:41:35,710 --> 00:41:36,960 Poskusimo. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Nadzor lahko pridete do konca ne-nična funkcijo. 831 00:41:46,110 --> 00:41:48,310 Avi, kaj se dogaja? 832 00:41:48,310 --> 00:41:51,380 >> PUBLIKA: Ali bi moral dati vrnitev drži zunaj, medtem ko zanke? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON Hirschhorna: Ne vem. 835 00:41:54,400 --> 00:41:54,780 Me želiš? 836 00:41:54,780 --> 00:41:55,520 >> PUBLIKA: Pozabi. 837 00:41:55,520 --> 00:41:56,350 Ne 838 00:41:56,350 --> 00:41:57,180 >> JASON Hirschhorna: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> PUBLIKA: Mislim, da si mislil, da mu vrne false konec 840 00:41:59,460 --> 00:42:02,230 while zanke. 841 00:42:02,230 --> 00:42:03,270 >> JASON Hirschhorna: Torej, če želiš, da bi šel? 842 00:42:03,270 --> 00:42:05,270 >> PUBLIKA: Kot izven while zanko. 843 00:42:05,270 --> 00:42:08,800 Torej, če zaprete while zanko, kar pomeni, da da ste prišli do konca in 844 00:42:08,800 --> 00:42:09,980 se ni nič zgodilo. 845 00:42:09,980 --> 00:42:10,410 >> JASON Hirschhorna: OK. 846 00:42:10,410 --> 00:42:12,340 Torej, kaj bomo storili tukaj? 847 00:42:12,340 --> 00:42:13,702 >> PUBLIKA: Vrnete false tudi tam. 848 00:42:13,702 --> 00:42:15,040 >> JASON Hirschhorna: Oh, smo to storiti v obeh mestih? 849 00:42:15,040 --> 00:42:15,650 >> OBČINSTVO: Ja. 850 00:42:15,650 --> 00:42:16,900 >> JASON Hirschhorna: OK. 851 00:42:16,900 --> 00:42:24,840 852 00:42:24,840 --> 00:42:26,160 Naj gremo? 853 00:42:26,160 --> 00:42:26,980 Oh moj bog. 854 00:42:26,980 --> 00:42:27,290 Žal mi je. 855 00:42:27,290 --> 00:42:28,480 Se opravičujem za zaslon. 856 00:42:28,480 --> 00:42:30,530 To je neke vrste nori na nas. 857 00:42:30,530 --> 00:42:31,520 Tako da izberete možnost. 858 00:42:31,520 --> 00:42:35,260 Nič, na oznako, zapre program. 859 00:42:35,260 --> 00:42:36,700 Ena vstavi nekaj. 860 00:42:36,700 --> 00:42:37,990 Oglejmo vstavite tri. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Vložek ni bil uspešen. 863 00:42:45,380 --> 00:42:46,500 Grem natisniti. 864 00:42:46,500 --> 00:42:48,050 Jaz nimam ničesar. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Mogoče, da je bil samo krompir. 867 00:42:50,250 --> 00:42:52,810 Vstavite eno. 868 00:42:52,810 --> 00:42:55,770 Ni uspešen. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Oglejmo teči skozi GDB res hitro da preverite, kaj se dogaja. 871 00:43:02,400 --> 00:43:06,055 >> Zapomni si gdb. / Ime vašega Program nam pride v GDB. 872 00:43:06,055 --> 00:43:07,610 Je, da je veliko ravnati? 873 00:43:07,610 --> 00:43:08,560 Utripa? 874 00:43:08,560 --> 00:43:10,400 Verjetno. 875 00:43:10,400 --> 00:43:12,760 Zaprite oči in si nekaj globoko diha, če se naveličaš 876 00:43:12,760 --> 00:43:13,580 gledaš na to. 877 00:43:13,580 --> 00:43:14,200 Jaz sem v GDB. 878 00:43:14,200 --> 00:43:15,830 Kaj je prva stvar, ki mi v GDB? 879 00:43:15,830 --> 00:43:17,050 Moramo ugotoviti, kaj se dogaja tukaj. 880 00:43:17,050 --> 00:43:17,310 Pa poglejmo. 881 00:43:17,310 --> 00:43:21,650 Imamo šest minut, da ugotovimo izvedeti, kaj se dogaja. 882 00:43:21,650 --> 00:43:22,900 Glavni odmor. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 In potem, kaj naj storim? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 Teči. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Oglejmo izberite možnost. 889 00:43:34,160 --> 00:43:36,330 In kaj N storiti? 890 00:43:36,330 --> 00:43:38,480 Naprej. 891 00:43:38,480 --> 00:43:38,950 Ja. 892 00:43:38,950 --> 00:43:39,740 >> PUBLIKA: Ali nisi omenil - 893 00:43:39,740 --> 00:43:45,230 nisi rekel, da je bil vodja inicializirana na ničlo na začetku. 894 00:43:45,230 --> 00:43:47,140 Vendar sem mislil, da si rekel, da je bilo v redu. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON Hirschhorna: Pojdimo - oglejmo v GDB in potem gremo nazaj. 897 00:43:52,640 --> 00:43:54,910 Ampak to zveni kot ste že nekaj idej o tem, kaj se dogaja. 898 00:43:54,910 --> 00:43:58,340 Zato želimo vstaviti nekaj. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Imamo vstaviti. 901 00:44:00,150 --> 00:44:00,770 Vnesite int. 902 00:44:00,770 --> 00:44:01,990 Bomo vstaviti tri. 903 00:44:01,990 --> 00:44:03,000 In potem sem na tej progi. 904 00:44:03,000 --> 00:44:07,030 Kako naj grem začnete razhroščevanje vložek znano funkcijo? 905 00:44:07,030 --> 00:44:08,280 Oh moj bog. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 To je veliko. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Je, da je vsa iz sebe veliko? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> PUBLIKA: Oh, to je umrl. 912 00:44:21,680 --> 00:44:22,930 >> JASON Hirschhorna: Pravkar sem ga potegnil ven. 913 00:44:22,930 --> 00:44:27,364 914 00:44:27,364 --> 00:44:28,310 OK. 915 00:44:28,310 --> 00:44:29,560 >> PUBLIKA: Mogoče je drugi konec žice. 916 00:44:29,560 --> 00:44:37,000 917 00:44:37,000 --> 00:44:39,470 >> JASON Hirschhorna: Wow. 918 00:44:39,470 --> 00:44:42,330 Torej bottom line - 919 00:44:42,330 --> 00:44:43,470 Kaj si rekel? 920 00:44:43,470 --> 00:44:46,040 >> PUBLIKA: Rekel sem ironija tehnične Težave v tem razredu. 921 00:44:46,040 --> 00:44:46,410 >> JASON Hirschhorna: Vem. 922 00:44:46,410 --> 00:44:48,660 Če bi le imel nadzor nad tem delom. 923 00:44:48,660 --> 00:44:49,910 [Neslišno] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Sliši se odlično. 926 00:44:55,400 --> 00:44:58,680 Zakaj ne bi vi začeli razmišljati o kaj bi lahko naredil narobe, 927 00:44:58,680 --> 00:45:01,140 in se vrnemo v 90 sekundah. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, jaz te bom vprašal, kako iti znotraj insert_node jo debug. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Torej, to je, če smo nazadnje končali. 932 00:46:31,460 --> 00:46:35,110 Kako naj grem noter insert_node, Avica, preučiti, kaj se dogaja? 933 00:46:35,110 --> 00:46:36,360 Kaj ukaz GDB? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Break me ne bi notri. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Ali Marquise vedeli? 938 00:46:47,130 --> 00:46:48,240 >> PUBLIKA: Kaj? 939 00:46:48,240 --> 00:46:51,780 >> JASON Hirschhorna: Kaj ukaz GDB Uporabljam noter to funkcijo? 940 00:46:51,780 --> 00:46:52,070 >> PUBLIKA: Step? 941 00:46:52,070 --> 00:46:55,140 >> JASON Hirschhorna: Korak preko S. To me popelje v notranjosti. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing nekaj prostora. 944 00:46:58,040 --> 00:46:59,120 Da vse izgleda kot njegova dogaja. 945 00:46:59,120 --> 00:47:00,370 Oglejmo new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 To imam nekaj pomnilniški naslov. 948 00:47:05,410 --> 00:47:07,440 Poglejmo - 949 00:47:07,440 --> 00:47:08,500 da je vse pravilno. 950 00:47:08,500 --> 00:47:12,220 Torej, vse, kar sem se zdi, da deluje pravilno. 951 00:47:12,220 --> 00:47:14,530 >> PUBLIKA: Kakšna je razlika med P in zaslonom? 952 00:47:14,530 --> 00:47:16,160 >> JASON Hirschhorna: P stoji za tisk. 953 00:47:16,160 --> 00:47:19,310 In tako se sprašuješ, kaj je Razlika med to in to? 954 00:47:19,310 --> 00:47:22,330 V tem primeru nič. 955 00:47:22,330 --> 00:47:26,960 Ampak na splošno obstajajo nekatere razlike. 956 00:47:26,960 --> 00:47:28,220 In bi morali iskati v priročniku gdb. 957 00:47:28,220 --> 00:47:29,560 Toda v tem primeru nič. 958 00:47:29,560 --> 00:47:31,460 Smo nagnjeni k uporabi tisk, čeprav, saj nam ni treba storiti veliko več, kot 959 00:47:31,460 --> 00:47:33,960 natisniti eno vrednost. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 Tako da smo na liniji 80 našega kodeksa, nastavitev vozlišča * Valuta enak seznam. 962 00:47:40,300 --> 00:47:42,500 Dovolite nam natisnite Valuta. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 To je enak seznam. 965 00:47:46,840 --> 00:47:48,850 Sladko. 966 00:47:48,850 --> 00:47:49,340 Čakati. 967 00:47:49,340 --> 00:47:50,590 To je enako nekaj. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 To se ne zdi prav. 970 00:47:56,190 --> 00:47:56,840 Takole. 971 00:47:56,840 --> 00:47:59,470 To je zato, ker v GDB, desno, če to je črta, da si na njem 972 00:47:59,470 --> 00:48:00,330 še ni izvršena. 973 00:48:00,330 --> 00:48:03,100 Torej boste morali dejansko tip Naslednja izvršiti linijo 974 00:48:03,100 --> 00:48:05,230 Pred videli rezultate. 975 00:48:05,230 --> 00:48:06,680 Torej, tukaj smo. 976 00:48:06,680 --> 00:48:09,490 Pravkar smo izvedli te vrstice, Predhodna enaka null. 977 00:48:09,490 --> 00:48:13,590 Torej, še enkrat, če tiskamo prejšnja ne bomo videli nič čudnega. 978 00:48:13,590 --> 00:48:18,680 Ampak, če smo dejansko izvršiti, da linijo, potem pa bomo videli 979 00:48:18,680 --> 00:48:20,380 da je ta linija delal. 980 00:48:20,380 --> 00:48:21,060 >> Torej imamo Valuta. 981 00:48:21,060 --> 00:48:23,180 Tisti, ki so tako dobri. 982 00:48:23,180 --> 00:48:24,010 Kajne? 983 00:48:24,010 --> 00:48:28,130 Zdaj smo na tej progi tukaj. 984 00:48:28,130 --> 00:48:29,310 Medtem ko curr ni enaka null. 985 00:48:29,310 --> 00:48:31,110 No, kaj počne curr enaka? 986 00:48:31,110 --> 00:48:32,450 Pravkar smo videli, je znašal null. 987 00:48:32,450 --> 00:48:33,210 Ga natisne bomo ven. 988 00:48:33,210 --> 00:48:35,110 Jaz ga bom še enkrat natisniti. 989 00:48:35,110 --> 00:48:36,720 Tako je, da medtem ko zanke gre za usmrtitev? 990 00:48:36,720 --> 00:48:37,270 >> PUBLIKA: Ne 991 00:48:37,270 --> 00:48:39,790 >> JASON Hirschhorna: Torej, ko sem tipkal, da linijo, boste videli smo skočili vso pot 992 00:48:39,790 --> 00:48:41,390 na dno, vrne false. 993 00:48:41,390 --> 00:48:44,520 In potem se bomo vrnili false in iti nazaj v naš program in 994 00:48:44,520 --> 00:48:48,020 sčasoma natisniti, kot smo videli, vložek ni bila uspešna. 995 00:48:48,020 --> 00:48:51,010 Torej, kdo kakšne ideje o tem, kaj moramo storiti, da popraviti to? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Bom počakati, dokler ne vidim Nekaj ​​roke gredo gor. 998 00:48:57,570 --> 00:48:58,830 Nismo izvršiti to. 999 00:48:58,830 --> 00:49:01,660 Imejte v mislih, da je to prvi kar smo počeli. 1000 00:49:01,660 --> 00:49:02,430 Ne bom narediti nekaj. 1001 00:49:02,430 --> 00:49:03,670 Jaz bom naredil nekaj. 1002 00:49:03,670 --> 00:49:04,830 Ker nekaj pomeni dva. 1003 00:49:04,830 --> 00:49:07,620 Počakal bom za več kot dva. 1004 00:49:07,620 --> 00:49:10,690 >> Prvi vstavljanje, Curr, Privzeto je enaka nič. 1005 00:49:10,690 --> 00:49:14,050 In to zanko izvede le če curr ni nič. 1006 00:49:14,050 --> 00:49:18,740 Torej, kako lahko dobim okoli tega? 1007 00:49:18,740 --> 00:49:19,990 Vidim tri roke. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Počakal bom za več kot tri mesece. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, kaj misliš? 1012 00:49:35,940 --> 00:49:37,730 >> PUBLIKA: No, če ga potrebujete, da izvesti več kot enkrat, ki ste jo pravkar 1013 00:49:37,730 --> 00:49:39,948 spremenite v do-while zanko. 1014 00:49:39,948 --> 00:49:41,250 >> JASON Hirschhorna: OK. 1015 00:49:41,250 --> 00:49:44,240 Bo to rešili naš problem, čeprav? 1016 00:49:44,240 --> 00:49:47,750 >> PUBLIKA: V tem primeru ni potrebna, ker Dejstvo, da je seznam prazen. 1017 00:49:47,750 --> 00:49:52,150 Torej potem verjetno samo morali dodati izjava, da če se zanka izhodi 1018 00:49:52,150 --> 00:49:55,312 potem boste morali biti na koncu Seznam, na kateri točki ste 1019 00:49:55,312 --> 00:49:56,562 Lahko samo vstavite. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON Hirschhorna: mi je všeč. 1022 00:49:59,680 --> 00:50:00,500 To je smiselno. 1023 00:50:00,500 --> 00:50:03,390 Če zanka izstopi - 1024 00:50:03,390 --> 00:50:04,800 saj bom vrnil false tukaj. 1025 00:50:04,800 --> 00:50:08,220 Torej, če zanke izhodov, nato pa smo v konec seznama, ali morda 1026 00:50:08,220 --> 00:50:10,690 začetek seznama, če ni ničesar v to, kar je enako koncu. 1027 00:50:10,690 --> 00:50:12,770 Torej, zdaj želimo vstaviti Nekaj ​​tukaj. 1028 00:50:12,770 --> 00:50:17,380 Torej, kako to kodo videti, Marcus? 1029 00:50:17,380 --> 00:50:21,600 >> PUBLIKA: Če že imaš vozlišče malloced, bi lahko rekli, 1030 00:50:21,600 --> 00:50:25,400 new_node-> naslednji enaka null, ker da mora biti na koncu. 1031 00:50:25,400 --> 00:50:27,510 Ali new_node-> naslednji enaka null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON Hirschhorna: OK. 1033 00:50:27,765 --> 00:50:28,190 Žal mi je. 1034 00:50:28,190 --> 00:50:35,760 New_node-> naslednji enaka null zato, ker smo na koncu. 1035 00:50:35,760 --> 00:50:36,460 Da ne ga dal noter 1036 00:50:36,460 --> 00:50:37,710 Kako bomo to dal na seznamu? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Prav. 1039 00:50:46,460 --> 00:50:47,750 To je samo nastavitev enaka. 1040 00:50:47,750 --> 00:50:50,940 No, kako bomo dejansko ga na seznamu? 1041 00:50:50,940 --> 00:50:54,170 Kaj je poudaril, da Konec seznamu? 1042 00:50:54,170 --> 00:50:56,090 >> PUBLIKA: Head. 1043 00:50:56,090 --> 00:50:57,566 >> JASON Hirschhorna: Oprostite? 1044 00:50:57,566 --> 00:50:59,440 >> PUBLIKA: vodja kaže na koncu seznama. 1045 00:50:59,440 --> 00:51:01,480 >> JASON Hirschhorna: Če ni nič v Seznam, glava kaže na 1046 00:51:01,480 --> 00:51:04,170 konec seznama. 1047 00:51:04,170 --> 00:51:06,920 Tako, da bo delo za prve vstavitve. 1048 00:51:06,920 --> 00:51:09,810 Kaj če obstaja nekaj stvari na seznamu? 1049 00:51:09,810 --> 00:51:12,470 Kot da ne želimo, da nastavite glavo enako new_node. 1050 00:51:12,470 --> 00:51:13,790 Kaj želimo, da tam narediti? 1051 00:51:13,790 --> 00:51:15,610 Ja? 1052 00:51:15,610 --> 00:51:16,860 Verjetno prejšnje. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Bo to delovalo? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Spomnimo se, da je prejšnja le kazalec na vozlišče. 1057 00:51:33,050 --> 00:51:34,770 In prejšnje je lokalna spremenljivka. 1058 00:51:34,770 --> 00:51:38,080 Tako da bo ta vrstica nastaviti lokalno spremenljivko, Prejšnja enake ali 1059 00:51:38,080 --> 00:51:39,380 kar kaže na to novo vozlišče. 1060 00:51:39,380 --> 00:51:41,500 Da dejansko ne bo dal v našem seznamu, čeprav. 1061 00:51:41,500 --> 00:51:44,330 Kako bomo to dal v našem seznamu? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> PUBLIKA: ti misliš naredite sedanjega-> next. 1064 00:51:46,870 --> 00:51:50,186 1065 00:51:50,186 --> 00:51:52,550 >> JASON Hirschhorna: OK. 1066 00:51:52,550 --> 00:51:54,010 curr-> naslednji. 1067 00:51:54,010 --> 00:51:58,768 Torej še enkrat, edini razlog, da smo dol Tukaj je, kaj počne sedanja enaka? 1068 00:51:58,768 --> 00:51:59,760 >> PUBLIKA: Enako null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON Hirschhorna: Pa kaj se zgodi, če naredimo null-> naslednji? 1070 00:52:01,790 --> 00:52:02,810 Kaj bomo dobili? 1071 00:52:02,810 --> 00:52:04,060 Bomo dobili napako segmentacije. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> PUBLIKA: Do Valuta enaka null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON Hirschhorna: To je ista stvar kot predogled, čeprav zato, ker je 1075 00:52:10,760 --> 00:52:12,820 lokalna spremenljivka smo nastavitev enako tega novega vozlišča. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Vrnimo se k naši sliki vstavljanje nekaj. 1078 00:52:20,920 --> 00:52:25,500 Pravijo, da smo vstavljanje na koncu seznama, tako da tukaj. 1079 00:52:25,500 --> 00:52:30,010 Imamo trenutni kazalec, ki je kaže na nič in s prejšnjo točko 1080 00:52:30,010 --> 00:52:32,800 , ki je poudaril, da je 8.. 1081 00:52:32,800 --> 00:52:35,330 Torej, kaj moramo posodobiti, Avi? 1082 00:52:35,330 --> 00:52:36,680 >> PUBLIKA: Prejšnja-> naslednji? 1083 00:52:36,680 --> 00:52:41,980 >> JASON Hirschhorna: Nazaj-> naslednji je tisto, želimo posodobiti, ker to 1084 00:52:41,980 --> 00:52:44,960 bo dejansko jo vstavite v konec seznama. 1085 00:52:44,960 --> 00:52:47,220 Še vedno imamo eno napako, čeprav, da bomo zašli v. 1086 00:52:47,220 --> 00:52:50,090 Kaj je to bug? 1087 00:52:50,090 --> 00:52:50,790 Ja? 1088 00:52:50,790 --> 00:52:53,860 >> PUBLIKA: To se dogaja, da se vrnete false v tem primeru? 1089 00:52:53,860 --> 00:52:56,380 >> JASON Hirschhorna: Oh, se je vrača false. 1090 00:52:56,380 --> 00:52:57,430 Toda obstaja še en bug. 1091 00:52:57,430 --> 00:52:58,930 Torej bomo morali dati v zameno resnične. 1092 00:52:58,930 --> 00:53:01,370 >> PUBLIKA: Ali je prejšnja vedno enaka nično na vrhu seznama? 1093 00:53:01,370 --> 00:53:03,645 >> JASON Hirschhorna: Torej, prejšnji vedno enaka null že na samem začetku. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Torej, kako lahko pridemo čez to? 1096 00:53:10,440 --> 00:53:10,950 Ja? 1097 00:53:10,950 --> 00:53:15,280 >> PUBLIKA: Mislim, da lahko narediš pregled pred zanko, medtem ko bi videli, če je 1098 00:53:15,280 --> 00:53:16,610 Prazen seznam. 1099 00:53:16,610 --> 00:53:17,000 >> JASON Hirschhorna: OK. 1100 00:53:17,000 --> 00:53:17,710 Torej, gremo tukaj. 1101 00:53:17,710 --> 00:53:18,530 Ali ček. 1102 00:53:18,530 --> 00:53:19,380 Če - 1103 00:53:19,380 --> 00:53:20,770 >> PUBLIKA: Torej, če glava enaka enaka null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON Hirschhorna: Če je glava enaka enaka null - 1106 00:53:26,320 --> 00:53:27,790 ki nam bo povedal, če je prazen list. 1107 00:53:27,790 --> 00:53:31,090 >> PUBLIKA: In potem si storiti glava enako novo. 1108 00:53:31,090 --> 00:53:34,740 >> JASON Hirschhorna: Head enaka new_node? 1109 00:53:34,740 --> 00:53:35,730 In kaj bomo morali narediti? 1110 00:53:35,730 --> 00:53:37,020 >> PUBLIKA: In potem vrne true. 1111 00:53:37,020 --> 00:53:37,535 >> JASON Hirschhorna: Ne čisto. 1112 00:53:37,535 --> 00:53:38,785 Nam manjka en korak. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> PUBLIKA: new_node Naslednja je opozoriti na null. 1115 00:53:43,710 --> 00:53:44,570 >> JASON Hirschhorna: Točno tako, Alden. 1116 00:53:44,570 --> 00:53:46,600 In potem se lahko vrnemo true. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Ampak to je vedno dobra ideja, da počnejo stvari na koncu seznama, prav? 1119 00:53:51,630 --> 00:53:51,950 Vse je v redu. 1120 00:53:51,950 --> 00:53:54,450 Še vedno lahko dejansko dobili na koncu seznama. 1121 00:53:54,450 --> 00:53:57,870 Torej je ta koda v redu, če sva že pri na koncu seznama in obstaja nekaj 1122 00:53:57,870 --> 00:53:59,120 stvari na seznamu? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Kajne? 1125 00:54:02,040 --> 00:54:03,540 Ker imamo vedno Marcusov ideja. 1126 00:54:03,540 --> 00:54:06,870 Mi lahko izhod iz te zanke, ker smo na koncu seznama. 1127 00:54:06,870 --> 00:54:09,308 Torej smo še vedno želijo to kodo tukaj? 1128 00:54:09,308 --> 00:54:10,520 >> PUBLIKA: Da. 1129 00:54:10,520 --> 00:54:11,000 >> JASON Hirschhorna: Ja. 1130 00:54:11,000 --> 00:54:14,190 In kaj bomo morali spremeniti, da? 1131 00:54:14,190 --> 00:54:15,440 Res je. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Ali to zveni dobro vsem tako daleč? 1134 00:54:21,640 --> 00:54:22,420 Ima kdo sploh - 1135 00:54:22,420 --> 00:54:23,480 Avi, imaš kaj za dodati? 1136 00:54:23,480 --> 00:54:23,920 >> PUBLIKA: Ne 1137 00:54:23,920 --> 00:54:25,276 >> JASON Hirschhorna: OK. 1138 00:54:25,276 --> 00:54:27,010 Tako smo naredili nekaj sprememb. 1139 00:54:27,010 --> 00:54:29,540 Naredili smo to preverjanje, preden smo šel za prazen seznam. 1140 00:54:29,540 --> 00:54:31,790 Tako smo poskrbeli za praznim seznamom. 1141 00:54:31,790 --> 00:54:35,500 In tukaj smo poskrbeli za vstavljanje Nekaj ​​na koncu seznama. 1142 00:54:35,500 --> 00:54:38,930 Tako se zdi, kot te, medtem ko zanke pridobivanju Skrb stvari vmes, 1143 00:54:38,930 --> 00:54:41,920 nekje na seznamu, če So stvari na seznamu. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Dovolite nam, znova zaženite program. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Ni uspešen. 1148 00:54:50,755 --> 00:54:52,190 >> PUBLIKA: Saj ni uspelo. 1149 00:54:52,190 --> 00:54:53,940 >> JASON Hirschhorna: Oh, Mi ni uspelo. 1150 00:54:53,940 --> 00:54:56,250 Dobra točka, Michael. 1151 00:54:56,250 --> 00:54:57,500 Dodajmo make povezano. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Linija 87 pa je napaka. 1154 00:55:04,830 --> 00:55:05,420 Line 87. 1155 00:55:05,420 --> 00:55:06,600 Alden je bil ta linija si mi jo dal. 1156 00:55:06,600 --> 00:55:08,962 Kaj je narobe? 1157 00:55:08,962 --> 00:55:10,710 >> PUBLIKA: Mora biti na null. 1158 00:55:10,710 --> 00:55:11,000 >> JASON Hirschhorna: Odlično. 1159 00:55:11,000 --> 00:55:11,630 Točno tako. 1160 00:55:11,630 --> 00:55:13,290 To bi morala biti nična. 1161 00:55:13,290 --> 00:55:15,210 Naj bo še enkrat. 1162 00:55:15,210 --> 00:55:17,220 Prevesti. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Oglejmo vstavite tri. 1165 00:55:19,400 --> 00:55:20,570 Vložek je uspela. 1166 00:55:20,570 --> 00:55:21,660 Dajmo ga natisnite. 1167 00:55:21,660 --> 00:55:23,590 Oh, če bi le lahko preveri. 1168 00:55:23,590 --> 00:55:25,500 Vendar nismo storili Še funkcijo tiskanja. 1169 00:55:25,500 --> 00:55:27,840 Oglejmo vnesti nekaj drugega. 1170 00:55:27,840 --> 00:55:29,090 Kaj moramo vstopiti? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> PUBLIKA: Seven. 1173 00:55:31,940 --> 00:55:33,340 >> JASON Hirschhorna: Sedem? 1174 00:55:33,340 --> 00:55:34,590 >> PUBLIKA: Da. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON Hirschhorna: Imamo napako SEG. 1177 00:55:39,780 --> 00:55:43,760 Torej imamo eno, vendar smo jasno se ne more znebiti dva. 1178 00:55:43,760 --> 00:55:45,690 To je 5:07. 1179 00:55:45,690 --> 00:55:48,370 Torej bi to lahko debug tri minute. 1180 00:55:48,370 --> 00:55:51,240 Ampak bom pustite nas tukaj in se premakniti na hash tabel. 1181 00:55:51,240 --> 00:55:54,290 Ampak še enkrat, odgovori za to kodo Sem jo bomo e-pošto na vas v nekaj. 1182 00:55:54,290 --> 00:55:55,440 Mi smo zelo blizu nje. 1183 00:55:55,440 --> 00:55:58,300 Zelo sem Spodbujam vas, da ugotovimo, kaj se dogaja tukaj in popraviti. 1184 00:55:58,300 --> 00:56:02,400 Zato ti bom pošlji kodo, kot je tudi plus raztopina - 1185 00:56:02,400 --> 00:56:03,670 Verjetno raztopina kasneje. 1186 00:56:03,670 --> 00:56:05,110 Prvi je ta številka. 1187 00:56:05,110 --> 00:56:08,290 >> Druga stvar, želim storiti, preden bomo Zaključek je nismo osvobodili ničesar. 1188 00:56:08,290 --> 00:56:10,370 Zato bi rad, da ti pokažem, kaj valgrind izgleda. 1189 00:56:10,370 --> 00:56:14,310 Če bomo teči meje valgrind na našem programu. / povezani. 1190 00:56:14,310 --> 00:56:22,540 Spet po tem diapozitiv smo Trajala naj bi valgrind z neko vrsto 1191 00:56:22,540 --> 00:56:26,410 Možnost, v tem primeru - Puščanja check = polna. 1192 00:56:26,410 --> 00:56:27,660 Torej, kaj je pisanje valgrind - Puščanja check = polna. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 Tako da bo to delovalo valgrind na našem programu. 1195 00:56:35,080 --> 00:56:37,000 In zdaj program dejansko deluje. 1196 00:56:37,000 --> 00:56:40,190 Torej bomo teči, tako kot prej, dal nekaj noter 1197 00:56:40,190 --> 00:56:40,830 Bom dal v treh. 1198 00:56:40,830 --> 00:56:41,790 To deluje. 1199 00:56:41,790 --> 00:56:43,202 Jaz ne bom poskusil postaviti v nekaj sicer zato, ker bomo 1200 00:56:43,202 --> 00:56:44,710 dobili SEG FALSE v tem primeru. 1201 00:56:44,710 --> 00:56:46,700 Tako da sem le, da bo nehal. 1202 00:56:46,700 --> 00:56:50,160 >> In zdaj vidite tukaj puščati in kopice povzetek. 1203 00:56:50,160 --> 00:56:52,310 To so dobre stvari, ki jih želite odjaviti. 1204 00:56:52,310 --> 00:56:56,780 Torej kup povzetek - pravi, v uporabi na izhodu - osem bajtov v enem bloku. 1205 00:56:56,780 --> 00:56:58,370 Da en blok vozlišče smo malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, rekel si pred vozlišče je osem ugrizi, ker ima celo število 1207 00:57:02,230 --> 00:57:02,680 in kazalec. 1208 00:57:02,680 --> 00:57:04,550 Tako, da je naša vozlišče. 1209 00:57:04,550 --> 00:57:08,170 In potem pravi, da uporablja malloc sedemkrat in smo osvobojeni 1210 00:57:08,170 --> 00:57:08,940 kar šestkrat. 1211 00:57:08,940 --> 00:57:13,680 Ampak mi nikoli ne imenujemo svobodni, tako da nimam Ideja, kaj je to govoril. 1212 00:57:13,680 --> 00:57:18,490 >> Ampak zadostuje, da pravijo, da če vaš Zažene se program, malloc se imenuje 1213 00:57:18,490 --> 00:57:20,330 v nekaterih drugih krajih, ki smo vam ni treba skrbeti. 1214 00:57:20,330 --> 00:57:22,460 Torej je malloc Verjetno se imenuje v nekaterih mestih. 1215 00:57:22,460 --> 00:57:24,480 Nam ni treba skrbeti, kje. 1216 00:57:24,480 --> 00:57:26,240 Ampak to je res midva. 1217 00:57:26,240 --> 00:57:27,380 To je prva linija nas. 1218 00:57:27,380 --> 00:57:28,320 Smo pustili, da je blok. 1219 00:57:28,320 --> 00:57:30,330 In lahko vidite, da tu v povzetku uhajanja. 1220 00:57:30,330 --> 00:57:31,950 Še vedno dosegljiv - 1221 00:57:31,950 --> 00:57:32,930 osem bajtov v enem bloku. 1222 00:57:32,930 --> 00:57:34,100 To pomeni, da je spomin - 1223 00:57:34,100 --> 00:57:35,730 smo ušli, da je spomin. 1224 00:57:35,730 --> 00:57:37,570 Dokončno izgubil - 1225 00:57:37,570 --> 00:57:38,770 nekaj, kar se je izgubil za vedno. 1226 00:57:38,770 --> 00:57:40,590 Na splošno, ne boste vidim ničesar tam. 1227 00:57:40,590 --> 00:57:44,780 Še vedno dosegljiva na splošno, kjer boste videli stvari, kjer si boste želeli 1228 00:57:44,780 --> 00:57:48,900 videti, da vidim, kaj kode bi smeli so se osvobodili, vendar si pozabil, da osvobodi. 1229 00:57:48,900 --> 00:57:53,170 >> In potem, če to ni bilo tako, če smo storili vse, kar je brezplačno, 1230 00:57:53,170 --> 00:57:54,360 lahko preverimo, da je. 1231 00:57:54,360 --> 00:57:57,330 Reciva, zaženite program ne daje v nič. 1232 00:57:57,330 --> 00:57:59,800 Boste videli tukaj v uporabi na izhodu - 1233 00:57:59,800 --> 00:58:01,310 nič bajtov ničlo blokov. 1234 00:58:01,310 --> 00:58:06,310 To pomeni, da bomo imeli ničesar več ko ta program izstopilo. 1235 00:58:06,310 --> 00:58:12,090 Torej, preden se obrača v pset6, teči valgrind in poskrbite, da ne boste imeli 1236 00:58:12,090 --> 00:58:15,310 koli spomin razpoka v vašem programu. 1237 00:58:15,310 --> 00:58:17,910 Če imate kakršnakoli vprašanja s valgrind, vas prosimo, da stik. 1238 00:58:17,910 --> 00:58:18,700 Ampak to je, kako ga uporabljate. 1239 00:58:18,700 --> 00:58:20,890 Zelo preprosta - vidim, če ste imajo v uporabi na izhodu - 1240 00:58:20,890 --> 00:58:22,270 vse bajte v katerih koli blokih. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> Tako smo delali vstaviti vozlišču. 1243 00:58:29,580 --> 00:58:33,840 Imel sem dve druge funkcije tukaj - tiskanje vozlišč in brezplačno vozlišč. 1244 00:58:33,840 --> 00:58:37,780 Še enkrat, to so funkcije, ki so bo dobro za vas, da prakse 1245 00:58:37,780 --> 00:58:40,990 saj vam bodo pomagali ne le z Te vzorčne vaje, ampak tudi 1246 00:58:40,990 --> 00:58:42,180 na problemu nastaviti. 1247 00:58:42,180 --> 00:58:44,230 So map na zelo pozorno stvari boste morali storiti v 1248 00:58:44,230 --> 00:58:45,010 Problem nastavite. 1249 00:58:45,010 --> 00:58:47,640 Ampak jaz ne želim, da poskrbite, da bomo dotaknili vsega. 1250 00:58:47,640 --> 00:58:50,400 In hash tabele so ključnega pomena tudi za kaj delamo v tem oddelku 1251 00:58:50,400 --> 00:58:51,980 teden - ali problemskega nizu. 1252 00:58:51,980 --> 00:58:55,200 >> Tako da bomo do konca odseka Govorimo o hash tabel. 1253 00:58:55,200 --> 00:58:58,140 Če opazite, da je malo hash tabelo. 1254 00:58:58,140 --> 00:59:00,020 To ni tisto, kar govorimo O, pa je. 1255 00:59:00,020 --> 00:59:03,540 Govorimo o drugačni Vrsta razpršene tabele. 1256 00:59:03,540 --> 00:59:07,300 In v svojem jedru, a razpršene tabele ni nič več kot 1257 00:59:07,300 --> 00:59:08,860 Niz plus hash funkcijo. 1258 00:59:08,860 --> 00:59:11,150 Bomo govorili za bit, samo da bi poskrbite, da vsakdo razume, kaj 1259 00:59:11,150 --> 00:59:12,110 hash funkcija. 1260 00:59:12,110 --> 00:59:15,420 In povem ti zdaj, da je nič več kot dveh stvari - 1261 00:59:15,420 --> 00:59:18,590 matrika in hash funkcijo. 1262 00:59:18,590 --> 00:59:20,716 In tukaj so koraki preko ki jih ta upravlja. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Tam je naša niz. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Tam je naša funkcija. 1267 00:59:39,460 --> 00:59:43,180 Zlasti, zgoščevalne funkcije morali naredite nekaj stvari s tem. 1268 00:59:43,180 --> 00:59:45,040 Bom posebej govoriti O tem problem nastaviti. 1269 00:59:45,040 --> 00:59:46,450 To je verjetno, da bo sprejmejo v nizu. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 In kaj bo, da se vrnete? 1272 00:59:51,770 --> 00:59:52,640 Kaj podatkovni tip? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 Vaš hash funkcija vrne? 1275 00:59:55,760 --> 00:59:58,760 Število. 1276 00:59:58,760 --> 01:00:01,700 Torej je to tisto, kar hash Tabela sestavljajo - 1277 01:00:01,700 --> 01:00:05,430 miza v obliki matrike in hash funkcijo. 1278 01:00:05,430 --> 01:00:06,010 Kako deluje? 1279 01:00:06,010 --> 01:00:07,300 Deluje v treh korakih. 1280 01:00:07,300 --> 01:00:08,740 Damo ključ. 1281 01:00:08,740 --> 01:00:11,470 V tem primeru bomo ji dati niz. 1282 01:00:11,470 --> 01:00:18,140 Pravimo funkcijo razpršitve na koraku na ključ in smo dobili vrednost. 1283 01:00:18,140 --> 01:00:20,310 >> Natančneje, bomo rekli, smo dobili celo število. 1284 01:00:20,310 --> 01:00:25,630 To število je zelo specifična omejitve glede tega, kaj je mogoče, da je celo lahko. 1285 01:00:25,630 --> 01:00:28,880 V tem primeru je naša matrika z velikostjo tri. 1286 01:00:28,880 --> 01:00:32,330 Torej, kaj številke lahko celo, da bo. 1287 01:00:32,330 --> 01:00:35,970 Kakšen je obseg veljavnih vrednosti za da celo število, tip vrnitev tega 1288 01:00:35,970 --> 01:00:37,220 hash funkcijo? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Nič, ena in dve. 1291 01:00:42,110 --> 01:00:46,060 Bistvo funkcije razpršitve je ugotovimo mesto v matriki 1292 01:00:46,060 --> 01:00:47,790 kjer je naš ključni se dogaja. 1293 01:00:47,790 --> 01:00:51,290 Obstajajo mogoče le trije kraji tukaj - 1294 01:00:51,290 --> 01:00:52,130 nič, ena ali dve. 1295 01:00:52,130 --> 01:00:55,360 Tako da je ta funkcija bolje vrnitev nič, ena ali dve. 1296 01:00:55,360 --> 01:00:58,740 Nekateri velja Indice v tem polju. 1297 01:00:58,740 --> 01:01:02,770 >> Nato pa odvisno od tega, kje se vrne, lahko vidite, obstaja niz odprta 1298 01:01:02,770 --> 01:01:03,730 oklepati vrednost. 1299 01:01:03,730 --> 01:01:05,800 To je, če smo dal ključ. 1300 01:01:05,800 --> 01:01:11,280 Torej vržemo v buče, pridemo ven nič. 1301 01:01:11,280 --> 01:01:15,540 Na diod nosilec 0, postavimo buče. 1302 01:01:15,540 --> 01:01:21,070 Vržemo pri mačkah, smo dobili eno. 1303 01:01:21,070 --> 01:01:24,110 Mi je dal mačko v enem. 1304 01:01:24,110 --> 01:01:25,480 Damo v pajka. 1305 01:01:25,480 --> 01:01:26,710 Pridemo ven dva. 1306 01:01:26,710 --> 01:01:30,200 Mi je dal pajka na matrični nosilec dveh. 1307 01:01:30,200 --> 01:01:32,300 Bilo bi lepo, če je delal tako. 1308 01:01:32,300 --> 01:01:35,570 Ampak, žal, kot bomo videli, to je malo bolj zapletena. 1309 01:01:35,570 --> 01:01:37,570 >> Preden smo prišli tja, na vsa vprašanja O tem osnovno 1310 01:01:37,570 --> 01:01:38,820 set-up za razpršene tabele? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 To je slika ravno kaj smo narisal na krovu. 1313 01:01:51,940 --> 01:01:55,420 Ampak, ker smo ga narisal na tablo, sem Ne bom se spuščal v to še naprej. 1314 01:01:55,420 --> 01:02:00,430 V bistvu ključi, magic black box - ali v tem primeru, teal box - od 1315 01:02:00,430 --> 01:02:02,410 hash funkcija jih postavlja v vedrih. 1316 01:02:02,410 --> 01:02:04,690 In v tem primeru smo ne daje ime. 1317 01:02:04,690 --> 01:02:07,880 Mi smo dajanje povezan telefon Število imena v vedro. 1318 01:02:07,880 --> 01:02:10,430 Vendar pa bi bilo zelo dobro le dal ime v vedro. 1319 01:02:10,430 --> 01:02:12,950 >> To je samo slika, kaj smo pripravili na krovu. 1320 01:02:12,950 --> 01:02:14,460 Imamo potencialne pasti, čeprav. 1321 01:02:14,460 --> 01:02:17,470 In tam sta dva zlasti drsi, da želim iti čez. 1322 01:02:17,470 --> 01:02:20,230 Prvi je približno hash funkcijo. 1323 01:02:20,230 --> 01:02:22,620 Zato sem vprašal, kaj naredi dober funkcijo razpršitve? 1324 01:02:22,620 --> 01:02:24,220 Dam dva odgovora. 1325 01:02:24,220 --> 01:02:26,630 Prvi je, da je deterministična. 1326 01:02:26,630 --> 01:02:29,660 V okviru zgostitvene funkcije, kaj to pomeni? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Ja? 1329 01:02:39,282 --> 01:02:42,850 >> PUBLIKA: To lahko najdete Indeks v enakem času? 1330 01:02:42,850 --> 01:02:43,810 >> JASON Hirschhorna: That ne, kaj to pomeni. 1331 01:02:43,810 --> 01:02:44,725 Ampak to je dobro ugibanje. 1332 01:02:44,725 --> 01:02:46,100 Ima še kdo drug ugibati kaj to pomeni? 1333 01:02:46,100 --> 01:02:47,780 Da je dober hash funkcijo je deterministična? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> PUBLIKA: To se lahko preslika samo ključ na enem mestu v razpršene tabele. 1336 01:02:51,680 --> 01:02:53,070 >> JASON Hirschhorna: To je Točno tako. 1337 01:02:53,070 --> 01:02:57,430 Vsakič, ko si dal v bučo, se vedno vrne nič. 1338 01:02:57,430 --> 01:03:01,660 Če si dal v bučo in vaše hash Funkcija vrne nič, ampak ima 1339 01:03:01,660 --> 01:03:06,060 verjetnost, da se vračajo nekaj še večja od nič - 1340 01:03:06,060 --> 01:03:09,280 tako da morda lahko vrne eno včasih ali dve drugi časi - 1341 01:03:09,280 --> 01:03:11,100 da ni dober hash funkcijo. 1342 01:03:11,100 --> 01:03:11,800 Ti si ravno prav. 1343 01:03:11,800 --> 01:03:15,680 Vaš hash funkcija je treba vrniti Enako Natančen celo število, v tem primeru, na 1344 01:03:15,680 --> 01:03:17,780 Enako natančen niz. 1345 01:03:17,780 --> 01:03:22,210 >> Morda se vrne točno isto celo za isti besedni 1346 01:03:22,210 --> 01:03:24,430 ne glede na kapitalizacijo. 1347 01:03:24,430 --> 01:03:27,980 Toda v tem primeru je še vedno deterministična, ker več stvari 1348 01:03:27,980 --> 01:03:29,350 so preslikane na isti vrednosti. 1349 01:03:29,350 --> 01:03:30,170 To je v redu. 1350 01:03:30,170 --> 01:03:32,615 Dokler je samo ena izhod za določenega vložka. 1351 01:03:32,615 --> 01:03:35,630 1352 01:03:35,630 --> 01:03:36,350 >> OK. 1353 01:03:36,350 --> 01:03:38,340 Druga pa je, da se vrne veljavne indeksov. 1354 01:03:38,340 --> 01:03:40,220 Smo odraščali, da prej. 1355 01:03:40,220 --> 01:03:41,860 Ta funkcija hash - 1356 01:03:41,860 --> 01:03:43,710 oh boy - 1357 01:03:43,710 --> 01:03:46,840 hash funkcija bi morala vrnitev veljavne indeksov. 1358 01:03:46,840 --> 01:03:47,740 Tako pravijo - 1359 01:03:47,740 --> 01:03:48,990 vrnimo se s tem primerom. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Moj hash funkcija sešteva črke v besedi. 1362 01:03:57,540 --> 01:03:58,380 To je funkcija hash. 1363 01:03:58,380 --> 01:03:59,740 In se vrne, da število. 1364 01:03:59,740 --> 01:04:04,280 Torej, če imam besede, to je vrača eno. 1365 01:04:04,280 --> 01:04:06,900 In to se dogaja, da dajo tukaj. 1366 01:04:06,900 --> 01:04:09,430 Kaj pa, če sem dal v besedi kij? 1367 01:04:09,430 --> 01:04:11,310 To se dogaja, da se vrnete tri. 1368 01:04:11,310 --> 01:04:12,560 Kje se bat iti? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> To ne ustreza. 1371 01:04:19,750 --> 01:04:21,000 Vendar mora nekam iti. 1372 01:04:21,000 --> 01:04:23,340 To je moj hash tabela po vsem, in vse, kar mora nekam iti. 1373 01:04:23,340 --> 01:04:24,590 Torej, če je treba bat iti? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Vsak misli? 1376 01:04:28,710 --> 01:04:29,450 Ugiba? 1377 01:04:29,450 --> 01:04:30,280 Dobri ugibanja? 1378 01:04:30,280 --> 01:04:31,220 >> PUBLIKA: Zero. 1379 01:04:31,220 --> 01:04:32,120 >> JASON Hirschhorna: Zakaj nič? 1380 01:04:32,120 --> 01:04:35,990 >> PUBLIKA: Ker tri modulo trije nič? 1381 01:04:35,990 --> 01:04:38,620 >> JASON Hirschhorna: Three modulo tri nič. 1382 01:04:38,620 --> 01:04:40,810 To je veliko ugibati, in to je pravilno. 1383 01:04:40,810 --> 01:04:43,870 Torej, v tem primeru bi moral verjetno šel v nič. 1384 01:04:43,870 --> 01:04:51,080 Tako dober način, da se zagotovi, da ta hash Funkcija vrne le veljavne indeksov je 1385 01:04:51,080 --> 01:04:54,580 ga modulu po velikosti tabele. 1386 01:04:54,580 --> 01:04:57,360 Če ste modulu karkoli že to donose, ki jih tri, ste vedno tekoč, da bi dobili 1387 01:04:57,360 --> 01:05:00,930 nekaj vmes nič, ena in dve. 1388 01:05:00,930 --> 01:05:05,160 In če je ta vedno vrne sedem, in vedno modulu za tri, si 1389 01:05:05,160 --> 01:05:06,030 vedno tekoč, da bi dobili isto stvar. 1390 01:05:06,030 --> 01:05:09,270 >> Torej je še vedno deterministične Če modulu. 1391 01:05:09,270 --> 01:05:11,420 Ampak da bo zagotovila, da vam nikoli dobili nekaj - 1392 01:05:11,420 --> 01:05:12,940 neveljavna industrija. 1393 01:05:12,940 --> 01:05:16,840 Na splošno bi bilo treba, da modulo zgodilo v vašem hash funkcijo. 1394 01:05:16,840 --> 01:05:18,240 Torej vam ni treba skrbeti za to. 1395 01:05:18,240 --> 01:05:20,555 Pravkar si lahko zagotovite, da to velja Indice. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Vsa vprašanja o tem potencialna past? 1398 01:05:26,700 --> 01:05:36,590 1399 01:05:36,590 --> 01:05:39,060 >> OK. 1400 01:05:39,060 --> 01:05:40,290 In gremo. 1401 01:05:40,290 --> 01:05:42,890 Naslednja potencialna past, in To je veliko. 1402 01:05:42,890 --> 01:05:46,880 Kaj pa, če dva ključa zemljevid na isti vrednosti? 1403 01:05:46,880 --> 01:05:49,350 Torej obstajata dva načina, da situacijo. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Prva se imenuje linearna sondiranje, ki sem 1406 01:05:56,020 --> 01:05:57,300 ne bo šel skozi. 1407 01:05:57,300 --> 01:06:01,120 Vendar bi morali biti seznanjeni s tem, kako da deluje in kaj je to. 1408 01:06:01,120 --> 01:06:05,610 >> Drugi pa bom šel čez ker je to tisti, ki veliko 1409 01:06:05,610 --> 01:06:08,290 Ljudje bodo verjetno na koncu odločajo za uporabo v njihovem problem nizu. 1410 01:06:08,290 --> 01:06:09,820 Seveda, ti ne bi bilo treba. 1411 01:06:09,820 --> 01:06:15,280 Ampak za problem set, veliko ljudi ponavadi odločijo, da ustvarite razpršene tabele 1412 01:06:15,280 --> 01:06:17,950 z Veriženje za izvajanje njihov slovar. 1413 01:06:17,950 --> 01:06:21,390 Tako smo šli nad tem, kaj to pomeni ustvariti razpršene tabele z 1414 01:06:21,390 --> 01:06:23,890 Veriženje. 1415 01:06:23,890 --> 01:06:26,260 >> Zato sem dal v buče. 1416 01:06:26,260 --> 01:06:29,560 Vrne nič. 1417 01:06:29,560 --> 01:06:31,410 In sem dal buče tukaj. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Potem sem dal v - 1420 01:06:37,930 --> 01:06:39,922 kaj je še ena Halloween tematskih stvar? 1421 01:06:39,922 --> 01:06:42,200 >> PUBLIKA: Candy. 1422 01:06:42,200 --> 01:06:42,770 >> JASON Hirschhorna: Candy! 1423 01:06:42,770 --> 01:06:43,910 To je eno veliko. 1424 01:06:43,910 --> 01:06:47,760 Sem dal sladkarije in sladkarije Prav tako mi daje nič. 1425 01:06:47,760 --> 01:06:49,350 Kaj naj storim? 1426 01:06:49,350 --> 01:06:51,940 Vse ideje? 1427 01:06:51,940 --> 01:06:53,940 Ker si vsi nekako vedeli kaj Veriženje je. 1428 01:06:53,940 --> 01:06:55,190 Torej vse ideje, kaj naj naredim? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Ja. 1431 01:06:59,110 --> 01:07:03,810 >> PUBLIKA: Prenos niz dejansko razpršene tabele. 1432 01:07:03,810 --> 01:07:08,910 >> JASON Hirschhorna: Torej bomo sestaviti dobro idejo tukaj. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> PUBLIKA: Have Hashtable [Neslišno] 1435 01:07:12,290 --> 01:07:16,640 kazalec, ki kaže na začetek seznama. 1436 01:07:16,640 --> 01:07:20,930 In potem so buče je prva vrednost V tem povezanem seznamu in sladkarije biti 1437 01:07:20,930 --> 01:07:22,800 druga vrednost v tem povezani seznam. 1438 01:07:22,800 --> 01:07:23,420 >> JASON Hirschhorna: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, ki je bila odprta. 1440 01:07:24,670 --> 01:07:26,160 Bom prekinil niz. 1441 01:07:26,160 --> 01:07:28,890 Marcus je rekel ne prepisati buče. 1442 01:07:28,890 --> 01:07:30,660 To bi bilo slabo. 1443 01:07:30,660 --> 01:07:33,640 Ne dajaj sladkarij nekje drugje. 1444 01:07:33,640 --> 01:07:35,390 Bomo, da jih tako na nič. 1445 01:07:35,390 --> 01:07:37,770 Ampak bomo se ukvarjajo z jih postavi na ničlo 1446 01:07:37,770 --> 01:07:39,395 ustvarite seznam na nič. 1447 01:07:39,395 --> 01:07:42,430 In bomo ustvarili seznam vse, kar se preslika v nič. 1448 01:07:42,430 --> 01:07:47,960 In najboljši način, da smo se naučili, da ustvarite Seznam, ki lahko rastejo in se skrči 1449 01:07:47,960 --> 01:07:49,840 dinamično ni v še en niz. 1450 01:07:49,840 --> 01:07:51,510 Torej ni multi-dimenzionalni array. 1451 01:07:51,510 --> 01:07:54,080 Ampak, da se samo ustvariti povezani seznam. 1452 01:07:54,080 --> 01:07:55,330 >> Torej, kaj je predlagal - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Jaz bom dobil novo - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 je ustvariti array s kazalci, Niz kazalcev. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Kakšno idejo ali namig, kaj tip Od tega kazalcev bi moralo biti? 1459 01:08:24,180 --> 01:08:26,290 Marcus? 1460 01:08:26,290 --> 01:08:27,250 >> PUBLIKA: Kazalci za - 1461 01:08:27,250 --> 01:08:28,609 >> JASON Hirschhorna: Ker vam je dejal povezani seznam, tako da - 1462 01:08:28,609 --> 01:08:29,520 >> PUBLIKA: Node nasvetov? 1463 01:08:29,520 --> 01:08:30,670 >> JASON Hirschhorna: Node kazalci. 1464 01:08:30,670 --> 01:08:32,830 Če se stvari v naši povezan Seznam so vozlišča, nato pa 1465 01:08:32,830 --> 01:08:34,370 mora biti vozlišče kazalca. 1466 01:08:34,370 --> 01:08:35,939 In kaj so sprva enaka? 1467 01:08:35,939 --> 01:08:36,990 >> PUBLIKA: Null. 1468 01:08:36,990 --> 01:08:38,240 >> JASON Hirschhorna: Null. 1469 01:08:38,240 --> 01:08:44,540 1470 01:08:44,540 --> 01:08:46,080 Torej je naša prazna stvar. 1471 01:08:46,080 --> 01:08:47,170 Bučna vrne nič. 1472 01:08:47,170 --> 01:08:48,569 Kaj naj naredimo? 1473 01:08:48,569 --> 01:08:49,609 Hodi mi skozi to? 1474 01:08:49,609 --> 01:08:50,810 Pravzaprav, Marcus me je že dal. 1475 01:08:50,810 --> 01:08:52,439 Nekdo drug je hodil me skozi to. 1476 01:08:52,439 --> 01:08:54,760 Kaj počnemo, ko smo - 1477 01:08:54,760 --> 01:08:56,609 To je zelo podoben kaj smo samo delaš. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> PUBLIKA: bom ugibati. 1480 01:08:59,090 --> 01:09:01,250 Torej, ko boste dobili sladkarije. 1481 01:09:01,250 --> 01:09:01,640 >> JASON Hirschhorna: Ja. 1482 01:09:01,640 --> 01:09:03,120 No, imamo buče. 1483 01:09:03,120 --> 01:09:03,870 Naj se prvo. 1484 01:09:03,870 --> 01:09:04,324 Imamo buče. 1485 01:09:04,324 --> 01:09:04,779 >> PUBLIKA: OK. 1486 01:09:04,779 --> 01:09:05,880 Bučna vrne nič. 1487 01:09:05,880 --> 01:09:08,770 Torej si ga dal v to. 1488 01:09:08,770 --> 01:09:10,810 Ali dejansko, si ga dal v povezanem seznamu. 1489 01:09:10,810 --> 01:09:13,550 >> JASON Hirschhorna: Kako delamo ga v povezanem seznamu? 1490 01:09:13,550 --> 01:09:15,479 >> PUBLIKA: Oh, dejanska sintaksa? 1491 01:09:15,479 --> 01:09:16,240 >> JASON Hirschhorna: Samo sprehod - 1492 01:09:16,240 --> 01:09:16,740 povedati več. 1493 01:09:16,740 --> 01:09:19,310 Kaj naj naredimo? 1494 01:09:19,310 --> 01:09:22,100 >> PUBLIKA: Vi samo vstavite je kot prvo vozlišče. 1495 01:09:22,100 --> 01:09:22,675 >> JASON Hirschhorna: OK. 1496 01:09:22,675 --> 01:09:29,069 Torej imamo vozlišča, buče. 1497 01:09:29,069 --> 01:09:31,560 In zdaj, kako ga vstaviti? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> PUBLIKA: dodelite je s kazalcem. 1500 01:09:37,090 --> 01:09:37,970 >> JASON Hirschhorna: Kateri kazalec? 1501 01:09:37,970 --> 01:09:39,620 >> PUBLIKA: kazalec na ničli. 1502 01:09:39,620 --> 01:09:41,420 >> JASON Hirschhorna: Torej, če pa to smisel? 1503 01:09:41,420 --> 01:09:42,810 >> PUBLIKA: Za null zdaj. 1504 01:09:42,810 --> 01:09:43,529 >> JASON Hirschhorna: No, to je obrnjena na null. 1505 01:09:43,529 --> 01:09:44,499 Ampak jaz bom dal v buče. 1506 01:09:44,499 --> 01:09:46,053 Torej, kje naj bi to imelo? 1507 01:09:46,053 --> 01:09:46,880 >> PUBLIKA: Za bučno. 1508 01:09:46,880 --> 01:09:47,399 >> JASON Hirschhorna: Za buče. 1509 01:09:47,399 --> 01:09:48,760 Točno tako. 1510 01:09:48,760 --> 01:09:50,010 Torej, to kaže na buče. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 In kje se ta kazalec V bučnem točke? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Za 1515 01:09:58,340 --> 01:09:58,590 >> PUBLIKA: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON Hirschhorna: Za null. 1517 01:09:59,210 --> 01:10:00,460 Točno tako. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Tako da smo samo vstavi nekaj v povezanem seznamu. 1520 01:10:05,140 --> 01:10:07,210 Pravkar smo pisali to kodo, da to storijo. 1521 01:10:07,210 --> 01:10:09,520 Skoraj skoraj bi ga dobili popolnoma razpokan. 1522 01:10:09,520 --> 01:10:10,790 Zdaj smo vstavite sladkarije. 1523 01:10:10,790 --> 01:10:13,480 Naša sladkarije gre tudi nič. 1524 01:10:13,480 --> 01:10:16,100 Torej, kaj bomo naredili z bonboni? 1525 01:10:16,100 --> 01:10:18,790 >> PUBLIKA: To je odvisno od tega, ali Ne trudimo, da ga rešiti. 1526 01:10:18,790 --> 01:10:19,640 >> JASON Hirschhorna: To je Točno tako. 1527 01:10:19,640 --> 01:10:21,070 To je odvisno od tega, ali se trudimo, da ga rešiti. 1528 01:10:21,070 --> 01:10:22,660 Denimo, da nismo dogaja, da ga rešiti. 1529 01:10:22,660 --> 01:10:24,880 >> PUBLIKA: No potem, ko smo razpravljali o pred tem, to je najenostavnejši, samo da bi ga 1530 01:10:24,880 --> 01:10:28,590 takoj na začetku, tako kazalec z nič točkami na sladkarije. 1531 01:10:28,590 --> 01:10:29,020 >> JASON Hirschhorna: OK. 1532 01:10:29,020 --> 01:10:29,380 Počakaj. 1533 01:10:29,380 --> 01:10:30,630 Dovolite mi, da ustvarite sladkarije tukaj. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Tako da je ta kazalec - 1536 01:10:35,150 --> 01:10:37,590 >> OBČINSTVO: Ja, naj bi zdaj se kaže na sladkarije. 1537 01:10:37,590 --> 01:10:40,580 Potem so kazalec od sladkarije točka za buče. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON Hirschhorna: Tako? 1540 01:10:44,560 --> 01:10:47,380 In pravijo, da imamo še en stvar na zemljevid za nič? 1541 01:10:47,380 --> 01:10:48,660 >> PUBLIKA: No, ste jo pravkar narediti isto stvar? 1542 01:10:48,660 --> 01:10:50,290 >> JASON Hirschhorna: Ali isto stvar. 1543 01:10:50,290 --> 01:10:53,700 Torej, v tem primeru, če ne bomo želite, da jo razporejene 1544 01:10:53,700 --> 01:10:55,270 Sliši se precej enostavno. 1545 01:10:55,270 --> 01:10:59,920 Peljemo kazalec v Indice saj jih naši hash funkcijo. 1546 01:10:59,920 --> 01:11:03,830 Imamo to točko na naši novi vozlišče. 1547 01:11:03,830 --> 01:11:07,830 In potem karkoli že je obrnjena predhodno - 1548 01:11:07,830 --> 01:11:10,620 v tem primeru nič, v Drugi primer buče - 1549 01:11:10,620 --> 01:11:15,310 da, karkoli že je, ki kažejo na prej, smo dodali v naslednji od 1550 01:11:15,310 --> 01:11:17,810 naša nova vozlišča. 1551 01:11:17,810 --> 01:11:19,650 Mi smo vstavljanje nekaj na začetku. 1552 01:11:19,650 --> 01:11:22,900 V bistvu je to veliko lažje kot poskuša obdržati seznam razvrščeni. 1553 01:11:22,900 --> 01:11:25,340 Toda spet bo Iskanje gre bolj zapleteno tukaj. 1554 01:11:25,340 --> 01:11:28,300 Vedno bova morala iti do konca. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Imate vprašanja Veriženje? 1557 01:11:32,750 --> 01:11:34,690 Kako to deluje? 1558 01:11:34,690 --> 01:11:35,820 Prosite jih zdaj. 1559 01:11:35,820 --> 01:11:39,260 Res si želim, da poskrbite, da boste vse razumeti, preden se odpravimo ven. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> PUBLIKA: Zakaj si dal buče in sladkarije v isti 1562 01:11:52,060 --> 01:11:54,108 del razpršene tabele? 1563 01:11:54,108 --> 01:11:55,860 >> JASON Hirschhorna: Dobro vprašanje. 1564 01:11:55,860 --> 01:11:59,140 Zakaj smo jih postavili v isti del razpršene tabele? 1565 01:11:59,140 --> 01:12:03,200 No, v tem primeru naše hash funkcija vrne nič za oba. 1566 01:12:03,200 --> 01:12:05,310 Tako so morali iti na Indice nič ker to je, če bomo 1567 01:12:05,310 --> 01:12:07,420 poglej za njih, če bomo kdaj želijo, da jih poiščete. 1568 01:12:07,420 --> 01:12:11,750 Again, s pristopom linearno sondiranje jim ne bi dal tako na nič. 1569 01:12:11,750 --> 01:12:13,900 Toda v ločenem pristopu verige bomo, da jih tako na ničli 1570 01:12:13,900 --> 01:12:16,620 in nato ustvarite seznam off nič. 1571 01:12:16,620 --> 01:12:20,140 >> In ne želimo prepisati buče preprosto za to, ker potem bomo 1572 01:12:20,140 --> 01:12:21,860 Predvidevam, da je bilo bučno Nikoli ne vstavi. 1573 01:12:21,860 --> 01:12:25,230 Če bomo kar naprej eno stvar v mesto, da bi bilo slabo. 1574 01:12:25,230 --> 01:12:28,590 Potem ne bi bilo priložnost za nas doslej - 1575 01:12:28,590 --> 01:12:31,660 če bomo kdaj imeli dvojnik, nato pa smo bi samo izbrisali našo začetno vrednost. 1576 01:12:31,660 --> 01:12:34,090 Tako da je, zakaj mi ta pristop. 1577 01:12:34,090 --> 01:12:36,580 Ali pa je to, zakaj smo se odločili - toda spet smo izbral drugačen pristop veriženje, 1578 01:12:36,580 --> 01:12:39,670 ki obstaja še veliko drugih pristopov lahko bi izbrali. 1579 01:12:39,670 --> 01:12:41,185 Ne da odgovoriti na vaše vprašanje? 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Carlos. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Linearni sondiranje bi vključevalo - 1584 01:12:47,720 --> 01:12:51,913 Če smo ugotovili, trčenje na nič, smo bi bilo videti v naslednjem kraju samem, da vidim, če 1585 01:12:51,913 --> 01:12:54,310 je bil odprt in ga tam. 1586 01:12:54,310 --> 01:12:57,320 In potem si bomo ogledali v naslednjem športu in vidim, če je bil odprt in ga tam. 1587 01:12:57,320 --> 01:12:59,780 Tako smo ugotovili, naslednji na voljo odprto mesto in ga tam. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Še kakšno vprašanje? 1590 01:13:03,890 --> 01:13:05,370 Ja, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> PUBLIKA: Kot nadaljevanje, da kaj misliš z naslednjo samem? 1592 01:13:07,490 --> 01:13:10,250 V razpršene tabele ali v povezanem seznamu. 1593 01:13:10,250 --> 01:13:12,100 >> JASON Hirschhorna: Za linearno programiranje, brez povezani seznam. 1594 01:13:12,100 --> 01:13:13,400 Naslednja točka na razpršene tabele. 1595 01:13:13,400 --> 01:13:13,820 >> PUBLIKA: OK. 1596 01:13:13,820 --> 01:13:17,570 Torej bi hash tabela biti inicializiran na velikost - 1597 01:13:17,570 --> 01:13:19,560 kot število nizov da si vstavljanje? 1598 01:13:19,560 --> 01:13:22,170 >> JASON Hirschhorna: Bi želijo, da bi bilo res veliko. 1599 01:13:22,170 --> 01:13:23,910 Da. 1600 01:13:23,910 --> 01:13:27,900 Tukaj je slika tega, kar smo samo narisal na krovu. 1601 01:13:27,900 --> 01:13:29,470 Spet imamo trčenje tukaj. 1602 01:13:29,470 --> 01:13:30,710 na 152. 1603 01:13:30,710 --> 01:13:33,570 In boste videli bomo ustvarili povezani seznam od tega. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Again, razpršena tabela Veriženje pristop ni ti ena 1606 01:13:41,850 --> 01:13:45,590 morali za nastavitev težave šest vendar je tista, ki je veliko 1607 01:13:45,590 --> 01:13:47,100 študenti ponavadi traja. 1608 01:13:47,100 --> 01:13:51,140 Torej, na ta opomba, nam govori na kratko preden se odpravimo ven o problemu šest, 1609 01:13:51,140 --> 01:13:52,160 in potem bom deliti zgodbo z vami. 1610 01:13:52,160 --> 01:13:55,120 Imamo tri minute. 1611 01:13:55,120 --> 01:13:55,750 >> Problem nastavite šest. 1612 01:13:55,750 --> 01:13:57,790 Imate štiri funkcije - 1613 01:13:57,790 --> 01:14:02,430 obremenitev, preverite, velikost in razkladanje. 1614 01:14:02,430 --> 01:14:03,380 Obremenitev - 1615 01:14:03,380 --> 01:14:07,120 dobro, da smo šli nad obremenitvijo šele zdaj. 1616 01:14:07,120 --> 01:14:09,330 Opozorili smo tovora na krovu. 1617 01:14:09,330 --> 01:14:13,230 In smo celo začeli kodiranje veliko vtaknemo v povezanem seznamu. 1618 01:14:13,230 --> 01:14:18,020 Torej obremenitev ni veliko več kot kar smo pravkar počeli. 1619 01:14:18,020 --> 01:14:21,070 >> Preverjanje je, ko imate Nekaj ​​naložen. 1620 01:14:21,070 --> 01:14:22,580 To je enak postopek, kot je ta. 1621 01:14:22,580 --> 01:14:26,845 Isti Prva dva dela, kjer si vrgel Nekaj ​​v funkcije razpršitve 1622 01:14:26,845 --> 01:14:29,190 in dobili svojo vrednost. 1623 01:14:29,190 --> 01:14:30,700 Toda zdaj ne bomo ga vstavite. 1624 01:14:30,700 --> 01:14:33,350 Zdaj smo iskali za to. 1625 01:14:33,350 --> 01:14:37,130 Vzorec kode sem napisal za iskanje nekaj v povezanem seznamu. 1626 01:14:37,130 --> 01:14:38,250 Spodbujam vas, da praksa, da. 1627 01:14:38,250 --> 01:14:43,000 Ampak intuitivno najti nekaj je Precej podobno vstavljanje nekaj. 1628 01:14:43,000 --> 01:14:46,540 Dejansko smo narisal iskanje nekaj v povezanem seznamu, ki se gibljejo 1629 01:14:46,540 --> 01:14:48,910 skozi, dokler ne boste prišli do konca. 1630 01:14:48,910 --> 01:14:52,430 In če imaš do konca in ne bi ga najdejo, potem je ni. 1631 01:14:52,430 --> 01:14:55,400 Tako da je pregled, v bistvu. 1632 01:14:55,400 --> 01:14:57,030 >> Naslednja je velikost. 1633 01:14:57,030 --> 01:14:57,910 Oglejmo preskočite velikosti. 1634 01:14:57,910 --> 01:15:00,040 Nazadnje ste raztovoriti. 1635 01:15:00,040 --> 01:15:02,890 Raztovoriti je eden nismo pripraviti na krovu ali še kodirani. 1636 01:15:02,890 --> 01:15:05,990 Vendar vas pozivam, da poskusite kodiranje v našem vzorcu povezan primer seznama. 1637 01:15:05,990 --> 01:15:11,440 Ampak raztovarjanje intuitivno je podoben zastonj - 1638 01:15:11,440 --> 01:15:14,010 ali hočem reči je, podobno preveriti. 1639 01:15:14,010 --> 01:15:17,350 Razen za zdaj vsakič, ko greš skozi, ne boš samo preverjam, 1640 01:15:17,350 --> 01:15:19,090 vidim, če imate svojo vrednost tam. 1641 01:15:19,090 --> 01:15:22,490 Vendar ste ob to vozlišče in je osvoboditev, v bistvu. 1642 01:15:22,490 --> 01:15:23,610 To je tisto, razkladanje vas prosi, da storijo. 1643 01:15:23,610 --> 01:15:24,670 Brezplačne vse, kar ste malloced. 1644 01:15:24,670 --> 01:15:27,480 Torej greste skozi celoten seznam znova, skozi celotno hash 1645 01:15:27,480 --> 01:15:27,760 Ponovno tabela. 1646 01:15:27,760 --> 01:15:29,240 Tokrat ne preverjajo videti, kaj je tam. 1647 01:15:29,240 --> 01:15:31,080 Samo sprostiti, kaj je tam. 1648 01:15:31,080 --> 01:15:33,260 >> In končno velikost. 1649 01:15:33,260 --> 01:15:34,350 Velikost je treba izvajati. 1650 01:15:34,350 --> 01:15:35,590 Če se ne izvajajo velikosti - 1651 01:15:35,590 --> 01:15:36,250 Bom rekel, kot je ta. 1652 01:15:36,250 --> 01:15:39,740 Če se ne izvajajo velikosti v točno ena vrstica kode, vključno 1653 01:15:39,740 --> 01:15:43,760 vrnitev izjavo, da ste početje velikost napačno. 1654 01:15:43,760 --> 01:15:47,170 Zato poskrbite, velikost, za popolno zasnovo točk, to počnete natanko eno 1655 01:15:47,170 --> 01:15:49,970 vrstica kode, vključno Izjava donos. 1656 01:15:49,970 --> 01:15:52,450 >> In ne spakiram še Akchar. 1657 01:15:52,450 --> 01:15:53,700 Eager Beaver. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Hotel sem reči hvala fantje za prihod v oddelku. 1660 01:16:01,300 --> 01:16:02,550 Imajo Happy Halloween. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 To je moj kostum. 1663 01:16:05,960 --> 01:16:08,850 Nosila bom ta četrtek če sem te videl na uradnih ur. 1664 01:16:08,850 --> 01:16:14,640 In če ste radovedni nekaj več ozadja, da bi ta kostum, občutek 1665 01:16:14,640 --> 01:16:19,135 prosimo, da preverite 2011 del za zgodbo o tem, zakaj sem 1666 01:16:19,135 --> 01:16:20,900 nošenje bučno kostum. 1667 01:16:20,900 --> 01:16:23,680 In to je žalostna zgodba. 1668 01:16:23,680 --> 01:16:27,050 Torej, poskrbite, da imate nekateri tkiva v bližini. 1669 01:16:27,050 --> 01:16:28,680 Ampak na to, če imate Vprašanja bom ostal 1670 01:16:28,680 --> 01:16:29,960 zunaj po oddelku. 1671 01:16:29,960 --> 01:16:31,510 Vso srečo na problem nastaviti šest. 1672 01:16:31,510 --> 01:16:33,540 In kot vedno, če imate vprašanja, mi prosim povejte. 1673 01:16:33,540 --> 01:16:35,584