1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [6. Artikulua: Less erosoa] 2 00:00:02,730 --> 00:00:05,040 [Nate Hardison] [Harvardeko Unibertsitateko] 3 00:00:05,040 --> 00:00:07,320 [Hau da CS50.] [CS50.TV] 4 00:00:07,320 --> 00:00:11,840 Guztiak eskubidea. Ongi etorri atal 6. 5 00:00:11,840 --> 00:00:14,690 Aste honetan, datuen egitura buruz hitz egiten ari gara atalean, 6 00:00:14,690 --> 00:00:19,780 batez ere, aste honetan arazoa spellr 7 00:00:19,780 --> 00:00:24,410 datuak beste egitura esplorazio sorta oso bat du. 8 00:00:24,410 --> 00:00:26,520 Arazoa multzoa joan zaitezke modu ezberdinak sorta bat daude, 9 00:00:26,520 --> 00:00:31,570 eta datu gehiago egiturak buruz badakizu, cool gauza gehiago egin ahal izango duzu. 10 00:00:31,570 --> 00:00:34,990 >> Hargatik Hasteko. Lehenik eta behin pila buruz hitz egin dugu, 11 00:00:34,990 --> 00:00:37,530 pilaketa eta ilara datuen egitura ari garen hitz egingo. 12 00:00:37,530 --> 00:00:40,560 Pilak eta ilarak dira benetan lagungarria grafikoak buruz hitz egiten hasten gara, 13 00:00:40,560 --> 00:00:44,390 Ez ari gara eskubidea, beraz, asko egin orain. 14 00:00:44,390 --> 00:00:52,820 Baina benetan ona CS big datuak oinarrizko egitura bat ulertzen ari dira. 15 00:00:52,820 --> 00:00:54,880 Arazo multzo zehaztapen deskribapena, 16 00:00:54,880 --> 00:00:59,260 tira baduzu, pilak buruzko hitzaldiak betean gisa 17 00:00:59,260 --> 00:01:05,239 jangela erretiluak pila kafetegian duzula jantokiak 18 00:01:05,239 --> 00:01:09,680 non jangela langileek dator eta jangela erretiluak jartzen haiekin garbitu ondoren, 19 00:01:09,680 --> 00:01:12,000 horietako bat bestearen gainean pilatu dituzte. 20 00:01:12,000 --> 00:01:15,050 Eta gero, haurrek janaria lortzen etortzen, 21 00:01:15,050 --> 00:01:19,490 erretiluak eta tira off, lehen top bat, eta gero azpian, eta ondoren dela azpian. 22 00:01:19,490 --> 00:01:25,190 Beraz, eragina, jangela langileak jarri erretilu lehen (a) ren hartu off lortzen da. 23 00:01:25,190 --> 00:01:32,330 (A) ren jangela langileek jarri lehena off afaria lortzen da. 24 00:01:32,330 --> 00:01:38,100 Arazo multzo zehaztapenak, ez baduzu dagoeneko deskargatu daiteke, 25 00:01:38,100 --> 00:01:46,730 mota honen egiturari pila datuak stucture erabiliz modelatu buruz hitz egiten dugu. 26 00:01:46,730 --> 00:01:51,070 >> Beraz, zer lortu dugu hemen, hau da, antzeko zer hitzaldia aurkeztu zen, 27 00:01:51,070 --> 00:01:58,120 hitzaldia izan ezik ints char * s aurrean aurkeztu genuen. 28 00:01:58,120 --> 00:02:06,250 Pila bat azalera zer izango da? 29 00:02:06,250 --> 00:02:09,009 Daniel? Zer dira pila hau gordetzeko? 30 00:02:09,009 --> 00:02:15,260 [Daniel] Strings? >> Kateak ari gara gordetzeko pila honetan, zehatz-mehatz. 31 00:02:15,260 --> 00:02:20,950 Guztiak izan behar duzu pila bat sortzeko array bat da 32 00:02:20,950 --> 00:02:23,920 edukiera jakin bat, kasu honetan, 33 00:02:23,920 --> 00:02:28,020 edukiera txanoak guztietan izango da konstante bat delako. 34 00:02:28,020 --> 00:02:36,340 Eta gero, array gain, jarraipena egin behar dugu array-uneko tamaina da. 35 00:02:36,340 --> 00:02:38,980 Hemen gauza bat kontutan izan cool mota 36 00:02:38,980 --> 00:02:47,060 pilatuak datuak egitura sortuz, beste datu-egitura, array gainean ari gara. 37 00:02:47,060 --> 00:02:50,110 Pilak ezartzeko modu ezberdinak daude. 38 00:02:50,110 --> 00:02:54,250 Ez dugu egin nahiko oraindik, baina zorionez lotutako arazoak zerrenda egin ondoren, 39 00:02:54,250 --> 00:03:00,520 ikusi nola erraz dezakezu lotuta zerrenda baten gainean pila baita inplementatzen duzu. 40 00:03:00,520 --> 00:03:02,640 Baina orain, array dugu makila. 41 00:03:02,640 --> 00:03:06,350 Beraz, berriro ere, guztiak behar dugu array bat eta array-tamaina jarraipena besterik ez dugu behar. 42 00:03:06,350 --> 00:03:09,850 [Sam] Sentitzen dut, zergatik da zuk esan pila kateak gainean? 43 00:03:09,850 --> 00:03:13,440 To me kateak pila barruan daude dirudienez. 44 00:03:13,440 --> 00:03:16,790 [Hardison] Bai. Sortzen ari gara gure datuak array egitura hartzen ari gara - 45 00:03:16,790 --> 00:03:22,130 galdera handi bat da. Beraz, galdera zergatik da, pertsona konektatuta hau ikusten, 46 00:03:22,130 --> 00:03:24,140 zergatik ari zara esaten pila kateak gainean dugu, 47 00:03:24,140 --> 00:03:27,990 Hemen kateak pila barruan daude itxura duelako? 48 00:03:27,990 --> 00:03:31,050 Zein da erabat kasuan. 49 00:03:31,050 --> 00:03:34,660 Zer nengokion ditudan array datu egitura bat eskuratu dugu. 50 00:03:34,660 --> 00:03:39,290 Char * s array bat, kateak array hau lortu dugu, 51 00:03:39,290 --> 00:03:45,300 eta pilatuak datuak egitura sortzeko gehituko dugu. 52 00:03:45,300 --> 00:03:48,620 >> Beraz, pila bat array bat baino pixka bat gehiago konplexua da. 53 00:03:48,620 --> 00:03:51,890 Pila bat eraikitzeko array bat erabili ahal izango ditugu. 54 00:03:51,890 --> 00:03:55,810 Beraz, non pila array baten gainean eraikia dagoela esaten dugu. 55 00:03:55,810 --> 00:04:02,510 Era berean, lehenago esan dudan bezala, pila bat eraikitzeko dugu lotuta zerrenda gainean. 56 00:04:02,510 --> 00:04:04,960 Array bat erabiliz, gure elementuak eduki ordez, 57 00:04:04,960 --> 00:04:10,070 lotutako zerrenda bat erabili izan dugu gure elementuak eduki eta inguruan pila eraikitzeko. 58 00:04:10,070 --> 00:04:12,420 Dezagun adibide pare bat ibiltzeko, kode batzuk begira, 59 00:04:12,420 --> 00:04:14,960 zer ari den benetan gertatzen ari den hemen ikusi ahal izateko. 60 00:04:14,960 --> 00:04:23,400 Ezkerrean, behera bota dut zer eta egitura pila lukeen itxura memorian 61 00:04:23,400 --> 00:04:28,330 edukiera # lau izan definitu. 62 00:04:28,330 --> 00:04:33,490 Gure lau elementu char * array lortu dugu. 63 00:04:33,490 --> 00:04:38,110 Dugu got kateak [0], kateak [1], kateak [2], kateak [3], 64 00:04:38,110 --> 00:04:43,800 eta, ondoren, gure tamaina osokoa azken espazio hori. 65 00:04:43,800 --> 00:04:46,270 Ba al du zentzurik? Ongi da. 66 00:04:46,270 --> 00:04:48,790 Hau da, zer gertatzen da eskubidea zer egiten badut, 67 00:04:48,790 --> 00:04:55,790 nire kodea izango da, egiturari, izeneko s pilatzen dira eta egitura bat besterik ez deklaratzeko. 68 00:04:55,790 --> 00:05:01,270 Hau da, zer gara. Behera Izan ere, planoan memorian aztarna hau. 69 00:05:01,270 --> 00:05:05,590 Lehen galdera da zer dira pila eta egitura horren edukia? 70 00:05:05,590 --> 00:05:09,250 Oraintxe ezer ari dira, baina ez dira guztiz ezer ez. 71 00:05:09,250 --> 00:05:13,300 Zabor mota hau Oraindik dute. Haien ideia ez daukagu. 72 00:05:13,300 --> 00:05:17,000 Noiz pila s aldarrikatzen dugu, ari gara horretan bota memoria gainean. 73 00:05:17,000 --> 00:05:19,840 Mota int i geratuko eta ez da hasieratzean bezalakoa da. 74 00:05:19,840 --> 00:05:21,730 Ez dakizu zer han. Bertan irakurri ahal izango duzu, 75 00:05:21,730 --> 00:05:27,690 baina agian ez da super lagungarria. 76 00:05:27,690 --> 00:05:32,680 One beti gogoratu egin nahi duzun gauza da hasieratu edozein izanda ere hasieratu behar dira. 77 00:05:32,680 --> 00:05:35,820 Kasu honetan, tamaina abiarazi zero izango dugu, 78 00:05:35,820 --> 00:05:39,960 den buelta eman Gurekin oso garrantzitsua izango delako. 79 00:05:39,960 --> 00:05:43,450 Aurrera genezake, eta erakusleak, guztiak, char * s abiarazi, 80 00:05:43,450 --> 00:05:49,670 balio batzuk ulergarria da, ziurrenik null izan. 81 00:05:49,670 --> 00:05:58,270 Baina ez da guztiz beharrezkoa egin dugu. 82 00:05:58,270 --> 00:06:04,200 >> Orain, bi pilak eragiketa nagusiak hauek dira? 83 00:06:04,200 --> 00:06:07,610 Edozein hitzaldia gogoratzen zer egin pilak? Bai? 84 00:06:07,610 --> 00:06:09,700 [Stella] bultzaka eta leihoa? >> Zehazki. 85 00:06:09,700 --> 00:06:13,810 Eta bultzaka leihoa bi pila eragiketa nagusiak hauek dira. 86 00:06:13,810 --> 00:06:17,060 Eta zer ez push egin? >> Zerbait jartzen du goiko aldera 87 00:06:17,060 --> 00:06:19,300 pilaren, eta, ondoren, leihoa hartzen du off. 88 00:06:19,300 --> 00:06:23,150 [Hardison] Zehazki. Beraz, bultzaka pilaren gainean zerbait bultzatzen. 89 00:06:23,150 --> 00:06:27,700 Jangela-langileek jangela erretilu batean jarri eta behera mostradorera bezalakoa da. 90 00:06:27,700 --> 00:06:33,630 Leihoa eta jangela erretilu bat hartzen ari da off pila. 91 00:06:33,630 --> 00:06:36,460 Dezagun zer gertatzen den adibide pare baten bidez oinez 92 00:06:36,460 --> 00:06:39,720 gauzak pila push dugu. 93 00:06:39,720 --> 00:06:45,110 Ginen katea 'kaixo' gure pila gainean bultza nahi izanez gero, 94 00:06:45,110 --> 00:06:49,760 hau da, zein den gure diagrama litzateke itxura gaur egun. 95 00:06:49,760 --> 00:06:53,410 Ikusi zer gertatzen den? 96 00:06:53,410 --> 00:06:56,530 Galtzen gure kateak array lehen elementu sartu ginen 97 00:06:56,530 --> 00:07:01,420 eta gure tamaina Aldaketa upped 1 izan behar dugu. 98 00:07:01,420 --> 00:07:05,340 Beraz, bada, bi diapositiben arteko aldea, hemen 0 izan zen, hemen push aurretik. 99 00:07:05,340 --> 00:07:08,690 Hemen push ondoren. 100 00:07:08,690 --> 00:07:13,460 Push aurretik, push ondoren. 101 00:07:13,460 --> 00:07:16,860 Eta orain, elementu bat izan behar dugu, gure pila. 102 00:07:16,860 --> 00:07:20,970 Katea "hello" da, eta hori da. 103 00:07:20,970 --> 00:07:24,440 Everything array beste, gure kateak array, oraindik zabor. 104 00:07:24,440 --> 00:07:27,070 Ez dugu hasieratu. 105 00:07:27,070 --> 00:07:29,410 Demagun kate beste bultza gure pila aldera. 106 00:07:29,410 --> 00:07:32,210 "Mundu" push une honetan ari gara. 107 00:07:32,210 --> 00:07:35,160 Beraz, "mundu" hemen "hello" gainean doa dezakezu, 108 00:07:35,160 --> 00:07:40,040 eta tamaina Aldaketa igotzen 2. 109 00:07:40,040 --> 00:07:44,520 Orain "CS50", eta hori izango gainean, berriz bultza dezakegu. 110 00:07:44,520 --> 00:07:51,110 Joaten gara itzuli bada, gauzak nola ari gara bultzaka pilaren gainean ikus daiteke. 111 00:07:51,110 --> 00:07:53,320 Eta orain, pop lortu dugu. 112 00:07:53,320 --> 00:07:58,910 Zerbait off pilaren popped dugu, zer gertatu zen? 113 00:07:58,910 --> 00:08:01,540 Edozein ikus diferentzia? Pretty sotila da. 114 00:08:01,540 --> 00:08:05,810 [Student] tamaina. >> Bai, tamaina aldatu egin da. 115 00:08:05,810 --> 00:08:09,040 >> Zer gehiago litzateke espero duzu aldatzeko? 116 00:08:09,040 --> 00:08:14,280 [Student] kateak, too. >> Right. Kateak ere. 117 00:08:14,280 --> 00:08:17,110 Bihurtzen da egiten ari zarenean eta modu honetan, 118 00:08:17,110 --> 00:08:21,960 ari gara, ez delako gure pila elementuak kopiatzeko, 119 00:08:21,960 --> 00:08:24,670 Ez dugu ezer egin, bakarrik erabili ahal izango dugu tamaina 120 00:08:24,670 --> 00:08:28,630 segimendua egiteko, gauzen kopurua gure array 121 00:08:28,630 --> 00:08:33,780 beraz, berriro irekiko dugu, berriro ere decrement besterik ez dugu gure tamaina behera 1. 122 00:08:33,780 --> 00:08:39,440 Benetan joan beharrik gabe eta ezer gainidatzi. 123 00:08:39,440 --> 00:08:41,710 Funky mota. 124 00:08:41,710 --> 00:08:46,520 Bihurtzen da normalean dugun utzi gauzak bakarrik da gutxiago lana delako egin digu. 125 00:08:46,520 --> 00:08:50,060 Atzera joan eta zerbait gainidatzi ez badugu, ondoren, zergatik? 126 00:08:50,060 --> 00:08:54,150 Beraz, bi aldiz off pila irekiko dugu, eta horrela, ez da tamaina decrement pare bat aldiz. 127 00:08:54,150 --> 00:08:59,120 Eta berriro ere, hau da, bakarrik ez delako ari gara gauza gure pila kopiatzea. 128 00:08:59,120 --> 00:09:01,320 Bai? Anima zaitez. 129 00:09:01,320 --> 00:09:04,460 [Ikasle, ulertezina] >> Eta gero, zer gertatzen da zerbait push duzu berriro? 130 00:09:04,460 --> 00:09:08,570 Zerbait bultzatzen dituzte berriro, non ez? 131 00:09:08,570 --> 00:09:12,390 Non ez, joan Basil? Kateak [1] Into >>? >> Right. 132 00:09:12,390 --> 00:09:14,530 Zergatik ez joan kateak [3]? 133 00:09:14,530 --> 00:09:19,410 [Basil] ahaztu ez dagoela ezer kateak delako [1] eta [2]? 134 00:09:19,410 --> 00:09:24,040 [Hardison] Zehazki. Gure pila, funtsean, "ahaztu" zela on ustiategi ezer 135 00:09:24,040 --> 00:09:29,480 kateak [1] edo kateak [2], beraz, "Woot" push, 136 00:09:29,480 --> 00:09:36,670 jartzen besterik ez da elementu sartu kateak [1]. 137 00:09:36,670 --> 00:09:41,590 Ba al dago edozein galdera nola lan honetan, oinarrizko maila batean? 138 00:09:41,590 --> 00:09:45,160 [Sam] Beraz, hau ez da inolaz dinamikoa, zenbatekoa dagokionez 139 00:09:45,160 --> 00:09:47,620 edo pilaren tamaina dagokionez? 140 00:09:47,620 --> 00:09:56,750 [Hardison] Zehazki. Hau da, puntua izan zen hura ez zela dinamikoki growning pila bat. 141 00:09:56,750 --> 00:10:02,850 Pila bat, eduki ahal izango ditu, gehienak lau char * s, lau gauzak. 142 00:10:02,850 --> 00:10:07,580 Ginen eta saiatu push bosgarren gauza bat bada, zer egin behar gertatuko dela uste duzu? 143 00:10:07,580 --> 00:10:11,870 [Ikasleak, ulertezina] 144 00:10:11,870 --> 00:10:14,600 [Hardison] Zehazki. Tatuko gauzak zenbaki bat daude. 145 00:10:14,600 --> 00:10:19,330 , Ziurrenik izan da errua seg, zer ginen arabera 146 00:10:19,330 --> 00:10:22,530 hain zuzen ere back-end ginen ezartzeko. 147 00:10:22,530 --> 00:10:31,740 Gainidatzi izan da. Hori da buffer gainezkatzea buruz hitz egin dugun klasean izan da. 148 00:10:31,740 --> 00:10:35,240 Gainidatziak izan daiteke gauza nabariagoa izango litzateke 149 00:10:35,240 --> 00:10:42,370 saiatu ginen gure pila gauza estra bat aurrera eraman nahi izanez gero? 150 00:10:42,370 --> 00:10:44,550 Beraz, buffer gainezkatzea bat aipatu duzu. 151 00:10:44,550 --> 00:10:47,870 Zer izan daiteke gauza idatzi get edo stomped on 152 00:10:47,870 --> 00:10:52,320 gainez aparteko gauza bat bultza saiatzen gara ustekabean bada? 153 00:10:52,320 --> 00:10:54,730 [Daniel, ulertezina] >> posibleak. 154 00:10:54,730 --> 00:10:58,440 Baina, hasiera batean, zer gerta liteke? Laugarren gauza bat push saiatu ginen Zer gertatzen da? 155 00:10:58,440 --> 00:11:06,220 Tamaina ordezka dezake, gutxienez memoria diagrama ditudan dugu lortu. 156 00:11:06,220 --> 00:11:10,880 >> Arazo multzo zehaztapena, hau da, zer behar ezartzeko dugu, gaur egun, 157 00:11:10,880 --> 00:11:16,030 zer nahi ez dugu egin faltsua besterik ez da itzuliko. 158 00:11:16,030 --> 00:11:20,030 Gure push metodoa da boolear bat itzultzeko, 159 00:11:20,030 --> 00:11:22,920 eta balio boolearra egia izango da push bada arrakastasua 160 00:11:22,920 --> 00:11:29,730 eta faltsua ez badugu bultza ezer gehiago pila beteta dagoelako. 161 00:11:29,730 --> 00:11:33,620 Dezagun oraintxe, kode hori pixka bat ibiltzeko. 162 00:11:33,620 --> 00:11:36,400 Hona hemen gure push funtzioa. 163 00:11:36,400 --> 00:11:40,380 Gure pila bat push katea hartu funtzioa pilan jarri. 164 00:11:40,380 --> 00:11:45,820 Egia itzuli da katea ondo bada bultzatu 165 00:11:45,820 --> 00:11:51,820 pilaketa eta false bestela. 166 00:11:51,820 --> 00:11:59,740 Zer Edozein iradokizun hemen lehenengo gauza ona izan daiteke? 167 00:11:59,740 --> 00:12:20,630 [Sam] tamaina berdinen ahalmena bada, orduan itzultzeko gezurra? 168 00:12:20,630 --> 00:12:23,320 [Hardison] Bingo. Nice job. 169 00:12:23,320 --> 00:12:26,310 Tamaina edukiera bada, faltsua itzuliko dugu. 170 00:12:26,310 --> 00:12:29,270 Ezin dugu ezer gure pila gehiago jarri. 171 00:12:29,270 --> 00:12:36,900 Bestela, zerbait pilaren gainean jarri nahi dugu. 172 00:12:36,900 --> 00:12:41,670 Zer da "pilaren goialdean," egongo da? 173 00:12:41,670 --> 00:12:43,650 [Daniel] Size 0? >> Size 0. 174 00:12:43,650 --> 00:12:49,990 Zer da ondoren, pila bat gauza pila goian? Missy, ez dakizu? 175 00:12:49,990 --> 00:12:52,720 [Missy] bat. >> Size bat da, zehazki. Tamaina gehituz mantentzeko, 176 00:12:52,720 --> 00:13:01,690 eta aldi bakoitzean array indizearen tamaina elementu berria ari zara jartzen. 177 00:13:01,690 --> 00:13:05,470 Egin ahal izango ditugu, mota horretako bat-forrua, zentzua badu. 178 00:13:05,470 --> 00:13:11,910 Beraz, gure kateak array lortu dugu, sartzeko tamaina indizea dugu, 179 00:13:11,910 --> 00:13:14,780 eta ari gara gure char * gordetzeko. 180 00:13:14,780 --> 00:13:19,340 Ohartu katea kopiatzea ez gertatzen da hemen, 181 00:13:19,340 --> 00:13:29,680 esleipena memoria dinamikoa ez? 182 00:13:29,680 --> 00:13:34,440 Eta gero Missy ekarri zer egin dugu, 183 00:13:34,440 --> 00:13:40,570 kate array leku egokia dugu gordetzen delako, 184 00:13:40,570 --> 00:13:49,230 eta tamaina Kontatzailea bat da, beraz, hurrengo push prest gaude izan dugun esan zuen. 185 00:13:49,230 --> 00:13:53,950 Beraz, hori egin ahal izango dugu s.size + +. 186 00:13:53,950 --> 00:13:59,330 Puntu honetan, gure array dugu bultzatu. Zer egin behar dugu azken gauza? 187 00:13:59,330 --> 00:14:10,110 [Student] itzuli egia. >> Itzuli egia. 188 00:14:10,110 --> 00:14:14,690 Beraz, nahiko erraza da, pretty simple kodea. Ez da gehiegi. 189 00:14:14,690 --> 00:14:17,070 Behin bilduta duzula zure burua pila nola funtzionatzen duen inguruan, 190 00:14:17,070 --> 00:14:21,910 hau da, pretty simple inplementatzeko. 191 00:14:21,910 --> 00:14:26,390 >> Orain, horren zati bat hurrengo kate bat off pilaren leihoa da. 192 00:14:26,390 --> 00:14:29,410 You guys, hau pixka lan egiteko denbora pixka bat eman dut. 193 00:14:29,410 --> 00:14:34,320 Ia funtsean, zer egin dugu hemen push alderantziz. 194 00:14:34,320 --> 00:14:38,510 Zer egin dut benetan trabatzen. 195 00:14:38,510 --> 00:14:48,160 -Tresnaren bat abiarazi dut hemen, eta aparatuaren 196 00:14:48,160 --> 00:14:53,600 Bota dut arazoa 5 zehaztapena. 197 00:14:53,600 --> 00:15:02,560 Hemen dugu mapan handiago izanez gero, ikus cdn.cs50.net/2012/fall/psets/pset5.pdf at nago ahal izango dugu. 198 00:15:02,560 --> 00:15:08,590 Have you guys kode hau kokapena hemen dago, section6.zip? 199 00:15:08,590 --> 00:15:15,030 Guztiak eskubidea. Egin ez baduzu, hori egiteko eskubidea, gaur egun, oso azkar. 200 00:15:15,030 --> 00:15:22,130 Egin dut, nire terminal-leiho batean. 201 00:15:22,130 --> 00:15:25,090 Benetan egin dut hemen. Bai. 202 00:15:25,090 --> 00:15:34,730 Bai, Sam? >> Zergatik s.string 's tamaina parentesi artean esan = str buruzko galdera bat dut? 203 00:15:34,730 --> 00:15:42,910 Zer da str? Da definitzen nonbait, aurretik edo - oh, char * str? 204 00:15:42,910 --> 00:15:47,160 [Hardison] Bai, zehazki. Argumentua izan zen. >> Oh, ados. Sentitzen dugu. 205 00:15:47,160 --> 00:15:49,470 [Hardison] sartu push katea ari gara zehaztuz 206 00:15:49,470 --> 00:15:55,220 Beste galdera etorri liteke ez garela benetan hemen buruz hitz egin zen 207 00:15:55,220 --> 00:15:58,810 eman izan dugun s izeneko aldagai hori hartu genuen 208 00:15:58,810 --> 00:16:02,710 esparrua eta gurekin izan zen. 209 00:16:02,710 --> 00:16:06,960 Eman zela pila struct honen hartu dugu. 210 00:16:06,960 --> 00:16:08,930 Beraz, atzera bilatzen kode hau push, 211 00:16:08,930 --> 00:16:13,450 stuff ari gara egiten Kate hori got pasa dezakezu 212 00:16:13,450 --> 00:16:19,210 baina ondoren, Bat-batean, s.size ari gara sartzeko, bezala non ez etorriko da? 213 00:16:19,210 --> 00:16:23,020 Begiratzen ari garen atalaren artxiboa kodea 214 00:16:23,020 --> 00:16:27,100 eta, ondoren, stuff zure arazoa zaizu egiten ezartzen du, 215 00:16:27,100 --> 00:16:32,440 gure pila egiturari global aldagai bat egin dugu 216 00:16:32,440 --> 00:16:36,380 beraz, sarbidea izan dezakegu gure hainbat funtzio guztiak 217 00:16:36,380 --> 00:16:40,630 eskuz pasatu inguruan eta pasa erreferentzia izan gabe, 218 00:16:40,630 --> 00:16:44,870 ez da stuff mota guztiak. 219 00:16:44,870 --> 00:16:52,280 Besterik gabe, apur bat iruzurra ari gara, izango bada, gauzak egiteko nicer. 220 00:16:52,280 --> 00:16:57,430 Eta zerbait egiten ari gara hemen dibertigarria delako, errazagoa da. 221 00:16:57,430 --> 00:17:02,800 Askotan, ikusi egin beharko duzu dute handi bat datuak egitura 222 00:17:02,800 --> 00:17:07,750 konpainiarena ari diren programaren barruan. 223 00:17:07,750 --> 00:17:09,560 >> Dezagun atzera jo tresnara. 224 00:17:09,560 --> 00:17:15,240 Ba al denek, arrakastaz lortu section6.zip? 225 00:17:15,240 --> 00:17:20,440 Denek deskonprimitu unzip section6.zip erabiliz? 226 00:17:20,440 --> 00:17:27,200 Atal 6 direktorioan sartu baduzu - 227 00:17:27,200 --> 00:17:29,220 aah, leku osoko 228 00:17:29,220 --> 00:17:32,840 eta hemen zerrendatzen baduzu, ikusiko duzu duzula got hiru c fitxategiak. 229 00:17:32,840 --> 00:17:38,350 Ilara batean, SLL, banaka-lotutako zerrenda da, eta pila bat lortu duzu. 230 00:17:38,350 --> 00:17:44,600 Irekitzen baduzu stack.c 231 00:17:44,600 --> 00:17:47,330 ikusi ditudan Gurekin definitutako egiturari hau eskuratu dezakezu, 232 00:17:47,330 --> 00:17:51,330 zehatza eta egitura besterik ez dugu diapositibak buruz hitz egin zuen. 233 00:17:51,330 --> 00:17:56,340 Lortu dugu gure aldagai global pila, 234 00:17:56,340 --> 00:18:00,110 lortu dugu gure push funtzioa, 235 00:18:00,110 --> 00:18:04,230 eta, ondoren, lortu dugu gure pop funtzioa. 236 00:18:04,230 --> 00:18:08,320 Kodea jarri dut push itzuli diapositiba hemen, 237 00:18:08,320 --> 00:18:10,660 baina zer you guys egin nahi nuke, zure gaitasuna onena 238 00:18:10,660 --> 00:18:13,790 joan eta pop funtzioa ezartzea. 239 00:18:13,790 --> 00:18:18,480 Behin inplementatu duzun, hau konpilatu ditzakezu egiteko pila, 240 00:18:18,480 --> 00:18:22,540 eta, ondoren, exekutatu emaitzak pila exekutagarria 241 00:18:22,540 --> 00:18:28,390 eta hori test kodea honetan guztiak exekutatu egingo dute behera hemen nagusian. 242 00:18:28,390 --> 00:18:31,060 Eta nagusia hartzen du arreta benetan push eta pop deiak egiteko 243 00:18:31,060 --> 00:18:33,220 eta ziur dena ondo pasatzen. 244 00:18:33,220 --> 00:18:36,820 Initializes ere pila tamaina hemen 245 00:18:36,820 --> 00:18:39,780 beraz, ez duzu hori hasieratzeko kezkatu. 246 00:18:39,780 --> 00:18:42,310 Bere gain hartuko duen bezala izan da hasieratu dezakezu 247 00:18:42,310 --> 00:18:48,000 denbora sartzeko pop funtzioa. 248 00:18:48,000 --> 00:18:53,530 Ez duela zentzurik? 249 00:18:53,530 --> 00:19:00,100 Beraz, hemen goaz. Push kodea. 250 00:19:00,100 --> 00:19:13,210 Emango dizut guys 5 edo 10 minutu. 251 00:19:13,210 --> 00:19:15,690 Eta behin-behineko, edozein zalantza izanez gero ari zaren kodifikazioa bitartean, 252 00:19:15,690 --> 00:19:17,710 mesedez eskatu ozen. 253 00:19:17,710 --> 00:19:23,080 Beraz, bada, itsastea puntu bat, besterik ez galdetu. 254 00:19:23,080 --> 00:19:26,030 Let me jakin, besteek jakin dezagun. 255 00:19:26,030 --> 00:19:28,160 Lan egin hurkoari ere. 256 00:19:28,160 --> 00:19:30,360 [Daniel] besterik ez gara pop ezartzeko oraintxe bertan? >> Just pop. 257 00:19:30,360 --> 00:19:34,200 Push ezartzeko kopiatu arren Nahi izanez gero, 258 00:19:34,200 --> 00:19:37,780 , beraz, azterketa funtzionatuko du. 259 00:19:37,780 --> 00:19:41,940 Zaila delako gauzak sartzeko probatzeko 260 00:19:41,940 --> 00:19:49,030 edo, zaila da leihoa gauza pila bat probatzeko ez dago ezer pila hasteko. 261 00:19:49,030 --> 00:19:55,250 >> Zer da pop ustezko itzuli da? Pilaren goialdean elementu. 262 00:19:55,250 --> 00:20:01,260 Ustezko elementu off pilaren goialdean 263 00:20:01,260 --> 00:20:05,780 eta, ondoren, pilaren tamaina decrement 264 00:20:05,780 --> 00:20:07,810 eta, gaur egun, galdu duzun elementuaren gainean. 265 00:20:07,810 --> 00:20:11,420 Eta, ondoren, elementu itzultzeko gainean. 266 00:20:11,420 --> 00:20:20,080 [Ikaslea, ulertezina] 267 00:20:20,080 --> 00:20:28,810 [Hardison] Beraz, zer gertatzen da, ez baduzu? [Ikaslea, ulertezina] 268 00:20:28,810 --> 00:20:34,000 Zer bukatzen happening da seguruenik ari zaren bai sartzeko 269 00:20:34,000 --> 00:20:37,350 elementu bat ez da hasieratu oraindik, beraz, kalkulua 270 00:20:37,350 --> 00:20:39,990 non azken elementua da off. 271 00:20:39,990 --> 00:20:46,260 Hortaz, hona hemen, konturatu baduzu, push, kateak ari gara sartzeko s.size elementu 272 00:20:46,260 --> 00:20:48,560 indize bat berria delako. 273 00:20:48,560 --> 00:20:51,460 Pilaren goialdean berria da. 274 00:20:51,460 --> 00:21:01,100 Pop, berriz, s.size hurrengo espazioa izango da, 275 00:21:01,100 --> 00:21:05,210 espazioa zure pila elementu guztien gainean. 276 00:21:05,210 --> 00:21:10,050 Beraz, goi-elementua ez da s.size 277 00:21:10,050 --> 00:21:14,930 baizik eta, azpian. 278 00:21:14,930 --> 00:21:19,640 >> Beste gauza duzunean egin - pop, 279 00:21:19,640 --> 00:21:22,030 tamaina decrement daukazu. 280 00:21:22,030 --> 00:21:28,750 Gogoratzen itzuliz gero gure little diagrama hemen 281 00:21:28,750 --> 00:21:30,980 benetan, ikusi dugun gertatzen ari den gauza bakarra pop deitzen dugu 282 00:21:30,980 --> 00:21:36,150 tamaina hori jaitsi da, lehenik eta behin, 2, eta ondoren 1. 283 00:21:36,150 --> 00:21:42,620 Orduan elementu berri bat galtzen dugu, joan on litzateke Leku egokia. 284 00:21:42,620 --> 00:21:49,610 [Basil] s.size 2 bada, orduan ez litzateke joan elementu 2, 285 00:21:49,610 --> 00:21:54,400 eta, ondoren, nahi duen elementu pop off nahi duzuna? 286 00:21:54,400 --> 00:21:59,510 Beraz, bada joan dugu >> Hargatik begiratu berriro. 287 00:21:59,510 --> 00:22:07,730 Hau da, gure pila bada, puntu honetan 288 00:22:07,730 --> 00:22:12,130 eta pop deitzen diogu, 289 00:22:12,130 --> 00:22:16,150 goi-gehienak elementu ez den indizea da? 290 00:22:16,150 --> 00:22:19,300 [Basil] 2 egun, baina 3. Pop egingo. >> Right. 291 00:22:19,300 --> 00:22:24,220 Beraz, non gure tamaina 3,, baina indizea 2 elementu pop nahi dugu. 292 00:22:24,220 --> 00:22:29,900 Array zero-indexatzeko duzula off-mota hori tipikoa da. 293 00:22:29,900 --> 00:22:36,430 Beraz, nahi ez duzun hirugarren elementu pop, baina ez da hirugarren elementu indizea 3. 294 00:22:36,430 --> 00:22:39,430 Eta arrazoia ez dugu ken 1 egiten denean bultzaka ari gara 295 00:22:39,430 --> 00:22:44,120 oraintxe delako, konturatu top-gehienak elementu 296 00:22:44,120 --> 00:22:47,600 ginen zerbait pila gainean push puntu honetan, 297 00:22:47,600 --> 00:22:50,360 index 3 bultza nahi genuke. 298 00:22:50,360 --> 00:23:03,550 Eta, beraz, besterik ez da gertatzen tamaina eta indizeak lerro denean bultzaka ari zaren. 299 00:23:03,550 --> 00:23:06,960 >> Who got lan pila bat ezartzeko? 300 00:23:06,960 --> 00:23:09,690 Lan pila bat lortu duzu. Ez duzu pop oraindik lan? 301 00:23:09,690 --> 00:23:11,890 [Daniel] Bai. Baietz uste dut. 302 00:23:11,890 --> 00:23:14,610 >> Programa exekutatzen ari da eta ez faulting seg, inprimatzeko? 303 00:23:14,610 --> 00:23:17,520 Ez du inprimatu "arrakasta" exekutatzen duzun? 304 00:23:17,520 --> 00:23:22,630 Bai. Egin pilatu, exekutatu, bistaratzen da "arrakasta" eta ez du boom joan 305 00:23:22,630 --> 00:23:26,000 guztiak ona da. 306 00:23:26,000 --> 00:23:34,070 Guztiak eskubidea. Goazen tresnara benetan azkar, 307 00:23:34,070 --> 00:23:46,100 eta honen bidez dugu oinez. 308 00:23:46,100 --> 00:23:51,110 Zer ari den gertatzen hemen pop begiratzen badiogu, 309 00:23:51,110 --> 00:23:55,220 Daniel, zer da lehen gauza egiten duzula? 310 00:23:55,220 --> 00:23:58,850 [Daniel] s.size 0 baino handiagoa bada. 311 00:23:58,850 --> 00:24:03,120 [Hardison] Larreina. Eta zergatik egiten duzu? 312 00:24:03,120 --> 00:24:05,610 [Daniel] ziur ez zela pilaren barruan zerbait egiteko. 313 00:24:05,610 --> 00:24:10,950 [Hardison] Eskuin. Ziur s.size 0 baino handiagoa dela ziurtatu probatu nahi duzu; 314 00:24:10,950 --> 00:24:13,280 bestela, zer gerta izan nahi duzu? 315 00:24:13,280 --> 00:24:16,630 [Daniel] Return null? >> Return null, zehazki. 316 00:24:16,630 --> 00:24:20,740 Beraz s.size 0 baino handiagoa bada. Orduan, zer egin dugu? 317 00:24:20,740 --> 00:24:25,890 Zer pila hutsik ez bada egiten dugu? 318 00:24:25,890 --> 00:24:31,210 [Stella] tamaina decrement duzu? >> Tamaina decrement duzu, ados. 319 00:24:31,210 --> 00:24:34,440 Beraz, nola egiten duzu? >> S.size--. 320 00:24:34,440 --> 00:24:37,030 [Hardison] Great. Eta gero, zer egin duzu? 321 00:24:37,030 --> 00:24:44,140 [Stella] Eta gero bueltan s.string esan dut [s.size]. 322 00:24:44,140 --> 00:24:48,560 [Hardison] Great. 323 00:24:48,560 --> 00:24:51,940 Bestela null itzultzeko. Bai, Sam? 324 00:24:51,940 --> 00:24:55,510 [Sam] Zergatik ez da behar s.size izan + 1? 325 00:24:55,510 --> 00:24:58,430 [Hardison] Plus 1? >> Bai. >> Eskuratu du. 326 00:24:58,430 --> 00:25:00,980 [Sam] 1 delako hartzen ari zaren pentsatu nuen, 327 00:25:00,980 --> 00:25:04,290 gero itzuli ez dutela eskatu duzu. 328 00:25:04,290 --> 00:25:09,400 [Hardison] Eta hori izan zen, besterik gabe, zer ziren 0 indize osoa gai honetan hitz egiten dugu. 329 00:25:09,400 --> 00:25:11,380 Beraz, mapan handiago badugu berriro hemen. 330 00:25:11,380 --> 00:25:15,650 Guy hau begiratzen badiogu, hemen ikusten dugun pop dezakezu 331 00:25:15,650 --> 00:25:19,340 elementu ari gara leihoa index 2. 332 00:25:19,340 --> 00:25:25,200 >> Beraz, gure tamaina txikitzeko dugu lehenengo eta, ondoren, gure tamaina gure indize bat datorrela. 333 00:25:25,200 --> 00:25:39,650 Ez badugu decrement tamaina lehenengo eta, ondoren, tamaina -1 eta, ondoren, decrement egin behar dugu. 334 00:25:39,650 --> 00:25:45,270 Great. Ona guztiak? 335 00:25:45,270 --> 00:25:47,530 Honi buruzko edozein zalantza argitzeko? 336 00:25:47,530 --> 00:25:54,050 Modu ezberdinak daude, hau baita idazteko. 337 00:25:54,050 --> 00:26:03,290 Izan ere, zerbait egin ahal izango dugu, nahiz eta bat-forrua egin ahal izango dugu. 338 00:26:03,290 --> 00:26:05,770 Bat-line itzulera bat egin ahal izango dugu. 339 00:26:05,770 --> 00:26:12,980 Beraz, benetan ahal izango dugu decrement egiten gara itzuli aurretik. 340 00:26:12,980 --> 00:26:18,320 Beraz jarriz - s.size aurretik. 341 00:26:18,320 --> 00:26:22,060 Horregatik, lerro benetan trinko. 342 00:26:22,060 --> 00:26:30,940 Non arteko aldea. S tamaina eta s.size-- 343 00:26:30,940 --> 00:26:40,130 da postfix hori da postfix deitzen duelako dator ondoren s.size-- 344 00:26:40,130 --> 00:26:47,430 esan nahi du s.size indizea aurkitzeko helburuak ebaluatu 345 00:26:47,430 --> 00:26:50,410 da Gaur egun, lerro hori exekutatzen denean, 346 00:26:50,410 --> 00:26:54,290 eta, ondoren, hau gertatzen line erabat exekutatu ondoren. 347 00:26:54,290 --> 00:27:00,340 Index s.size elementu sartu ondoren. 348 00:27:00,340 --> 00:27:07,260 Eta hori ez da nahi duguna, nahi dugun decrement lehen gertatuko delako. 349 00:27:07,260 --> 00:27:10,990 Othewise, array sartzeko goaz, modu eraginkorrean, mugetatik kanpo. 350 00:27:10,990 --> 00:27:16,850 Sartzeko elementu benetan sartzeko nahi dugun batez ere ari gara. 351 00:27:16,850 --> 00:27:23,840 Bai, Sam? >> Edo bizkorragoa RAM gutxiago erabiltzeko lerro bat edo ez egiteko? 352 00:27:23,840 --> 00:27:29,620 [Hardison] Bene-benetan, benetan araberakoa da. 353 00:27:29,620 --> 00:27:34,220 [Sam, ulertezina] >> Bai, araberakoa izango da. Konpilatzailea trikimailuak egin dezakezu 354 00:27:34,220 --> 00:27:41,580 aitortzen konpilatzailea lortzeko, normalean, imajinatzen dut. 355 00:27:41,580 --> 00:27:44,840 >> Beraz, pixka bat aipatu dugu hau konpilatzailea optimizazioa stuff buruzko 356 00:27:44,840 --> 00:27:47,400 konpilatzean egin ahal izango dituzu, 357 00:27:47,400 --> 00:27:50,580 eta hori gauza mota konpilatzailea gai irudikatu izan daiteke, 358 00:27:50,580 --> 00:27:54,710 oh bezala, hey, agian, hori guztia egin ahal izango dut bat funtzionamenduan, 359 00:27:54,710 --> 00:27:59,420 tamaina aldagai kargatzean RAM en ez bezala, 360 00:27:59,420 --> 00:28:03,770 decrementing, gordetzeko atzera, eta, ondoren, berriro kargatzen atzera 361 00:28:03,770 --> 00:28:08,000 gainerako eragiketa hau prozesatu. 362 00:28:08,000 --> 00:28:10,710 Baina, normalean, ez, hau da, ez da gauza sort 363 00:28:10,710 --> 00:28:20,770 den programa nabarmen azkarrago egiteko. 364 00:28:20,770 --> 00:28:26,000 Pilak galdera gehiago? 365 00:28:26,000 --> 00:28:31,360 >> Beraz, bultzaka eta leihoa. You guys nahi saiatzeko, hacker edizioa bada, 366 00:28:31,360 --> 00:28:33,660 hacker edizioa egin dugu benetan joan 367 00:28:33,660 --> 00:28:37,670 eta pila hazten dinamikoki. 368 00:28:37,670 --> 00:28:43,190 Erronka dago nagusiki hemen push funtzioa, 369 00:28:43,190 --> 00:28:48,820 irudikatu nahi nola array haziko 370 00:28:48,820 --> 00:28:52,450 mantentzeko, gero eta gehiago-pila elementu bultzaka. 371 00:28:52,450 --> 00:28:56,000 Egia esan, ez da gehiegi osagarriak kodea. 372 00:28:56,000 --> 00:29:00,080 Deiak malloc han behar bezala gogoratu behar duzu, - Just dei bat 373 00:29:00,080 --> 00:29:03,310 eta, ondoren, irudikatu idazketa deitu zaren. 374 00:29:03,310 --> 00:29:06,090 Hori da erronka bat fun Oraindik Interesik baduzue. 375 00:29:06,090 --> 00:29:11,550 >> Baina, oraingoz, dezagun aurrera, eta utzi ilarak buruz hitz egin. 376 00:29:11,550 --> 00:29:15,680 Korritu bidez hemen. 377 00:29:15,680 --> 00:29:19,340 Ilara pilaren anaia itxi bat da. 378 00:29:19,340 --> 00:29:25,380 Beraz, pila, gauzak horrela ziren azken jarri 379 00:29:25,380 --> 00:29:28,810 izan ziren lehenengo gauza da berreskuratu. 380 00:29:28,810 --> 00:29:33,600 Lortu dugu azken hau, lehen izarrekin, edo LIFO, ordena. 381 00:29:33,600 --> 00:29:38,390 Ilaran, berriz, line ari zaren zutik dituzu, espero bezala, 382 00:29:38,390 --> 00:29:41,980 lehen pertsonan lerro ilara sartu, lehenik eta behin, 383 00:29:41,980 --> 00:29:47,630 ilaran eskuratu lehen gauza lortzen da. 384 00:29:47,630 --> 00:29:51,490 Colas ere erabili ohi dira grafikoak aurre ari gara, 385 00:29:51,490 --> 00:29:55,560 atsegin dugu hitz labur pila, 386 00:29:55,560 --> 00:30:00,260 eta ilarak ere erabilgarri dira beste gauza mordo bat. 387 00:30:00,260 --> 00:30:06,180 Gauza bat datorren askotan mantentzen saiatzen ari da, esate baterako, 388 00:30:06,180 --> 00:30:12,310 elementuen zerrenda ordenatuko. 389 00:30:12,310 --> 00:30:17,650 Eta hau egin ahal izango duzu, array bat. Gauzen zerrenda ordenatuko array bat mantendu ahal izango duzu, 390 00:30:17,650 --> 00:30:20,650 baina non lortzen dituen delikatua da gero beti aurkitu 391 00:30:20,650 --> 00:30:26,160 leku egokian hurrengo gauza txertatzeko. 392 00:30:26,160 --> 00:30:28,250 Beraz, bada, 1 zenbakien array duzu 10 bidez, 393 00:30:28,250 --> 00:30:31,630 eta orduan zenbaki 1 100 bidez zabaldu nahi baduzu, 394 00:30:31,630 --> 00:30:33,670 eta zenbaki horiek ari zaren lortzean ausazko ordenean eta guztia mantentzen saiatzen 395 00:30:33,670 --> 00:30:40,650 ordenatuko bidez joan ahala, azkenean aldatzearen asko egin behar izan dute. 396 00:30:40,650 --> 00:30:43,910 Ilarak eta datuak azpiko egitura mota batzuk mota batzuekin, 397 00:30:43,910 --> 00:30:46,670 benetan mantendu dezakezu simple nahiko du. 398 00:30:46,670 --> 00:30:50,640 Ez duzu zerbait gehitzeko, eta, ondoren, reshuffle gauza osoa aldi bakoitzean. 399 00:30:50,640 --> 00:30:56,770 Nor ez barne-elementu inguruko aldatzearen asko egin behar duzu. 400 00:30:56,770 --> 00:31:02,990 Ilara batean, ikusten duzu - ere zaborra du amaieran atalaren kodea 401 00:31:02,990 --> 00:31:10,950 Nik dugun egiturari eman dizula benetan egitura eman genuen pila bat antzekoa da. 402 00:31:10,950 --> 00:31:13,770 >> Bat dago honen salbuespena da, eta salbuespen bat 403 00:31:13,770 --> 00:31:21,700 dugula buruan izeneko osagarriak osokoa honetan 404 00:31:21,700 --> 00:31:28,120 eta hemen burua ilaran buru jarraipena da, 405 00:31:28,120 --> 00:31:32,160 edo ilaran lehenengo elementua. 406 00:31:32,160 --> 00:31:37,470 Pila batekin, pista mantentzeko elementu ginela berreskuratzeko buruzko gai ginen, 407 00:31:37,470 --> 00:31:40,800 edo pilaren goialdean, tamaina soilik erabiliz, 408 00:31:40,800 --> 00:31:44,220 ilara batean, berriz, kontrako muturretan aurre egiteko ari gara. 409 00:31:44,220 --> 00:31:49,000 Tack amaieran gauzak saiatzen ari gara, baina gero gauzak itzultzeko aurrealdean. 410 00:31:49,000 --> 00:31:54,640 Beraz, modu eraginkorrean, burua, ilaran hasieran indizea dugu, 411 00:31:54,640 --> 00:31:58,920 eta tamaina ematen digu ilara amaieran indizea 412 00:31:58,920 --> 00:32:03,730 gauzak berreskuratu ahal izango dugu beraz, burua eta gauzak gehitu buztana. 413 00:32:03,730 --> 00:32:06,890 Pila, berriz, inoiz pilaren goialdean aurre izan dugu. 414 00:32:06,890 --> 00:32:08,900 Inoiz ez dugu pilaren beheko sartzeko. 415 00:32:08,900 --> 00:32:12,220 Gehitu besterik ez ditugu gauzak goian eta off goiko gauza hartu 416 00:32:12,220 --> 00:32:17,470 beraz, ez dugu behar gure struct barruan eremuan extra hori. 417 00:32:17,470 --> 00:32:20,590 Ez duela, oro har, zentzurik? 418 00:32:20,590 --> 00:32:27,670 Guztiak eskubidea. Bai, Charlotte? [Charlotte, ulertezina] 419 00:32:27,670 --> 00:32:32,660 [Hardison] Hori galdera bat da, eta hori izan zen sortu hitzaldia izan zen. 420 00:32:32,660 --> 00:32:36,290 Agian batzuk paseoan ilustratzeko zergatik 421 00:32:36,290 --> 00:32:41,400 ez dugu nahi kateak erabili [0] ilaran buru gisa. 422 00:32:41,400 --> 00:32:46,770 >> Beraz, imajinatu behar dugu gure ilara du ilaran deitu dugu. 423 00:32:46,770 --> 00:32:49,210 Hasieran, besterik ez dugu instantiated, 424 00:32:49,210 --> 00:32:53,330 besterik ez dugu deklaratu, ez dugu ezer hasieratu. 425 00:32:53,330 --> 00:32:56,790 Zabor guztiak. Beraz, jakina ziurtatu hasieratu dugula ziurtatu nahi dugu 426 00:32:56,790 --> 00:33:00,950 bai tamaina eta burua eremuak 0, zentzuzko zerbait izango. 427 00:33:00,950 --> 00:33:05,770 Joan aurretik ere izan dugu eta gure ilaran elementu null. 428 00:33:05,770 --> 00:33:09,930 Eta diagrama fit hau egiteko, konturatu gaur egun gure ilara bakarrik eutsi sakatuta hiru elementu; 429 00:33:09,930 --> 00:33:13,150 gure pila lau eduki sakatuta, berriz, gure ilara hiru bakarrik eutsi sakatuta. 430 00:33:13,150 --> 00:33:18,680 Eta hori besterik ez diagrama fit egiteko. 431 00:33:18,680 --> 00:33:26,150 Lehenik eta behin, gertatzen hemen katea enqueue dugu "hi". 432 00:33:26,150 --> 00:33:30,380 Eta bezala pila egin dugu, ez da ezer, oso desberdina hemen 433 00:33:30,380 --> 00:33:39,230 katea kateak [0] eta gure tamaina 1 Kontatzailea botatzen dugu. 434 00:33:39,230 --> 00:33:42,720 Enqueue dugu "bye" jarri du. 435 00:33:42,720 --> 00:33:45,870 Beraz, honetan parte pila bat itxura. 436 00:33:45,870 --> 00:33:53,230 Off hasi ginen hemen, elementu berriak, elementu berriak, tamaina gordetzen du gora. 437 00:33:53,230 --> 00:33:56,330 Zer gertatzen da puntu honetan zerbait adierazten nahi dugu? 438 00:33:56,330 --> 00:34:01,280 Adierazten nahi dugu, nahi dugun adierazten du elementu da? 439 00:34:01,280 --> 00:34:04,110 Basil] Strings [0]. >> Zero. Zehazki eskuina, Basil. 440 00:34:04,110 --> 00:34:10,960 Lehen katea, hau, "hi" kentzeko nahi dugu. 441 00:34:10,960 --> 00:34:13,170 Beraz, zer izan zen beste gauza aldatu da? 442 00:34:13,170 --> 00:34:17,010 Iragarki zerbait off pilaren popped dugu, tamaina aldatu besterik ez dugu, 443 00:34:17,010 --> 00:34:22,080 baina hemen, gauzak aldatu egiten dela pare bat lortu dugu. 444 00:34:22,080 --> 00:34:27,440 Ez bakarrik tamaina aldatzea,, baina burua aldaketak ez. 445 00:34:27,440 --> 00:34:31,020 Hau da, atzera egingo Charlotte-en puntu lehenago: 446 00:34:31,020 --> 00:34:38,699 zergatik buru hau izan baita? 447 00:34:38,699 --> 00:34:42,110 Ba al du zentzurik gaur egun, Charlotte? >> Kind. 448 00:34:42,110 --> 00:34:47,500 [Hardison] Kind? Beraz, zer gertatu zen dugunean dequeued? 449 00:34:47,500 --> 00:34:54,340 Zer egin burua do gaur egun interesgarria da? 450 00:34:54,340 --> 00:34:56,449 [Charlotte] Oh, delako aldatu - ados. Ikusten dut. 451 00:34:56,449 --> 00:35:02,090 Burua delako non burua kokapena dagokionez aldaketak erakusten. 452 00:35:02,090 --> 00:35:07,200 Jada ez da beti ko zero indizea. >> Bai, zehatz-mehatz. 453 00:35:07,200 --> 00:35:17,660 Zer gertatu zen bada dequeueing handiko elementu 454 00:35:17,660 --> 00:35:20,590 egin zen, eta ez dugu burua eremu honetan 455 00:35:20,590 --> 00:35:26,880 ziren dugu beti delako kate honetan 0 indizea gure ilara buru deituz, 456 00:35:26,880 --> 00:35:30,170 ondoren gainerako ilara behera mugitzeko genuke. 457 00:35:30,170 --> 00:35:36,010 "Bye" filmea strings from [1] strings [0] genuke. 458 00:35:36,010 --> 00:35:38,760 Eta kateak [2] behera to kateak [1]. 459 00:35:38,760 --> 00:35:43,050 Eta hau egin nahi genuke elementu zerrenda osoa, 460 00:35:43,050 --> 00:35:45,110 elementuen array osoan. 461 00:35:45,110 --> 00:35:50,490 Eta hori array bat egiten ari gara, eta lortzen oso garestia da. 462 00:35:50,490 --> 00:35:53,340 Beraz, hemen, ez da big aurre. Aski dugu gure array hiru elementu. 463 00:35:53,340 --> 00:35:57,230 Baina izan genuen mila elementuak ilaran edo milioi elementu bat izanez gero, 464 00:35:57,230 --> 00:36:00,060 eta, ondoren, Bat-batean, adierazten sorta bat egiten hasten gara deiak begizta batean, 465 00:36:00,060 --> 00:36:03,930 gauzak ez dira benetan motelduko dabilen guztia behera etengabe. 466 00:36:03,930 --> 00:36:07,320 Badakizu, 1 mugitzeko txanda 1, shift 1, 1 shift. 467 00:36:07,320 --> 00:36:13,650 Horren ordez, hau erabiltzen dugu burua, "erakuslea" deitzen dugu, nahiz eta ez da benetan erakuslea 468 00:36:13,650 --> 00:36:16,430 zentzu hertsian, ez da erakuslea mota bat. 469 00:36:16,430 --> 00:36:19,410 Int * edo char * edo horrelako ezer ez da. 470 00:36:19,410 --> 00:36:28,930 Baina seinalatuz edo, gure ilara burua adieraziz. Bai? 471 00:36:28,930 --> 00:36:38,800 >> [Student] Nola jakin ez adierazten du besterik ez, pop off edozein burua da? 472 00:36:38,800 --> 00:36:43,620 [Hardison] Nola ez adierazten daki nola off pop edozein burua? >> Right, bai. 473 00:36:43,620 --> 00:36:49,050 >> Zer da bilatzen da, besterik gabe, edozein burua eremuan ezarrita. 474 00:36:49,050 --> 00:36:52,710 Beraz, lehenengo kasu honetan, hementxe dugu, 475 00:36:52,710 --> 00:36:55,690 gure burua 0, indizea 0 izango da. >> Right. 476 00:36:55,690 --> 00:37:00,500 [Hardison] dio besterik ez da ados, ondo, indizea 0 elementu, katea "hi" Beraz, 477 00:37:00,500 --> 00:37:03,050 gure ilara burua elementu da. 478 00:37:03,050 --> 00:37:05,570 Beraz, lasaia dela adierazten dugu. 479 00:37:05,570 --> 00:37:09,800 Eta hori elementu lortzen deitzaileari itzuliko izango da. 480 00:37:09,800 --> 00:37:14,540 Bai, Saad? >> Beraz, burua, funtsean, ezartzen ditu, non indizea da ari zaren? 481 00:37:14,540 --> 00:37:17,750 Hau hasiera da? >> Bai. >> Ados. 482 00:37:17,750 --> 00:37:22,900 [Hardison] Hori da gure array Irteeran berria bihurtzeko. 483 00:37:22,900 --> 00:37:28,930 Beraz, zerbait adierazten du, egin behar duzun guztia da sartzeko indize q.head elementu, 484 00:37:28,930 --> 00:37:32,240 eta hori nahi duzun adierazten du elementu izango da. 485 00:37:32,240 --> 00:37:34,930 Horrez gain, tamaina decrement. 486 00:37:34,930 --> 00:37:39,430 Pixka bat ikusiko dugu non, gauzak pixka bat honekin delikatua. 487 00:37:39,430 --> 00:37:46,520 Adierazten dugu, eta orain, berriro enqueue dugu bada, 488 00:37:46,520 --> 00:37:51,300 non egiten dugu enqueue? 489 00:37:51,300 --> 00:37:55,000 Non dago hurrengo elementu ez gure ilaran joan nahi duzu? 490 00:37:55,000 --> 00:37:57,980 Esan katea "CS" enqueue nahi dugu. 491 00:37:57,980 --> 00:38:02,240 Duen indizea sartuko da? [Ikasleak] Strings [2]. >> Bi. 492 00:38:02,240 --> 00:38:04,980 Zergatik 2 eta 0? 493 00:38:04,980 --> 00:38:13,570 [Basil] burua da 1 denez, zerrendaren hasiera bezala, beraz? 494 00:38:13,570 --> 00:38:21,220 [Hardison] Eskuin. Eta zer zerrendaren bukaeran adierazten? 495 00:38:21,220 --> 00:38:23,290 Zer ziren gure ilaran amaiera adierazteko erabiltzen dugu? 496 00:38:23,290 --> 00:38:25,970 Burua gure ilara burua, gure ilara hasieran. 497 00:38:25,970 --> 00:38:29,530 Zein da gure ilara amaiera izango da? [Ikasleak] Tamaina. >> Tamaina, zehazki. 498 00:38:29,530 --> 00:38:36,360 Gure elementu berriak Beraz, tamaina, eta hartuko dugu elementu off off burua. 499 00:38:36,360 --> 00:38:45,390 Hurrengo elementu enqueue dugu, ari gara! Tamaina. 500 00:38:45,390 --> 00:38:48,530 Arren dela, tamaina 1 izan zen, eskuineko [Student] aurretik jarri al duzu? 501 00:38:48,530 --> 00:38:55,690 [Hardison] Eskuin. Beraz, ez nahiko tamaina. Tamaina +, ez +1, baina + burua. 502 00:38:55,690 --> 00:38:59,990 Aldatu dugu burua zenbatekoa dena delako. 503 00:38:59,990 --> 00:39:14,270 Beraz, hemen, orain lortu dugu ilara tamaina 1 indizea 1 hasten diren. 504 00:39:14,270 --> 00:39:20,730 Buztana index 2. Bai? 505 00:39:20,730 --> 00:39:25,780 >> [Student] Zer gertatzen da adierazten kateak [0], eta kateak 'memoria slots 506 00:39:25,780 --> 00:39:29,420 Eginzazu hustu, batez ere, edo, besterik gabe, ahaztuta? 507 00:39:29,420 --> 00:39:34,700 [Hardison] Bai. Zentzu honetan, ari gara ahaztu. 508 00:39:34,700 --> 00:39:42,640 Ziren horietako kopiak gordetzeko 509 00:39:42,640 --> 00:39:46,310 datu ugari egitura askotan beren elementuen kopiak propioak gorde 510 00:39:46,310 --> 00:39:51,760 beraz, pertsona horrek datuak egitura kudeatzeko ez kezkatu 511 00:39:51,760 --> 00:39:53,650 Arrasto horiek guztiak joan buruz. 512 00:39:53,650 --> 00:39:56,000 Datuak egitura guztia dauka, ale guztiak daude, 513 00:39:56,000 --> 00:39:59,580 Ziurtatu dena jarraitzen egokian egiteko. 514 00:39:59,580 --> 00:40:03,140 Hala eta guztiz ere, kasu honetan, datu-egitura horiek, sinpletasuna, 515 00:40:03,140 --> 00:40:05,580 ezer ez dira kopiak egiten ari ditugu gordetzeko. 516 00:40:05,580 --> 00:40:08,630 [Student] Beraz, hau da, etengabeko array -? >> Bai. 517 00:40:08,630 --> 00:40:14,350 Atzera begiratzen dugu bada, zer definizio egitura hau izan da. 518 00:40:14,350 --> 00:40:19,110 Besterik ez da estandarra array bat duzula ikusten, 519 00:40:19,110 --> 00:40:24,280 char * s array bat. 520 00:40:24,280 --> 00:40:26,340 Horrek -? >> Bai, besterik ez nintzen galdetzen 521 00:40:26,340 --> 00:40:29,130 duzu azkenean agortu memoria, hein handi batean, 522 00:40:29,130 --> 00:40:32,330 duzu zure array lekuak hutsik horiek guztiak? 523 00:40:32,330 --> 00:40:36,390 [Hardison] Bai, puntu bat ona da. 524 00:40:36,390 --> 00:40:41,530 >> Zer gertatu den aztertuko dugu puntu honetan, 525 00:40:41,530 --> 00:40:46,350 bete dugu gure ilara, dirudienez. 526 00:40:46,350 --> 00:40:50,390 Baina ez dugu benetan bete gure ilara 527 00:40:50,390 --> 00:40:57,710 dugu tamaina 2 ilara batean hasten delako, baina indizea 1 da, 528 00:40:57,710 --> 00:41:02,160 non gure burua erakuslea delako. 529 00:41:02,160 --> 00:41:08,400 Ziren Atsegin dut esaten, at elementu kateak [0], 0 indizea, ez da benetan bertan. 530 00:41:08,400 --> 00:41:10,450 Ez da gure ilaran jada. 531 00:41:10,450 --> 00:41:16,460 Ez dugu ez traba joan eta gainidazteko dequeued dugu. 532 00:41:16,460 --> 00:41:18,700 Beraz, nahiz eta exekutatzen dugu atsegin memoria badirudi, benetan ez dugu. 533 00:41:18,700 --> 00:41:23,270 Leku da erabili. 534 00:41:23,270 --> 00:41:29,310 Portaera egokia izan dugu, eta saiatu lehenengo adierazten du zerbait 535 00:41:29,310 --> 00:41:34,420 nahi "bye", bye aterako litzateke. 536 00:41:34,420 --> 00:41:38,460 Orain, gure ilara indizea 2 hasten da eta tamaina 1. 537 00:41:38,460 --> 00:41:42,240 Eta orain saiatu gara, eta bada zerbait enqueue berriro ere, esan, 50 538 00:41:42,240 --> 00:41:47,880 50 Leku honetan joan behar index 0 539 00:41:47,880 --> 00:41:51,270 da oraindik delako Gurekin eskuragarri. Bai, Saad? 540 00:41:51,270 --> 00:41:53,630 [Saad] Ba al da hori automatikoki gertatuko? 541 00:41:53,630 --> 00:41:56,150 [Hardison] ez da nahiko gertatuko automatikoki. Math egin behar duzu 542 00:41:56,150 --> 00:42:00,380 lan egin nahi du, baina, funtsean, zer egin dugu, besterik ez dugu bilduta inguruan. 543 00:42:00,380 --> 00:42:04,070 [Saad] Eta hau da erdian zulo bat dauka bada ados? 544 00:42:04,070 --> 00:42:08,720 [Hardison] math lan behar bezala egin dugu bada, ahal izango da. 545 00:42:08,720 --> 00:42:15,470 >> Eta bihurtzen da hori, eta ez da benetan gogorra mod operadorea. 546 00:42:15,470 --> 00:42:20,040 Beraz, Caesar eta kripto stuff bezala egin dugu, 547 00:42:20,040 --> 00:42:25,190 mod erabiliz, gauzak inguruan itzulbiratu ahal izango dugu eta mantendu egingo 548 00:42:25,190 --> 00:42:28,090 eta inguruan inguruan eta inguruan, gure ilara 549 00:42:28,090 --> 00:42:32,180 burua erakuslea inguruan mugitzen mantenduz. 550 00:42:32,180 --> 00:42:38,840 Iragarki tamaina da beti elementu kopurua errespetatuz benetan ilaran barruan. 551 00:42:38,840 --> 00:42:43,110 Eta besterik ez da burua erakuslea mantentzen bidez bizikletaz. 552 00:42:43,110 --> 00:42:49,660 Zer gertatu zen hemen begiratzen badiogu, joaten gara itzuliz gero hasieran, 553 00:42:49,660 --> 00:42:55,020 eta ikusi besterik ez duzu buruan zer gertatzen 554 00:42:55,020 --> 00:42:58,240 zerbait enqueue dugu, ez da ezer gertatu burua. 555 00:42:58,240 --> 00:43:00,970 Beste zerbait enqueued dugu, ez da ezer gertatu burua. 556 00:43:00,970 --> 00:43:04,130 Bezain laster zerbait dequeued dugu, buru-banan igotzen. 557 00:43:04,130 --> 00:43:06,600 Zerbait enqueued dugu, ez da ezer gertatzen buruan. 558 00:43:06,600 --> 00:43:11,060 Zerbait adierazten dugu, Bat-batean burua erabat handitzen da. 559 00:43:11,060 --> 00:43:14,660 Zerbait enqueue dugu, ez da ezer gertatzen buruan. 560 00:43:14,660 --> 00:43:20,240 >> Zer izango litzateke puntu honetan gertatuko ginen zerbait adierazten du berriro? 561 00:43:20,240 --> 00:43:23,240 Pentsamenduak Any? Zer gertatuko litzateke burua? 562 00:43:23,240 --> 00:43:27,190 Zer gertatuko behar burua 563 00:43:27,190 --> 00:43:32,990 badugu beste zerbait adierazten du? 564 00:43:32,990 --> 00:43:35,400 Burua oraintxe indizea 2 565 00:43:35,400 --> 00:43:38,920 horrek esan nahi du ilaran buru dela kateak [2]. 566 00:43:38,920 --> 00:43:44,280 [Student] Zein itzultzen 0? >>: 0 itzuli beharko ditu. Itzulbiratu itzuli behar du, inguruan zehazki. 567 00:43:44,280 --> 00:43:48,440 Oraingoz, denbora adierazten deitzen dugun bakoitzean, izan dugu bat gehituz burua, 568 00:43:48,440 --> 00:43:50,960 gehitu bat buruan, gehitu burua, gehitu bat buruan. 569 00:43:50,960 --> 00:43:58,400 Bezain laster, burua erakuslea duten gure array azken indizea lortzen, 570 00:43:58,400 --> 00:44:05,650 gero, itzulbiratu inguruan hasiera-hasieratik izan dugu, itzuli 0. 571 00:44:05,650 --> 00:44:09,900 [Charlotte] Zer pila bat ilaran ahalmena zehazten du? 572 00:44:09,900 --> 00:44:13,120 [Hardison] Kasu honetan, besterik ez dugu izan # definitutako konstante bat erabiliz. >> Ados. 573 00:44:13,120 --> 00:44:19,590 [Hardison] benetako c file, joan eta muck dezakezu apur bat 574 00:44:19,590 --> 00:44:21,710 eta handi edo pixka nahi duzun bezala. 575 00:44:21,710 --> 00:44:25,310 [Charlotte] Beraz, egiten ari zaren ilara batean, nola ez jakin ordenagailua egin nahi duzun 576 00:44:25,310 --> 00:44:29,120 nola big pila izan nahi duzu? 577 00:44:29,120 --> 00:44:31,700 [Hardison] Hori oso galdera bat da. 578 00:44:31,700 --> 00:44:34,800 Modu daude pare bat. Definitzen da sortu aurreko 579 00:44:34,800 --> 00:44:42,050 eta hau esan 4 elementu edo 50 elementu edo 10.000 dituen ilara batean izango da. 580 00:44:42,050 --> 00:44:45,430 Beste modu hacker edizioa folks zer egiten da 581 00:44:45,430 --> 00:44:52,310 sortu eta funtzioak zure ilara hazten dinamikoki gauza gehiago get gehitu gisa sartu beharko 582 00:44:52,310 --> 00:44:54,740 >> [Charlotte] Beraz, lehen aukera, zer sintaxia ez baduzu erabili 583 00:44:54,740 --> 00:44:57,830 programa kontatzeko zer ilara tamaina da? 584 00:44:57,830 --> 00:45:04,780 [Hardison] Ah. Hargatik get out honen. 585 00:45:04,780 --> 00:45:12,650 Stack.c hemen nago oraindik, eta, beraz, besterik ez dut sortu goian Hemen korrituko du. 586 00:45:12,650 --> 00:45:17,920 Eskubide hori ikusten duzu hemen? Hau da, # define edukiera 10. 587 00:45:17,920 --> 00:45:24,600 Eta sintaxi berdina ia zehatza ilara dugun. 588 00:45:24,600 --> 00:45:28,390 Ilara izan ezik, hori dugu got extra struct eremuan hemen. 589 00:45:28,390 --> 00:45:32,760 [Charlotte] Oh, gaitasuna esan nahi du kate gaitasuna pentsatu nuen. 590 00:45:32,760 --> 00:45:36,770 [Hardison] Ah. >> That hitza gehienezko luzera. >> Eskuratu du. 591 00:45:36,770 --> 00:45:41,180 Bai. Gaitasuna hemen, puntu bat. 592 00:45:41,180 --> 00:45:44,000 Eta hau zerbait delikatua da 593 00:45:44,000 --> 00:45:49,480 izendatu dugu hemen char * s array bat delako. 594 00:45:49,480 --> 00:45:52,770 Erakusleak array bat. 595 00:45:52,770 --> 00:45:56,690 Karakteretan array bat da. 596 00:45:56,690 --> 00:46:01,690 Hau da seguruenik, zer ikusi duzun duzun fitxategia zure bufferrak geratuko I / O 597 00:46:01,690 --> 00:46:06,840 denean izan duzun kateak sortuz eskuz pilan. 598 00:46:06,840 --> 00:46:09,090 Hala eta guztiz ere, zer dugu got hemen char * s array bat da. 599 00:46:09,090 --> 00:46:13,400 Beraz, erakusleak array bat da. 600 00:46:13,400 --> 00:46:18,350 Egia esan, mapan handiago itzuliz gero eta begiratzen dugu, zer gertatzen da hemen 601 00:46:18,350 --> 00:46:23,140 Aurkezpenean, benetako elementuak, pertsonaia datuak ikusten duzun 602 00:46:23,140 --> 00:46:26,180 ez da array bertan gordetzen dira. 603 00:46:26,180 --> 00:46:42,690 Zer gure array barruan gordetako hemen pertsonaia datuak erakusle dira. 604 00:46:42,690 --> 00:46:52,560 Ongi da. Beraz, ikusi dugu nola ilara tamaina besterik ez da, pila gustatzen 605 00:46:52,560 --> 00:46:58,670 tamaina beti Gaur egun, elementu kopurua errespetatzen ilaran. 606 00:46:58,670 --> 00:47:02,720 2 enqueues egin ondoren, tamaina 2. 607 00:47:02,720 --> 00:47:07,110 Adierazten du bat egin ondoren tamaina da gaur egun 1. 608 00:47:07,110 --> 00:47:09,330 Enqueue beste egin ondoren tamaina itzuliko da 2. 609 00:47:09,330 --> 00:47:12,340 Beraz, tamaina, zalantzarik gabe, elementu kopurua errespetatzen ilaran, 610 00:47:12,340 --> 00:47:15,580 eta, ondoren, burua mantentzen du bizikleta. 611 00:47:15,580 --> 00:47:20,210 Doa 0-1-2, 0-1-2, 0-1-2. 612 00:47:20,210 --> 00:47:25,620 Eta denbora adierazten du deitzen dugun bakoitzean, burua-erakuslea erabat hurrengo indizea handitzen da. 613 00:47:25,620 --> 00:47:29,930 Eta burua da buruz baino gehiago joan, itzuli inguruan 0 Loops. 614 00:47:29,930 --> 00:47:34,870 Beraz, adierazten du funtzioa idatzi ahal izango dugu. 615 00:47:34,870 --> 00:47:40,200 Eta enqueue funtzioa utzi duzu guys ordez ezartzeko behar dugu. 616 00:47:40,200 --> 00:47:45,880 >> Elementu bat adierazten dugu gure ilara 617 00:47:45,880 --> 00:47:55,490 Daniel egin pilak funtzioa pop idazten hasi ginen lehen gauza izan zen zer? 618 00:47:55,490 --> 00:48:00,490 Norbait oraindik ez du hitz egiten entzun me. 619 00:48:00,490 --> 00:48:06,710 Ikus dezagun, Saad, zer Daniel pop idatzi zuen lehenengo gauza egin zuen bezala gogoratzen duzu? 620 00:48:06,710 --> 00:48:08,860 [Saad] zegoen, izan >> probatu zerbait zen. 621 00:48:08,860 --> 00:48:12,140 [Saad] tamaina 0 baino handiagoa bada. >> Zehazki. 622 00:48:12,140 --> 00:48:14,390 Eta zer zen azterketa hori? 623 00:48:14,390 --> 00:48:19,090 [Saad] Horixe zen array barruan ezer ikusi eta probatzeko. 624 00:48:19,090 --> 00:48:23,210 [Hardison] Bai. Hain zuzen ere. Beraz, ezin duzu ezer pop pila da hutsa bada. 625 00:48:23,210 --> 00:48:26,510 Era berean, ezin duzu adierazten du ezer ilara batean da hutsa bada. 626 00:48:26,510 --> 00:48:30,420 Adierazten du funtzio lehenengo gauza egin behar dugu hemen, ez duzu uste? 627 00:48:30,420 --> 00:48:33,860 [Saad] tamaina da 0 baino handiagoa bada? >> Bai. 628 00:48:33,860 --> 00:48:37,710 Kasu honetan, egia esan dut besterik ez probatu da 0 bada ikusteko. 629 00:48:37,710 --> 00:48:42,240 Da 0 bada, itzuli null ahal izango dugu. 630 00:48:42,240 --> 00:48:45,280 Baina zehatza bera logika. 631 00:48:45,280 --> 00:48:49,110 Eta dezagun honekin jarraitzeko. 632 00:48:49,110 --> 00:48:54,600 Tamaina ez bada, 0, non nahi dugun adierazten du elementu da? 633 00:48:54,600 --> 00:48:58,550 [Saad] burua? >> Zehazki. 634 00:48:58,550 --> 00:49:01,720 Besterik ez dugu tira lehen elementu gure ilaran 635 00:49:01,720 --> 00:49:07,040 elementu burua sartzeko. 636 00:49:07,040 --> 00:49:14,630 Ezer ez crazy. 637 00:49:14,630 --> 00:49:19,620 Horren ondoren, zer egin behar dugu? Zer gertatuko da? 638 00:49:19,620 --> 00:49:23,740 Zein izan da beste gauza buruz hitz egiten adierazten du? 639 00:49:23,740 --> 00:49:28,130 Bi gauza gertatuko, gure ilara aldatu egin delako. 640 00:49:28,130 --> 00:49:35,640 [Daniel] tamaina murriztea. >> Tamaina murrizteko, eta burua handitu behar dugu? Hain zuzen ere. 641 00:49:35,640 --> 00:49:40,600 Burua handitzeko, ezin dugu blindly handitzeko buruan, gogoratu. 642 00:49:40,600 --> 00:49:45,080 Ezin dugu egin queue.head + +. 643 00:49:45,080 --> 00:49:51,630 Mod hau gaitasuna ere sartzen ditugu. 644 00:49:51,630 --> 00:49:54,740 Eta zergatik mod gaitasuna dugu, Stella? 645 00:49:54,740 --> 00:49:58,680 [Stella] inguruan itzulbiratu duenez. >> Zehazki. 646 00:49:58,680 --> 00:50:04,750 Mod gaitasuna dugu berriz biltzeko 0 inguruan delako. 647 00:50:04,750 --> 00:50:07,400 Beraz, gaur egun, puntu honetan, ez zer Daniel esan dezakegu. 648 00:50:07,400 --> 00:50:12,700 Tamaina decrement ahal izango dugu. 649 00:50:12,700 --> 00:50:29,170 Eta gero itzuli ahal izango dugu elementu ilaran goialdean zegoen. 650 00:50:29,170 --> 00:50:34,000 Mota Badirudi gnarly lehen. Galdera bat izan dezakezu. Sentitzen dugu? 651 00:50:34,000 --> 00:50:37,260 >> [Sam] Zergatik lehen ilaran goialdean? Non da hori? 652 00:50:37,260 --> 00:50:42,480 [Hardison] dator behetik laugarren lerrotik. 653 00:50:42,480 --> 00:50:46,060 Probatu dugu ziurtatu gure ilara ez dago hutsik eta gero, 654 00:50:46,060 --> 00:50:54,100 char * tira dugu lehenik eta behin, tira dugu elementu burua indizea eserita 655 00:50:54,100 --> 00:50:58,680 gure array, gure kateak array, >> eta dei lehen? 656 00:50:58,680 --> 00:51:04,500 [Hardison] Eta lehen deialdian. Bai. 657 00:51:04,500 --> 00:51:09,850 Just jarraipena horretan, zergatik ez hori egin behar izan dugu, uste al duzu? 658 00:51:09,850 --> 00:51:18,270 [Sam] Lehenengo bakoitzak q.strings itzuli [q.head]? >> Bai. 659 00:51:18,270 --> 00:51:23,830 >> Mod funtzioa ari dugu q.head-aldakor honetan egiten ari delako, 660 00:51:23,830 --> 00:51:27,810 eta ez dago modurik Horretarako bueltan line barruan ere. 661 00:51:27,810 --> 00:51:31,640 [Hardison] Zehazki. Leku zara. Sam da erabat gelditzea. 662 00:51:31,640 --> 00:51:36,800 Izarrekin tira gure ilaran lehen elementu eta aldagai batean gorde behar izan genuen arrazoia 663 00:51:36,800 --> 00:51:43,030 lerro hau non baizik genuen q.head 664 00:51:43,030 --> 00:51:47,030 ez da hor operadorea mod ez dugu zerbait 665 00:51:47,030 --> 00:51:51,230 eta buruan eragina hartu gabe - lerro bat. 666 00:51:51,230 --> 00:51:54,480 Benetan dugu lehen elementu Beraz, tira, gero egokitu burua, 667 00:51:54,480 --> 00:52:00,430 tamaina doitzeko, eta, ondoren, bota dugu elementu itzultzeko. 668 00:52:00,430 --> 00:52:02,680 Eta hau zerbait etorriko da ikusiko dugun geroago 669 00:52:02,680 --> 00:52:04,920 lotuta zerrendak, play ditugu haiekin. 670 00:52:04,920 --> 00:52:08,410 Sarritan edo ari zaren askatzeaz zerrendak lotuta dauden 671 00:52:08,410 --> 00:52:13,500 hurrengo elementua, hurrengo erakuslea lotuta zerrenda gogoratu behar duzu 672 00:52:13,500 --> 00:52:16,330 uneko bat bota aurretik. 673 00:52:16,330 --> 00:52:23,580 Bestela delako urruntzen bota duzu zer zerrendan utzi informazioa. 674 00:52:23,580 --> 00:52:34,160 Orain, zure-tresnaren baduzu, ireki duzun zaborra du amaieran-x honetan. 675 00:52:34,160 --> 00:52:39,390 Beraz, ireki dut zaborra du amaieran, let me zoom hemen 676 00:52:39,390 --> 00:52:44,970 begira antzeko fitxategi bat duzula ikusiko duzu. 677 00:52:44,970 --> 00:52:49,200 Similar begira fitxategia stack.c duten lehenago izan genuen. 678 00:52:49,200 --> 00:52:54,690 Daukagu ​​gure struct ilara diapositibak definitu besterik ez dugu ikusi. 679 00:52:54,690 --> 00:52:59,870 >> Ditugu gure enqueue funtzioa duzu. 680 00:52:59,870 --> 00:53:04,340 Eta funtzioa adierazten dugu hemen. 681 00:53:04,340 --> 00:53:06,870 Fitxategian funtzioa adierazten da unimplemented 682 00:53:06,870 --> 00:53:13,230 baina jarri dut atzera PowerPoint buruzko horrela idatzi dezakezu, litzaidake nahi baduzu. 683 00:53:13,230 --> 00:53:16,690 Beraz, hurrengo 5 minutu edo beraz, guys enqueue lan 684 00:53:16,690 --> 00:53:22,570 ia besterik ez dago, kontrakoa adierazten du. 685 00:53:22,570 --> 00:53:29,560 Ez duzu buru doitzeko enqueueing ari zaren, baina zer doitzeko behar duzu? 686 00:53:29,560 --> 00:53:38,920 Tamaina. Beraz duzunean enqueue, buru-egonaldiak bereganatzea, tamaina erabat aldatu da. 687 00:53:38,920 --> 00:53:46,920 Baina pixka bat hartu du - mod duten inguruan play izango duzu 688 00:53:46,920 --> 00:53:57,560 figuraren zehazki zer indizea elementu berria txertatuko beharko. 689 00:53:57,560 --> 00:54:03,080 Beraz, emango dizu guys dut pixka bat jarri, adierazten du back diapositiba, 690 00:54:03,080 --> 00:54:05,200 eta you guys gisa galdera, oihukatzen itzazu dugun 691 00:54:05,200 --> 00:54:09,220 guztiak haiei buruzko eztabaida talde bat. 692 00:54:09,220 --> 00:54:13,960 Gainera, don't duzu tamaina - tamaina doitzeko, beti dezakezu 693 00:54:13,960 --> 00:54:18,720 ez tamaina mod inoiz izan al duzu? [Daniel] n. >> Ez duzu tamaina mod, eskuinera. 694 00:54:18,720 --> 00:54:24,260 Tamaina delako beti izango da, you're - suposatuz gauza zaren kudeatzeko modu egokian, 695 00:54:24,260 --> 00:54:30,840 tamaina beti izango da 0 eta 3 artekoa izan behar du. 696 00:54:30,840 --> 00:54:38,680 Nora egin enqueue ari zaren mod behar duzu? 697 00:54:38,680 --> 00:54:41,060 [Student] burua bakarrik. Bakarrik burua >>, zehazki. 698 00:54:41,060 --> 00:54:44,620 Eta zergatik at mod enqueue hasi behar al duzu? 699 00:54:44,620 --> 00:54:48,830 Egoera horretan, mod litzaidake duzu? 700 00:54:48,830 --> 00:54:53,630 [Student] stuff bada espazio at, 1 eta 2. Espazio bezala, 701 00:54:53,630 --> 00:54:55,950 eta, ondoren, zerbait gehitzeko 0 behar duzu. 702 00:54:55,950 --> 00:55:02,570 [Hardison] Bai, zehatz-mehatz. Beraz, zure burua erakuslea amaieran da, 703 00:55:02,570 --> 00:55:14,210 edo, zure tamaina plus zure burua bada handiagoa, edo, hobeto esanda, ilaran inguruan biltzeko. 704 00:55:14,210 --> 00:55:17,830 >> Beraz, egoera honetan ditudan jaiki hemen diapositiba oraintxe, 705 00:55:17,830 --> 00:55:24,370 nahi dut zerbait enqueue oraintxe, 706 00:55:24,370 --> 00:55:31,110 0 indizea zerbait enqueue nahi dugu. 707 00:55:31,110 --> 00:55:35,450 Beraz, bada, non 50 doan, eta enqueue 50 deitzen diot nik, 708 00:55:35,450 --> 00:55:40,840 behera doa han behealdean. Doa indizea 0. 709 00:55:40,840 --> 00:55:44,160 'Hi' dagoeneko dequeued ordezkatzen du. 710 00:55:44,160 --> 00:55:46,210 [Daniel] Ez hori zaindu adierazten du dagoeneko? 711 00:55:46,210 --> 00:55:50,550 Zergatik ez du ezer egin enqueue burua? 712 00:55:50,550 --> 00:55:55,770 [Hardison] Oh, eta, beraz, ez duzu burua aldatzea, sorry. 713 00:55:55,770 --> 00:56:02,310 Mod eragilea erabiltzen denean sartzeko ari zaren duzu 714 00:56:02,310 --> 00:56:04,250 denean sartzeko zaren enqueue nahi duzun elementu 715 00:56:04,250 --> 00:56:06,960 zure ilaran hurrengo elementua. 716 00:56:06,960 --> 00:56:10,960 [Basil] Nik ez dut hori, eta "arrakasta" hartan lortu nuen. 717 00:56:10,960 --> 00:56:13,370 [Daniel] Oh, ulertzen dut zer esaten ari zaren. 718 00:56:13,370 --> 00:56:16,240 [Hardison] Beraz didn't - q.size at besterik ez duzu egin? 719 00:56:16,240 --> 00:56:20,670 [Basil] Bai. Aldatu dut alboetan, ez nuen ezer egiten burua. 720 00:56:20,670 --> 00:56:24,300 [Hardison] ez duzu benetan burua berrezarri ezer izan, 721 00:56:24,300 --> 00:56:31,650 baina indize kateak array sartu, 722 00:56:31,650 --> 00:56:39,500 benetan aurretik joan eta kalkulatzeko hurrengo elementua non dagoen, 723 00:56:39,500 --> 00:56:44,230 pila withe delako, zure pila hurrengo elementu izan da beti. 724 00:56:44,230 --> 00:56:48,740 tamaina dagokion indizea. 725 00:56:48,740 --> 00:56:55,850 Atzera begiratzen dugu gure pila push funtzioa, 726 00:56:55,850 --> 00:57:03,100 izan dugu beti., gure elementu berriak plunk, eskuin indizea tamaina. 727 00:57:03,100 --> 00:57:06,710 Ilaran, berriz, ezin dugu 728 00:57:06,710 --> 00:57:10,340 dugu egoera hau Oraindik bada delako, 729 00:57:10,340 --> 00:57:18,130 enqueued badugu 50 gure Kate berria eskuinera joan kateak [1] 730 00:57:18,130 --> 00:57:20,540 ez dugu egin nahi. 731 00:57:20,540 --> 00:57:41,200 0 indizea Kate berria joan nahi dugu. 732 00:57:41,200 --> 00:57:44,320 >> Ez du inor bai? [Student] galdera bat daukat, baina ez da benetan lotutako. 733 00:57:44,320 --> 00:57:48,160 Zer esan nahi du norbaitek besterik ez deiak erakuslea pred antzeko zerbait esan nahi du? 734 00:57:48,160 --> 00:57:51,260 Zer izen hori laburra da? Izen bat besterik ez da ezagutzen dut. 735 00:57:51,260 --> 00:57:59,110 [Hardison] Pred erakuslea? Ikus dezagun. Zein testuinguruan? 736 00:57:59,110 --> 00:58:01,790 [Student] inserto zen. Geroago eskatu ahal dut nahi izanez gero 737 00:58:01,790 --> 00:58:03,920 ez delako benetan zerikusia duten, baina dut 738 00:58:03,920 --> 00:58:07,300 [Hardison] David txertatze hitzaldia kodea? 739 00:58:07,300 --> 00:58:10,860 Hori tira ahal izango dugu, eta horri buruz hitz egin. 740 00:58:10,860 --> 00:58:15,550 Hurrengo, behin lotutako zerrendak buruz hitz egin dugu. 741 00:58:15,550 --> 00:58:21,440 >> Hargatik benetan azkar enqueue funtzioa itxura begiratu. 742 00:58:21,440 --> 00:58:26,530 Zein izan zen lehenengo gauza pertsona saiatu zure line enqueue egin? Ilara honetan sartzeko? 743 00:58:26,530 --> 00:58:29,960 Zer egin pila bultzaka antzekoa da. 744 00:58:29,960 --> 00:58:32,080 Zer egin, ez duzu Stella? 745 00:58:32,080 --> 00:58:35,050 [Stella, ulertezina] 746 00:58:35,050 --> 00:58:45,700 [Hardison] Zehazki. (== EDUKIERA q.size) bada 747 00:58:45,700 --> 00:58:54,720 Nire giltza leku egokian jarri behar dut itzultzeko faltsua. 748 00:58:54,720 --> 00:59:01,370 Zoom pixka bat. Ongi da. 749 00:59:01,370 --> 00:59:03,800 Orain zer egin behar izan dugun gauza hurrengo? 750 00:59:03,800 --> 00:59:11,370 Just pila bezala, eta leku egokian txertatzen da. 751 00:59:11,370 --> 00:59:16,010 Eta beraz, zer eskuineko leku horretan sartu izan zen? 752 00:59:16,010 --> 00:59:23,170 Pila Indizearen tamaina zen, hau ez da nahiko da. 753 00:59:23,170 --> 00:59:30,210 [Daniel] q.head-edo daukat >> q.strings? >> Bai. 754 00:59:30,210 --> 00:59:40,470 q.strings [q.head + q.size mod EDUKIERA]? 755 00:59:40,470 --> 00:59:42,740 [Hardison] ziurrenik nahi dugu honen inguruan parentesi jarri 756 00:59:42,740 --> 00:59:48,830 beraz, dagokion lehentasuna ari gara eta, beraz, hori guztion cleart. 757 00:59:48,830 --> 00:59:55,800 Eta berdina dela? To str >>? To str. >> Great. 758 00:59:55,800 --> 01:00:00,160 Eta orain zer egin behar dugun azken gauza? 759 01:00:00,160 --> 01:00:06,780 Bezala pila egin dugu. >> Gehikuntza tamaina? >> Gehikuntza tamaina. 760 01:00:06,780 --> 01:00:13,830 Boom. Eta gero, hasierako kodea geroztik itzuli false, lehenespenez 761 01:00:13,830 --> 01:00:27,460 hau aldatzeko benetako guztiak pasatzen bada, eta Dena ondo badoa nahi dugu. 762 01:00:27,460 --> 01:00:33,050 Guztiak eskubidea. Atala informazio asko. 763 01:00:33,050 --> 01:00:39,480 Oraindik ez dugu nahiko baino gehiago da. Benetan azkar banaka-zerrendak lotutako buruz hitz egin nahi dugu. 764 01:00:39,480 --> 01:00:44,010 Hau jarri dut, beraz, atzera jo ahal izango dugu geroago. 765 01:00:44,010 --> 01:00:50,850 Baina goazen berriro gure aurkezpen diapositiba gutxi batzuk gehiago. 766 01:00:50,850 --> 01:00:53,790 Beraz enqueue TODO da, orain egin dugu. 767 01:00:53,790 --> 01:00:57,430 >> Dezagun orain banaka-zerrendak lotutako begirada bat. 768 01:00:57,430 --> 01:01:00,040 Pixka bat gehiago horiei buruz hitz egin dugu hitzaldia. 769 01:01:00,040 --> 01:01:02,540 Zenbat duzu guys demo ikusi non jendea izan dugu 770 01:01:02,540 --> 01:01:08,220 awkwardly zenbaki bakoitzean eta beste ustiategian apuntatzen? >> Zela dut. 771 01:01:08,220 --> 01:01:16,620 >> Zer egin duzu guys deritzozu? Ba hori, espero demystify horiek pixka bat? 772 01:01:16,620 --> 01:01:25,990 Zerrenda bat bihurtzen da, mota honetako dugu nodo bat deitzeko ari gara. 773 01:01:25,990 --> 01:01:32,520 Ilara eta pila, berriz, structs ilara diegu litzaidake pila izan genuen, 774 01:01:32,520 --> 01:01:34,860 pila mota berri horiek ilara izan genuen, 775 01:01:34,860 --> 01:01:39,240 zerrenda bat da, benetan besterik ez osatutako nodo sorta bat. 776 01:01:39,240 --> 01:01:45,920 Era berean, kateak karakteretan sorta bat besterik ez dira lerrokatuta bata bestearen ondoan. 777 01:01:45,920 --> 01:01:50,650 Lotuta zerrenda bat nodo bat besterik ez eta nodo bat eta beste nodo eta nodo beste. 778 01:01:50,650 --> 01:01:55,080 Eta ez nodo guztiak apurtzeko elkarrekin eta haiek gordetzeko contiguously baino 779 01:01:55,080 --> 01:01:58,090 guztiak bata bestearen ondoan memorian, 780 01:01:58,090 --> 01:02:04,470 erakuslea hurrengo hau izatea nodo lekuan gordetzeko aukera ematen digu, ausaz. 781 01:02:04,470 --> 01:02:10,500 Eta gero, alanbre-mota denak batera batetik hurrengo seinalatu. 782 01:02:10,500 --> 01:02:15,850 >> Eta zer abantaila handia izan zen hori array bat baino gehiago izan? 783 01:02:15,850 --> 01:02:21,680 Guztia gordetzeko baino gehiago contiguously itsatsita besterik ez bata bestearen ondoan? 784 01:02:21,680 --> 01:02:24,190 Gogoratzen? Bai? >> Dynamic memoria esleipena? 785 01:02:24,190 --> 01:02:27,220 >> Zer zentzu memoria dinamikoa esleipena? 786 01:02:27,220 --> 01:02:31,780 [Student] horretan mantentzeko, eta handiagoak ez duzu zure array osoa mugitzeko dezakezu? 787 01:02:31,780 --> 01:02:40,940 [Hardison] Zehazki. Beraz, array bat, erdian elementu berri bat jarri nahi baduzu, 788 01:02:40,940 --> 01:02:45,320 espazio guztia filmea egiteko aukera izango duzu. 789 01:02:45,320 --> 01:02:47,880 Eta hitz egin zuen bezala gara ilaran, 790 01:02:47,880 --> 01:02:50,080 horregatik, buru erakuslea hori mantendu dugu, 791 01:02:50,080 --> 01:02:52,050 beraz, etengabe ari gara gauzak aldatzearen. 792 01:02:52,050 --> 01:02:54,520 Lortzen dituen garestia delako duzun got bada, array bat big 793 01:02:54,520 --> 01:02:57,130 eta etengabe ari zaren ausazko insertions horiek egiten. 794 01:02:57,130 --> 01:03:00,820 Zerrenda bat, berriz, guztiak egin behar duzun da nodo berri bat bota, 795 01:03:00,820 --> 01:03:06,330 egokitu erakusleak, eta zu egin. 796 01:03:06,330 --> 01:03:10,940 Zer da hau? Buruz sucks? 797 01:03:10,940 --> 01:03:16,830 Izan ere, hori ez baita erraza lan array gisa alde batera utzi? Bai? 798 01:03:16,830 --> 01:03:22,980 [Daniel] Beno, uste dut askoz zailagoa da elementu jakin bat lotuta zerrendan sartzeko? 799 01:03:22,980 --> 01:03:30,470 [Hardison] ez dezakezu zure zerrendako lotuta erdian elementu arbitrario bat joango da. 800 01:03:30,470 --> 01:03:33,800 Nola egiten duzu horren ordez? >> Gauza osoan zehar duzu. 801 01:03:33,800 --> 01:03:35,660 [Hardison] Bai. Aldi berean, aldi berean bat bidez joan behar duzu. 802 01:03:35,660 --> 01:03:38,480 Handi bat da, mina bat da. 803 01:03:38,480 --> 01:03:41,550 Zer da beste downfall beste. 804 01:03:41,550 --> 01:03:45,340 [Basil] ezin duzu aurrera eta atzera? Norabide batean joan behar duzu? 805 01:03:45,340 --> 01:03:48,570 [Hardison] Bai. Beraz, nola egin hori konpontzeko dugu, batzuetan? 806 01:03:48,570 --> 01:03:53,370 [Basil] bi aldiz-zerrendak lotuta? >> Zehazki. Bi aldiz-zerrendak lotuta daude. 807 01:03:53,370 --> 01:03:55,540 Badira ere sentitzen? 808 01:03:55,540 --> 01:03:57,620 >> [Sam] pred gauza bera 809 01:03:57,620 --> 01:04:01,090 Gogoratu besterik ez dut, ez dago zer pred gauza da? 810 01:04:01,090 --> 01:04:05,850 Ez da bi aldiz, eta banaka artean? 811 01:04:05,850 --> 01:04:10,020 [Hardison] dezagun zer egiten zuen begirada. 812 01:04:10,020 --> 01:04:15,760 Beraz, hemen goaz. Hona hemen zerrenda kodea. 813 01:04:15,760 --> 01:04:25,620 Hemen predptr dugu, hemen. Hau da, zertaz ari zaren hitz egiten? 814 01:04:25,620 --> 01:04:30,750 Beraz, hau da zerrenda libre uzten du eta erakuslea gordetzeko zuen saiatzen ari da. 815 01:04:30,750 --> 01:04:35,000 Hau ez da bi aldiz, banaka lotuta-zerrendak. 816 01:04:35,000 --> 01:04:40,090 Honi buruz gehiago hitz egin ahal izango dugu geroago, hau da, hitz egiten geroztik zerrendan uzten 817 01:04:40,090 --> 01:04:42,900 eta beste gauza batzuk erakutsi nahi dut lehenik. 818 01:04:42,900 --> 01:04:51,480 baina besterik ez da - ptr balio du gogoratzeko 819 01:04:51,480 --> 01:04:54,170 [Student] Oh, Aurreko erakuslea da? >> Bai. 820 01:04:54,170 --> 01:05:04,070 Beraz, orduan ezin dugu Kontatzailea ptr bera free ondoren zer predptr aurretik. 821 01:05:04,070 --> 01:05:09,130 Ezin dugu delako free ptr eta gero deitu ptr = ptr ondoan, ezta? 822 01:05:09,130 --> 01:05:11,260 Txarra izango litzateke. 823 01:05:11,260 --> 01:05:20,940 Hargatik ikus, guy hau itzuli. 824 01:05:20,940 --> 01:05:23,900 >> Zerrendak buruzko beste gauza txarra da array bat, berriz, 825 01:05:23,900 --> 01:05:26,520 besterik ez dugu, bata bestearen ondoan pilatzen dira bere burua elementu guztiak, 826 01:05:26,520 --> 01:05:29,050 Hemen ere sartu erakuslea. 827 01:05:29,050 --> 01:05:34,060 Beraz zatia memoria gehiago erabiltzen ari gara izatea 828 01:05:34,060 --> 01:05:37,910 elementu guztietan ari gara gure zerrendan gordetzeko. 829 01:05:37,910 --> 01:05:40,030 Malgutasuna lortzen dugu, baina kostu bat dator. 830 01:05:40,030 --> 01:05:42,230 Dator denbora kostua hau da, 831 01:05:42,230 --> 01:05:45,270 dator eta memoria kostu hori ere. 832 01:05:45,270 --> 01:05:47,800 Zentzu Time dugun array elementu guztietan bidez joan 833 01:05:47,800 --> 01:05:58,670 indizea 10 bat, edo izan zen indizea 10 array bat aurkitzeko. 834 01:05:58,670 --> 01:06:01,230 >> Just benetan azkar, diagrama dugu, zerrenda horiek, 835 01:06:01,230 --> 01:06:05,980 normalean mantendu dugu zerrenda-burua edo erakuslea zerrendaren lehen 836 01:06:05,980 --> 01:06:08,010 eta hori benetako erakuslea da. 837 01:06:08,010 --> 01:06:11,100 4 byte besterik ez da. Ez da, benetako nodo bera. 838 01:06:11,100 --> 01:06:17,120 Beraz, duela balio int, ez hurrengo erakuslea ez ikusiko duzu. 839 01:06:17,120 --> 01:06:20,790 Literalki erakuslea besterik ez da. 840 01:06:20,790 --> 01:06:23,550 Benetako nodo eta egitura bat da, zerbait seinalatu. 841 01:06:23,550 --> 01:06:28,480 [Sam] izeneko erakuslea nodo? >> Hau da, - no. Nodo mota zerbait erakuslea da. 842 01:06:28,480 --> 01:06:32,540 Nodoa struct erakuslea da. >> Oh, ados. 843 01:06:32,540 --> 01:06:36,870 Eskuineko ezker, kode diagrama. 844 01:06:36,870 --> 01:06:42,190 Ezarri ahal izango ditugu, null, hasteko modu ona da. 845 01:06:42,190 --> 01:06:49,850 Denean diagrama duzu, idatzi bai null gisa edo lerro bat jarri horren bidez gustatzen. 846 01:06:49,850 --> 01:06:53,910 >> One zerrendak lan egiteko modurik errazena, 847 01:06:53,910 --> 01:06:57,430 eta zuk galdetzen dugu ez itxi bai eta erantsi bien arteko desberdintasunak ikusteko, 848 01:06:57,430 --> 01:07:01,320 baina ezeztatu da behin betiko errazagoa da. 849 01:07:01,320 --> 01:07:05,790 Duzunean gunearen aurretik, hau da, non - itxi (7), 850 01:07:05,790 --> 01:07:10,050 eta joan nodo eta egitura sortu 851 01:07:10,050 --> 01:07:13,870 eta lehenengo seinalatu du, eta gaur egun delako, zerrendan dugu, 852 01:07:13,870 --> 01:07:17,240 zerrendaren hasieran egon behar dute. 853 01:07:17,240 --> 01:07:22,540 Itxi (3), nodoa beste sortzen, baina, orain, 3 7a baino lehen dator bada. 854 01:07:22,540 --> 01:07:31,130 Beraz, funtsean ari gara gauzak bultzaka gure zerrenda aldera. 855 01:07:31,130 --> 01:07:34,720 Orain, ikus itxi, batzuetan pertsona deitu bultza dezakezu, 856 01:07:34,720 --> 01:07:39,600 elementu berri bat bultzatzen ari delako zure zerrenda aldera. 857 01:07:39,600 --> 01:07:43,270 Da erraza, halaber, zerrenda baten aurrean ezabatu. 858 01:07:43,270 --> 01:07:45,650 Beraz, jendeak ikusiko du sarritan deitu pop hori. 859 01:07:45,650 --> 01:07:52,200 Eta horrela, pila bat emulatzen lotuta zerrenda bat erabiliz dezakezu. 860 01:07:52,200 --> 01:07:57,880 Whoops. Sentitzen dut, orain append sartzen ari gara. Beraz, hemen (7) jasotako dugu, gaur egun itxi (3). 861 01:07:57,880 --> 01:08:02,600 Beste zerbait zerrendan dugu zerrenda honetan aldera, jasotako badugu (4), 862 01:08:02,600 --> 01:08:06,540 ondoren, 4 izan genuen, eta, ondoren, 3 eta, ondoren, 7. 863 01:08:06,540 --> 01:08:14,220 Orduan, pop eta 4 kendu, remove 3 genezake, kendu 7. 864 01:08:14,220 --> 01:08:16,500 Askotan, intuizioz honi buruz pentsatzen append da. 865 01:08:16,500 --> 01:08:20,310 Beraz diagrammed Nik zer erantsi hemen bezala bilatuko litzateke. 866 01:08:20,310 --> 01:08:23,380 Hemen, erantsita (7) ez du itxura desberdinak edozein 867 01:08:23,380 --> 01:08:25,160 ez delako zerrendan elementu bat besterik ez da. 868 01:08:25,160 --> 01:08:28,620 Eta appending (3) jartzen du amaieran. 869 01:08:28,620 --> 01:08:31,020 Agian oraintxe ikusten dezakezu append trikimailu 870 01:08:31,020 --> 01:08:36,600 dela bakarrik dakigu non zerrendaren hasiera-hasieratik, 871 01:08:36,600 --> 01:08:39,450 zerrendan zehar bide guztiak oinez duzu zerrenda bat eransteko 872 01:08:39,450 --> 01:08:46,500 amaieran, gelditzeko, ondoren, zure nodo eta plunk dena eraiki. 873 01:08:46,500 --> 01:08:50,590 Wire stuff guztiak. 874 01:08:50,590 --> 01:08:55,170 Beraz, itxi, besterik ez dugu honen bidez erauzi benetan azkar, 875 01:08:55,170 --> 01:08:58,170 gunearen aurretik zerrenda bat duzu, nahiko erraza da. 876 01:08:58,170 --> 01:09:02,960 >> Egiten duzu, zure nodo inplikatzeko batzuk memoria esleipena dinamiko. 877 01:09:02,960 --> 01:09:09,830 Beraz, hemen malloc erabiliz eta egitura nodo bat egiten ari gara. 878 01:09:09,830 --> 01:09:14,710 Malloc Beraz, alde batera utzi duelako izango Gurekin memoria geroago erabiltzen ari gara 879 01:09:14,710 --> 01:09:20,350 nahi dugu ez delako memoria hau denbora luzez jarraitasun nahi dugu. 880 01:09:20,350 --> 01:09:25,350 Eta erakuslea bat lortu dugu memoria espazioa besterik ez da esleitu. 881 01:09:25,350 --> 01:09:29,260 Nodo tamaina erabiltzen dugu, ez dugu eremu batzea. 882 01:09:29,260 --> 01:09:31,899 Ez dugu eskuz sortu byte kopurua, 883 01:09:31,899 --> 01:09:39,750 ordez sizeof byte kopurua egokia ari gara ezagutzen dugun erabiltzen dugu. 884 01:09:39,750 --> 01:09:43,660 Ziurtatu gure malloc dei lortu du probatzeko egin dugu. 885 01:09:43,660 --> 01:09:47,939 Hau da, oro har, egin nahi duzun zerbait. 886 01:09:47,939 --> 01:09:52,590 Makina modernoa On, exekutatzen ari da memoria ez da zerbait erraza 887 01:09:52,590 --> 01:09:56,610 ari zaren stuff tona bat ezean esleitzean eta zerrenda handi bat egiteko, 888 01:09:56,610 --> 01:10:02,220 baina ari zaren stuff bada, esan, iPhone bat edo Android bat bezala eraikitzeko, 889 01:10:02,220 --> 01:10:05,230 memoria mugatua baliabide ez duzu, batez ere, zerbait bizia egiten ari zarenean. 890 01:10:05,230 --> 01:10:08,300 Beraz, ona da praktikan. 891 01:10:08,300 --> 01:10:10,510 >> Iragarki ditudan pare bat erabiltzen funtzio desberdinak hemen 892 01:10:10,510 --> 01:10:12,880 duzula ikusten diren berri mota. 893 01:10:12,880 --> 01:10:15,870 Beraz fprintf besterik ez da gogoko printf 894 01:10:15,870 --> 01:10:21,320 korronteak bere lehen argumentua izan ezik inprimatu nahi duzun da. 895 01:10:21,320 --> 01:10:23,900 Kasu honetan, errore estandarraren katea inprimatu nahi dugu 896 01:10:23,900 --> 01:10:29,410 estandarra outstream desberdina da. 897 01:10:29,410 --> 01:10:31,620 Lehenespenez erakusten du, leku berean. 898 01:10:31,620 --> 01:10:34,600 Bistaratzen ere, terminal, baina ahal duzun 899 01:10:34,600 --> 01:10:38,790 komandoak erabiliz buruz, berbideraketak teknikak ikasi duzu 900 01:10:38,790 --> 01:10:42,290 Tommy bideoa buruz ikasi duzu arazo multzo 4, zuzentzeko dezakezu 901 01:10:42,290 --> 01:10:47,900 arlo desberdinetan; gero irten, hementxe, irteerak, zure programa. 902 01:10:47,900 --> 01:10:50,440 Funtsean nagusira itzuli, 903 01:10:50,440 --> 01:10:53,600 erabili dugu irteera izan ezik hemen bueltan ezer egiten ez delako. 904 01:10:53,600 --> 01:10:57,140 Oraindik ez dugu nagusian, eta, beraz, itzuli ez du irten nahi bezalako programa. 905 01:10:57,140 --> 01:11:03,020 Beraz, irteera funtzioa erabiliko dugu, eta errore-kode bat ematen diote. 906 01:11:03,020 --> 01:11:11,890 Ondoren, hemen berria nodo balio-eremua, bere i eremuan ezarri dugu i berdina izan behar du, eta, ondoren, Wire dugu. 907 01:11:11,890 --> 01:11:15,530 Berria nodo hurrengo erakuslea dugu, lehen seinalatu 908 01:11:15,530 --> 01:11:20,460 eta, ondoren, lehen aldiz egingo da orain nodo berria seinalatu. 909 01:11:20,460 --> 01:11:25,120 Kode lerro hauek, benetan nodo berria eraikitzen ari gara. 910 01:11:25,120 --> 01:11:27,280 Ez funtzioa honetan azken bi lerroak, baina lehen ere bai. 911 01:11:27,280 --> 01:11:30,290 Benetan dezakezu tira funtzio batean, helper funtzio bat sartu. 912 01:11:30,290 --> 01:11:32,560 Hori askotan dudana da, tira I funtzio batean, 913 01:11:32,560 --> 01:11:36,040 Eraikitze nodo antzeko zerbait deitzen diot nik, 914 01:11:36,040 --> 01:11:40,410 eta hori mantentzen itxi funtzioa nahiko txikia da, ondoren, 3 lerro besterik ez da. 915 01:11:40,410 --> 01:11:48,710 Nire eraikitze nodo funtzio-dei bat egin dut, eta, ondoren, I alanbre dena sortu. 916 01:11:48,710 --> 01:11:51,970 >> Final gauza erakutsi nahi dut, 917 01:11:51,970 --> 01:11:54,030 append eta hori guztia eta utzi zure dut 918 01:11:54,030 --> 01:11:57,500 Zerrenda bat baino gehiago batetik bestera joateko. 919 01:11:57,500 --> 01:12:00,780 Zerrenda bat baino gehiago batetik bestera joateko modu ezberdinak sorta bat daude. 920 01:12:00,780 --> 01:12:03,140 Kasu honetan, luzera zerrenda bat aurkituko dugu. 921 01:12:03,140 --> 01:12:06,570 Beraz hasten luzera = 0 dugu. 922 01:12:06,570 --> 01:12:11,580 Strlen kate bat idazten oso antzekoa da. 923 01:12:11,580 --> 01:12:17,780 Horixe erakusteko, hau loop eskubidea nahi dut hemen. 924 01:12:17,780 --> 01:12:23,530 Kinda funky dirudi, ez da ohiko int i = 0, i 01:12:34,920 Horren ordez, gure n aldakorra da hasieratzean zerrendaren hasiera izango da. 926 01:12:34,920 --> 01:12:40,620 Eta gero, gure iterator aldagaia ez da berriz, null, jarraitzea dugu. 927 01:12:40,620 --> 01:12:46,340 Hau da, izan ere, konbentzio, gure zerrendaren amaieran null izango da. 928 01:12:46,340 --> 01:12:48,770 Eta gero, Kontatzailea + + egiten ordez, 929 01:12:48,770 --> 01:12:57,010 + zerrenda lotuta baliokidea + n = n-> hurrengo. 930 01:12:57,010 --> 01:13:00,410 >> Utzi hemen hutsuneak bete dizut denbora gara delako. 931 01:13:00,410 --> 01:13:09,300 Baina hau mantentzeko kontuan zure spellr psets lan egiten duzun bezala. 932 01:13:09,300 --> 01:13:11,650 Loturarik zerrendak, hash taula bat ezartzeko, 933 01:13:11,650 --> 01:13:14,010 behin betiko oso erabilgarri etorriko. 934 01:13:14,010 --> 01:13:21,780 Eta idiom hau izatea gauza baino gehiago begizta bizitza errazagoa, zorionez. 935 01:13:21,780 --> 01:13:25,910 Edozein galdera, azkar? 936 01:13:25,910 --> 01:13:28,920 [Sam] bidaliko bete SLL eta sc? 937 01:13:28,920 --> 01:13:38,360 [Hardison] Bai. Diapositibak bukatu eta SLL pila eta queue.cs bidali dut. 938 01:13:38,360 --> 01:13:41,360 [CS50.TV]