1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [Seksyon 6: Mas mababa kumportableng] 2 00:00:02,730 --> 00:00:05,040 [Nate Hardison] [Harvard University] 3 00:00:05,040 --> 00:00:07,320 [Ito ay CS50.] [CS50.TV] 4 00:00:07,320 --> 00:00:11,840 Ayos lang. Maligayang pagdating sa seksyon 6. 5 00:00:11,840 --> 00:00:14,690 Sa linggong ito, kami ay pagpunta sa pakikipag-usap tungkol sa mga data kaayusan sa seksyon, 6 00:00:14,690 --> 00:00:19,780 pangunahing dahil ang problemang ito linggo sa spellr 7 00:00:19,780 --> 00:00:24,410 ang buong bungkos ng ng ibang data paggalugad istraktura. 8 00:00:24,410 --> 00:00:26,520 May grupo ng mga iba't ibang mga paraan maaari kang pumunta sa mga hanay ng problema, 9 00:00:26,520 --> 00:00:31,570 at ang higit pang mga istraktura ng data alam mo, mas cool na bagay na maaari mong gawin. 10 00:00:31,570 --> 00:00:34,990 >> Kaya sabihin makapagsimula. Una namin upang makipag-usap tungkol sa mga stack, 11 00:00:34,990 --> 00:00:37,530 ng stack at queue istraktura ng data na kami ay pagpunta sa makipag-usap tungkol sa. 12 00:00:37,530 --> 00:00:40,560 Stack at queues ay talagang kapaki-pakinabang kapag sinimulan namin ang pinag-uusapan ng mga graph, 13 00:00:40,560 --> 00:00:44,390 kung saan hindi namin ay pagpunta sa gawin ito magkano ng karapatan ngayon. 14 00:00:44,390 --> 00:00:52,820 Ngunit ito ay talagang magandang upang maunawaan ang isa ng malaking pangunahing istraktura ng data ng CS. 15 00:00:52,820 --> 00:00:54,880 Ang paglalarawan sa detalye ng hanay ng problema, 16 00:00:54,880 --> 00:00:59,260 kung hilahin mo ito, ang mga pag-uusap tungkol sa mga stack bilang kamag-anak sa 17 00:00:59,260 --> 00:01:05,239 pile ng mga trays dining na mayroon ka sa cafeteria sa bulwagan kainan 18 00:01:05,239 --> 00:01:09,680 kung saan kapag ang dining kawani ay at Inilalagay ng mga trays dining pagkatapos nilang nalinis ang mga ito, 19 00:01:09,680 --> 00:01:12,000 sila stack ang mga ito isa sa tuktok ng isa. 20 00:01:12,000 --> 00:01:15,050 At pagkatapos ay kapag dumating ang mga bata upang makakuha ng pagkain, 21 00:01:15,050 --> 00:01:19,490 hilahin nila ang mga trays off, unang sa tuktok, ang isa sa ibaba nito, pagkatapos ay ang isa sa ibaba na. 22 00:01:19,490 --> 00:01:25,190 Kaya, sa epekto, ang unang tray na ang dining kawani ilagay down na ang huling isa na ay makakakuha ng kinuha off. 23 00:01:25,190 --> 00:01:32,330 Ang huling isa na ang mga kawani ng dining ilagay sa ay ang unang isa na ay makakakuha ng kinuha off para sa hapunan. 24 00:01:32,330 --> 00:01:38,100 Sa spec set ang problema, kung saan maaari mong i-download kung hindi mo pa nagagawa, 25 00:01:38,100 --> 00:01:46,730 makipag-usap namin tungkol sa pagmomodelo ng isang stack data stucture paggamit ng ganitong uri ng struct. 26 00:01:46,730 --> 00:01:51,070 >> Kaya kung ano ang namin ang nakuha dito, ito ay katulad sa kung ano ang ipinakita sa panayam, 27 00:01:51,070 --> 00:01:58,120 maliban sa panayam nagpakita namin ito sa mga ints bilang kabaligtaran sa magpasinda * s. 28 00:01:58,120 --> 00:02:06,250 Ito ay pagpunta sa isang stack na tindahan kung ano? 29 00:02:06,250 --> 00:02:09,009 Daniel? Ano ang mga namin ang pag-iimbak sa stack? 30 00:02:09,009 --> 00:02:15,260 [Daniel] string? Namin ay >> sa pag-iimbak ng string sa stack, eksakto. 31 00:02:15,260 --> 00:02:20,950 Ang kailangan mo upang lumikha ng isang stack ay isang array 32 00:02:20,950 --> 00:02:23,920 ng isang partikular na kapasidad, na sa kasong ito, 33 00:02:23,920 --> 00:02:28,020 kapasidad ay pagpunta sa lahat ng caps dahil ito ay isang pare-pareho. 34 00:02:28,020 --> 00:02:36,340 At pagkatapos ay sa karagdagan sa array, ang lahat ng kailangan namin upang subaybayan ang kasalukuyang laki ng array. 35 00:02:36,340 --> 00:02:38,980 Isang bagay na dapat tandaan dito na uri ng mga cool na 36 00:02:38,980 --> 00:02:47,060 na namin ang paglikha ng nakasalansan na istraktura ng data sa tuktok ng isa pang istraktura ng data, ang array. 37 00:02:47,060 --> 00:02:50,110 Mayroong iba't ibang mga paraan upang ipatupad ang mga stack. 38 00:02:50,110 --> 00:02:54,250 Hindi namin gawin ito lubos pa, ngunit sana ay pagkatapos ng paggawa sa naka-link na listahan problema, 39 00:02:54,250 --> 00:03:00,520 makikita mo kung paano maaari mong madaling ipatupad ang stack sa itaas ng isang naka-link na listahan pati na rin. 40 00:03:00,520 --> 00:03:02,640 Ngunit sa ngayon, makikita namin dumikit ang array. 41 00:03:02,640 --> 00:03:06,350 Kaya muli, ang lahat ng kailangan namin ay isang array at kailangan lang namin upang subaybayan ang laki ng array. 42 00:03:06,350 --> 00:03:09,850 [Sam] Paumanhin, kung bakit ito na sinabi mo stack sa tuktok ng string? 43 00:03:09,850 --> 00:03:13,440 Sa akin tila tulad ng mga string sa loob ng stack. 44 00:03:13,440 --> 00:03:16,790 [Hardison] Oo. Kami ay ang paglikha, namin ang paglalaan ang aming data ng istraktura ng array - 45 00:03:16,790 --> 00:03:22,130 na isang mahusay na tanong. Kaya tanong ay kung bakit, para sa mga taong nanonood ito online, 46 00:03:22,130 --> 00:03:24,140 kung bakit namin sinasabi na ang stack sa tuktok ng string, 47 00:03:24,140 --> 00:03:27,990 dahil dito ito hitsura tulad ng mga string sa loob ng stack? 48 00:03:27,990 --> 00:03:31,050 Na kung saan ay lubos na ang kaso. 49 00:03:31,050 --> 00:03:34,660 Ano ako ay nagre-refer sa ay na namin ang nakakuha ng isang array ng data ng istraktura. 50 00:03:34,660 --> 00:03:39,290 Mayroon kaming isang array ng magpasinda * s, ito array ng mga string, 51 00:03:39,290 --> 00:03:45,300 at kami ay pagpunta upang idagdag sa na upang lumikha ng ang nakasalansan na istraktura ng data. 52 00:03:45,300 --> 00:03:48,620 >> Kaya stack ay bahagyang mas kumplikado kaysa sa isang array. 53 00:03:48,620 --> 00:03:51,890 Maaari naming gamitin ang isang array upang bumuo ng isang stack. 54 00:03:51,890 --> 00:03:55,810 Kaya na kung saan sinasabi namin na ang stack ay binuo sa tuktok ng isang array. 55 00:03:55,810 --> 00:04:02,510 Gayundin, tulad ng sinabi ko mas maaga, maaari naming bumuo ng isang stack sa itaas ng isang naka-link na listahan. 56 00:04:02,510 --> 00:04:04,960 Sa halip ng paggamit ng isang array upang i-hold ang aming mga elemento, 57 00:04:04,960 --> 00:04:10,070 maaari kaming gumamit ng isang naka-link na listahan upang i-hold ang aming mga elemento at bumuo ng stack sa paligid na. 58 00:04:10,070 --> 00:04:12,420 Natin maglakad sa pamamagitan ng isang pares ng mga halimbawa, pagtingin sa ilang code, 59 00:04:12,420 --> 00:04:14,960 upang makita kung ano ang aktwal na nangyayari dito. 60 00:04:14,960 --> 00:04:23,400 Sa kaliwa, ko na itinapon down kung ano na struct stack ay magmukhang sa memory 61 00:04:23,400 --> 00:04:28,330 kung kapasidad na # tinukoy na apat. 62 00:04:28,330 --> 00:04:33,490 Mayroon namin ang aming apat na elemento magpasinda * array. 63 00:04:33,490 --> 00:04:38,110 Mayroon kaming string [0], string [1], string [2], string [3], 64 00:04:38,110 --> 00:04:43,800 at pagkatapos na huling espasyo para sa aming size integer. 65 00:04:43,800 --> 00:04:46,270 Ba ito magkaroon ng kahulugan? Okay. 66 00:04:46,270 --> 00:04:48,790 Ito ay ano ang mangyayari kung ano ang ginagawa ko sa kanan, 67 00:04:48,790 --> 00:04:55,790 na sa aking code, ay para lamang ipinapahayag ng struct, nakasalansan struct na tinatawag na mga. 68 00:04:55,790 --> 00:05:01,270 Ito ay kung ano ang nakukuha namin. Ito lays down na ito footprint sa memorya. 69 00:05:01,270 --> 00:05:05,590 Ang unang tanong dito ay kung ano ang mga nilalaman ng struct stack na ito? 70 00:05:05,590 --> 00:05:09,250 Sa ngayon ang mga ito ay walang, ngunit hindi lubos na walang. 71 00:05:09,250 --> 00:05:13,300 Hindi nila ito uri ng basura. Wala kaming ideya kung ano ang sa kanila. 72 00:05:13,300 --> 00:05:17,000 Kapag ipinapahayag namin ang mga stack, kami ay ibinabato na sa tuktok ng memory. 73 00:05:17,000 --> 00:05:19,840 Ito ay uri ng tulad ng deklarasyon int i at hindi Sinisimulan ito. 74 00:05:19,840 --> 00:05:21,730 Hindi mo alam kung ano ang doon. Maaari mong basahin kung ano ang doon, 75 00:05:21,730 --> 00:05:27,690 ngunit hindi ito maaaring maging napaka-kapaki-pakinabang na. 76 00:05:27,690 --> 00:05:32,680 Ang isang bagay na gusto mong palaging tandaan na gawin ay simulan ang anumang kailangang nasimulan. 77 00:05:32,680 --> 00:05:35,820 Sa kasong ito, kami ay pagpunta sa initialize ang laki sa zero, 78 00:05:35,820 --> 00:05:39,960 dahil na pagpunta upang i-napakahalaga para sa amin. 79 00:05:39,960 --> 00:05:43,450 Kami maaaring magpatuloy at initialize ang lahat ng mga payo, ang lahat ng mga magpasinda * s, 80 00:05:43,450 --> 00:05:49,670 ilang naiintindihan halaga, marahil null. 81 00:05:49,670 --> 00:05:58,270 Ngunit ito ay hindi lubos na kinakailangan na gawin namin na. 82 00:05:58,270 --> 00:06:04,200 >> Ngayon, ang dalawang pangunahing mga pagpapatakbo sa stack? 83 00:06:04,200 --> 00:06:07,610 Sinuman tandaan mula sa panayam kung ano ang gagawin mo sa stack? Oo? 84 00:06:07,610 --> 00:06:09,700 [Stella] pagtulak at popping? >> Mismong. 85 00:06:09,700 --> 00:06:13,810 Pagtulak at popping ay ang dalawang pangunahing pagpapatakbo sa stack. 86 00:06:13,810 --> 00:06:17,060 At kung ano ang push gawin? >> Ito Inilalagay ng isang bagay papunta sa tuktok 87 00:06:17,060 --> 00:06:19,300 ng stack, at pagkatapos ay popping tumatagal off ito. 88 00:06:19,300 --> 00:06:23,150 [Hardison] Mismong. Kaya pagtulak pushes isang bagay sa tuktok ng stack. 89 00:06:23,150 --> 00:06:27,700 Ito ay tulad ng dining kawani paglalagay ng dining tray sa counter. 90 00:06:27,700 --> 00:06:33,630 At popping nagtatagal dining tray ng stack. 91 00:06:33,630 --> 00:06:36,460 Sabihin maglakad sa pamamagitan ng ilang mga halimbawa ng kung ano ang mangyayari 92 00:06:36,460 --> 00:06:39,720 kapag namin itulak ang mga bagay sa stack. 93 00:06:39,720 --> 00:06:45,110 Kung kami ay upang itulak ang string na 'kumusta' patungo sa daloy ng mga sasakyan sa aming stack, 94 00:06:45,110 --> 00:06:49,760 ito ay kung ano ang aming diagram magiging ganito ang hitsura ngayon. 95 00:06:49,760 --> 00:06:53,410 Tingnan kung ano ang mangyayari? 96 00:06:53,410 --> 00:06:56,530 Namin hunhon sa unang elemento ng aming mga string ng array 97 00:06:56,530 --> 00:07:01,420 at upped namin ang aming laki count na 1. 98 00:07:01,420 --> 00:07:05,340 Kaya't kung tiningnan namin sa pagkakaiba sa pagitan ng dalawang mga slide, dito ay 0, narito ang bago ang push. 99 00:07:05,340 --> 00:07:08,690 Dito ay pagkatapos ng push. 100 00:07:08,690 --> 00:07:13,460 Bago push, pagkatapos ng push. 101 00:07:13,460 --> 00:07:16,860 At ngayon ay mayroon kaming isang elemento sa aming stack. 102 00:07:16,860 --> 00:07:20,970 Ang string "kumusta", at na ito. 103 00:07:20,970 --> 00:07:24,440 Lahat ng iba pa sa array, sa aming mga string ng array, ay pa rin basura. 104 00:07:24,440 --> 00:07:27,070 Hindi pa namin nasimulan ito. 105 00:07:27,070 --> 00:07:29,410 Sabihin nating itulak namin ang isa pang string papunta sa aming stack. 106 00:07:29,410 --> 00:07:32,210 Kami ay pagpunta sa itulak ang "mundo" sa oras na ito. 107 00:07:32,210 --> 00:07:35,160 Sa gayon maaari mong makita ang "mundo" dito napupunta sa tuktok ng "kumusta", 108 00:07:35,160 --> 00:07:40,040 at ang laki ng bilang ng napupunta hanggang sa 2. 109 00:07:40,040 --> 00:07:44,520 Ngayon ay maaari naming itulak ang "CS50", at na kailangan pumunta sa tuktok muli. 110 00:07:44,520 --> 00:07:51,110 Kung pumunta namin pabalik, maaari mong makita kung paano namin pagtulak bagay sa tuktok ng stack. 111 00:07:51,110 --> 00:07:53,320 At ngayon kami makakuha ng mag-pop. 112 00:07:53,320 --> 00:07:58,910 Kapag pop namin ang isang bagay ng stack, kung ano ang nangyari? 113 00:07:58,910 --> 00:08:01,540 Sinuman makita ang pagkakaiba? Medyo banayad. 114 00:08:01,540 --> 00:08:05,810 [Mag-aaral] Ang laki. >> Oo, laki nagbago. 115 00:08:05,810 --> 00:08:09,040 >> Ano pa ang gusto mong inaasahan upang baguhin? 116 00:08:09,040 --> 00:08:14,280 [Mag-aaral] Ang mga string, masyadong. >> Karapatan. Ang masyadong mga string. 117 00:08:14,280 --> 00:08:17,110 Ito ay lumiliko out na kapag ginagawa mo ito sa ganitong paraan, 118 00:08:17,110 --> 00:08:21,960 dahil hindi namin pagkopya ng mga elemento sa aming stack, 119 00:08:21,960 --> 00:08:24,670 hindi namin aktwal gawin, maaari naming gamitin ang laki 120 00:08:24,670 --> 00:08:28,630 subaybayan ng bilang ng mga bagay sa aming array 121 00:08:28,630 --> 00:08:33,780 sa gayon ay kapag pop namin muli, muli lang namin ng pagbawas sa aming size down sa 1. 122 00:08:33,780 --> 00:08:39,440 Walang pangangailangan sa aktwal na pumunta sa at patungan ang anumang. 123 00:08:39,440 --> 00:08:41,710 Uri ng funky. 124 00:08:41,710 --> 00:08:46,520 Ito lumiliko out na ating kadalasang iwan lang bagay nag-iisa dahil ito ay mas trabaho para sa amin upang gawin. 125 00:08:46,520 --> 00:08:50,060 Kung hindi namin upang bumalik at patungan ang isang bagay, at pagkatapos ay kung bakit ito gawin? 126 00:08:50,060 --> 00:08:54,150 Kaya kapag pop namin dalawang beses off ng stack, ang lahat ng ginagawa ng pagbawas sa laki ng ilang beses. 127 00:08:54,150 --> 00:08:59,120 At muli, ito ay lamang dahil hindi namin pagkopya ng mga bagay sa aming stack. 128 00:08:59,120 --> 00:09:01,320 Oo? Sige. 129 00:09:01,320 --> 00:09:04,460 [Mag-aaral, hindi maintindihan] >> At pagkatapos ay kung ano ang mangyayari kapag ikaw itulak ang isang bagay muli? 130 00:09:04,460 --> 00:09:08,570 Kapag itulak mo ang isang bagay na muli, kung saan ito pumunta? 131 00:09:08,570 --> 00:09:12,390 Saan ang pumunta, Basil? >> Sa mga string [1]? >> Karapatan. 132 00:09:12,390 --> 00:09:14,530 Bakit hindi pumunta sa mga string [3]? 133 00:09:14,530 --> 00:09:19,410 [Basil] Dahil nakalimutan na may anuman sa mga string [1] at [2]? 134 00:09:19,410 --> 00:09:24,040 [Hardison] Mismong. Aming stack, mahalagang, "nakalimutan" na ito ay may hawak na sa anumang 135 00:09:24,040 --> 00:09:29,480 sa mga string [1] o string [2], kaya kapag namin itulak ang "woot", 136 00:09:29,480 --> 00:09:36,670 ito lamang Inilalagay ng na sa elemento sa string [1]. 137 00:09:36,670 --> 00:09:41,590 Mayroon bang anumang mga katanungan sa kung paano ito gumagana, sa isang pangunahing antas? 138 00:09:41,590 --> 00:09:45,160 [Sam] Kaya ito ay hindi dynamic na sa anumang paraan, sa mga tuntunin ng halaga 139 00:09:45,160 --> 00:09:47,620 o sa mga tuntunin ng laki ng stack? 140 00:09:47,620 --> 00:09:56,750 [Hardison] Mismong. Ito ay - punto ay na ito ay hindi isang dynamic growning stack. 141 00:09:56,750 --> 00:10:02,850 Ito ay isang stack na maaaring magkaroon ng, sa karamihan, apat magpasinda * s, hindi hihigit sa apat na mga bagay. 142 00:10:02,850 --> 00:10:07,580 Kung kami ay upang subukan at itulak ang ikalimang bagay, kung ano ang sa tingin mo dapat mangyari? 143 00:10:07,580 --> 00:10:11,870 [Mga mag-aaral, hindi maintindihan] 144 00:10:11,870 --> 00:10:14,600 [Hardison] Mismong. Mayroong isang bilang ng mga bagay na maaaring mangyari. 145 00:10:14,600 --> 00:10:19,330 Maaaring posibleng seg kasalanan, depende sa kung ano ang namin - 146 00:10:19,330 --> 00:10:22,530 kung paano eksaktong namin ang pagpapatupad ng back-end. 147 00:10:22,530 --> 00:10:31,740 Maaaring patungan. Maaaring na buffer overflow na usapan natin ang tungkol sa klase. 148 00:10:31,740 --> 00:10:35,240 Ano ang gusto ay ang pinaka-halata bagay na maaaring mapatungan 149 00:10:35,240 --> 00:10:42,370 kung sinubukan naming i-push ng dagdag na bagay sa aming stack? 150 00:10:42,370 --> 00:10:44,550 Kaya mo nabanggit buffer overflow. 151 00:10:44,550 --> 00:10:47,870 Ano ang maaaring ang bagay na makapag-nakasulat sa paglipas ng o stomped sa 152 00:10:47,870 --> 00:10:52,320 kung overflowed namin sinasadyang sa pamamagitan ng pagsubok upang itulak ng dagdag na bagay? 153 00:10:52,320 --> 00:10:54,730 [Daniel, hindi maintindihan] >> posibleng. 154 00:10:54,730 --> 00:10:58,440 Ngunit simula, kung ano ang maaaring mangyari? Paano kung sinubukan naming i-itulak 1/4 na bagay? 155 00:10:58,440 --> 00:11:06,220 Maaaring patungan ang laki, hindi bababa sa na may ito memory diagram na nakuha namin na. 156 00:11:06,220 --> 00:11:10,880 >> Sa detalye ng hanay ng problema, na kung ano ang namin ang pagpunta sa pagpapatupad ngayon, 157 00:11:10,880 --> 00:11:16,030 kung ano ang aming nais na gawin ay lamang bumalik sa maling. 158 00:11:16,030 --> 00:11:20,030 Ang aming pamamaraan sa push upang ibalik ang isang boolean na halaga, 159 00:11:20,030 --> 00:11:22,920 at ang boolean na halaga ay totoo kung magtagumpay ang push 160 00:11:22,920 --> 00:11:29,730 at huwad na kung hindi namin maaaring itulak ang anumang mas dahil stack ay puno. 161 00:11:29,730 --> 00:11:33,620 Natin maglakad sa pamamagitan ng kaunting code na ngayon. 162 00:11:33,620 --> 00:11:36,400 Narito ang aming push function na. 163 00:11:36,400 --> 00:11:40,380 Aming push function na para sa isang stack sa string ilalagay sa stack. 164 00:11:40,380 --> 00:11:45,820 Ito ay nagbabalik ng tunay na kung ang string sa Matagumpay na hunhon 165 00:11:45,820 --> 00:11:51,820 sa stack at maling kung hindi man. 166 00:11:51,820 --> 00:11:59,740 Anumang mga mungkahi sa kung ano ang maaaring maging isang magandang unang bagay na gawin dito? 167 00:11:59,740 --> 00:12:20,630 [Sam] Kung laki ay katumbas ng kapasidad pagkatapos ay bumalik sa maling? 168 00:12:20,630 --> 00:12:23,320 [Hardison] Bingo. Nice trabaho. 169 00:12:23,320 --> 00:12:26,310 Kung ang laki ay ang kapasidad, kami ay pagpunta upang bumalik false. 170 00:12:26,310 --> 00:12:29,270 Hindi namin maaaring ilagay ang anumang higit pa sa aming stack. 171 00:12:29,270 --> 00:12:36,900 Kung hindi man, nais naming upang ilagay ang isang bagay sa tuktok ng stack. 172 00:12:36,900 --> 00:12:41,670 Ano ang "sa tuktok ng stack," sa una? 173 00:12:41,670 --> 00:12:43,650 [Daniel] Laki 0? >> Laki 0. 174 00:12:43,650 --> 00:12:49,990 Ano ang tuktok ng stack pagkatapos may isang bagay sa stack? Missy, kilala mo? 175 00:12:49,990 --> 00:12:52,720 [Missy] Isa. >> Sukat ay isa, eksakto. Panatilihin kang pagdaragdag sa laki, 176 00:12:52,720 --> 00:13:01,690 at sa bawat oras na naglalagay ka ng sa bagong elemento sa ang laki ng index sa array. 177 00:13:01,690 --> 00:13:05,470 Maaari naming gawin ito sa na uri ng isang-Liner, kung na saysay. 178 00:13:05,470 --> 00:13:11,910 Kaya namin nakuha ang aming mga string array, kami ay pagpunta upang ma-access ang mga ito sa index ng laki, 179 00:13:11,910 --> 00:13:14,780 at lang kami upang mag-imbak ang aming magpasinda * sa doon. 180 00:13:14,780 --> 00:13:19,340 Pansinin kung paano mayroong walang string pagkopya nangyayari sa dito, 181 00:13:19,340 --> 00:13:29,680 walang dynamic na paglalaan ng memory? 182 00:13:29,680 --> 00:13:34,440 At pagkatapos ay dinala ni Missy kung ano na namin ngayon gawin, 183 00:13:34,440 --> 00:13:40,570 dahil kami na naka-imbak ang string sa naaangkop na lugar sa array, 184 00:13:40,570 --> 00:13:49,230 at sinabi niya na namin ay upang dagdagan ang laki ng isa sa gayon ay handa na kami para sa susunod na push. 185 00:13:49,230 --> 00:13:53,950 Upang maaari naming gawin na may s.size + +. 186 00:13:53,950 --> 00:13:59,330 Sa puntong ito, kami hunhon sa aming array. Ano ang huling bagay na kami ay may sa gawin? 187 00:13:59,330 --> 00:14:10,110 [Mag-aaral] Bumalik totoo. >> Bumalik totoo. 188 00:14:10,110 --> 00:14:14,690 Kaya ito ay medyo simple, ang isang medyo simpleng code. Hindi masyadong maraming. 189 00:14:14,690 --> 00:14:17,070 Sa sandaling na-balot ang iyong ulo sa paligid kung paano gumagana ang stack ang, 190 00:14:17,070 --> 00:14:21,910 ito ay medyo simple na ipapatupad. 191 00:14:21,910 --> 00:14:26,390 >> Ngayon, ang susunod na bahagi ng popping isang string ng stack. 192 00:14:26,390 --> 00:14:29,410 Ako pagpunta upang bigyan ka ng mga guys ilang oras upang gumana sa ito ng kaunti. 193 00:14:29,410 --> 00:14:34,320 Ito ay halos mahalagang reverse ng kung ano ang ginawa namin dito sa push. 194 00:14:34,320 --> 00:14:38,510 Ano tapos ko na na ang aktwal na - oops. 195 00:14:38,510 --> 00:14:48,160 Ko ang booted appliance sa paglipas dito, at sa appliance, 196 00:14:48,160 --> 00:14:53,600 Nakuha ko na ang problema magtakda ng 5 pagtutukoy. 197 00:14:53,600 --> 00:15:02,560 Kung naming mag-zoom in dito, maaari naming makita ako sa cdn.cs50.net/2012/fall/psets/pset5.pdf. 198 00:15:02,560 --> 00:15:08,590 Mo ba ang guys-download ang code na ito na matatagpuan dito, section6.zip? 199 00:15:08,590 --> 00:15:15,030 Ayos lang. Kung hindi ka pa tapos na, gawin na ngayon, talagang mabilis. 200 00:15:15,030 --> 00:15:22,130 Kong gawin ang mga ito sa aking terminal na window. 201 00:15:22,130 --> 00:15:25,090 Aktwal na ginawa ko ito dito. Oo. 202 00:15:25,090 --> 00:15:34,730 Oo, Sam? >> Mayroon akong tanong tungkol sa kung bakit ang sinabi ninyo bracket s.string 'ng laki = STR? 203 00:15:34,730 --> 00:15:42,910 Ano ang STR? Ay na tinukoy sa isang lugar bago, o - oh, sa magpasinda * STR? 204 00:15:42,910 --> 00:15:47,160 [Hardison] Oo, eksakto. Na ang argumento. >> Oh, okay. Sorry. 205 00:15:47,160 --> 00:15:49,470 [Hardison] Kami ay tumutukoy sa string upang itulak. 206 00:15:49,470 --> 00:15:55,220 Ang iba pang mga katanungan na maaaring makabuo na hindi namin ay talagang makipag-usap tungkol dito ay 207 00:15:55,220 --> 00:15:58,810 kinuha namin para sa ipinagkaloob na nagkaroon kami ng variable na ito na tinatawag na mga 208 00:15:58,810 --> 00:16:02,710 na sa saklaw at naa-access sa amin. 209 00:16:02,710 --> 00:16:06,960 Kinuha namin para sa ipinagkaloob na mga stack struct na ito. 210 00:16:06,960 --> 00:16:08,930 Kaya naghahanap pabalik sa push code na ito, 211 00:16:08,930 --> 00:16:13,450 maaari mong makita na ginagawa namin sa mga bagay-bagay sa ang string na ito na Nakakuha ang pumasa sa 212 00:16:13,450 --> 00:16:19,210 ngunit pagkatapos ang lahat ng isang biglaang, hindi namin ina-access s.size, tulad ng, kung saan ay mga darating mula sa? 213 00:16:19,210 --> 00:16:23,020 Sa code na kami ay pagpunta upang tingnan sa archive seksyon 214 00:16:23,020 --> 00:16:27,100 at pagkatapos ay nagtatakda ang mga bagay na kailangan mong ginagawa sa iyong problema, 215 00:16:27,100 --> 00:16:32,440 ginawa namin ang aming stack struct isang pandaigdigang variable 216 00:16:32,440 --> 00:16:36,380 upang maaari naming may access dito sa lahat ng aming iba't ibang mga function 217 00:16:36,380 --> 00:16:40,630 nang hindi na kinakailangang upang mano-manong pumasa ito sa paligid at ipasa ang mga ito sa pamamagitan ng reference, 218 00:16:40,630 --> 00:16:44,870 lahat na uri ng mga bagay-bagay dito. 219 00:16:44,870 --> 00:16:52,280 Lang kami Pandaraya ng kaunti, kung kalooban mo, upang gumawa ng mga bagay nicer. 220 00:16:52,280 --> 00:16:57,430 At na ang isang bagay na ginagawa namin dito dahil ito ay katuwaan, madaling. 221 00:16:57,430 --> 00:17:02,800 Kadalasan, makikita mo ang mga tao gawin ito kung mayroon silang isang malaking istraktura ng data 222 00:17:02,800 --> 00:17:07,750 na pinapatakbo sa loob ng kanilang programa. 223 00:17:07,750 --> 00:17:09,560 >> Natin bumalik sa sa appliance. 224 00:17:09,560 --> 00:17:15,240 Ba lahat matagumpay na makuha ang section6.zip? 225 00:17:15,240 --> 00:17:20,440 Lahat unzip ito gamit ang section6.zip unzip? 226 00:17:20,440 --> 00:17:27,200 Kung pupunta ka sa direktoryo ng seksyon 6 - 227 00:17:27,200 --> 00:17:29,220 aah, sa lahat ng dako ng lugar - 228 00:17:29,220 --> 00:17:32,840 at ilista mo kung ano ang in dito, makikita mo na mayroon kang tatlong magkakaibang. file c. 229 00:17:32,840 --> 00:17:38,350 Mayroon kang queue, sll, na isa-isa-naka-link na listahan, at isang stack. 230 00:17:38,350 --> 00:17:44,600 Kung binuksan mo stack.c, 231 00:17:44,600 --> 00:17:47,330 maaari mong makita na namin Mayroon struct na ito na tinukoy para sa atin, 232 00:17:47,330 --> 00:17:51,330 ang eksaktong struct na lang namin uusapang tungkol sa mga slide. 233 00:17:51,330 --> 00:17:56,340 Mayroon kaming ang aming global variable para sa stack, 234 00:17:56,340 --> 00:18:00,110 Mayroon namin ang aming push function na, 235 00:18:00,110 --> 00:18:04,230 at pagkatapos Mayroon namin ang aming pop function na. 236 00:18:04,230 --> 00:18:08,320 Makikita ko bang ilagay ang code para sa uurong sa slide dito, 237 00:18:08,320 --> 00:18:10,660 ngunit kung ano ang nais kong mo guys na gawin, sa abot ng iyong kakayahan, 238 00:18:10,660 --> 00:18:13,790 pumunta at ipatupad ang pop function na. 239 00:18:13,790 --> 00:18:18,480 Sandaling naipatupad ito, maaari kang makatipon ito na may gumawa ng stack, 240 00:18:18,480 --> 00:18:22,540 at pagkatapos ay patakbuhin ang nagreresultang executable stack, 241 00:18:22,540 --> 00:18:28,390 at na tatakbo sa lahat ng ang code na ito sa pagsubok pababa narito na sa pangunahing. 242 00:18:28,390 --> 00:18:31,060 At pangunahing ay tumatagal ng pag-aalaga ng aktwal na paggawa ng push at pop tawag 243 00:18:31,060 --> 00:18:33,220 at siguraduhin na ang lahat napupunta sa pamamagitan ng lahat ng karapatan. 244 00:18:33,220 --> 00:18:36,820 Mayroon din initializes ng stack laki dito mismo 245 00:18:36,820 --> 00:18:39,780 kaya hindi mo kailangang mag-alala tungkol sa Sinisimulan na. 246 00:18:39,780 --> 00:18:42,310 Maaari mong ipinapalagay na ang maayos na nasimulan 247 00:18:42,310 --> 00:18:48,000 ng oras mong i-access ito sa function na ang pop. 248 00:18:48,000 --> 00:18:53,530 Ba na magkaroon ng kahulugan? 249 00:18:53,530 --> 00:19:00,100 Kaya dito namin pumunta. Ang push code. 250 00:19:00,100 --> 00:19:13,210 Bibigyan kita ng guys 5 o 10 minuto. 251 00:19:13,210 --> 00:19:15,690 At kung mayroon kang anumang mga katanungan sa pansamantala habang ikaw ay coding, 252 00:19:15,690 --> 00:19:17,710 mangyaring hilingin sa kanila nang malakas. 253 00:19:17,710 --> 00:19:23,080 Kaya kung makakakuha ka ng isang punto malagkit, magtanong lamang. 254 00:19:23,080 --> 00:19:26,030 Ipaalam sa akin, ipaalam sa lahat tao alam. 255 00:19:26,030 --> 00:19:28,160 Makipagtulungan sa iyong kapwa. 256 00:19:28,160 --> 00:19:30,360 [Daniel] kami pagpapatupad pop ngayon? >> Lang pop. 257 00:19:30,360 --> 00:19:34,200 Kahit na maaari mong kopyahin ang pagpapatupad ng push kung nais mong 258 00:19:34,200 --> 00:19:37,780 upang ang pagsubok gagana. 259 00:19:37,780 --> 00:19:41,940 Dahil mahirap upang subukan ang mga bagay na pagkuha sa - 260 00:19:41,940 --> 00:19:49,030 o, ito ay mahirap upang subukan ang popping bagay ng isang stack kung may anumang bagay sa stack upang magsimula sa. 261 00:19:49,030 --> 00:19:55,250 >> Ano ang pop dapat na bumabalik? Ang elemento mula sa tuktok ng stack. 262 00:19:55,250 --> 00:20:01,260 Ito ay dapat upang makuha ang mga elemento ng tuktok ng stack 263 00:20:01,260 --> 00:20:05,780 at pagkatapos ng pagbawas sa laki ng stack, 264 00:20:05,780 --> 00:20:07,810 at ngayon nawalan ka elemento sa tuktok. 265 00:20:07,810 --> 00:20:11,420 At pagkatapos mong ibalik ang mga elemento sa itaas. 266 00:20:11,420 --> 00:20:20,080 [Estudyante, hindi maintindihan] 267 00:20:20,080 --> 00:20:28,810 [Hardison] Kaya ano ang mangyayari kung gagawin mo na? [Estudyante, hindi maintindihan] 268 00:20:28,810 --> 00:20:34,000 Ano ang nagtatapos up mangyari ay malamang na ina-access mo ang alinman sa 269 00:20:34,000 --> 00:20:37,350 isang elemento na hindi pa nasimulan, kaya ang iyong pagkalkula 270 00:20:37,350 --> 00:20:39,990 kung saan ang huling elemento ay Naka-off ang. 271 00:20:39,990 --> 00:20:46,260 Kaya dito, kung napansin mo, sa push, hindi namin ina-access string sa s.size elemento 272 00:20:46,260 --> 00:20:48,560 dahil ito ay isang bagong index. 273 00:20:48,560 --> 00:20:51,460 Ang bagong tuktok ng stack. 274 00:20:51,460 --> 00:21:01,100 Sapagkat sa pop, s.size na ang susunod na espasyo, 275 00:21:01,100 --> 00:21:05,210 ang puwang na sa tuktok ng lahat ng mga elemento sa iyong stack. 276 00:21:05,210 --> 00:21:10,050 Kaya ang pinakataas na elemento ay hindi sa s.size, 277 00:21:10,050 --> 00:21:14,930 ngunit sa halip, ito ay sa ilalim nito. 278 00:21:14,930 --> 00:21:19,640 >> Ang iba pang mga bagay na gawin kapag ikaw - sa pop, 279 00:21:19,640 --> 00:21:22,030 ay mo sa pagbawas sa laki. 280 00:21:22,030 --> 00:21:28,750 Kung tandaan mo pabalik sa aming maliit na diagram dito mismo, 281 00:21:28,750 --> 00:21:30,980 talaga, ang tanging bagay na nakita namin ang nangyayari kapag tinatawag namin pop 282 00:21:30,980 --> 00:21:36,150 ay ang laki na ito ay bumaba, una sa 2, pagkatapos ay sa 1. 283 00:21:36,150 --> 00:21:42,620 Pagkatapos kapag hunhon namin ang isang bagong elemento sa, ito pumunta sa sa tamang lugar. 284 00:21:42,620 --> 00:21:49,610 [Basil] Kung s.size ay 2, hindi ito pumunta sa elemento 2, 285 00:21:49,610 --> 00:21:54,400 at pagkatapos ay nais mo nais mag-pop na elemento? 286 00:21:54,400 --> 00:21:59,510 Kaya kung nagpunta kami sa - >> Kaya tingnan natin muli sa. 287 00:21:59,510 --> 00:22:07,730 Kung ito ay ang aming stack sa puntong ito 288 00:22:07,730 --> 00:22:12,130 at tinatawag naming pop, 289 00:22:12,130 --> 00:22:16,150 kung index pinakataas na elemento? 290 00:22:16,150 --> 00:22:19,300 [Basil] Sa 2, ngunit ito ay mag-pop 3. >> Karapatan. 291 00:22:19,300 --> 00:22:24,220 Kaya na kung saan ang aming mga laki ay 3, ngunit nais naming mag-pop ang elemento sa index 2. 292 00:22:24,220 --> 00:22:29,900 Na karaniwang uri ng off sa pamamagitan ng isa na mayroon ka sa ang zero-i-index ng array. 293 00:22:29,900 --> 00:22:36,430 Kaya mo nais mag-pop ang ikatlong elemento, ngunit sa ikatlong elemento ay hindi sa index 3. 294 00:22:36,430 --> 00:22:39,430 At ang dahilan kung bakit hindi namin upang gawin iyon minus 1 kapag kami ay pagtulak 295 00:22:39,430 --> 00:22:44,120 ay dahil ngayon, napansin mo na ang pinakataas na elemento, 296 00:22:44,120 --> 00:22:47,600 kung kami ay upang itulak ang ibang bagay papunta sa stack sa puntong ito, 297 00:22:47,600 --> 00:22:50,360 gusto namin gusto upang itulak ito sa index 3. 298 00:22:50,360 --> 00:23:03,550 At ito lamang kaya ang mangyayari na ang laki at ang mga indeks ng pumila kapag ikaw ay pagtulak. 299 00:23:03,550 --> 00:23:06,960 >> Sino ang nakakuha ng isang gumaganang pagpapatupad stack? 300 00:23:06,960 --> 00:23:09,690 Mayroon kang isang gumaganang stack isa. Mo ba ang pop gumagana pa? 301 00:23:09,690 --> 00:23:11,890 [Daniel] Oo. Tingin ko ito. 302 00:23:11,890 --> 00:23:14,610 >> Program Tumatakbo at hindi seg faulting, pag-print out? 303 00:23:14,610 --> 00:23:17,520 Ba itong i-print "tagumpay" kapag nagpatakbo ka ng ito? 304 00:23:17,520 --> 00:23:22,630 Oo. Gawing stack, patakbuhin ito, kung ito ay mga Kopya "tagumpay" at hindi pumunta boom, 305 00:23:22,630 --> 00:23:26,000 pagkatapos ang lahat ng mabuti. 306 00:23:26,000 --> 00:23:34,070 Ayos lang. Natin pumunta sa appliance na ang talagang mabilis, 307 00:23:34,070 --> 00:23:46,100 at babagtasin namin ito. 308 00:23:46,100 --> 00:23:51,110 Kung titingnan namin sa kung anong nangyayari sa dito sa pop, 309 00:23:51,110 --> 00:23:55,220 Daniel, kung ano ang unang bagay na ginawa mo? 310 00:23:55,220 --> 00:23:58,850 [Daniel] Kung s.size ay mas malaki kaysa sa 0. 311 00:23:58,850 --> 00:24:03,120 [Hardison] Okay. At bakit ginawa mo na? 312 00:24:03,120 --> 00:24:05,610 [Daniel] Upang matiyak na may isang bagay sa loob ng stack. 313 00:24:05,610 --> 00:24:10,950 [Hardison] Kanan. Gusto mong subukan upang matiyak na s.size ay mas malaki kaysa sa 0; 314 00:24:10,950 --> 00:24:13,280 kung hindi man, kung ano ang gusto mong mangyari? 315 00:24:13,280 --> 00:24:16,630 [Daniel] Bumalik null? >> Bumalik null, eksakto. 316 00:24:16,630 --> 00:24:20,740 Kaya kung s.size ay mas malaki kaysa sa 0. Pagkatapos kung ano ang namin gawin? 317 00:24:20,740 --> 00:24:25,890 Ano ang gagawin namin gawin kung ay hindi walang laman ang stack? 318 00:24:25,890 --> 00:24:31,210 [Stella] pagbawas sa laki? >> Mo ng pagbawas sa laki, okay. 319 00:24:31,210 --> 00:24:34,440 Kaya kung paano ginawa mo na? >> S.size-- 320 00:24:34,440 --> 00:24:37,030 [Hardison] Mahusay. At pagkatapos ay kung ano ang ginawa mo? 321 00:24:37,030 --> 00:24:44,140 [Stella] At pagkatapos ay sinabi ko ang return s.string [s.size]. 322 00:24:44,140 --> 00:24:48,560 [Hardison] Mahusay. 323 00:24:48,560 --> 00:24:51,940 Kung hindi ka bumalik null. Oo, Sam? 324 00:24:51,940 --> 00:24:55,510 [Sam] Bakit ang hindi kailangang maging s.size + 1? 325 00:24:55,510 --> 00:24:58,430 [Hardison] Plus 1? >> Oo. >> Nakuha ko. 326 00:24:58,430 --> 00:25:00,980 [Sam] naisip ko na dahil ka paglalaan 1 out, 327 00:25:00,980 --> 00:25:04,290 ka na bumabalik hindi na tinanong nila para sa. 328 00:25:04,290 --> 00:25:09,400 [Hardison] At ito ay lamang kung ano ang namin ang pakikipag-usap tungkol sa gamit ang buong isyu ng 0 mga indeks. 329 00:25:09,400 --> 00:25:11,380 Kaya kung mag-zoom namin pabalik sa paglipas dito. 330 00:25:11,380 --> 00:25:15,650 Kung titingnan namin sa tao dito mismo, maaari mong makita na kapag pop namin, 331 00:25:15,650 --> 00:25:19,340 popping kami ay ang elemento sa index 2. 332 00:25:19,340 --> 00:25:25,200 >> Kaya naming bawasan ang aming size muna, pagkatapos ay aming size tumutugma sa aming index. 333 00:25:25,200 --> 00:25:39,650 Kung hindi namin unang pagbawas sa laki, at pagkatapos ay mayroon kaming upang gawin ang laki -1 at pagkatapos pagbabawas. 334 00:25:39,650 --> 00:25:45,270 Mahusay. Lahat ng magandang? 335 00:25:45,270 --> 00:25:47,530 Anumang mga tanong na ito? 336 00:25:47,530 --> 00:25:54,050 Mayroong isang bilang ng mga iba't ibang mga paraan upang isulat ang mga ito pati na rin. 337 00:25:54,050 --> 00:26:03,290 Sa katunayan, maaari naming gawin ang isang bagay kahit na - maaari naming gawin ang isa-Liner. 338 00:26:03,290 --> 00:26:05,770 Maaari naming gawin ang isang isang-linya return. 339 00:26:05,770 --> 00:26:12,980 Upang maaari naming aktwal ng pagbawas bago tayo bumalik sa pamamagitan ng paggawa na. 340 00:26:12,980 --> 00:26:18,320 Kaya paglalagay ng - bago ang s.size. 341 00:26:18,320 --> 00:26:22,060 Na ginagawang linya ang talagang siksikan. 342 00:26:22,060 --> 00:26:30,940 Kung saan ang pagkakaiba sa pagitan ng - mga laki at. S.size-- 343 00:26:30,940 --> 00:26:40,130 ay na ito postfix - tumawag sila postfix dahil sa - ay pagkatapos ng s.size-- 344 00:26:40,130 --> 00:26:47,430 nangangahulugan na s.size ay masuri para sa mga layunin ng paghahanap ng index 345 00:26:47,430 --> 00:26:50,410 dahil ito ay kasalukuyang kapag ang linya na ito ay pinaandar, 346 00:26:50,410 --> 00:26:54,290 at pagkatapos na ito - ang mangyayari pagkatapos linya ay makakakuha pinaandar. 347 00:26:54,290 --> 00:27:00,340 Matapos ang elemento sa index s.size access. 348 00:27:00,340 --> 00:27:07,260 At na hindi kung ano ang gusto namin, dahil gusto naming pagbabawas ang mangyari muna. 349 00:27:07,260 --> 00:27:10,990 Othewise, kami ay pagpunta sa ma-access ang array, epektibo, sa labas ng mga hanggahan. 350 00:27:10,990 --> 00:27:16,850 Kami ay pagpunta sa access sa elemento sa itaas ang isa na aktwal na namin nais na i-access. 351 00:27:16,850 --> 00:27:23,840 Oo, Sam? >> Ba ito nang mas mabilis o gumamit ng mas RAM sa isang linya o hindi? 352 00:27:23,840 --> 00:27:29,620 [Hardison] totoo lang, ito ay talagang dumedepende. 353 00:27:29,620 --> 00:27:34,220 [Sam, hindi maintindihan] >> Oo, depende. Maaari mong gawin ang mga trick tagatala 354 00:27:34,220 --> 00:27:41,580 upang makuha ang tagatala upang makilala na, karaniwang, isipin ko. 355 00:27:41,580 --> 00:27:44,840 >> Kaya namin ang nabanggit nang kaunti tungkol sa mga bagay-optimize tagatala 356 00:27:44,840 --> 00:27:47,400 na maaari mong gawin sa kino-compile, 357 00:27:47,400 --> 00:27:50,580 at na ang uri ng bagay na tagatala maaaring upang malaman kung, 358 00:27:50,580 --> 00:27:54,710 tulad ng oh, hey, maaaring ang maaari kong gawin ito ang lahat ng sa isang operasyon, 359 00:27:54,710 --> 00:27:59,420 kumpara sa paglo-load ng laki variable in mula sa RAM, 360 00:27:59,420 --> 00:28:03,770 decrementing ito, pag-imbak nito ay umurong, at pagkatapos ay naglo-load ang mga ito pabalik sa muli 361 00:28:03,770 --> 00:28:08,000 upang iproseso ang natitirang bahagi ng operasyon na ito. 362 00:28:08,000 --> 00:28:10,710 Ngunit karaniwan, hindi, ito ay hindi ang uri ng bagay 363 00:28:10,710 --> 00:28:20,770 na upang gumawa ng iyong programa makabuluhang mas mabilis. 364 00:28:20,770 --> 00:28:26,000 Anumang higit pang mga katanungan sa stack? 365 00:28:26,000 --> 00:28:31,360 >> Kaya pagtulak at popping. Kung ikaw guys ay nais na subukan ang Hacker edition, 366 00:28:31,360 --> 00:28:33,660 kung ano ang ginawa namin sa edisyon Hacker ay aktwal na nawala 367 00:28:33,660 --> 00:28:37,670 at ginawa stack ito palaguin dynamic. 368 00:28:37,670 --> 00:28:43,190 Ang hamon may pangunahing hanggang dito sa push function na, 369 00:28:43,190 --> 00:28:48,820 upang malaman kung paano gumawa ng array na palaguin 370 00:28:48,820 --> 00:28:52,450 habang patuloy mong itulak ang higit pa at higit pang mga elemento ng stack. 371 00:28:52,450 --> 00:28:56,000 Ito ay aktwal na hindi masyadong maraming karagdagang code. 372 00:28:56,000 --> 00:29:00,080 Isang tawag lamang sa - mayroon kang tandaan upang makakuha ng mga tawag sa malloc sa doon maayos, 373 00:29:00,080 --> 00:29:03,310 at pagkatapos malaman kung kapag ikaw ay tumawag realloc. 374 00:29:03,310 --> 00:29:06,090 Iyon ay isang masaya hamon kung interesado ka. 375 00:29:06,090 --> 00:29:11,550 >> Ngunit para sa oras, sabihin ilipat sa, at sabihin makipag-usap tungkol sa queues. 376 00:29:11,550 --> 00:29:15,680 Mag-scroll sa pamamagitan dito. 377 00:29:15,680 --> 00:29:19,340 Queue ay isang malapit na kapatid ng stack. 378 00:29:19,340 --> 00:29:25,380 Kaya sa stack, bagay na ilalagay sa huling 379 00:29:25,380 --> 00:29:28,810 ay ang unang bagay sa pagkatapos makuha. 380 00:29:28,810 --> 00:29:33,600 Mayroon kaming ito huling sa, una ang, o LIFO, pag-order. 381 00:29:33,600 --> 00:29:38,390 Sapagkat sa queue, bilang gusto mong asahan mula sa kapag ikaw ay nakatayo sa linya, 382 00:29:38,390 --> 00:29:41,980 ang unang tao upang makakuha ng sa linya, ang unang bagay na upang makakuha ng sa queue, 383 00:29:41,980 --> 00:29:47,630 ay ang unang bagay na maipo-nabawi mula sa queue. 384 00:29:47,630 --> 00:29:51,490 Queues din ang mga madalas na ginagamit kapag kami ay pagharap sa graph, 385 00:29:51,490 --> 00:29:55,560 tulad ng usapan natin ang tungkol maikling sa mga stack, 386 00:29:55,560 --> 00:30:00,260 at queues din ang mga madaling-gamiting para sa isang grupo ng iba pang mga bagay. 387 00:30:00,260 --> 00:30:06,180 Ang isang bagay ay madalas ay sinusubukan upang mapanatili, halimbawa, 388 00:30:06,180 --> 00:30:12,310 pinagsunod-sunod na listahan ng mga elemento. 389 00:30:12,310 --> 00:30:17,650 At maaari mong gawin ito na may isang array. Maaari mong mapanatili ang isang pinagsunod-sunod na listahan ng mga bagay sa isang array, 390 00:30:17,650 --> 00:30:20,650 ngunit kung saan na hindi nakakaabala nakakalito pagkatapos palagi kang may upang makahanap ng 391 00:30:20,650 --> 00:30:26,160 ang naaangkop na lugar upang ipasok ang susunod na bagay. 392 00:30:26,160 --> 00:30:28,250 Kaya kung mayroon kang isang hanay ng mga numero, 1 hanggang 10, 393 00:30:28,250 --> 00:30:31,630 at pagkatapos ay nais mong upang palawakin na sa lahat ng mga numero 1 sa pamamagitan ng 100, 394 00:30:31,630 --> 00:30:33,670 at ikaw ay nakakakuha ng mga bilang na ito sa random na pagkakasunod-sunod at sinusubukan upang panatilihin ang lahat 395 00:30:33,670 --> 00:30:40,650 pinagsunod-sunod bilang pumunta ka sa pamamagitan ng, magtapos ka kinakailangang gawin ng maraming ng paglilipat. 396 00:30:40,650 --> 00:30:43,910 Sa ilang mga uri ng mga queues at ilang mga uri ng mga kalakip na kaayusan ng data, 397 00:30:43,910 --> 00:30:46,670 maaari mong aktwal na panatilihin ang mga ito sa medyo simple. 398 00:30:46,670 --> 00:30:50,640 Hindi mo upang magdagdag ng isang bagay at pagkatapos ay magbago ng ayos ang buong bagay sa bawat oras. 399 00:30:50,640 --> 00:30:56,770 Ni mayroon ka na gawin ng maraming ng paglilipat ng panloob na elemento sa paligid. 400 00:30:56,770 --> 00:31:02,990 Kapag tinitingnan namin sa queue, makita na - sa queue.c din sa ang code sa seksyon - 401 00:31:02,990 --> 00:31:10,950 ang struct na binigyan ka namin ng talaga katulad sa struct na ibinigay namin sa iyo para sa isang stack. 402 00:31:10,950 --> 00:31:13,770 >> Mayroong isang pagbubukod na ito, at na ang isang pagbubukod 403 00:31:13,770 --> 00:31:21,700 na mayroon kaming ito ng karagdagang integer na tinatawag na sa ulo, 404 00:31:21,700 --> 00:31:28,120 at ang ulo dito ay para sa pagpapanatili ng track ng ulo ng queue, 405 00:31:28,120 --> 00:31:32,160 o sa unang elemento sa queue. 406 00:31:32,160 --> 00:31:37,470 Sa pamamagitan ng isang stack, nagawa naming upang subaybayan ang mga elemento na kami ay tungkol sa upang mabawi, 407 00:31:37,470 --> 00:31:40,800 o sa tuktok ng stack, gamit lamang ang laki, 408 00:31:40,800 --> 00:31:44,220 kung saan may isang queue, nagkakaroon kami ng humarap sa tapat dulo. 409 00:31:44,220 --> 00:31:49,000 Sinusubukan namin sa tak bagay sa dulo, ngunit pagkatapos ay bumalik ang mga bagay mula sa front. 410 00:31:49,000 --> 00:31:54,640 Kaya epektibo, na may ulo, mayroon kaming index ng simula ng queue, 411 00:31:54,640 --> 00:31:58,920 at laki ay nagbibigay sa amin ang index ng pagtatapos ng queue 412 00:31:58,920 --> 00:32:03,730 upang maaari naming makuha ang mga bagay mula sa ulo at magdagdag ng mga bagay sa buntot. 413 00:32:03,730 --> 00:32:06,890 Sapagkat may sa stack, kami ay lamang sa pagharap sa tuktok ng stack. 414 00:32:06,890 --> 00:32:08,900 Hindi namin ay may upang ma-access sa ilalim ng stack. 415 00:32:08,900 --> 00:32:12,220 Lamang kami ay nagdagdag ng mga bagay sa itaas at kinuha bagay off ng tuktok 416 00:32:12,220 --> 00:32:17,470 kaya hindi namin kailangan na dagdag na patlang sa loob ng aming struct. 417 00:32:17,470 --> 00:32:20,590 Ba na pangkalahatang may kabuluhan? 418 00:32:20,590 --> 00:32:27,670 Ayos lang. Oo, Charlotte? [Charlotte, hindi maintindihan] 419 00:32:27,670 --> 00:32:32,660 [Hardison] Iyon ay isang mahusay na tanong, at iyon ay isa na dumating sa panayam. 420 00:32:32,660 --> 00:32:36,290 Siguro paglalakad sa pamamagitan ng ilang mga halimbawa ay ilarawan kung bakit 421 00:32:36,290 --> 00:32:41,400 hindi namin nais na gumamit ng mga string [0] bilang ang ulo ng queue. 422 00:32:41,400 --> 00:32:46,770 >> Kaya isipin na namin ang aming queue, kami ay pagpunta sa tumawag ito queue. 423 00:32:46,770 --> 00:32:49,210 Sa simula, kapag kami instantiated ito, 424 00:32:49,210 --> 00:32:53,330 kapag namin ang ipinahayag ito, hindi pa namin nasimulan ang anumang. 425 00:32:53,330 --> 00:32:56,790 Ang lahat ng basura. Kaya siyempre gusto namin upang matiyak na namin initialize 426 00:32:56,790 --> 00:33:00,950 parehong laki at ang ulo mga patlang sa 0, isang bagay na makatwirang. 427 00:33:00,950 --> 00:33:05,770 Din namin sige at null ang mga elemento sa aming queue. 428 00:33:05,770 --> 00:33:09,930 At upang gawin ang diagram akma, mapapansin na ngayon ang aming queue ay maaari lamang maghawak ng tatlong elemento; 429 00:33:09,930 --> 00:33:13,150 kung saan ang aming stack maaaring humawak apat, ang aming queue maaari lamang hold ang tatlo. 430 00:33:13,150 --> 00:33:18,680 At ito lamang ay upang gawin ang diagram akma. 431 00:33:18,680 --> 00:33:26,150 Ang unang bagay na mangyayari dito ay namin enqueue ang string "hi". 432 00:33:26,150 --> 00:33:30,380 At tulad lang ginawa namin sa mga stack, walang labis ibang dito, 433 00:33:30,380 --> 00:33:39,230 magtapon namin ang string sa string [0] at dagdagan ang aming laki ng 1. 434 00:33:39,230 --> 00:33:42,720 Enqueue namin "bye", ito ay makakakuha ng ilagay sa. 435 00:33:42,720 --> 00:33:45,870 Kaya ito mukhang isang stack para sa pinaka-bahagi. 436 00:33:45,870 --> 00:33:53,230 Nagsimula off namin dito, ang mga bagong elemento, ang mga bagong elemento, laki mapigil ang pagpunta up. 437 00:33:53,230 --> 00:33:56,330 Ano ang mangyayari sa puntong ito kapag gusto naming dequeue ng isang bagay? 438 00:33:56,330 --> 00:34:01,280 Kapag gusto naming dequeue, na kung saan ay ang sangkap na nais naming dequeue? 439 00:34:01,280 --> 00:34:04,110 [Basil] string [0]. >> Zero. Akmang-akma, Basil. 440 00:34:04,110 --> 00:34:10,960 Gusto naming upang makakuha ng mapupuksa ng unang string, ang isang ito, "hi". 441 00:34:10,960 --> 00:34:13,170 Kaya kung ano ang iba pang mga bagay na ay nagbago? 442 00:34:13,170 --> 00:34:17,010 Mapansin kapag pop namin ang isang bagay ng stack, namin lamang ay nagbago ang laki, 443 00:34:17,010 --> 00:34:22,080 ngunit dito, Mayroon kami ng ilang mga bagay na pagbabago. 444 00:34:22,080 --> 00:34:27,440 Hindi lamang ang ipinapakita ng pagbabago ng laki, ngunit ang mga pagbabago ng ulo. 445 00:34:27,440 --> 00:34:31,020 Ito ay pagpunta pabalik sa punto ng Charlotte ng mas maaga: 446 00:34:31,020 --> 00:34:38,699 bakit namin ito ulo pati na rin? 447 00:34:38,699 --> 00:34:42,110 Ba kabuluhan ngayon, Charlotte? >> Uri ng. 448 00:34:42,110 --> 00:34:47,500 [Hardison] Uri ng? Kaya kung ano ang nangyari kapag kami dequeued? 449 00:34:47,500 --> 00:34:54,340 Ano ang ulo ang gawin na ngayon ay kawili-wili? 450 00:34:54,340 --> 00:34:56,449 [Charlotte] Oh, sapagkat ito ay nagbago - okay. Ganoon pala. 451 00:34:56,449 --> 00:35:02,090 Dahil ang ulo - kung saan ang ulo ay tumuturo sa mga pagbabago sa mga tuntunin ng lokasyon. 452 00:35:02,090 --> 00:35:07,200 Ito ay hindi na laging zero index isa. >> Oo, eksakto. 453 00:35:07,200 --> 00:35:17,660 Ano ang nangyari ay kung dequeueing ang mataas na elemento 454 00:35:17,660 --> 00:35:20,590 ay tapos na at hindi namin ulo field na ito 455 00:35:20,590 --> 00:35:26,880 dahil palagi naming ay pagtawag ang string na ito sa 0 index ang ulo ng aming queue, 456 00:35:26,880 --> 00:35:30,170 nais naming upang ilipat ang iba ng queue. 457 00:35:30,170 --> 00:35:36,010 Gusto namin sa shift ang "bye" mula string [1] sa string [0]. 458 00:35:36,010 --> 00:35:38,760 At string [2] pababa sa string [1]. 459 00:35:38,760 --> 00:35:43,050 At gusto namin upang gawin ito para sa buong listahan ng mga elemento, 460 00:35:43,050 --> 00:35:45,110 ang buong hanay ng mga elemento. 461 00:35:45,110 --> 00:35:50,490 At kapag ginagawa namin ito sa isang array, na nakakakuha ng talagang mahal. 462 00:35:50,490 --> 00:35:53,340 Sa dito, ito ay hindi sang-ayon. Lang namin ay may tatlong elemento sa aming array. 463 00:35:53,340 --> 00:35:57,230 Ngunit kung nagkaroon kami ng queue ng isang libong mga elemento o isang milyong mga elemento, 464 00:35:57,230 --> 00:36:00,060 at pagkatapos ang lahat ng isang biglaang, sisimulan namin ang paggawa ng grupo ng dequeue tawag lahat sa isang loop, 465 00:36:00,060 --> 00:36:03,930 mga bagay ay talagang na pabagalin bilang nagbabago ang lahat down na patuloy. 466 00:36:03,930 --> 00:36:07,320 Alam mo, shift ng 1, shift ng 1, shift ng 1, shift ng 1. 467 00:36:07,320 --> 00:36:13,650 Sa halip, ginagamit namin ang ulo na ito, tinatawag naming isang "pointer" kahit na ito ay hindi talagang isang pointer 468 00:36:13,650 --> 00:36:16,430 sa mahigpit na kahulugan; ito ay hindi isang uri ng pointer. 469 00:36:16,430 --> 00:36:19,410 Ito ay hindi isang int * o magpasinda * o anumang bagay tulad na. 470 00:36:19,410 --> 00:36:28,930 Ngunit ito pagturo o nagpapahiwatig ang ulo ng aming queue. Oo? 471 00:36:28,930 --> 00:36:38,800 >> [Mag-aaral] Paano malaman ang dequeue lamang pop-off ang anumang sa ulo? 472 00:36:38,800 --> 00:36:43,620 [Hardison] Paano gumagana ang dequeue malaman kung paano mag-pop-off ang kahit anong sa ulo? >> Karapatan, oo. 473 00:36:43,620 --> 00:36:49,050 >> Ano ito tumitingin sa lamang ang anumang field sa ulo ay nakatakda sa. 474 00:36:49,050 --> 00:36:52,710 Kaya sa unang kaso, kung tiningnan namin dito mismo, 475 00:36:52,710 --> 00:36:55,690 0, index 0 ang aming ulo. >> Karapatan. 476 00:36:55,690 --> 00:37:00,500 [Hardison] Kaya sabi lang ito okay, well, ang elemento sa index 0, ang string "hi", 477 00:37:00,500 --> 00:37:03,050 ang elemento sa pinuno ng aming queue. 478 00:37:03,050 --> 00:37:05,570 Kaya kami ay pagpunta sa dequeue na tao. 479 00:37:05,570 --> 00:37:09,800 At na elemento na maipo ibinalik sa tumatawag. 480 00:37:09,800 --> 00:37:14,540 Oo, Saad? >> Kaya ulo talaga nagtatakda ng - kung saan ka pupunta sa index ito? 481 00:37:14,540 --> 00:37:17,750 Na ang simula ng? >> Oo. >> Okay. 482 00:37:17,750 --> 00:37:22,900 [Hardison] Iyon ay maging ang bagong panimula para sa aming mga array. 483 00:37:22,900 --> 00:37:28,930 Kaya kapag dequeue ka ng isang bagay, ang lahat ng kailangan mong gawin ay ma-access ang elemento sa index q.head, 484 00:37:28,930 --> 00:37:32,240 at iyon ay ang sangkap na nais mong dequeue. 485 00:37:32,240 --> 00:37:34,930 Mayroon ka ring pagbawas sa laki. 486 00:37:34,930 --> 00:37:39,430 Susubukan naming makita sa isang bit kung saan ang mga bagay ay makakuha ng isang maliit na nakakalito na ito. 487 00:37:39,430 --> 00:37:46,520 Dequeue namin, at ngayon, kung enqueue namin muli, 488 00:37:46,520 --> 00:37:51,300 kung saan namin enqueue? 489 00:37:51,300 --> 00:37:55,000 Kung saan ay ang susunod na elemento sa aming queue? 490 00:37:55,000 --> 00:37:57,980 Natin na nais naming enqueue ang string na "CS". 491 00:37:57,980 --> 00:38:02,240 Sa kung saan index ay ito pumunta? [Mag-aaral] string [2]. >> Dalawang. 492 00:38:02,240 --> 00:38:04,980 Bakit 2 at hindi 0? 493 00:38:04,980 --> 00:38:13,570 [Basil] Dahil ngayon ulo ay 1, kaya na tulad ng simula ng listahan? 494 00:38:13,570 --> 00:38:21,220 [Hardison] Kanan. At kung ano ang Nagpapahiwatig ang dulo ng listahan? 495 00:38:21,220 --> 00:38:23,290 Ano ang naming gamitin upang tukuyin ang pagtatapos ng aming queue? 496 00:38:23,290 --> 00:38:25,970 Ulo ay ang pinuno ng aming queue, ang simula ng aming queue. 497 00:38:25,970 --> 00:38:29,530 Ano ang dulo ng aming queue? [Mag-aaral] Laki. >> Sukat, eksakto. 498 00:38:29,530 --> 00:38:36,360 Kaya ang aming bagong elemento pumunta sa sa laki, at ang mga elemento na lubos naming off sa ulo. 499 00:38:36,360 --> 00:38:45,390 Kapag enqueue namin sa susunod na elemento, kami ay paglalagay ng ito sa sa laki. 500 00:38:45,390 --> 00:38:48,530 [Mag-aaral] Bago mo ilagay sa bagaman, laki ay 1, i-right? 501 00:38:48,530 --> 00:38:55,690 [Hardison] Kanan. Kaya hindi pa sa laki. + Laki, hindi +1, ngunit ang + ulo. 502 00:38:55,690 --> 00:38:59,990 Dahil Paglipat namin ang lahat sa pamamagitan ng ang halaga ng ulo. 503 00:38:59,990 --> 00:39:14,270 Kaya dito, ngayon kami nakakuha ng queue ng laki 1 na nagsisimula sa index 1. 504 00:39:14,270 --> 00:39:20,730 Buntot ay index 2. Oo? 505 00:39:20,730 --> 00:39:25,780 >> [Mag-aaral] Ano ang mangyayari kapag ka dequeue string [0], at ang mga string 'slot sa memory 506 00:39:25,780 --> 00:39:29,420 lamang makapag-emptied, talaga, o nakalimutan? 507 00:39:29,420 --> 00:39:34,700 [Hardison] Oo. Sa puntong ito, kami ay forgetting kanila. 508 00:39:34,700 --> 00:39:42,640 Kung tayo ay sa pag-iimbak ng mga kopya sa kanila para sa - 509 00:39:42,640 --> 00:39:46,310 maraming data istraktura ay madalas na iimbak ang kanilang sariling mga kopya ng mga elemento 510 00:39:46,310 --> 00:39:51,760 sa gayon na ang mga tao sa pamamahala sa data na istraktura ay hindi mag-alala 511 00:39:51,760 --> 00:39:53,650 tungkol sa kung saan ang lahat ng mga payo ay pagpunta. 512 00:39:53,650 --> 00:39:56,000 Hold ng istraktura ang data sa lahat, pagpipigil sa sa lahat ng mga kopya, 513 00:39:56,000 --> 00:39:59,580 upang tiyakin na ang lahat ay nagpatuloy naaangkop. 514 00:39:59,580 --> 00:40:03,140 Gayunpaman, sa kasong ito, ang mga data kaayusan lamang, simple, 515 00:40:03,140 --> 00:40:05,580 ay hindi gumagawa ng mga kopya ng anumang bagay na namin ang pag-iimbak ng sa kanila. 516 00:40:05,580 --> 00:40:08,630 [Mag-aaral] Kaya ito ay isang tuloy-tuloy na array ng -? >> Oo. 517 00:40:08,630 --> 00:40:14,350 Kung titingnan namin sa kung ano ang kahulugan ng istrakturang ito, ito ay. 518 00:40:14,350 --> 00:40:19,110 Ito ay isang karaniwang array tulad na iyong nakita, 519 00:40:19,110 --> 00:40:24,280 isang array ng magpasinda * s. 520 00:40:24,280 --> 00:40:26,340 Sinusuportahan ba na -? >> Oo, lamang ako ay nagtataka 521 00:40:26,340 --> 00:40:29,130 kung kalaunan maubusan ng memory, sa isang tiyak na lawak, 522 00:40:29,130 --> 00:40:32,330 kung mayroon kang lahat ng mga walang laman na mga spot sa iyong array? 523 00:40:32,330 --> 00:40:36,390 [Hardison] Oo, na isang magandang punto. 524 00:40:36,390 --> 00:40:41,530 >> Kung titingnan namin sa kung ano ang nangyari ngayon sa puntong ito, 525 00:40:41,530 --> 00:40:46,350 namin na puno ang aming queue, mukhang. 526 00:40:46,350 --> 00:40:50,390 Ngunit hindi pa namin talagang puno ang aming queue 527 00:40:50,390 --> 00:40:57,710 dahil mayroon kami ng queue na laki 2, ngunit nagsisimula sa index 1, 528 00:40:57,710 --> 00:41:02,160 dahil na kung saan ang aming ulo pointer. 529 00:41:02,160 --> 00:41:08,400 Tulad mo ay sinasabi, na elemento sa string [0], sa index 0, ay hindi talaga doon. 530 00:41:08,400 --> 00:41:10,450 Hindi ito sa aming queue. 531 00:41:10,450 --> 00:41:16,460 Lang namin ay hindi abala upang pumunta sa at patungan ito kapag dequeued namin ito. 532 00:41:16,460 --> 00:41:18,700 Kaya kahit na mukhang kami maubusan ng memory, hindi namin talagang. 533 00:41:18,700 --> 00:41:23,270 Sa lugar na iyon ay magagamit para sa amin upang gamitin. 534 00:41:23,270 --> 00:41:29,310 Ang naaangkop na pag-uugali, kung kami ay upang subukan at unang dequeue isang bagay 535 00:41:29,310 --> 00:41:34,420 bang "bye", na pop bye off. 536 00:41:34,420 --> 00:41:38,460 Ngayon ang aming queue nagsisimula sa index 2 at ng laki 1. 537 00:41:38,460 --> 00:41:42,240 At ngayon kung namin subukan at enqueue ang isang bagay muli, sabihin ang 50, 538 00:41:42,240 --> 00:41:47,880 50 dapat pumunta sa ang lugar na ito sa index 0 539 00:41:47,880 --> 00:41:51,270 dahil ito ay magagamit pa rin para sa amin. Oo, Saad? 540 00:41:51,270 --> 00:41:53,630 [Saad] ba na mangyari awtomatikong? 541 00:41:53,630 --> 00:41:56,150 [Hardison] Hindi ito mangyayari medyo awtomatikong. Kailangan mong gawin ang matematika 542 00:41:56,150 --> 00:42:00,380 upang gawin itong gumagana, ngunit mahalagang kung ano ang namin ang nagawa lamang namin na nakabalot sa paligid. 543 00:42:00,380 --> 00:42:04,070 [Saad] At ito okay kung ito ay may butas sa gitna nito? 544 00:42:04,070 --> 00:42:08,720 [Hardison] Ito ay kung maaari kaming magsagawa ng matematika sa ehersisyo ang maayos. 545 00:42:08,720 --> 00:42:15,470 >> At lumiliko ito na na aktwal na hindi na mahirap gawin sa mga operator ng mod. 546 00:42:15,470 --> 00:42:20,040 Kaya lang tulad ng ginawa namin sa Caesar at ang crypto bagay, 547 00:42:20,040 --> 00:42:25,190 gamit ang mod, maaari naming makakuha ng mga bagay sa I-wrap sa paligid at panatilihin ang pagpunta 548 00:42:25,190 --> 00:42:28,090 sa paligid at sa paligid at sa paligid sa aming queue, 549 00:42:28,090 --> 00:42:32,180 pinapanatili na ang ulo pointer paglipat sa paligid. 550 00:42:32,180 --> 00:42:38,840 Pansinin na laki ay palaging alang ang numero ng mga elemento na aktwal na sa loob ng queue. 551 00:42:38,840 --> 00:42:43,110 At ang pointer ng ulo na mapigil ang umiikot sa pamamagitan ng. 552 00:42:43,110 --> 00:42:49,660 Kung titingnan namin sa kung ano ang nangyari dito, kung pumunta namin pabalik sa simula, 553 00:42:49,660 --> 00:42:55,020 at ka lamang manood ng kung ano ang mangyayari sa ulo 554 00:42:55,020 --> 00:42:58,240 kapag enqueue kaming isang bagay, walang nangyari sa ulo. 555 00:42:58,240 --> 00:43:00,970 Kapag enqueued namin ang iba pa, walang nangyari sa ulo. 556 00:43:00,970 --> 00:43:04,130 Lalong madaling namin dequeued isang bagay, ang ulo naging up ng isa. 557 00:43:04,130 --> 00:43:06,600 Namin enqueued isang bagay, walang mangyayari sa ulo. 558 00:43:06,600 --> 00:43:11,060 Kapag dequeue kaming isang bagay, ang lahat ng isang biglaang ang ulo ay makakakuha incremented. 559 00:43:11,060 --> 00:43:14,660 Kapag enqueue kaming isang bagay, walang mangyayari sa ulo. 560 00:43:14,660 --> 00:43:20,240 >> Kung ano ang mangyayari sa puntong ito kung hindi kami sa dequeue ang isang bagay muli? 561 00:43:20,240 --> 00:43:23,240 Anumang saloobin? Kung ano ang mangyayari sa ulo? 562 00:43:23,240 --> 00:43:27,190 Ano ang dapat mangyayari sa ulo 563 00:43:27,190 --> 00:43:32,990 kung kami ay upang dequeue iba pa? 564 00:43:32,990 --> 00:43:35,400 Ulo Ang ngayon ay sa index 2, 565 00:43:35,400 --> 00:43:38,920 na nangangahulugan na ang ulo ng queue ay mga string [2]. 566 00:43:38,920 --> 00:43:44,280 [Mag-aaral] Aling nagbabalik 0? >> Dapat itong bumalik sa 0. Dapat itong pambalot ng pabalik sa paligid, eksakto. 567 00:43:44,280 --> 00:43:48,440 Sa ngayon, bawat oras na namin tinatawag dequeue, kami ay pagdaragdag ng isa sa ulo, 568 00:43:48,440 --> 00:43:50,960 magdagdag ng isa sa ulo, magdagdag ng isa sa ulo, magdagdag ng isa sa ulo. 569 00:43:50,960 --> 00:43:58,400 Sa lalong madaling panahon na ang ulo pointer ay nakakakuha sa huling index sa aming array, 570 00:43:58,400 --> 00:44:05,650 mayroon kaming sa I-wrap ang mga ito pabalik sa paligid sa simula, bumalik sa 0. 571 00:44:05,650 --> 00:44:09,900 [Charlotte] Ano ang tumutukoy ang kapasidad ng queue sa isang stack? 572 00:44:09,900 --> 00:44:13,120 [Hardison] Sa kasong ito, lamang namin ang ginagamit # tinukoy pare-pareho. >> Okay. 573 00:44:13,120 --> 00:44:19,590 [Hardison] Sa ang aktwal na file na. C, maaari kang pumunta sa at putik sa ilang sandali 574 00:44:19,590 --> 00:44:21,710 at gawin itong bilang malaki o kasing liit ng nais mong. 575 00:44:21,710 --> 00:44:25,310 [Charlotte] Kaya kapag nagsasagawa ka ng ito sa isang queue, kung paano mo computer alam 576 00:44:25,310 --> 00:44:29,120 kung gaano kalaki ang nais mong stack na? 577 00:44:29,120 --> 00:44:31,700 [Hardison] Iyon ay isang mahusay na tanong. 578 00:44:31,700 --> 00:44:34,800 Mayroong ilang mga paraan. Isa ay upang tukuyin lamang ito na front 579 00:44:34,800 --> 00:44:42,050 at sabihin ito ng queue na may 4 na elemento o 50 elemento o 10,000. 580 00:44:42,050 --> 00:44:45,430 Ang iba pang paraan ay upang gawin kung ano ang mga tao sa edisyon ng Hacker ginagawa 581 00:44:45,430 --> 00:44:52,310 at lumikha ng mga function sa iyong queue palaguin ang dynamic ng higit pang mga bagay makapag idinagdag. 582 00:44:52,310 --> 00:44:54,740 >> [Charlotte] Kaya upang pumunta sa ang unang opsyon, kung ano ang syntax mo gamitin 583 00:44:54,740 --> 00:44:57,830 upang sabihin sa programa kung ano ang laki ng queue? 584 00:44:57,830 --> 00:45:04,780 [Hardison] Ah. Kaya sabihin ng ito. 585 00:45:04,780 --> 00:45:12,650 Ako pa rin sa stack.c dito, kaya lang ako pagpunta sa mag-scroll pataas sa tuktok dito. 586 00:45:12,650 --> 00:45:17,920 Maaari mong makita ito dito mismo? Ito ang # tukuyin ang kapasidad 10. 587 00:45:17,920 --> 00:45:24,600 At ito ay halos ang eksaktong parehong syntax na mayroon kami para sa queue. 588 00:45:24,600 --> 00:45:28,390 Maliban sa queue, namin ang nakuha na ang dagdag na field sa struct in dito. 589 00:45:28,390 --> 00:45:32,760 [Charlotte] Oh, naisip ko na kapasidad ang nilalayong ang kapasidad para sa string. 590 00:45:32,760 --> 00:45:36,770 [Hardison] Ah. >> Na ito ay ang maximum na haba ng salita. >> Nakuha ko. 591 00:45:36,770 --> 00:45:41,180 Oo. Ang kapasidad dito - na isang mahusay na punto. 592 00:45:41,180 --> 00:45:44,000 At ito ay isang bagay na nakakalito 593 00:45:44,000 --> 00:45:49,480 dahil kung ano ang namin ang ipinahayag dito ay isang hanay ng magpasinda * s. 594 00:45:49,480 --> 00:45:52,770 Isang array ng mga payo. 595 00:45:52,770 --> 00:45:56,690 Ito ay isang hanay ng mga karakter. 596 00:45:56,690 --> 00:46:01,690 Marahil ito ay kung ano ang nakita mo kapag na deklarasyon ang iyong mga buffers para sa file I / O, 597 00:46:01,690 --> 00:46:06,840 kapag ikaw ay paglikha ng string nang manu-mano sa stack. 598 00:46:06,840 --> 00:46:09,090 Gayunpaman, kung ano ang namin ang nakuha dito ay isang hanay ng magpasinda * s. 599 00:46:09,090 --> 00:46:13,400 Kaya ito ay isang array ng mga payo. 600 00:46:13,400 --> 00:46:18,350 Aktwal na, kung namin mag-zoom out at tinitingnan namin kung anong nangyayari sa dito 601 00:46:18,350 --> 00:46:23,140 sa pagtatanghal, makikita mo na ang aktwal na elemento, ang mga character na data 602 00:46:23,140 --> 00:46:26,180 ay hindi na naka-imbak sa loob ng array mismo. 603 00:46:26,180 --> 00:46:42,690 Ano ang naka-imbak sa loob ng aming array dito pointer sa ang data ng character. 604 00:46:42,690 --> 00:46:52,560 Okay. Kaya nasaksihan namin kung paano ang laki ng queue tulad ng stack, 605 00:46:52,560 --> 00:46:58,670 laki ang palaging Nirerespeto ng numero ng mga elemento kasalukuyang sa queue. 606 00:46:58,670 --> 00:47:02,720 Pagkatapos paggawa ng 2 enqueues, laki ay 2. 607 00:47:02,720 --> 00:47:07,110 Pagkatapos ng paggawa ng isang dequeue laki na ngayon ang 1. 608 00:47:07,110 --> 00:47:09,330 Pagkatapos ng paggawa ng isa pang enqueue ang laki ay bumalik hanggang sa 2. 609 00:47:09,330 --> 00:47:12,340 Kaya ang laki ang talagang nirerespeto ng numero ng mga elemento sa queue, 610 00:47:12,340 --> 00:47:15,580 at pagkatapos ulo lamang mapigil ang cycling. 611 00:47:15,580 --> 00:47:20,210 Napupunta mula sa 0-1-2, 0-1-2, 0-1-2. 612 00:47:20,210 --> 00:47:25,620 At bawat oras na tinatawag naming dequeue, ang ulo ang pointer ay makakakuha incremented sa susunod na index. 613 00:47:25,620 --> 00:47:29,930 At kung ang ulo ay tungkol sa upang pumunta sa paglipas ng, loop bumalik sa paligid upang 0. 614 00:47:29,930 --> 00:47:34,870 Kaya na iyon, maaari naming isulat ang dequeue function na. 615 00:47:34,870 --> 00:47:40,200 At kami ay umalis sa enqueue function na para sa iyo guys ipatupad sa halip. 616 00:47:40,200 --> 00:47:45,880 >> Kapag dequeue namin ang isang elemento ng aming queue, 617 00:47:45,880 --> 00:47:55,490 kung ano ang unang bagay na ginawa ng Daniel kapag nagsimula kaming sumulat sa pop function para sa mga stack? 618 00:47:55,490 --> 00:48:00,490 Hayaan akong marinig mula sa isang tao na hindi binabanggit pa. 619 00:48:00,490 --> 00:48:06,710 Natin makita, Saad, huwag mo matandaan kung ano ang Daniel ay ginawa bilang ang unang bagay na kapag siya sinulat ni pop? 620 00:48:06,710 --> 00:48:08,860 [Saad] May ay, ito ay - >> Siya sinubukan para sa isang bagay. 621 00:48:08,860 --> 00:48:12,140 [Saad] Kung ang laki ay mas malaki kaysa sa 0. >> Mismong. 622 00:48:12,140 --> 00:48:14,390 At kung ano na pagsubok para sa? 623 00:48:14,390 --> 00:48:19,090 [Saad] Iyon ay sa pagsubok upang makita kung mayroong anumang bagay sa loob ng array. 624 00:48:19,090 --> 00:48:23,210 [Hardison] Oo. Eksakto. Kaya hindi mo maaaring pop anumang ng stack kung ito ay walang laman. 625 00:48:23,210 --> 00:48:26,510 Gayundin, hindi mo maaaring dequeue anumang bagay mula sa isang queue kung ito ay walang laman. 626 00:48:26,510 --> 00:48:30,420 Ano ang unang bagay na dapat naming gawin sa aming dequeue function na dito, tingin mo? 627 00:48:30,420 --> 00:48:33,860 [Saad] Kung ang laki ay mas malaki kaysa sa 0? >> Oo. 628 00:48:33,860 --> 00:48:37,710 Sa kasong ito, aktwal ko na lang nasubukan upang makita kung ito ay 0. 629 00:48:37,710 --> 00:48:42,240 Kung ito ay 0, maaari naming ibalik null. 630 00:48:42,240 --> 00:48:45,280 Ngunit eksaktong parehong logic. 631 00:48:45,280 --> 00:48:49,110 At hayaan ang magpatuloy sa ito. 632 00:48:49,110 --> 00:48:54,600 Kung ang laki ay hindi 0, kung saan ay ang mga elemento na gusto naming dequeue? 633 00:48:54,600 --> 00:48:58,550 [Saad] Sa ulo? >> Mismong. 634 00:48:58,550 --> 00:49:01,720 Maaari lang namin hilahin ang unang elemento sa aming queue 635 00:49:01,720 --> 00:49:07,040 sa pamamagitan ng pag-access sa elemento sa ulo. 636 00:49:07,040 --> 00:49:14,630 Walang mabaliw. 637 00:49:14,630 --> 00:49:19,620 Pagkatapos nito, kung ano ang dapat naming gawin? Ano ang mangyari? 638 00:49:19,620 --> 00:49:23,740 Ano ang iba pang mga bagay na usapan natin ang tungkol sa dequeue? 639 00:49:23,740 --> 00:49:28,130 Dalawang bagay ay may mangyari, dahil ang aming queue ay nagbago. 640 00:49:28,130 --> 00:49:35,640 [Daniel] Bawasan ang laki. >> Mayroon kaming upang bawasan ang laki, at dagdagan ang ulo? Eksakto. 641 00:49:35,640 --> 00:49:40,600 Upang dagdagan ang ulo, hindi lang namin nang walang taros taasan ang ulo, tandaan. 642 00:49:40,600 --> 00:49:45,080 Hindi lamang namin maaaring gawin queue.head + +. 643 00:49:45,080 --> 00:49:51,630 Mayroon kaming ring isama ito mod ng kapasidad. 644 00:49:51,630 --> 00:49:54,740 At bakit namin mod ng kapasidad, Stella? 645 00:49:54,740 --> 00:49:58,680 [Stella] Dahil sa I-wrap sa paligid. >> Mismong. 646 00:49:58,680 --> 00:50:04,750 Mod namin sa pamamagitan ng ang kapasidad dahil mayroon itong pambalot ng bumalik sa paligid upang 0. 647 00:50:04,750 --> 00:50:07,400 Kaya ngayon, sa puntong ito, maaari naming gawin kung ano ang Daniel sinabi. 648 00:50:07,400 --> 00:50:12,700 Maaari namin ang pagbawas sa laki. 649 00:50:12,700 --> 00:50:29,170 At pagkatapos ay maaari naming ibalik ang elemento na sa tuktok ng queue. 650 00:50:29,170 --> 00:50:34,000 Ganito ang uri ng pili-pilipit sa unang. Maaaring mayroon ka ng isang katanungan. Paumanhin? 651 00:50:34,000 --> 00:50:37,260 >> [Sam] Bakit ang unang sa tuktok ng queue? Kung saan ay na pumunta? 652 00:50:37,260 --> 00:50:42,480 [Hardison] ay mula sa ika-apat na linya mula sa ibaba. 653 00:50:42,480 --> 00:50:46,060 Pagkatapos naming subukan ang upang matiyak na ang aming queue ay hindi walang laman, 654 00:50:46,060 --> 00:50:54,100 namin hilahin ang magpasinda * una, hindi namin hilahin ang mga elemento na sitting sa index ng ulo 655 00:50:54,100 --> 00:50:58,680 sa aming mga array, ng aming mga string ng >> array, at tawag na unang? 656 00:50:58,680 --> 00:51:04,500 [Hardison] At tinatawag naming muna ito. Oo. 657 00:51:04,500 --> 00:51:09,850 Lang i-follow up sa na, bakit ka sa tingin namin ay upang gawin iyon? 658 00:51:09,850 --> 00:51:18,270 [Sam] bawat unang bumabalik q.strings [q.head]? >> Oo. 659 00:51:18,270 --> 00:51:23,830 >> Dahil ginagawa namin ito nagbabagong ng q.head sa mga katangian ng mod, 660 00:51:23,830 --> 00:51:27,810 at walang paraan upang gawin iyon sa loob ng return line din. 661 00:51:27,810 --> 00:51:31,640 [Hardison] Mismong. Ikaw lugar sa. Sam ay lubos na kawili-sa. 662 00:51:31,640 --> 00:51:36,800 Ang dahilan kung bakit nagkaroon kami upang hilahin ang unang elemento sa aming queue at mag-imbak ang mga ito sa isang variable 663 00:51:36,800 --> 00:51:43,030 ay dahil ang linya na ito kung saan lang namin ay q.head, 664 00:51:43,030 --> 00:51:47,030 ang mod operator doon ay hindi isang bagay na maaari naming gawin 665 00:51:47,030 --> 00:51:51,230 at ito epekto sa ulo walang - sa isang linya. 666 00:51:51,230 --> 00:51:54,480 Kaya namin aktwal upang hilahin ang unang elemento, at pagkatapos ay ayusin ang ulo, 667 00:51:54,480 --> 00:52:00,430 ayusin ang laki, at pagkatapos ay ibalik ang elemento na nakuha namin ang. 668 00:52:00,430 --> 00:52:02,680 At ito ay isang bagay na namin makita ay hanggang sa ibang pagkakataon gamit 669 00:52:02,680 --> 00:52:04,920 naka-link na listahan, tulad ng i-play sa paligid namin sa kanila. 670 00:52:04,920 --> 00:52:08,410 Madalas kapag ikaw ay pagbabakante o disposing ng mga naka-link na listahan 671 00:52:08,410 --> 00:52:13,500 kailangan mong matandaan ang susunod na elemento, ang susunod na pointer ng isang naka-link na listahan 672 00:52:13,500 --> 00:52:16,330 bago disposing ng kasalukuyang. 673 00:52:16,330 --> 00:52:23,580 Dahil kung hindi mo itapon ang impormasyon ng kung ano ang naiwan sa listahan. 674 00:52:23,580 --> 00:52:34,160 Ngayon, kung pumunta ka sa iyong appliance, binuksan mo queue.c--x ng ito. 675 00:52:34,160 --> 00:52:39,390 Kaya kung buksan ko queue.c, hayaan mo akong mag-zoom in dito, 676 00:52:39,390 --> 00:52:44,970 makikita mo na mayroon kang isang file na may katulad na anyo. 677 00:52:44,970 --> 00:52:49,200 Katulad na anyo file sa kung ano ang nagkaroon kami mas maaga may stack.c. 678 00:52:49,200 --> 00:52:54,690 Mayroon kaming ang aming struct para sa queue tinukoy tulad ng nakita natin sa mga slide. 679 00:52:54,690 --> 00:52:59,870 >> Mayroon kaming ang aming enqueue function na kung saan ay para sa iyo na gawin. 680 00:52:59,870 --> 00:53:04,340 At mayroon kaming ang dequeue function na dito. 681 00:53:04,340 --> 00:53:06,870 Ang Ang dequeue function sa file unimplemented, 682 00:53:06,870 --> 00:53:13,230 ngunit ko bang ilagay ito pabalik sa PowerPoint sa gayon ay maaari mong i-type ito sa, kung nais mong. 683 00:53:13,230 --> 00:53:16,690 Kaya para sa susunod na 5 minuto o kaya, guys sa enqueue 684 00:53:16,690 --> 00:53:22,570 na kung saan ay halos sa tapat ng dequeue. 685 00:53:22,570 --> 00:53:29,560 Hindi mo upang ayusin ang ulo kapag ikaw ay enqueueing, ngunit ano ang gagawin upang ayusin? 686 00:53:29,560 --> 00:53:38,920 Laki. Kaya kapag ikaw enqueue, ulo ay mananatiling hindi nagalaw, laki ay makakakuha ng nagbago. 687 00:53:38,920 --> 00:53:46,920 Ngunit ito ay tumagal ng ilang sandali ng - ay mayroon kang upang i-play sa paligid na mod 688 00:53:46,920 --> 00:53:57,560 upang malaman kung eksakto kung ano ang index ang mga bagong elemento ay dapat ipasok sa. 689 00:53:57,560 --> 00:54:03,080 Kaya Bibigyan kita ng guys ng kaunti, ilagay dequeue-back up sa slide, 690 00:54:03,080 --> 00:54:05,200 at ng mga ka guys ay may mga katanungan, shout out ang mga ito sa gayon maaari naming 691 00:54:05,200 --> 00:54:09,220 lahat ng talk tungkol sa mga ito bilang isang grupo. 692 00:54:09,220 --> 00:54:13,960 Gayundin, na may laki don't - kapag mong ayusin ang laki, maaari mong laging lamang - 693 00:54:13,960 --> 00:54:18,720 mo man sa mod ang laki? [Daniel] No. >> Hindi mo na kailangang mod ang laki, sa kanan. 694 00:54:18,720 --> 00:54:24,260 Dahil laki ay palaging, kung you're - ipagpalagay ka sa pamamahala ng mga bagay angkop, 695 00:54:24,260 --> 00:54:30,840 laki ay palaging magiging sa pagitan ng 0 at 3. 696 00:54:30,840 --> 00:54:38,680 Kung saan mayroon kang sa mod kapag ginagawa mo enqueue? 697 00:54:38,680 --> 00:54:41,060 [Mag-aaral] Tanging para sa ulo. >> Tanging para sa ulo, eksakto. 698 00:54:41,060 --> 00:54:44,620 At bakit mayroon kang mod sa lahat sa enqueue? 699 00:54:44,620 --> 00:54:48,830 Kapag ang isang sitwasyon na kung saan kailangan mong i-mod? 700 00:54:48,830 --> 00:54:53,630 [Mag-aaral] Kung mayroon kang mga bagay-bagay sa espasyo, i sa puwang 1 at 2, 701 00:54:53,630 --> 00:54:55,950 at pagkatapos ay kailangan upang magdagdag ng isang bagay sa 0. 702 00:54:55,950 --> 00:55:02,570 [Hardison] Oo, eksakto. Kaya kung ang iyong ulo pointer sa pinakadulo, 703 00:55:02,570 --> 00:55:14,210 o kung ang iyong laki kasama ang iyong ulo ay mas malaki, o sa halip, ay pagpunta sa I-wrap sa paligid ng queue. 704 00:55:14,210 --> 00:55:17,830 >> Kaya sa sitwasyong ito namin Mayroon dito sa slide ngayon, 705 00:55:17,830 --> 00:55:24,370 kung gusto kong enqueue ng isang bagay na ngayon, 706 00:55:24,370 --> 00:55:31,110 gusto naming upang enqueue ang isang bagay sa index 0. 707 00:55:31,110 --> 00:55:35,450 Kaya't kung tiningnan mo sa kung saan ang 50 pupunta, at tumawag ako enqueue 50, 708 00:55:35,450 --> 00:55:40,840 pupunta pababa doon sa ibaba. Napupunta sa index 0. 709 00:55:40,840 --> 00:55:44,160 Pumapalit sa 'hi' na ay na dequeued. 710 00:55:44,160 --> 00:55:46,210 [Daniel] Huwag mong gawin pangangalaga ng na sa dequeue na? 711 00:55:46,210 --> 00:55:50,550 Bakit ang gumawa ng anumang bagay na may ulo sa enqueue? 712 00:55:50,550 --> 00:55:55,770 [Hardison] Oh, kaya hindi ka ng pagbabago sa ulo, paumanhin. 713 00:55:55,770 --> 00:56:02,310 Ngunit mayroon kang gamitin ang operator ng mod kapag ina-access mo 714 00:56:02,310 --> 00:56:04,250 elemento na gusto mong i-enqueue kapag ina-access mo 715 00:56:04,250 --> 00:56:06,960 ang susunod na elemento sa iyong queue. 716 00:56:06,960 --> 00:56:10,960 [Basil] Hindi ko iyon, at Nakatanggap ako ng "tagumpay" sa may. 717 00:56:10,960 --> 00:56:13,370 [Daniel] Oh, Nauunawaan ko kung ano ang iyong sinasabi. 718 00:56:13,370 --> 00:56:16,240 [Hardison] Kaya didn't mo - ginawa mo lang sa q.size? 719 00:56:16,240 --> 00:56:20,670 [Basil] Oo. Ko lang ay nagbago na gilid, hindi ko gawin kasama ang ulo. 720 00:56:20,670 --> 00:56:24,300 [Hardison] hindi mo aktwal na i-reset ang ulo na ang anumang, 721 00:56:24,300 --> 00:56:31,650 ngunit kapag ikaw ay index sa array string, 722 00:56:31,650 --> 00:56:39,500 iyong aktwal na upang magpatuloy at kalkulahin kung saan ang susunod na elemento, 723 00:56:39,500 --> 00:56:44,230 dahil tuod ang stack, ang susunod na sangkap sa iyong stack ay palaging 724 00:56:44,230 --> 00:56:48,740 sa index ng naaayon sa laki. 725 00:56:48,740 --> 00:56:55,850 Kung titingnan namin hanggang sa aming stack push function na, 726 00:56:55,850 --> 00:57:03,100 kami palaging kalabitin ang kuwerdas sa aming bagong elemento karapatan sa laki ng index. 727 00:57:03,100 --> 00:57:06,710 Sapagkat sa pila, hindi namin maaaring gawin iyon 728 00:57:06,710 --> 00:57:10,340 dahil kung hindi kami sa sitwasyong ito, 729 00:57:10,340 --> 00:57:18,130 kung enqueued namin ng 50 aming bagong string ay pumunta karapatan sa string [1] 730 00:57:18,130 --> 00:57:20,540 na hindi namin nais na gawin. 731 00:57:20,540 --> 00:57:41,200 Gusto naming ang bagong string na pumunta sa index 0. 732 00:57:41,200 --> 00:57:44,320 >> Sinusuportahan ba ng sinuman - oo? [Mag-aaral] Mayroon akong tanong ngunit hindi talagang may kaugnayan. 733 00:57:44,320 --> 00:57:48,160 Ano ang ibig sabihin kapag may isang taong nag-tawag lamang ng isang bagay tulad ng pred pointer? 734 00:57:48,160 --> 00:57:51,260 Ano ang pangalan na maikli para sa? Alam ko lang ng pangalan. 735 00:57:51,260 --> 00:57:59,110 [Hardison] Pred pointer? Natin makita. Sa anong konteksto? 736 00:57:59,110 --> 00:58:01,790 [Mag-aaral] Ito ay para sa insert. Maaari kong hilingin mo sa ibang pagkakataon kung gusto mo 737 00:58:01,790 --> 00:58:03,920 dahil hindi ito talagang may kaugnayan, ngunit ko lang - 738 00:58:03,920 --> 00:58:07,300 [Hardison] Mula ipasok ang code David mula sa panayam? 739 00:58:07,300 --> 00:58:10,860 Namin hilahin na up at makipag-usap tungkol sa na. 740 00:58:10,860 --> 00:58:15,550 Susubukan naming makipag-usap tungkol sa na susunod, sa sandaling makuha namin sa naka-link na listahan. 741 00:58:15,550 --> 00:58:21,440 >> Kaya sabihin mabilis talaga tingnan kung ano ang enqueue function na kamukha. 742 00:58:21,440 --> 00:58:26,530 Ano ang unang bagay na ang mga tao sinubukan upang gawin sa iyong enqueue linya? Sa ang queue na ito? 743 00:58:26,530 --> 00:58:29,960 Katulad sa kung ano ang ginawa mo para sa stack pagtulak. 744 00:58:29,960 --> 00:58:32,080 Ano ang ginawa mo, Stella? 745 00:58:32,080 --> 00:58:35,050 [Stella, hindi maintindihan] 746 00:58:35,050 --> 00:58:45,700 [Hardison] Mismong. Kung (q.size == kapasidad) - 747 00:58:45,700 --> 00:58:54,720 Kailangan ko bang ilagay ang aking mga tirante sa tamang lugar - bumalik false. 748 00:58:54,720 --> 00:59:01,370 Mag-zoom sa ilang sandali. Okay. 749 00:59:01,370 --> 00:59:03,800 Ngayon kung ano ang susunod na bagay na nagkaroon kami gawin? 750 00:59:03,800 --> 00:59:11,370 Tulad ng stack, at ipinasok sa tamang lugar. 751 00:59:11,370 --> 00:59:16,010 At kaya kung ano ang tamang lugar upang ipasok na? 752 00:59:16,010 --> 00:59:23,170 Sa stack na ito index laki, na may hindi pa na. 753 00:59:23,170 --> 00:59:30,210 [Daniel] Mayroon akong q.head--o - q.strings >>? >> Oo. 754 00:59:30,210 --> 00:59:40,470 q.strings [q.head + q.size mod kapasidad]? 755 00:59:40,470 --> 00:59:42,740 [Hardison] gusto namin marahil upang ilagay ang mga panaklong sa paligid ng 756 00:59:42,740 --> 00:59:48,830 kaya na namin ang pagkuha ng naaangkop na mangingibabaw at iba pa na cleart sa lahat. 757 00:59:48,830 --> 00:59:55,800 At nakatakda na katumbas? >> Upang STR? >> Upang STR. Mahusay. 758 00:59:55,800 --> 01:00:00,160 At ngayon kung ano ang huling bagay na mayroon kaming gawin? 759 01:00:00,160 --> 01:00:06,780 Lamang tulad ng ginawa namin sa stack. >> Pagdaragdag sa laki? >> Dagdagan ang laki. 760 01:00:06,780 --> 01:00:13,830 Boom. At pagkatapos, dahil ang starter code ibinalik maling sa pamamagitan ng default, 761 01:00:13,830 --> 01:00:27,460 Gusto namin upang baguhin ito sa totoo kung ang lahat ng Dumadaan at lahat ng napupunta na rin. 762 01:00:27,460 --> 01:00:33,050 Ayos lang. Na ang isang maraming impormasyon para sa seksyon. 763 01:00:33,050 --> 01:00:39,480 Humihingi kami ng hindi pa sa paglipas. Gusto naming makipag-usap talagang mabilis tungkol sa mga listahan ng nai-link sa isa-isa. 764 01:00:39,480 --> 01:00:44,010 Makikita ko bang ilagay ito up upang maaari naming bumalik dito sa ibang pagkakataon. 765 01:00:44,010 --> 01:00:50,850 Ngunit hayaan ng bumalik sa aming presentasyon para lamang ng ilang higit pang mga slide. 766 01:00:50,850 --> 01:00:53,790 Kaya enqueue ay TODO, ngayon tapos kami na ito. 767 01:00:53,790 --> 01:00:57,430 >> Ngayon sabihin tumagal ng isang pagtingin sa mga isa-isa-naka-link na listahan. 768 01:00:57,430 --> 01:01:00,040 Usapan natin ang tungkol sa mga ito ng kaunti higit pa sa panayam. 769 01:01:00,040 --> 01:01:02,540 Gaano karaming ng ka guys nakita ang demo kung saan nagkaroon kami ng mga tao 770 01:01:02,540 --> 01:01:08,220 awkwardly na nakaturo sa bawat isa at Holding numero? >> Ako ay sa na. 771 01:01:08,220 --> 01:01:16,620 >> Ano mo guys sa tingin? Ba na, sana demystify mga ilang sandali? 772 01:01:16,620 --> 01:01:25,990 Sa isang listahan, lumiliko out na harapin namin na may ganitong uri na kami ay pagpunta sa tumawag sa isang node. 773 01:01:25,990 --> 01:01:32,520 Sapagkat sa queue at ang stack nagkaroon kami structs na gusto naming tumawag ng queue sa stack, 774 01:01:32,520 --> 01:01:34,860 nagkaroon kami ng mga bagong queue sa mga uri ng stack, 775 01:01:34,860 --> 01:01:39,240 dito ang listahan ay talagang ginawa ng isang bungkos ng mga node. 776 01:01:39,240 --> 01:01:45,920 Sa parehong paraan na ang mga string ay lamang ng grupo ng char ang lahat ng naka-linya sa tabi ng bawat isa. 777 01:01:45,920 --> 01:01:50,650 Isang naka-link na listahan ay lamang node at isa pang node at isa pang node at isa pang node. 778 01:01:50,650 --> 01:01:55,080 At sa halip na mapanira ang lahat ng mga node at pag-imbak ang mga ito contiguously 779 01:01:55,080 --> 01:01:58,090 lahat ng karapatan sa tabi sa bawat isa sa memorya, 780 01:01:58,090 --> 01:02:04,470 pagkakaroon ng susunod na pointer na ito ay nagbibigay-daan sa amin upang iimbak ang mga node saanman, sa random. 781 01:02:04,470 --> 01:02:10,500 At pagkatapos ay ang uri ng wire ang lahat ng mga ito nang magkasama upang tumuro mula sa isa sa susunod na. 782 01:02:10,500 --> 01:02:15,850 >> At kung ano ang malaking kalamangan na ito ay may higit sa isang array? 783 01:02:15,850 --> 01:02:21,680 Sa paglipas ng pag-iimbak ng lahat contiguously lang natigil sa tabi sa bawat isa? 784 01:02:21,680 --> 01:02:24,190 Naaalala? Oo? >> Dynamic na memory paglalaan? 785 01:02:24,190 --> 01:02:27,220 >> Dynamic memory paglalaan sa kung ano ang kahulugan? 786 01:02:27,220 --> 01:02:31,780 [Mag-aaral] Sa na maaari mong patuloy na ginagawa itong mas malaki at hindi mo na kailangang ilipat ang iyong buong array? 787 01:02:31,780 --> 01:02:40,940 [Hardison] Mismong. Kaya may isang array, kapag gusto mong maglagay ng bagong elemento sa gitna ng, 788 01:02:40,940 --> 01:02:45,320 mayroon kang upang ilipat ang lahat upang gumawa ng puwang. 789 01:02:45,320 --> 01:02:47,880 At tulad ng usapan natin ang tungkol sa pila, 790 01:02:47,880 --> 01:02:50,080 na kung bakit namin na panatilihin ang pointer ng ulo, 791 01:02:50,080 --> 01:02:52,050 sa gayon ay hindi namin patuloy na paglilipat ng mga bagay. 792 01:02:52,050 --> 01:02:54,520 Dahil na nakakakuha ng mahal kung mayroon kang isang malaking array 793 01:02:54,520 --> 01:02:57,130 at patuloy na ikaw ay gumagawa ng mga random na pagpapasok. 794 01:02:57,130 --> 01:03:00,820 Sapagkat may isang listahan, ang lahat ng kailangan mong gawin ay magtapon ang mga ito sa isang bagong node, 795 01:03:00,820 --> 01:03:06,330 ayusin ang mga payo, at tapos ka na. 796 01:03:06,330 --> 01:03:10,940 Ano ang sucks tungkol dito? 797 01:03:10,940 --> 01:03:16,830 Bukod sa ang katotohanan na ito ay hindi bilang madaling upang gumana sa bilang isang array? Oo? 798 01:03:16,830 --> 01:03:22,980 [Daniel] Well, hulaan ko ito ay mas mahirap upang ma-access ang isang partikular na elemento sa naka-link na listahan? 799 01:03:22,980 --> 01:03:30,470 [Hardison] hindi lamang ka maaaring lumipat sa isang arbitrary na elemento sa gitna ng iyong listahan ng naka-link. 800 01:03:30,470 --> 01:03:33,800 Paano mo gawin ito sa halip? >> Mayroon kang sa hakbang sa pamamagitan ng buong bagay. 801 01:03:33,800 --> 01:03:35,660 [Hardison] Oo. Mayroon kang pumunta sa pamamagitan ng isa sa isang pagkakataon, isa sa isang pagkakataon. 802 01:03:35,660 --> 01:03:38,480 Ito ay isang malaking - ito ay isang sakit. 803 01:03:38,480 --> 01:03:41,550 Ano ang iba pa - may isa pang nakasira sa. 804 01:03:41,550 --> 01:03:45,340 [Basil] Hindi ka maaaring pumunta pasulong at pabalik? Mayroon kang mag-isa direksyon? 805 01:03:45,340 --> 01:03:48,570 [Hardison] Oo. Kaya kung paano namin malutas na, minsan? 806 01:03:48,570 --> 01:03:53,370 [Basil] doble-naka-link listahan? >> Mismong. May doble na naka-link listahan. 807 01:03:53,370 --> 01:03:55,540 Mayroon ding - paumanhin? 808 01:03:55,540 --> 01:03:57,620 >> [Sam] ba na katulad ng paggamit ng pred bagay na - 809 01:03:57,620 --> 01:04:01,090 Ko lang remembered, ay hindi na kung ano ang pred bagay ay para sa? 810 01:04:01,090 --> 01:04:05,850 Ay hindi na sa pagitan ng doble at isa-isa? 811 01:04:05,850 --> 01:04:10,020 [Hardison] tingnan natin kung ano ang eksaktong siya ay ginagawa. 812 01:04:10,020 --> 01:04:15,760 Kaya dito namin pumunta. Narito ang listahan code. 813 01:04:15,760 --> 01:04:25,620 Narito mayroon namin predptr, in dito. Ba ito kung ano ang pinag-uusapan? 814 01:04:25,620 --> 01:04:30,750 Kaya ito ay - niya pagbabakante isang listahan at siya ay sinusubukan upang mag-imbak ng pointer dito. 815 01:04:30,750 --> 01:04:35,000 Ito ay hindi ang doble, isa-isa naka-link na listahan. 816 01:04:35,000 --> 01:04:40,090 Maaari naming makipag-usap nang higit pa tungkol sa mamaya dahil ito ay pakikipag-usap tungkol sa pagbabakante ang listahan 817 01:04:40,090 --> 01:04:42,900 at gusto kong ipakita ang ilang iba pang mga bagay-bagay sa unang. 818 01:04:42,900 --> 01:04:51,480 ngunit ito lang - alala ito ang halaga ng ptr 819 01:04:51,480 --> 01:04:54,170 [Mag-aaral] Oh, preceeding pointer? >> Oo. 820 01:04:54,170 --> 01:05:04,070 Upang maaari naming pagkatapos ay dagdagan ang ptr sarili bago namin pagkatapos libreng kung ano ang predptr ay. 821 01:05:04,070 --> 01:05:09,130 Dahil hindi namin libreng ptr at pagkatapos ay tumawag ptr = ptr susunod, i-right? 822 01:05:09,130 --> 01:05:11,260 Na masama. 823 01:05:11,260 --> 01:05:20,940 Kaya sabihin makita, ito tao. 824 01:05:20,940 --> 01:05:23,900 >> Ang iba pang masamang bagay tungkol sa listahan ay na kung saan may isang array 825 01:05:23,900 --> 01:05:26,520 lang namin ang lahat ng mga elemento nakasalansan ang kanilang mga sarili sa tabi ng bawat isa, 826 01:05:26,520 --> 01:05:29,050 dito din namin ipinakilala pointer na ito. 827 01:05:29,050 --> 01:05:34,060 Kaya ay may karagdagang tipak ng memorya na kami ay kinakailangang gamitin 828 01:05:34,060 --> 01:05:37,910 para sa bawat elemento na namin ang pag-iimbak sa aming listahan. 829 01:05:37,910 --> 01:05:40,030 Makuha namin ng kakayahang umangkop, ngunit ito ay sa isang gastos. 830 01:05:40,030 --> 01:05:42,230 May cost oras na ito, 831 01:05:42,230 --> 01:05:45,270 at ito ay may ito gastos ng memory. 832 01:05:45,270 --> 01:05:47,800 Oras sa kamalayan na namin ngayon upang pumunta sa pamamagitan ng bawat elemento sa array 833 01:05:47,800 --> 01:05:58,670 upang mahanap ang isa sa index 10, o na maaaring naging index 10 sa isang array. 834 01:05:58,670 --> 01:06:01,230 >> Lamang talagang mabilis, kapag diagram namin ang mga listahang ito, 835 01:06:01,230 --> 01:06:05,980 karaniwang hawak namin sa pinuno ng listahan o unang pointer ng listahan 836 01:06:05,980 --> 01:06:08,010 at tandaan na ito ay isang tunay na pointer. 837 01:06:08,010 --> 01:06:11,100 Ito ay may 4 bytes. Ito ay hindi isang aktwal na node mismo. 838 01:06:11,100 --> 01:06:17,120 Kaya mong makita na ito ay walang int halaga sa ito, walang susunod na pointer sa. 839 01:06:17,120 --> 01:06:20,790 Ito ay literal lamang ang pointer. 840 01:06:20,790 --> 01:06:23,550 Ito ay upang tumuro sa isang bagay na ay isang aktwal na struct node. 841 01:06:23,550 --> 01:06:28,480 [Sam] node na tinatawag na Ang isang pointer? >> Na ito ay - walang. Ito ay isang pointer sa isang bagay ng uri ng node. 842 01:06:28,480 --> 01:06:32,540 Ito ay isang pointer sa isang struct node. >> Oh, okay. 843 01:06:32,540 --> 01:06:36,870 Diagram sa kaliwa, code sa kanan. 844 01:06:36,870 --> 01:06:42,190 Maaari naming itakda ito sa null, kung saan ay isang mahusay na paraan upang simulan ang. 845 01:06:42,190 --> 01:06:49,850 Kapag diagram mo ito, alinman sa sumulat ito bilang null o kang maglagay ng linya sa pamamagitan nito gusto na. 846 01:06:49,850 --> 01:06:53,910 >> Ang isa sa mga pinakamadaling paraan upang gumana sa listahan, 847 01:06:53,910 --> 01:06:57,430 at hinihiling namin mo parehong prepend at ikabit upang makita ang mga pagkakaiba sa pagitan ng dalawang, 848 01:06:57,430 --> 01:07:01,320 ngunit prepending ay talagang madali. 849 01:07:01,320 --> 01:07:05,790 Kapag nag-prepend, ito ay kung saan mo - kapag ikaw prepend (7), 850 01:07:05,790 --> 01:07:10,050 kang pumunta at lumikha ng node struct 851 01:07:10,050 --> 01:07:13,870 at itinakda mo ang unang upang tumuro sa ito, dahil ngayon, dahil prepended namin ito, 852 01:07:13,870 --> 01:07:17,240 ito sa simula ng listahan. 853 01:07:17,240 --> 01:07:22,540 Kung namin prepend (3), na lumilikha ng isa pang node, ngunit ngayon 3 ay bago 7. 854 01:07:22,540 --> 01:07:31,130 Kaya mahalagang namin ang pagtulak ng mga bagay papunta sa aming listahan. 855 01:07:31,130 --> 01:07:34,720 Ngayon, maaari mong makita na prepend, minsan mga tao na tumawag ito itulak, 856 01:07:34,720 --> 01:07:39,600 dahil ka itulak ang isang bagong elemento sa iyong listahan. 857 01:07:39,600 --> 01:07:43,270 Ring madaling tanggalin sa harap ng isang listahan. 858 01:07:43,270 --> 01:07:45,650 Kaya mga tao ay madalas na tumawag na pop. 859 01:07:45,650 --> 01:07:52,200 At sa paraan na iyon, maaari mong tularan ng stack gamit ang isang naka-link na listahan. 860 01:07:52,200 --> 01:07:57,880 Whoops. Paumanhin, ngayon kami ay nakakakuha sa Magkabit. Kaya dito namin prepended (7), na namin ngayon prepend (3). 861 01:07:57,880 --> 01:08:02,600 Kung prepended namin ang iba pa papunta sa listahang ito, kung namin prepended (4), 862 01:08:02,600 --> 01:08:06,540 nais naming 4 at pagkatapos ay 3 at pagkatapos ay 7. 863 01:08:06,540 --> 01:08:14,220 Kaya kami pop at alisin 4, alisin 3, alisin ang 7. 864 01:08:14,220 --> 01:08:16,500 Madalas ang mas magaling na paraan upang isipin ang tungkol sa may Magkabit. 865 01:08:16,500 --> 01:08:20,310 Kaya ko na diagrammed kung ano ang hitsura nito ay magiging tulad ng may ikabit ang dito. 866 01:08:20,310 --> 01:08:23,380 Dito, ikinakabit ang (7) ay hindi tumingin sa anumang ibang 867 01:08:23,380 --> 01:08:25,160 dahil may isa lamang elemento sa listahan. 868 01:08:25,160 --> 01:08:28,620 At appending (3) Inilalagay ng ito sa dulo. 869 01:08:28,620 --> 01:08:31,020 Marahil, maaari mong makita ngayon ang nanlilinlang may Magkabit 870 01:08:31,020 --> 01:08:36,600 ay na dahil lamang namin alam kung saan sa simula ng listahan, 871 01:08:36,600 --> 01:08:39,450 upang isama sa isang listahan na mayroon kang maglakad ang lahat ng mga paraan sa pamamagitan ng listahan 872 01:08:39,450 --> 01:08:46,500 upang makakuha ng sa dulo, itigil, pagkatapos ay bumuo ng iyong node at lahat ng kalabitin ang kuwerdas down na. 873 01:08:46,500 --> 01:08:50,590 Wire ang lahat ng mga bagay-bagay. 874 01:08:50,590 --> 01:08:55,170 Kaya sa prepend, namin lamang natastas sa pamamagitan na ito ay talagang mabilis, 875 01:08:55,170 --> 01:08:58,170 kapag prepend ka sa isang listahan, medyo simple. 876 01:08:58,170 --> 01:09:02,960 >> Gumawa ka ng iyong bagong node, sangkot ilang dynamic na paglalaan ng memorya. 877 01:09:02,960 --> 01:09:09,830 Kaya dito ginagawa namin ng node struct gamit ang malloc. 878 01:09:09,830 --> 01:09:14,710 Kaya malloc ginagamit namin dahil na makikita magtabi memory para sa amin para sa ibang pagkakataon 879 01:09:14,710 --> 01:09:20,350 dahil hindi namin nais na ito - gusto naming memory ito upang magpumilit para sa isang mahabang panahon. 880 01:09:20,350 --> 01:09:25,350 At makakuha kami ng isang pointer sa espasyo sa memory na inilalaan namin lamang. 881 01:09:25,350 --> 01:09:29,260 Ginagamit namin ang laki ng node, hindi namin sabihin sa ilang mga patlang. 882 01:09:29,260 --> 01:09:31,899 Hindi kami mano-manong bumuo ng ang bilang ng mga byte, 883 01:09:31,899 --> 01:09:39,750 sa halip na ginagamit namin sizeof kaya na alam namin na kami ay pagkuha ng naaangkop na bilang ng mga byte. 884 01:09:39,750 --> 01:09:43,660 Sigurado kami upang subukan na nagtagumpay ang aming malloc tawag. 885 01:09:43,660 --> 01:09:47,939 Ito ay isang bagay na gusto mong gawin sa pangkalahatan. 886 01:09:47,939 --> 01:09:52,590 Sa modernong machine, nauubusan ng memory ay hindi isang bagay na madali 887 01:09:52,590 --> 01:09:56,610 maliban kung ikaw ay paglaan ng isang tonelada ng mga bagay-bagay at gumawa ng isang malaking listahan, 888 01:09:56,610 --> 01:10:02,220 ngunit kung ikaw ay pagbuo ng mga bagay-bagay para sa, sabihin nating, tulad ng iPhone o Android, 889 01:10:02,220 --> 01:10:05,230 mo ng limitadong mga mapagkukunan ng memorya, lalo na kung ikaw ay paggawa ng isang bagay matinding. 890 01:10:05,230 --> 01:10:08,300 Kaya ito ay mahusay na upang makakuha ng sa kasanayan. 891 01:10:08,300 --> 01:10:10,510 >> Pansinin na ginamit ko na ng ilang iba't ibang mga function dito 892 01:10:10,510 --> 01:10:12,880 na nakita mo na uri ng mga bagong. 893 01:10:12,880 --> 01:10:15,870 Kaya fprintf tulad printf 894 01:10:15,870 --> 01:10:21,320 maliban nito unang argumento ang stream na kung saan nais mong i-print. 895 01:10:21,320 --> 01:10:23,900 Sa kasong ito, gusto naming i-print sa karaniwang string ng error 896 01:10:23,900 --> 01:10:29,410 na kung saan ay naiiba mula sa karaniwang outstream. 897 01:10:29,410 --> 01:10:31,620 Sa pamamagitan ng default na ito ay nagpapakita sa parehong lugar. 898 01:10:31,620 --> 01:10:34,600 Din ito ng mga Kopya sa terminal, ngunit maaari mong - 899 01:10:34,600 --> 01:10:38,790 paggamit ng mga utos na iyong natutunan tungkol sa, ang mga diskarte sa pag-redirect 900 01:10:38,790 --> 01:10:42,290 natutunan mo tungkol sa Tommy ng video para sa problema set 4, maaari mong idirekta ang mga ito 901 01:10:42,290 --> 01:10:47,900 sa iba't ibang lugar; pagkatapos ay lumabas, dito mismo, mga labasan ng iyong programa. 902 01:10:47,900 --> 01:10:50,440 Ito ay mahalagang tulad ng mga bumabalik na mula sa pangunahing, 903 01:10:50,440 --> 01:10:53,600 maliban gamitin namin exit dahil dito return ay hindi gawin. 904 01:10:53,600 --> 01:10:57,140 Hindi kami sa pangunahing, kaya bumabalik ay hindi lumabas sa programa tulad ng gusto naming. 905 01:10:57,140 --> 01:11:03,020 Kaya gamitin namin sa exit function at bigyan ito ng isang error code. 906 01:11:03,020 --> 01:11:11,890 Pagkatapos dito namin itakda ang halaga ng field sa bagong node, i field nito katumbas ng i, at pagkatapos wire namin ito. 907 01:11:11,890 --> 01:11:15,530 Itinakda namin ang susunod na pointer ang bagong node upang tumuro sa unang, 908 01:11:15,530 --> 01:11:20,460 at pagkatapos ay unang ngayon ituro sa bagong node. 909 01:11:20,460 --> 01:11:25,120 Mga unang linya ng code, aktwal na namin ang pagbuo ng bagong node. 910 01:11:25,120 --> 01:11:27,280 Hindi ang huling dalawang linya ng function na ito ngunit ang unang mga. 911 01:11:27,280 --> 01:11:30,290 Maaari mong aktwal na hilahin sa isang function, sa isang function ng katulong. 912 01:11:30,290 --> 01:11:32,560 Na madalas kung ano ang gagawin ko ay, hilahin ko ito sa isang function, 913 01:11:32,560 --> 01:11:36,040 Tinatawag kong isang bagay tulad ng build node, 914 01:11:36,040 --> 01:11:40,410 at na mapigil ang ang prepend function na medyo maliit, 3 linya lang ang pagkatapos. 915 01:11:40,410 --> 01:11:48,710 Ako makagawa ng isang tawag sa aking build node function na, at pagkatapos ko lahat ng wire up. 916 01:11:48,710 --> 01:11:51,970 >> Ang huling bagay na gusto kong ipakita sa iyo, 917 01:11:51,970 --> 01:11:54,030 at Ipapaalam ko Magkabit ng at ang lahat na sa iyong sariling, 918 01:11:54,030 --> 01:11:57,500 kung paano upang umulit sa isang listahan. 919 01:11:57,500 --> 01:12:00,780 May grupo ng mga iba't ibang mga paraan upang umulit sa isang listahan. 920 01:12:00,780 --> 01:12:03,140 Sa kasong ito, kami ay pagpunta upang mahanap ang haba ng isang listahan. 921 01:12:03,140 --> 01:12:06,570 Kaya sisimulan namin ang haba = 0. 922 01:12:06,570 --> 01:12:11,580 Ito ay lubos na katulad sa pagsusulat strlen para sa isang string. 923 01:12:11,580 --> 01:12:17,780 Ito ay kung ano ang gusto kong ipakita sa iyo, ito para sa loop dito mismo. 924 01:12:17,780 --> 01:12:23,530 Hitsura ay medyo funky, hindi ito ang karaniwang int i = 0, i 01:12:34,920 Sa halip ito ay Sinisimulan ang aming variable n sa simula ng listahan. 926 01:12:34,920 --> 01:12:40,620 At pagkatapos ay habang ang aming iterator variable ay hindi null, panatilihin namin ang pagpunta. 927 01:12:40,620 --> 01:12:46,340 Ito ay dahil, sa pamamagitan ng convention, ang dulo ng aming listahan null. 928 01:12:46,340 --> 01:12:48,770 At pagkatapos ay upang dagdagan, sa halip kaysa sa paggawa + +, 929 01:12:48,770 --> 01:12:57,010 ang naka-link na katumbas ng listahan ng mga + + n = n-> susunod. 930 01:12:57,010 --> 01:13:00,410 >> Ipapaalam ko sa iyo punan sa gaps dito dahil hindi namin ng oras. 931 01:13:00,410 --> 01:13:09,300 Ngunit panatilihin ito sa isip habang ikaw ay gumagana sa iyong psets spellr. 932 01:13:09,300 --> 01:13:11,650 Naka-link na listahan, kung ikaw ay pagpapatupad ng hash table, 933 01:13:11,650 --> 01:13:14,010 ay tiyak na darating sa napaka madaling gamiting. 934 01:13:14,010 --> 01:13:21,780 At pagkakaroon ito kawikaan para sa looping sa paglipas ng mga bagay ay gumawa ng buhay ng maraming mas madali, sana. 935 01:13:21,780 --> 01:13:25,910 Anumang mga katanungan, mabilis? 936 01:13:25,910 --> 01:13:28,920 [Sam] Ay mong ipadala ang nakumpletong sll at SC? 937 01:13:28,920 --> 01:13:38,360 [Hardison] Oo. Magpapadala ako nakumpleto na slide at nakumpleto sll stack at queue.cs. 938 01:13:38,360 --> 01:13:41,360 [CS50.TV]