1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:05,120 [Мусиц плаиинг] 3 00:00:05,120 --> 00:00:12,026 4 00:00:12,026 --> 00:00:12,900 СПЕАКЕР 1: У реду. 5 00:00:12,900 --> 00:00:14,600 Сви добродошли назад у одељак. 6 00:00:14,600 --> 00:00:18,660 Надам се да сте сви успешно сте опоравила од квиза 7 00:00:18,660 --> 00:00:19,510 од прошле недеље. 8 00:00:19,510 --> 00:00:22,564 Знам да је мало луд понекад. 9 00:00:22,564 --> 00:00:25,230 Као што сам раније рекао, ако си унутар стандардне девијације, 10 00:00:25,230 --> 00:00:28,188 заиста не брини о томе, поготово за мање удобан секције. 11 00:00:28,188 --> 00:00:30,230 То је о томе где треба да буде. 12 00:00:30,230 --> 00:00:32,850 >> Ако јесте велики, онда супер. 13 00:00:32,850 --> 00:00:33,650 Кудос то иоу. 14 00:00:33,650 --> 00:00:36,149 И Ако осећате да вам је потребна мало више помоћи, молим вас 15 00:00:36,149 --> 00:00:38,140 слободно да достигне се да било који од ТФС. 16 00:00:38,140 --> 00:00:40,030 Ми смо сви овде да помогнем. 17 00:00:40,030 --> 00:00:40,960 >> Зато смо научити. 18 00:00:40,960 --> 00:00:44,550 Зато сам овде сваког понедељка за вас момци и на канцеларију часова четвртком. 19 00:00:44,550 --> 00:00:48,130 Дакле, слободно ми јавите Ако сте забринути о било чему 20 00:00:48,130 --> 00:00:52,450 или ако постоји нешто на квизу да ли заиста желите да се бави. 21 00:00:52,450 --> 00:00:56,940 >> Тако да дневни ред за данас је све о структурама података. 22 00:00:56,940 --> 00:01:01,520 Неки од њих су само ће бити само да се ти упознати са овим. 23 00:01:01,520 --> 00:01:04,870 Ви не можете никад спровести их у овој класи. 24 00:01:04,870 --> 00:01:08,690 Неки од њих хоћете, као и за ваш спеллер псет. 25 00:01:08,690 --> 00:01:11,380 >> Имаћете избор између хасх табела и покушаја. 26 00:01:11,380 --> 00:01:13,680 Тако да дефинитивно идем преко њих. 27 00:01:13,680 --> 00:01:18,690 То ће бити дефинитивно више врста деонице високом нивоу, ипак, 28 00:01:18,690 --> 00:01:22,630 јер постоји много њих, и ако Ушли смо у детаље имплементацију 29 00:01:22,630 --> 00:01:26,490 на све ово, не би чак се кроз повезане листе 30 00:01:26,490 --> 00:01:28,520 и можда мало хасх табеле. 31 00:01:28,520 --> 00:01:31,200 >> Дакле, носе са мном. 32 00:01:31,200 --> 00:01:33,530 Нећемо да радим колико кодирања овај пут. 33 00:01:33,530 --> 00:01:36,870 Уколико имате било каквих питања о томе или желите да видите да имплементира 34 00:01:36,870 --> 00:01:39,260 или покушајте га за себе, Дефинитивно Препоручујем 35 00:01:39,260 --> 00:01:44,250 ће студи.цс50.нет, који има примере свих ових. 36 00:01:44,250 --> 00:01:46,400 То ће имати своје Поверпоинтс са белешкама које смо 37 00:01:46,400 --> 00:01:50,860 обично користе као и неке програмирање вежбе, поготово за ствари 38 00:01:50,860 --> 00:01:55,250 као повезаним листама и бинарни дрвеће пирамиде и штапови. 39 00:01:55,250 --> 00:01:59,590 Дакле, мало више на високом нивоу, који би било добро за вас. 40 00:01:59,590 --> 00:02:01,320 >> Дакле са тим, ми ћемо да почнемо. 41 00:02:01,320 --> 00:02:03,060 И такође, Да-- квизови. 42 00:02:03,060 --> 00:02:06,550 Мислим да већина вас који су у Мој секција имају своје квизове, 43 00:02:06,550 --> 00:02:12,060 али свако долази у или неког разлога не, они су овде испред. 44 00:02:12,060 --> 00:02:12,740 >> Тако повезани листе. 45 00:02:12,740 --> 00:02:15,650 Знам ову врсту иде да пре него ваш квизу. 46 00:02:15,650 --> 00:02:17,940 То је било пре недељу дана да смо сазнали о томе. 47 00:02:17,940 --> 00:02:21,040 Али у овом случају, само ћемо иди мало више у дубину. 48 00:02:21,040 --> 00:02:25,900 >> Па зашто бисмо могли изабрати Листа повезани преко низа? 49 00:02:25,900 --> 00:02:27,130 Шта их разликује? 50 00:02:27,130 --> 00:02:27,630 Да? 51 00:02:27,630 --> 00:02:30,464 >> ПУБЛИКА: можете проширити повезан список наспрам низ је одређену величину. 52 00:02:30,464 --> 00:02:31,171 СПЕАКЕР 1: Добро. 53 00:02:31,171 --> 00:02:33,970 Низ је одређену величину, док линкед лист има променљиву величину. 54 00:02:33,970 --> 00:02:36,970 Дакле, ако не знамо како колико желимо да сачувате, 55 00:02:36,970 --> 00:02:39,880 линкед лист нам даје велики начин да то урадите, јер можемо да 56 00:02:39,880 --> 00:02:43,730 додати на други чвор и додајте на други чвор и додајте на други чвор. 57 00:02:43,730 --> 00:02:45,750 Али шта може бити компромис? 58 00:02:45,750 --> 00:02:49,521 Да ли се ико сећа се компромис између низова и повезаним листама? 59 00:02:49,521 --> 00:02:50,020 Ммхмм? 60 00:02:50,020 --> 00:02:51,460 >> ПУБЛИКА: Морате проћи кроз све начин 61 00:02:51,460 --> 00:02:53,738 кроз повезане листе пронаћи елемент у листи. 62 00:02:53,738 --> 00:02:55,570 У низу, можете Само наћи елемент. 63 00:02:55,570 --> 00:02:56,278 >> СПЕАКЕР 1: Добро. 64 00:02:56,278 --> 00:02:57,120 Тако је и са арраис-- 65 00:02:57,120 --> 00:02:58,500 >> ПУБЛИКА: [неразумљиво]. 66 00:02:58,500 --> 00:03:01,090 >> СПЕАКЕР 1: са низовима, имамо оно што се зове директног приступа. 67 00:03:01,090 --> 00:03:04,820 Значи да ако желимо оно што је икада пета тачка листе 68 00:03:04,820 --> 00:03:07,230 или пета тачка нашег Арраи, можемо само да га зграби. 69 00:03:07,230 --> 00:03:10,440 Ако је повезан списак, имамо да поновити кроз, зар не? 70 00:03:10,440 --> 00:03:14,020 Дакле, приступање елемент низ је константа време, 71 00:03:14,020 --> 00:03:19,530 док са повезане листе да би највероватније бити линеарна времена јер можда 72 00:03:19,530 --> 00:03:21,370 наш елемент је скроз на крају. 73 00:03:21,370 --> 00:03:23,446 Морамо да тражи кроз све. 74 00:03:23,446 --> 00:03:25,320 Дакле, са свим овим подацима структуре ми идемо 75 00:03:25,320 --> 00:03:29,330 да ће провести мало више времена на, шта су плусеви и негативи. 76 00:03:29,330 --> 00:03:31,480 Када би желимо да користите један преко другог? 77 00:03:31,480 --> 00:03:34,970 И то је некако већа ствар за понети. 78 00:03:34,970 --> 00:03:40,140 >> Тако да овде имамо дефиниција чвора. 79 00:03:40,140 --> 00:03:43,040 То је као један елемент у наша линкед лист, зар не? 80 00:03:43,040 --> 00:03:46,180 Тако да смо сви упознати са нашим типедеф Структуре, 81 00:03:46,180 --> 00:03:47,980 који смо прешли у разматрање последњи пут. 82 00:03:47,980 --> 00:03:53,180 То је у основи је само стварање Друга врста података које смо могли да користимо. 83 00:03:53,180 --> 00:03:57,930 >> И у овом случају, то је неки чвор који ће одржати у цјелину. 84 00:03:57,930 --> 00:04:00,210 И онда шта је ту је други део? 85 00:04:00,210 --> 00:04:03,192 86 00:04:03,192 --> 00:04:05,677 Анионе? 87 00:04:05,677 --> 00:04:06,680 >> ПУБЛИКА: [неразумљиво]. 88 00:04:06,680 --> 00:04:07,020 >> СПЕАКЕР 1: Да. 89 00:04:07,020 --> 00:04:08,400 То је показивач на следећи чвор. 90 00:04:08,400 --> 00:04:12,610 Дакле, ово би требало да буде у ствари овде. 91 00:04:12,610 --> 00:04:18,790 Ово је показивач типа чвор на следећу ствар. 92 00:04:18,790 --> 00:04:22,410 И то је оно што они обухвата наш чвор. 93 00:04:22,410 --> 00:04:24,060 Цоол. 94 00:04:24,060 --> 00:04:29,390 >> У реду, тако да са претреса, као што смо били Само кажем пред стране, ако сте 95 00:04:29,390 --> 00:04:31,840 ће претраживати, морате да стварно поновити 96 00:04:31,840 --> 00:04:33,660 кроз листу повезане. 97 00:04:33,660 --> 00:04:38,530 Дакле, ако тражимо броју 9 бисмо почети у глави 98 00:04:38,530 --> 00:04:41,520 и то нас упућује на почетку наше повезане листе, зар не? 99 00:04:41,520 --> 00:04:44,600 А ми кажемо, у реду, то ради чвор садржи број 9? 100 00:04:44,600 --> 00:04:45,690 Не? 101 00:04:45,690 --> 00:04:47,500 >> У реду, идите на следећу. 102 00:04:47,500 --> 00:04:48,312 Пратите га. 103 00:04:48,312 --> 00:04:49,520 Да ли садржи тај број 9? 104 00:04:49,520 --> 00:04:50,570 Не. 105 00:04:50,570 --> 00:04:51,550 Пратите следећи. 106 00:04:51,550 --> 00:04:55,490 >> Дакле, морамо да заиста поновити кроз нашу повезане листе. 107 00:04:55,490 --> 00:05:00,070 Не можемо само ићи директно на гдје 9 је. 108 00:05:00,070 --> 00:05:05,860 И ако ви стварно желите да видети неке Псеудо-код горе. 109 00:05:05,860 --> 00:05:10,420 Ми имамо овде неку функцију претраживања која се у-- шта је потребно у? 110 00:05:10,420 --> 00:05:13,110 111 00:05:13,110 --> 00:05:14,320 Шта мислите? 112 00:05:14,320 --> 00:05:15,960 Тако лако. 113 00:05:15,960 --> 00:05:17,784 Шта је ово? 114 00:05:17,784 --> 00:05:18,700 ПУБЛИКА: [неразумљиво]. 115 00:05:18,700 --> 00:05:20,366 СПЕАКЕР 1: Број траћимо. 116 00:05:20,366 --> 00:05:20,980 Зар не? 117 00:05:20,980 --> 00:05:22,875 А шта би то одговара? 118 00:05:22,875 --> 00:05:25,020 То је показивач на? 119 00:05:25,020 --> 00:05:26,000 >> ПУБЛИКА: чвор. 120 00:05:26,000 --> 00:05:28,980 >> СПЕАКЕР 1: чвор на листу да гледамо, зар не? 121 00:05:28,980 --> 00:05:33,700 Дакле, имамо неки чворови су Поинтер овде. 122 00:05:33,700 --> 00:05:37,240 Ово је тачка која ће заправо поновити кроз нашу листу. 123 00:05:37,240 --> 00:05:39,630 Поставили смо га једнако листу јер то је само 124 00:05:39,630 --> 00:05:44,380 подешавање је једнак почетак нашег повезане листе. 125 00:05:44,380 --> 00:05:50,660 >> И док то није НУЛЛ, док још увек имамо ствари у нашој листи, 126 00:05:50,660 --> 00:05:55,580 проверите да ли тај чвор има број тражимо. 127 00:05:55,580 --> 00:05:57,740 Ретурн истина. 128 00:05:57,740 --> 00:06:01,070 У супротном, ажурирање, зар не? 129 00:06:01,070 --> 00:06:04,870 >> Ако је НУЛЛ, ми изашли наш док петља и ретурн 130 00:06:04,870 --> 00:06:08,340 јер то значи да нисмо га нашли. 131 00:06:08,340 --> 00:06:11,048 Да ли сви добити како се то ради? 132 00:06:11,048 --> 00:06:11,548 У реду. 133 00:06:11,548 --> 00:06:14,940 134 00:06:14,940 --> 00:06:20,260 >> Тако је и са уметком и морате има три различита начина. 135 00:06:20,260 --> 00:06:25,250 Можете Препенд, можете додати и можете уметнути у ассортед. 136 00:06:25,250 --> 00:06:28,215 У овом случају, ми смо ће направити Препенд. 137 00:06:28,215 --> 00:06:33,380 Да ли неко зна како се они Три случаја могу разликовати? 138 00:06:33,380 --> 00:06:36,920 >> Тако Препенд значи да сте ставили је на предњој страни листе. 139 00:06:36,920 --> 00:06:39,770 Дакле, то би значило да, без обзира шта је ваш чвор је, без обзира на 140 00:06:39,770 --> 00:06:43,160 шта је вредност, идеш да га ставите овде испред, у реду? 141 00:06:43,160 --> 00:06:45,160 То ће бити први елеменат у вашој листи. 142 00:06:45,160 --> 00:06:49,510 >> Ако га додати, иде да иде на задњој страни листа. 143 00:06:49,510 --> 00:06:54,010 И убаците у ассортед значи да си ће се ствари ставити на место 144 00:06:54,010 --> 00:06:57,700 где држи ваша листа повезана сортирана. 145 00:06:57,700 --> 00:07:00,810 Опет, како користите они и када користите 146 00:07:00,810 --> 00:07:02,530 њих ће се разликовати у зависности од вашег случаја. 147 00:07:02,530 --> 00:07:05,834 148 00:07:05,834 --> 00:07:07,750 Ако не треба да се сортирају, Препенд тежи 149 00:07:07,750 --> 00:07:10,460 да буде оно што већина људи користити јер не 150 00:07:10,460 --> 00:07:15,680 Морам да идем кроз цео списак наћи крај да га додам, зар не? 151 00:07:15,680 --> 00:07:17,720 Само да га држимо право у. 152 00:07:17,720 --> 00:07:21,930 >> Дакле, ми ћемо проћи кроз убацивање 1 сада. 153 00:07:21,930 --> 00:07:26,360 Дакле, једна ствар коју ћу препоручујемо на овој псет 154 00:07:26,360 --> 00:07:29,820 јесте да се скрене ствари, као и увек. 155 00:07:29,820 --> 00:07:35,130 Веома је важно да ажурирате Ваши показивачи у исправном редоследу 156 00:07:35,130 --> 00:07:38,620 јер ако их ажурирате мало не ради, 157 00:07:38,620 --> 00:07:42,210 ћеш завршити губе делове ваше листе. 158 00:07:42,210 --> 00:07:49,680 >> Тако, на пример, у овом случају, ми смо говори главу само да указују на 1. 159 00:07:49,680 --> 00:07:56,070 Ако бисмо то без меморисања Тхис 1, 160 00:07:56,070 --> 00:07:58,570 немамо појма шта 1 треба да укаже на сад 161 00:07:58,570 --> 00:08:02,490 јер смо изгубили оно глава је указао на. 162 00:08:02,490 --> 00:08:05,530 Дакле, једна ствар за памћење Када радите са Препенд 163 00:08:05,530 --> 00:08:09,630 је да се спасе што се Хеад указује на први, 164 00:08:09,630 --> 00:08:15,210 онда га пренесете, а затим ажурирање шта је ваш нови чвор треба да укаже на. 165 00:08:15,210 --> 00:08:20,870 166 00:08:20,870 --> 00:08:22,560 У овом случају, то је један од начина да се то уради. 167 00:08:22,560 --> 00:08:25,440 >> Дакле, ако смо то урадили на овај начин где смо управо прекомандован главу, 168 00:08:25,440 --> 00:08:30,320 губимо основи ОУР Цео списак, зар не? 169 00:08:30,320 --> 00:08:38,000 Један од начина да се то уради је да се 1 бод се Даље, а затим имају главу тачку на 1. 170 00:08:38,000 --> 00:08:42,650 Или можете да урадите нешто као Привремено складиштење, који сам говорио о томе. 171 00:08:42,650 --> 00:08:45,670 >> Али пренамене твој показивачи у исправном редоследу 172 00:08:45,670 --> 00:08:48,750 ће бити веома, веома важно за ову псет. 173 00:08:48,750 --> 00:08:53,140 У супротном, ти ћеш имати хасх Табела или покушај који је само да буде 174 00:08:53,140 --> 00:08:56,014 само део речи које сте па онда Ваши-- ммхмм? 175 00:08:56,014 --> 00:08:58,930 ПУБЛИКА: Шта је привремена ствар складиштење сте причали? 176 00:08:58,930 --> 00:09:00,305 СПЕАКЕР 1: Привремено складиштење. 177 00:09:00,305 --> 00:09:02,760 Дакле, у основи други начин можете да урадите ово 178 00:09:02,760 --> 00:09:07,650 се чувати главу нечега, као што чувајте је привремену променљиву. 179 00:09:07,650 --> 00:09:11,250 Доделити га на 1 и онда Упдате 1 до тачке 180 00:09:11,250 --> 00:09:13,830 да све што се користи главу да укаже. 181 00:09:13,830 --> 00:09:16,920 На овај начин је очигледно елегантније због тебе 182 00:09:16,920 --> 00:09:20,770 не треба привремени вредности, али Само нудећи други начин да то уради. 183 00:09:20,770 --> 00:09:23,999 184 00:09:23,999 --> 00:09:25,790 И ми стварно имамо неки код за то. 185 00:09:25,790 --> 00:09:28,080 Дакле, за повезане листе, ми заправо имају неки код. 186 00:09:28,080 --> 00:09:31,930 Дакле инсерт овде, ово је ако имену. 187 00:09:31,930 --> 00:09:34,290 Дакле, ово је улази у главу. 188 00:09:34,290 --> 00:09:38,820 >> Дакле прва ствар, треба да направите нови чвор, наравно, 189 00:09:38,820 --> 00:09:40,790 и проверите НУЛЛ. 190 00:09:40,790 --> 00:09:43,250 Увек добар. 191 00:09:43,250 --> 00:09:47,840 А онда морате да доделите вредности. 192 00:09:47,840 --> 00:09:51,260 Кад год креирате нови чвор, те Не знам шта је то указује на следећу, 193 00:09:51,260 --> 00:09:54,560 тако да желите да га иницијализује на НУЛЛ. 194 00:09:54,560 --> 00:09:58,760 Ако то не заврши указује на нешто друго, она ће бити премештена и то је у реду. 195 00:09:58,760 --> 00:10:00,740 Ако је то прва ствар на листи, потребно 196 00:10:00,740 --> 00:10:04,270 да укаже на, јер НУЛЛ то је крај листе. 197 00:10:04,270 --> 00:10:12,410 >> Дакле да би их додао, видимо овде нас се додељивање следећу вредност нашег чвора 198 00:10:12,410 --> 00:10:17,380 да буде шта год је глава, што је оно што смо овде имали. 199 00:10:17,380 --> 00:10:19,930 То је оно што смо управо урадили. 200 00:10:19,930 --> 00:10:25,820 И онда смо додељивање главе до тачке на наш нови чвор, јер се, 201 00:10:25,820 --> 00:10:31,090 нови је неки показивач на чвор, а то је управо оно што је глава. 202 00:10:31,090 --> 00:10:34,370 То је управо разлог зашто смо имају ову стрелице Аццессор. 203 00:10:34,370 --> 00:10:37,030 204 00:10:37,030 --> 00:10:37,530 Цоол? 205 00:10:37,530 --> 00:10:38,130 Ммхмм? 206 00:10:38,130 --> 00:10:41,100 >> ПУБЛИКА: Да ли морамо да инитиализе нев Даље прво нулл, 207 00:10:41,100 --> 00:10:44,240 или можемо само иницијализујете на челу? 208 00:10:44,240 --> 00:10:48,210 >> СПЕАКЕР 1: Нови Следећа треба да буде НУЛЛ да почне 209 00:10:48,210 --> 00:10:53,760 јер не знате где ће бити. 210 00:10:53,760 --> 00:10:56,100 Такође, ово је врста Баш као парадигму. 211 00:10:56,100 --> 00:10:59,900 Сте поставили је једнак НУЛЛ само да би сигурни да су покривени сви ваши базе 212 00:10:59,900 --> 00:11:04,070 пре него што било какву премештај, тако да Ви увек гарантовано да ће 213 00:11:04,070 --> 00:11:08,880 се указује на одређену вредност наспрам као вредност смећа. 214 00:11:08,880 --> 00:11:12,210 Јер, да смо доделили нови Нект аутоматски, 215 00:11:12,210 --> 00:11:15,420 али то је више као добра пракса да се иницијализацију 216 00:11:15,420 --> 00:11:19,270 на тај начин, а затим распоредити. 217 00:11:19,270 --> 00:11:23,420 >> У реду, тако да двоструко повезана листа сада. 218 00:11:23,420 --> 00:11:24,601 Шта мислимо? 219 00:11:24,601 --> 00:11:26,350 Шта је другачије у двоструко повезана листа? 220 00:11:26,350 --> 00:11:30,750 221 00:11:30,750 --> 00:11:34,300 >> Дакле, у нашим повезаним листама, можемо померати само у једном правцу, зар не? 222 00:11:34,300 --> 00:11:35,270 Ми само следећу. 223 00:11:35,270 --> 00:11:36,760 Ми само можемо ићи напријед. 224 00:11:36,760 --> 00:11:40,300 >> Са двоструко повезане листе, Ми такође можемо кретати уназад. 225 00:11:40,300 --> 00:11:44,810 Дакле, имамо не само број који желимо да сачувате, 226 00:11:44,810 --> 00:11:50,110 имамо где се указује на следећа и где смо управо дошли. 227 00:11:50,110 --> 00:11:52,865 Дакле, ово омогућава неки боље ношење. 228 00:11:52,865 --> 00:11:56,620 229 00:11:56,620 --> 00:12:01,240 >> Дакле, двоструко везани чворови, врло слично, зар не? 230 00:12:01,240 --> 00:12:05,000 Једина разлика је што сада имају следећа и претходна. 231 00:12:05,000 --> 00:12:06,235 То је једина разлика. 232 00:12:06,235 --> 00:12:09,570 233 00:12:09,570 --> 00:12:14,790 >> Дакле, ако смо се Препенд или аппенд-- ми немају код за ово овдје-- 234 00:12:14,790 --> 00:12:17,830 Али, ако сте били да покушате и убаците га, важна ствар 235 00:12:17,830 --> 00:12:19,980 је да је потребно да се направи Сигурно сте додељивања 236 00:12:19,980 --> 00:12:23,360 и ваших претходних и ваш Нект Поинтер исправно. 237 00:12:23,360 --> 00:12:29,010 Дакле, у овом случају, ти би не само инитиализе Нект, 238 00:12:29,010 --> 00:12:31,820 иницијализовано претходни. 239 00:12:31,820 --> 00:12:36,960 Ако смо на челу листе, ми не би само да глава једнака ново, 240 00:12:36,960 --> 00:12:41,750 али наш нови претходна треба указују на главу, зар не? 241 00:12:41,750 --> 00:12:43,380 >> То је једина разлика. 242 00:12:43,380 --> 00:12:47,200 А ако желите више праксе са ово са повезаним листама, са уметање, 243 00:12:47,200 --> 00:12:49,900 са брисањем, са уметком у један ассорти листу, 244 00:12:49,900 --> 00:12:52,670 Молимо вас да проверите студи.цс50.нет. 245 00:12:52,670 --> 00:12:54,870 Постоји гомила великих вежби. 246 00:12:54,870 --> 00:12:55,870 Ја сам их препоручујемо. 247 00:12:55,870 --> 00:12:59,210 Волео бих да смо имали времена да прођем кроз њих али има много структура података 248 00:12:59,210 --> 00:13:01,530 проћи кроз. 249 00:13:01,530 --> 00:13:02,650 >> У реду, тако да хасх табеле. 250 00:13:02,650 --> 00:13:07,070 Ово је вероватно корисно битни за вашу псет 251 00:13:07,070 --> 00:13:11,090 овде јер ћеш бити имплементацији једног од ових, или пробати. 252 00:13:11,090 --> 00:13:12,200 Стварно волим хасх табеле. 253 00:13:12,200 --> 00:13:13,110 Они су прилично кул. 254 00:13:13,110 --> 00:13:17,080 >> Дакле, у основи оно што дешава се хасх табела 255 00:13:17,080 --> 00:13:22,050 је када је заиста потребно брзи уметање, брисање, и ИП адресу. 256 00:13:22,050 --> 00:13:25,010 То су ствари које смо приоритета у хасх табели. 257 00:13:25,010 --> 00:13:29,500 Они могу добити прилично велика, али као што ћемо видети са покушаја, 258 00:13:29,500 --> 00:13:33,040 постоје ствари које су много већи. 259 00:13:33,040 --> 00:13:38,330 >> Али у суштини, сви хасх табела је хасх функција 260 00:13:38,330 --> 00:13:47,215 да вам каже које кашика ставити сваки ваших података, сваки од ваших елемената у. 261 00:13:47,215 --> 00:13:51,140 Једноставан начин да се размишља о хеш табели је да је само кофе ствари, 262 00:13:51,140 --> 00:13:51,770 зар не? 263 00:13:51,770 --> 00:13:59,720 Дакле, када се ствари сортирање по као прво слово свог имена, 264 00:13:59,720 --> 00:14:01,820 то је као хеш табели. 265 00:14:01,820 --> 00:14:06,180 >> Дакле, ви, ако бих групи је у групе онога ко се зове почиње 266 00:14:06,180 --> 00:14:11,670 са овамо, или ко је рођендан је у јануару, фебруару, марту, 267 00:14:11,670 --> 00:14:15,220 шта год, то је ефикасно стварање хеш табели. 268 00:14:15,220 --> 00:14:18,120 То је само стварање кашике да сортирање своје елементе у 269 00:14:18,120 --> 00:14:19,520 тако да можете наћи их лакше. 270 00:14:19,520 --> 00:14:22,300 Дакле, овај начин кад ми треба наћи једног од вас, 271 00:14:22,300 --> 00:14:24,680 Ја не морам да тражи кроз сваки од ваших имена. 272 00:14:24,680 --> 00:14:29,490 Могу бити као, ох, знам да је Даниелле рођендан је у-- 273 00:14:29,490 --> 00:14:30,240 ПУБЛИКА: --Април. 274 00:14:30,240 --> 00:14:30,948 СПЕАКЕР 1: април. 275 00:14:30,948 --> 00:14:33,120 Погледао сам у мом априлу кашика, а уз мало среће, 276 00:14:33,120 --> 00:14:38,270 она ће бити једина тамо и Моје време је константа у том смислу, 277 00:14:38,270 --> 00:14:41,230 а ако морам да погледам кроз гомила људи, 278 00:14:41,230 --> 00:14:43,090 то ће трајати много дуже. 279 00:14:43,090 --> 00:14:45,830 Дакле, хасх табеле су заиста само кашике. 280 00:14:45,830 --> 00:14:48,630 Лак начин да мислим о њима. 281 00:14:48,630 --> 00:14:52,930 >> Дакле, веома битна ствар у вези хасх табела је хасх функција. 282 00:14:52,930 --> 00:14:58,140 Дакле, ствари које сам управо говорио, као и Ваша прво слово твог имена 283 00:14:58,140 --> 00:15:01,450 или ваш рођендан месеца, то су идеје које 284 00:15:01,450 --> 00:15:03,070 Заиста уклопљени у хеш функцију. 285 00:15:03,070 --> 00:15:08,900 То је само начин одлучивања који кашика си елеменат иде у, у реду? 286 00:15:08,900 --> 00:15:14,850 Дакле, за ову псет, можете погледати прилично Било хасх функција хоћеш. 287 00:15:14,850 --> 00:15:16,030 >> Не мора да буде свој. 288 00:15:16,030 --> 00:15:21,140 Постоје неке стварно добре напоље тамо да радим свакакве луде математике. 289 00:15:21,140 --> 00:15:25,170 А ако желите да ваш Правопис супер брзи, 290 00:15:25,170 --> 00:15:27,620 Дефинитивно бих погледати у једном од тих. 291 00:15:27,620 --> 00:15:32,390 >> Али такође постоје и једноставних оне, као што израчунава 292 00:15:32,390 --> 00:15:39,010 збир речи, као што су свако слово има број. 293 00:15:39,010 --> 00:15:39,940 Израчунати суму. 294 00:15:39,940 --> 00:15:42,230 Који одређује канту. 295 00:15:42,230 --> 00:15:45,430 Они такође имају једноставне оне који су као и сви је овде, 296 00:15:45,430 --> 00:15:47,050 сав Б је овде. 297 00:15:47,050 --> 00:15:48,920 Било који од њих. 298 00:15:48,920 --> 00:15:55,770 >> У суштини, то је само вам говори који Арраи индекс свом елементу би требало да иде у. 299 00:15:55,770 --> 00:15:58,690 Само одлучивању о буцкет-- то је све хасх функција је. 300 00:15:58,690 --> 00:16:04,180 Дакле, овде имамо пример који је само прво слово низа 301 00:16:04,180 --> 00:16:05,900 да сам говорио. 302 00:16:05,900 --> 00:16:11,900 >> Тако да имају неки хасх То је само прво слово вашег струна минус, 303 00:16:11,900 --> 00:16:16,090 који ће вам дати неке број између 0 и 25. 304 00:16:16,090 --> 00:16:20,790 А оно што желите да урадите је да уверите се да то представља 305 00:16:20,790 --> 00:16:24,110 величина вашег хасх табле-- Колико кашике постоје. 306 00:16:24,110 --> 00:16:25,860 Са многи од њих хеш функције, они су 307 00:16:25,860 --> 00:16:31,630 ће се вратити вредности која би могла бити далеко изнад броја кашикама 308 00:16:31,630 --> 00:16:33,610 да заправо имају у вашем хасх табели, 309 00:16:33,610 --> 00:16:37,240 тако да је потребно да се направи Сигурно и мод они. 310 00:16:37,240 --> 00:16:42,190 У супротном, то ће рећи, Ох, она треба да буде у кофу 5.000 311 00:16:42,190 --> 00:16:46,040 али имате само 30 кашике у вашем хасх табели. 312 00:16:46,040 --> 00:16:49,360 И наравно, сви знамо да је то ће резултирати у неким лудим грешке. 313 00:16:49,360 --> 00:16:52,870 Тако да се уверите да мод би величина вашег хасх табеле. 314 00:16:52,870 --> 00:16:58,430 315 00:16:58,430 --> 00:16:58,930 Цоол. 316 00:16:58,930 --> 00:17:00,506 Тако судара. 317 00:17:00,506 --> 00:17:02,620 Да ли су сви добро сада? 318 00:17:02,620 --> 00:17:03,120 Ммхмм? 319 00:17:03,120 --> 00:17:05,900 >> ПУБЛИКА: зашто би ретурн тако масивни вредност? 320 00:17:05,900 --> 00:17:09,210 >> СПЕАКЕР 1: У зависности на алгоритму да ваш хасх функција користи. 321 00:17:09,210 --> 00:17:12,270 Неки од њих ће учинити луд множење. 322 00:17:12,270 --> 00:17:16,270 И то је све о добијању чак и дистрибуција, 323 00:17:16,270 --> 00:17:18,490 то раде неки стварно луде ствари понекад. 324 00:17:18,490 --> 00:17:20,960 То је све. 325 00:17:20,960 --> 00:17:22,140 Нешто друго? 326 00:17:22,140 --> 00:17:22,829 У реду. 327 00:17:22,829 --> 00:17:24,480 >> Тако судара. 328 00:17:24,480 --> 00:17:29,270 У суштини, као што сам рекао раније, У најбољем случају, 329 00:17:29,270 --> 00:17:32,040 Било кашика погледам у је ће имати једну ствар, 330 00:17:32,040 --> 00:17:34,160 тако да не морам да гледам на све, зар не? 331 00:17:34,160 --> 00:17:37,040 Ја знам да је то било тамо или је не, и то је оно што заиста желимо. 332 00:17:37,040 --> 00:17:43,960 Али, ако имамо на десетине хиљада податке и мање од тог броја 333 00:17:43,960 --> 00:17:48,700 корпи, ћемо имати судари где на крају нешто 334 00:17:48,700 --> 00:17:54,210 ће морати да заврши у кашика које већ има елемент. 335 00:17:54,210 --> 00:17:57,390 >> Дакле, питање је, шта радимо у том случају? 336 00:17:57,390 --> 00:17:58,480 Шта да радимо? 337 00:17:58,480 --> 00:17:59,300 Ми већ имамо нешто тамо? 338 00:17:59,300 --> 00:18:00,060 Да ли само избацимо? 339 00:18:00,060 --> 00:18:00,700 >> Не. 340 00:18:00,700 --> 00:18:01,980 Морамо да наставимо оба. 341 00:18:01,980 --> 00:18:06,400 Тако начин на који смо обично то је шта? 342 00:18:06,400 --> 00:18:08,400 Каква је структура података Управо смо причали? 343 00:18:08,400 --> 00:18:09,316 ПУБЛИКА: повезане листе. 344 00:18:09,316 --> 00:18:10,500 СПЕАКЕР 1: линкед лист. 345 00:18:10,500 --> 00:18:16,640 Тако да сада, уместо да сваки од њих кашике само има један елемент, 346 00:18:16,640 --> 00:18:24,020 да ће да садржи повезану листу елементи који су хасх у њу. 347 00:18:24,020 --> 00:18:27,588 У реду, да ли сви ти та идеја? 348 00:18:27,588 --> 00:18:30,546 Јер нисмо могли имати низ јер ми не знамо како многе ствари 349 00:18:30,546 --> 00:18:31,730 ће бити тамо. 350 00:18:31,730 --> 00:18:36,540 Линкед лист нам омогућава да имају само тачан број који 351 00:18:36,540 --> 00:18:38,465 су хасх у канту, зар не? 352 00:18:38,465 --> 00:18:42,260 353 00:18:42,260 --> 00:18:50,500 >> Дакле Линеарни прескок је У основи, ово идеја-- 354 00:18:50,500 --> 00:18:52,300 је један од начина да се баве судара. 355 00:18:52,300 --> 00:18:58,010 Шта можете да урадите је да, у овом Цасе, Берри је хасх у 1 356 00:18:58,010 --> 00:19:01,130 а већ имамо ту нешто, само 357 00:19:01,130 --> 00:19:04,840 Настави доле до пронађете празан слот. 358 00:19:04,840 --> 00:19:06,370 То је један од начина да се то средити. 359 00:19:06,370 --> 00:19:09,020 Други начин за руковање то је са оним што смо управо 360 00:19:09,020 --> 00:19:12,280 цаллед-- повезан Листа се зове Уланчавање. 361 00:19:12,280 --> 00:19:20,510 >> Дакле, та идеја функционише, ако Ваш хасх табела мислите 362 00:19:20,510 --> 00:19:24,150 је много већи од Ваши подаци сет или ако 363 00:19:24,150 --> 00:19:28,870 желе да пробају и минимизира цхаининг док је апсолутно неопходно. 364 00:19:28,870 --> 00:19:34,050 Дакле, једна ствар је линеаран прескок очигледно значи 365 00:19:34,050 --> 00:19:37,290 да ваше хеш функције није тако корисна 366 00:19:37,290 --> 00:19:42,200 јер ћеш завршити користећи Ваша хасх функција, узимајући до тачке, 367 00:19:42,200 --> 00:19:46,400 Ви линеарном сондом до неко место које је на располагању. 368 00:19:46,400 --> 00:19:49,670 Али сада, наравно, ништа друго да заврши тамо, 369 00:19:49,670 --> 00:19:52,050 ћеш морати да тражи још ниже. 370 00:19:52,050 --> 00:19:55,650 >> И има много више претраживање трошак који 371 00:19:55,650 --> 00:19:59,820 одлази у уноса елемент у вашем хасх табели сада, зар не? 372 00:19:59,820 --> 00:20:05,640 И сада када одете и покушати и наћи Берри поново ћеш га хасх, 373 00:20:05,640 --> 00:20:07,742 а то ће рећи, Ох, погледај у кофу 1, 374 00:20:07,742 --> 00:20:09,700 а то неће бити у канти 1, па ти си 375 00:20:09,700 --> 00:20:11,970 морати да пролазе кроз остатак ових. 376 00:20:11,970 --> 00:20:17,720 Тако да је понекад корисно, али у већини случајева, 377 00:20:17,720 --> 00:20:22,660 ћемо рећи да Уланчавање је оно што желите да урадите. 378 00:20:22,660 --> 00:20:25,520 >> Разговарали смо о томе раније. 379 00:20:25,520 --> 00:20:27,812 Имам мало испред себе. 380 00:20:27,812 --> 00:20:33,560 Али је у основи то Уланчавање сваки сегмент у вашем хасх табели 381 00:20:33,560 --> 00:20:36,120 је само повезана листа. 382 00:20:36,120 --> 00:20:39,660 >> Дакле још један начин, или више техничке начин, да мислимо о хеш табели 383 00:20:39,660 --> 00:20:44,490 је да је то само низ повезаних листа, који 384 00:20:44,490 --> 00:20:49,330 када пишете свој речник а ви покушавате да га учита, 385 00:20:49,330 --> 00:20:52,070 размишљам о томе како низ повезаних листа 386 00:20:52,070 --> 00:20:54,390 учиниће га много лакше за вас да се покрене. 387 00:20:54,390 --> 00:20:57,680 >> ПУБЛИКА: Дакле хасх табела има одређене величине, 388 00:20:57,680 --> 00:20:58,980 као [неразумљиво] кашике? 389 00:20:58,980 --> 00:20:59,220 >> СПЕАКЕР 1: Добро. 390 00:20:59,220 --> 00:21:01,655 Тако да има одређени број кашике да детермине-- 391 00:21:01,655 --> 00:21:03,530 који вам момци треба слободно да се играју са. 392 00:21:03,530 --> 00:21:05,269 То може бити прилично кул да видим шта се дешава 393 00:21:05,269 --> 00:21:06,810 као што промените број корпи. 394 00:21:06,810 --> 00:21:09,410 395 00:21:09,410 --> 00:21:11,510 Али да, има сет број корпи. 396 00:21:11,510 --> 00:21:15,360 Шта вам омогућава да стане у многи елементи као што вам је потребно 397 00:21:15,360 --> 00:21:19,350 ово посебна Уланчавање ти где су повезани листе у сваки сегмент. 398 00:21:19,350 --> 00:21:22,850 То значи да ваше хасх табели биће тачно величина 399 00:21:22,850 --> 00:21:25,440 да је потребно да се, зар не? 400 00:21:25,440 --> 00:21:27,358 То је цела поента повезаних листа. 401 00:21:27,358 --> 00:21:30,850 402 00:21:30,850 --> 00:21:32,480 Цоол. 403 00:21:32,480 --> 00:21:38,780 >> Дакле, сви у реду тамо? 404 00:21:38,780 --> 00:21:39,801 У реду. 405 00:21:39,801 --> 00:21:40,300 Ах. 406 00:21:40,300 --> 00:21:41,860 Шта се десило? 407 00:21:41,860 --> 00:21:42,960 Стварно сад. 408 00:21:42,960 --> 00:21:45,250 Претпостављам да неко ме убија. 409 00:21:45,250 --> 00:21:52,060 >> Добро ћемо да идемо у покушава, који су помало луди. 410 00:21:52,060 --> 00:21:53,140 Волим хасх табеле. 411 00:21:53,140 --> 00:21:54,460 Мислим да су стварно кул. 412 00:21:54,460 --> 00:21:56,710 Триес су кул, превише. 413 00:21:56,710 --> 00:21:59,590 >> Дакле, да ли се ико сећа шта је покушај? 414 00:21:59,590 --> 00:22:01,740 Требало би да су отишли ​​преко Укратко у предавању? 415 00:22:01,740 --> 00:22:04,570 416 00:22:04,570 --> 00:22:06,377 Да ли се сећате какав како то ради? 417 00:22:06,377 --> 00:22:08,460 ПУБЛИКА: Само клима главом да ли ићи преко њега. 418 00:22:08,460 --> 00:22:09,626 СПЕАКЕР 1: Ми идемо преко њега. 419 00:22:09,626 --> 00:22:13,100 У реду, ми стварно ићи у је сада оно што говорите. 420 00:22:13,100 --> 00:22:14,860 >> ПУБЛИКА: То је за дрво и претраживање података. 421 00:22:14,860 --> 00:22:15,280 >> СПЕАКЕР 1: Да. 422 00:22:15,280 --> 00:22:16,196 То је дрво проналажење. 423 00:22:16,196 --> 00:22:16,960 Страва. 424 00:22:16,960 --> 00:22:23,610 Дакле, једна ствар приметити овде је да гледамо појединачне знакова 425 00:22:23,610 --> 00:22:24,480 овде, зар не? 426 00:22:24,480 --> 00:22:29,710 >> Дакле, пре него са нашим хеш функције, ми гледали речи у целини, 427 00:22:29,710 --> 00:22:32,270 и сада гледамо више на ликова, зар не? 428 00:22:32,270 --> 00:22:38,380 Дакле, имамо Маквелл овде и Мендел. 429 00:22:38,380 --> 00:22:47,840 Дакле, у основи три-- начин размишљања о овоме је да сваки ниво овде 430 00:22:47,840 --> 00:22:49,000 је низ писама. 431 00:22:49,000 --> 00:22:53,310 432 00:22:53,310 --> 00:22:55,790 Дакле, ово је твој корен чвор овде, зар не? 433 00:22:55,790 --> 00:23:01,980 Ово је све ликове писмо за почетак сваке речи. 434 00:23:01,980 --> 00:23:06,480 >> А оно што желите да урадите је да рецимо, у реду, ми имамо неку М реч. 435 00:23:06,480 --> 00:23:10,590 Ми ћемо тражити Маквелл, тако идемо М. и М указује на читав 436 00:23:10,590 --> 00:23:14,800 Други низ где сваки реч, докле год постоји 437 00:23:14,800 --> 00:23:17,044 је реч која има као друго писмо, 438 00:23:17,044 --> 00:23:19,460 док постоји реч која има Б као другом писму, 439 00:23:19,460 --> 00:23:24,630 она ће имати показивач ће у неку следећу низа. 440 00:23:24,630 --> 00:23:29,290 >> Вероватно постоји није реч коју посланик нешто, 441 00:23:29,290 --> 00:23:32,980 тако да на П положају у овој Арраи, то би само бити НУЛЛ. 442 00:23:32,980 --> 00:23:38,840 То би рекли, у реду, не постоји реч који је М праћено П, у реду? 443 00:23:38,840 --> 00:23:43,100 Дакле, ако размишљамо о томе, сваки једна од ових мањих ствари 444 00:23:43,100 --> 00:23:47,990 је заправо једна од ових велики низови од А до З. 445 00:23:47,990 --> 00:23:55,064 Дакле, шта може бити једна од ствари то је врста повраћаја пробати? 446 00:23:55,064 --> 00:23:56,500 >> ПУБЛИКА: Много меморије. 447 00:23:56,500 --> 00:23:59,940 >> СПЕАКЕР 1: То је тона меморије, зар не? 448 00:23:59,940 --> 00:24:08,750 Сваки од ових блокова овде представља 26 места, 26 елемент низ. 449 00:24:08,750 --> 00:24:13,680 Дакле, покушава да невероватно тежак простор. 450 00:24:13,680 --> 00:24:17,100 >> Али они су веома брзо. 451 00:24:17,100 --> 00:24:22,540 Дакле, невероватно брзо, али Стварно простор неефикасна. 452 00:24:22,540 --> 00:24:24,810 Некако ми да схватим од којих је један желите. 453 00:24:24,810 --> 00:24:29,470 То су стварно кул за ваше псет, али они заузимају много меморије, 454 00:24:29,470 --> 00:24:30,290 тако да тргује ван. 455 00:24:30,290 --> 00:24:31,480 Да? 456 00:24:31,480 --> 00:24:34,300 >> ПУБЛИКА: Да ли би било могуће да подесите пробати и онда 457 00:24:34,300 --> 00:24:37,967 Једном када имате све подаци у њој да морају-- 458 00:24:37,967 --> 00:24:39,550 Ја не знам да ли би имало смисла. 459 00:24:39,550 --> 00:24:42,200 Сам узимајући ослободити од свих НУЛЛ карактера, али онда 460 00:24:42,200 --> 00:24:42,910 Ви не бисте могли да индексу њих-- 461 00:24:42,910 --> 00:24:43,275 >> СПЕАКЕР 1: Ви сте их и даље треба. 462 00:24:43,275 --> 00:24:44,854 >> ПУБЛИКА: - на исти начин сваки пут. 463 00:24:44,854 --> 00:24:45,520 СПЕАКЕР 1: Да. 464 00:24:45,520 --> 00:24:50,460 Потребан вам Нулта ликове пустити Ви знате да не постоји реч тамо. 465 00:24:50,460 --> 00:24:52,040 Бен ли сте имали нешто што желите? 466 00:24:52,040 --> 00:24:52,540 У реду. 467 00:24:52,540 --> 00:24:54,581 У реду, тако да идемо ићи мало више 468 00:24:54,581 --> 00:24:58,920 у техничким детаљима иза покушати да раде кроз пример. 469 00:24:58,920 --> 00:25:01,490 >> У реду, тако да је ово иста ствар. 470 00:25:01,490 --> 00:25:06,290 Док у повезане листе, наш главни врста од-- што је реч желим? - 471 00:25:06,290 --> 00:25:08,350 као градивни блок је чвор. 472 00:25:08,350 --> 00:25:12,280 У покушају, имамо и чвор, али другачије дефинисано. 473 00:25:12,280 --> 00:25:17,000 >> Дакле, имамо неку боол да представља било речи заиста 474 00:25:17,000 --> 00:25:23,530 постоји на овој локацији, а затим имамо неки низ овдје-- односно, 475 00:25:23,530 --> 00:25:27,840 Ово је показивач на низ од 27 знакова. 476 00:25:27,840 --> 00:25:33,339 А ово је за, у овом случају, ова 27-- сам сигуран сви сте као, чекај, 477 00:25:33,339 --> 00:25:34,880 постоје 26 слова у абецеди. 478 00:25:34,880 --> 00:25:36,010 Зашто имамо 27? 479 00:25:36,010 --> 00:25:37,870 >> Дакле, у зависности од начин провести ово, 480 00:25:37,870 --> 00:25:43,240 ово је из псет која дозвољено апострофа. 481 00:25:43,240 --> 00:25:46,010 Зато још једну. 482 00:25:46,010 --> 00:25:50,500 Такође ћете имати у неким случајеви нулл Терминатор 483 00:25:50,500 --> 00:25:53,230 је укључен као један од знакова да је дозвољено да се, 484 00:25:53,230 --> 00:25:56,120 и тако су проверили да види да ли је то крај речи. 485 00:25:56,120 --> 00:26:01,340 Уколико сте заинтересовани, проверите Кевин видео на студи.цс50, 486 00:26:01,340 --> 00:26:04,790 као и Википедиа има неке добре ресурсе тамо. 487 00:26:04,790 --> 00:26:09,000 >> Али ми ћемо да идемо кроз некако како можете да радите кроз пробати 488 00:26:09,000 --> 00:26:11,010 ако је дао једно. 489 00:26:11,010 --> 00:26:16,230 Дакле, имамо овде да супер једноставан један има речи "БАТ" и "Зоом" у њима. 490 00:26:16,230 --> 00:26:18,920 И као што видимо овде, овај мали простор овде 491 00:26:18,920 --> 00:26:22,560 представља нашу боол да каже, да, ово је реч. 492 00:26:22,560 --> 00:26:27,060 А онда је наша низови карактера, зар не? 493 00:26:27,060 --> 00:26:33,480 >> Тако да ћемо проћи проналажење "БАТ" у овом покушају. 494 00:26:33,480 --> 00:26:38,340 Дакле, почети на врху, зар не? 495 00:26:38,340 --> 00:26:46,290 А ми знамо да је Б одговара други индекс, други елемент 496 00:26:46,290 --> 00:26:47,840 у овом низа, јер и б. 497 00:26:47,840 --> 00:26:51,340 Дакле, отприлике други. 498 00:26:51,340 --> 00:26:58,820 >> И каже, у реду, кул, следи да у следећа низ, јер ако се сећате, 499 00:26:58,820 --> 00:27:02,160 није да сваки од њих заправо садржи елемент. 500 00:27:02,160 --> 00:27:07,110 Сваки од ових низова садржи показивач, зар не? 501 00:27:07,110 --> 00:27:10,030 То је важна разлика да. 502 00:27:10,030 --> 00:27:13,450 >> Знам да ће ово бити-- покушава се тешко да се на први пут, 503 00:27:13,450 --> 00:27:15,241 па чак и ако је то други или трећи пут 504 00:27:15,241 --> 00:27:18,370 и још увек је некако наизглед тешко, 505 00:27:18,370 --> 00:27:21,199 Обећавам ако идете сат кратак сутра, 506 00:27:21,199 --> 00:27:22,740 вероватно ће бити много више смисла. 507 00:27:22,740 --> 00:27:23,890 Потребно је много да свари. 508 00:27:23,890 --> 00:27:27,800 И даље понекад сам као, чекај, шта је пробати? 509 00:27:27,800 --> 00:27:29,080 Како да користим ово? 510 00:27:29,080 --> 00:27:33,880 >> Дакле, ми смо б у овом случају, који је наш други индекс. 511 00:27:33,880 --> 00:27:40,240 Да смо имали, рецимо, Ц или Д или било који други леттер, 512 00:27:40,240 --> 00:27:45,810 морамо да карта која Бацк то тхе индек нашег низа да то одговара. 513 00:27:45,810 --> 00:27:56,930 Тако да бисмо узети као рцхар и само одузмите Офф то карта на 0 до 25. 514 00:27:56,930 --> 00:27:58,728 Сви добро Хов Ве Карта Наша ликове? 515 00:27:58,728 --> 00:28:00,440 У реду. 516 00:28:00,440 --> 00:28:05,980 >> Дакле, идемо на другом и смо ми видимо да, да, није да се НУЛЛ. 517 00:28:05,980 --> 00:28:07,780 Можемо да пређемо на следећу овом низу. 518 00:28:07,780 --> 00:28:12,300 Дакле, идемо на ову следећу низа овде. 519 00:28:12,300 --> 00:28:15,500 >> А ми кажемо, у реду, сада смо Морам да видим да ли је овде. 520 00:28:15,500 --> 00:28:18,590 Је нула или то ради стварно крене напред? 521 00:28:18,590 --> 00:28:21,880 Дакле, ствари се креће напријед у том низу. 522 00:28:21,880 --> 00:28:24,570 А ми кажемо, у реду, т је наша последња слово. 523 00:28:24,570 --> 00:28:27,580 Дакле, идемо на т у индексу. 524 00:28:27,580 --> 00:28:30,120 А онда идемо напред јер постоји још један. 525 00:28:30,120 --> 00:28:38,340 А овај каже у основи то, да, каже да постоји реч овдје-- 526 00:28:38,340 --> 00:28:41,750 да ако пратите ово пут, ви сте стигли 527 00:28:41,750 --> 00:28:43,210 на реч, коју знамо је "Бат". 528 00:28:43,210 --> 00:28:43,800 Да? 529 00:28:43,800 --> 00:28:46,770 >> ПУБЛИКА: Да ли је стандардно имати да као индекс 0 и тада имају неку врсту на 1 530 00:28:46,770 --> 00:28:47,660 или да се на крају? 531 00:28:47,660 --> 00:28:48,243 >> СПЕАКЕР 1: Не 532 00:28:48,243 --> 00:28:55,360 Дакле, ако се осврнемо на нашу изјава овде, то је инт, 533 00:28:55,360 --> 00:28:59,490 тако да је сама елеменат у вашем чвору. 534 00:28:59,490 --> 00:29:03,331 Дакле, то није део низа. 535 00:29:03,331 --> 00:29:03,830 Цоол. 536 00:29:03,830 --> 00:29:08,370 Дакле, када завршимо нашу реч, а ми смо у овом низу, шта желимо да урадимо 537 00:29:08,370 --> 00:29:12,807 је да проверимо јер је ово реч. 538 00:29:12,807 --> 00:29:14,390 И у овом случају, то би да се врати. 539 00:29:14,390 --> 00:29:17,220 540 00:29:17,220 --> 00:29:24,090 >> Дакле, у том смислу, ми знамо да је "Зоо" - знамо како људи да "Зоо" је реч, 541 00:29:24,090 --> 00:29:24,820 зар не? 542 00:29:24,820 --> 00:29:28,990 Али су овде покушати да кажу, не, то није. 543 00:29:28,990 --> 00:29:33,980 И то би рекао да због тога су га нису означени као реч овде. 544 00:29:33,980 --> 00:29:40,440 Иако можемо прећи до овог низа, 545 00:29:40,440 --> 00:29:43,890 Ово покушај би рекао да, не, Зоо није у вашем речнику 546 00:29:43,890 --> 00:29:47,070 јер ми немамо означен је као такву. 547 00:29:47,070 --> 00:29:52,870 >> Дакле, један начин да се то-- Ох, извините, ово је један. 548 00:29:52,870 --> 00:29:59,450 Дакле, у овом случају, "Зоо" није реч, али је у нашем покушају. 549 00:29:59,450 --> 00:30:05,690 Али у овом једном, реци ми то желимо увести реч "купка," шта се дешава 550 00:30:05,690 --> 00:30:08,260 је пратимо тхроугх-- Б, А, т. 551 00:30:08,260 --> 00:30:11,820 Ми смо у овом низу, и идемо тражити х. 552 00:30:11,820 --> 00:30:15,220 >> У овом случају, када смо погледајте показивач у х, 553 00:30:15,220 --> 00:30:17,890 то показује да НУЛЛ, у реду? 554 00:30:17,890 --> 00:30:20,780 Дакле, осим ако изричито није указујући на други низ, 555 00:30:20,780 --> 00:30:25,000 претпостављате да су сви показивачи у овом низу указују на нулл. 556 00:30:25,000 --> 00:30:28,270 Дакле, у овом случају, Х указује нулл тако да не можемо да урадимо ништа, 557 00:30:28,270 --> 00:30:31,540 тако да се неће вратити фалсе, "купање" није овде. 558 00:30:31,540 --> 00:30:34,102 559 00:30:34,102 --> 00:30:35,810 Дакле, сада смо уствари ићи кроз 560 00:30:35,810 --> 00:30:39,790 Како би ми заправо рекли да је "Зоо" је у нашем покушају. 561 00:30:39,790 --> 00:30:42,920 Како смо убацили "Зоо" у нашу покушати? 562 00:30:42,920 --> 00:30:47,810 Дакле, на исти начин на који смо почели са наша линкед лист, почињемо у корену. 563 00:30:47,810 --> 00:30:50,600 Када сте у недоумици, крећу се од корен тих ствари. 564 00:30:50,600 --> 00:30:53,330 >> И ми ћемо рећи, у реду, з. 565 00:30:53,330 --> 00:30:55,650 З постоји у ово, и оно. 566 00:30:55,650 --> 00:30:58,370 Тако да се селимо на ваш следећи низ, у реду? 567 00:30:58,370 --> 00:31:01,482 А онда на следећи, кажемо, у реду, да ли постоји о? 568 00:31:01,482 --> 00:31:03,000 Јесте. 569 00:31:03,000 --> 00:31:04,330 Ово опет. 570 00:31:04,330 --> 00:31:08,670 >> И тако на нашем следећу, ми смо рекли, У реду, "Зоо" већ постоји овде. 571 00:31:08,670 --> 00:31:12,440 Све што треба да урадите је да ово једнако труе, да постоји реч тамо. 572 00:31:12,440 --> 00:31:15,260 Ако сте пратили све до пре тог тренутка, 573 00:31:15,260 --> 00:31:17,030 то је реч, па само сет је једнако тако. 574 00:31:17,030 --> 00:31:17,530 Да? 575 00:31:17,530 --> 00:31:22,550 >> ПУБЛИКА: Онда то ради Мислим да је "БА" је реч и? 576 00:31:22,550 --> 00:31:24,120 >> СПЕАКЕР 1: Не 577 00:31:24,120 --> 00:31:28,870 Дакле, у овом случају, "БА" бисмо добили Овде, рекли бисмо да је реч, 578 00:31:28,870 --> 00:31:31,590 а ипак неће бити. 579 00:31:31,590 --> 00:31:32,822 У реду? 580 00:31:32,822 --> 00:31:33,740 Ммхмм? 581 00:31:33,740 --> 00:31:36,360 >> ПУБЛИКА: Дакле, једном када је то реч и кажете да, онда 582 00:31:36,360 --> 00:31:38,380 ће садржати ићи на м? 583 00:31:38,380 --> 00:31:42,260 >> СПЕАКЕР 1: Ово мора да уради са-- сте учитавања ово. 584 00:31:42,260 --> 00:31:43,640 Ви кажете "Зоо" је реч. 585 00:31:43,640 --> 00:31:47,020 Када одете у цхецк-- као, да желите да кажете, 586 00:31:47,020 --> 00:31:49,400 не "Зоо" постоји у овом речнику? 587 00:31:49,400 --> 00:31:54,200 Ви само ћеш тражити "Зоо" а затим проверите да ли је реч. 588 00:31:54,200 --> 00:31:57,291 Никад нећеш да се крећу до м, јер то није 589 00:31:57,291 --> 00:31:58,290 оно што тражите. 590 00:31:58,290 --> 00:32:02,690 591 00:32:02,690 --> 00:32:08,070 >> Дакле, ако смо заиста желели да адд "купање" у овом покушају, 592 00:32:08,070 --> 00:32:11,390 ћемо урадити исту ствар као што смо урадили са "Зоо" 593 00:32:11,390 --> 00:32:15,380 Осим што ће видети да када се покушати доћи до х, и не постоји. 594 00:32:15,380 --> 00:32:20,090 Тако да можете да мислите о овоме као покушава да додате нову тачку у повезане листе, 595 00:32:20,090 --> 00:32:27,210 тако да би требало да додате још један од ових низова, овако. 596 00:32:27,210 --> 00:32:35,670 И шта онда ми радимо јесте да управо поставили х елемент овог низа указујући на то. 597 00:32:35,670 --> 00:32:39,430 >> И онда шта би желимо да урадимо овде? 598 00:32:39,430 --> 00:32:43,110 Адд то једнако истина јер је реч. 599 00:32:43,110 --> 00:32:46,350 600 00:32:46,350 --> 00:32:48,150 Цоол. 601 00:32:48,150 --> 00:32:48,700 Знам. 602 00:32:48,700 --> 00:32:51,170 Триес нису најузбудљивији. 603 00:32:51,170 --> 00:32:54,250 Веруј ми, знам. 604 00:32:54,250 --> 00:32:58,040 >> Дакле, једна ствар да се остваре са покушаја, Рекао сам, да су веома ефикасни. 605 00:32:58,040 --> 00:33:00,080 Тако да смо они видели заузимају тону простора. 606 00:33:00,080 --> 00:33:01,370 Они некако збуњујуће. 607 00:33:01,370 --> 00:33:03,367 Па зашто бисмо уопште користили ово? 608 00:33:03,367 --> 00:33:05,450 Ми користимо ове, јер су невероватно ефикасан. 609 00:33:05,450 --> 00:33:08,130 >> Дакле, ако сте икада тражите се речи, ви сте само 610 00:33:08,130 --> 00:33:10,450 граничи са дужином речи. 611 00:33:10,450 --> 00:33:15,210 Дакле, ако сте у потрази за Реч која је дужине пет, 612 00:33:15,210 --> 00:33:20,940 Ти си само икада морати да да у већини пет поређења, у реду? 613 00:33:20,940 --> 00:33:25,780 Тако да чини основи константа. 614 00:33:25,780 --> 00:33:29,150 Као и убацивање и проналажење су у основи Цонстант време. 615 00:33:29,150 --> 00:33:33,750 >> Дакле, ако сте икада можете добити нешто у сталном времену, 616 00:33:33,750 --> 00:33:35,150 То је добар као што добија. 617 00:33:35,150 --> 00:33:37,990 Ви не можете добити боље од константа време за ове ствари. 618 00:33:37,990 --> 00:33:43,150 То је једна од велики плусеви покушаја. 619 00:33:43,150 --> 00:33:46,780 >> Али то је много простора. 620 00:33:46,780 --> 00:33:50,380 Тако да ти треба да одлучи оно што је важније за вас. 621 00:33:50,380 --> 00:33:54,700 И на данашњим рачунарима, простор који може да се покушај 622 00:33:54,700 --> 00:33:57,740 можда не утиче Ви толико, али можда 623 00:33:57,740 --> 00:34:01,350 имаш посла са нечим да има много, много више ствари, 624 00:34:01,350 --> 00:34:02,810 и покушај једноставно није разумно. 625 00:34:02,810 --> 00:34:03,000 Да? 626 00:34:03,000 --> 00:34:05,610 >> ПУБЛИКА: Чекај, тако да имате 26 слова у свакој једну? 627 00:34:05,610 --> 00:34:07,440 >> СПЕАКЕР 1: Ммхмм. 628 00:34:07,440 --> 00:34:08,570 Да, имаш 26. 629 00:34:08,570 --> 00:34:16,984 Имате неке је реч маркер и онда имате 26 тројки у сваком. 630 00:34:16,984 --> 00:34:17,775 И они поента 631 00:34:17,775 --> 00:34:20,280 >> ПУБЛИКА: И сваки 26, они имају по 26? 632 00:34:20,280 --> 00:34:21,500 >> СПЕАКЕР 1: Да. 633 00:34:21,500 --> 00:34:27,460 И зато, као што можете види, она шири веома брзо. 634 00:34:27,460 --> 00:34:28,130 У реду. 635 00:34:28,130 --> 00:34:32,524 Тако да ћемо ући у дрвеће, које Осећам се лакше волим и вероватно ће 636 00:34:32,524 --> 00:34:36,150 бити лепа мала одлагање од покушаја тамо. 637 00:34:36,150 --> 00:34:39,620 Дакле, надамо се већина вас Видели дрво раније. 638 00:34:39,620 --> 00:34:41,820 Не као лепа оне споља, што сам 639 00:34:41,820 --> 00:34:44,340 Не знам да ли је неко је напољу недавно. 640 00:34:44,340 --> 00:34:49,230 Отишла сам јабука брање овог викенда, и Ох Ми Госх, било је дивно. 641 00:34:49,230 --> 00:34:52,250 Нисам знао лишће би могло да изгледа тако лепа. 642 00:34:52,250 --> 00:34:53,610 >> Дакле, ово је само дрво, зар не? 643 00:34:53,610 --> 00:34:56,790 То је само неки чвор, а указује на гомили других чворова. 644 00:34:56,790 --> 00:34:59,570 Као што видите овде, ово је врста понавља. 645 00:34:59,570 --> 00:35:03,720 Чворови Указивање на чворова је некако суштина многих структура података. 646 00:35:03,720 --> 00:35:06,670 Једноставно зависи како ћемо да их указују једни другима 647 00:35:06,670 --> 00:35:08,600 и како прећи кроз њих и како 648 00:35:08,600 --> 00:35:14,500 убаците ствари које одређује њихове различите особености. 649 00:35:14,500 --> 00:35:17,600 >> Дакле, само неке терминологије, које сам раније користили. 650 00:35:17,600 --> 00:35:20,010 Дакле, све што је корен је у самом врху. 651 00:35:20,010 --> 00:35:21,200 то је где смо увек почети. 652 00:35:21,200 --> 00:35:23,610 Можете мислити о томе као главе такође. 653 00:35:23,610 --> 00:35:28,750 Али за дрвеће, склони смо да односе на њега као корен. 654 00:35:28,750 --> 00:35:32,820 >> Нешто на доњој овдје-- у веома, веома боттом-- 655 00:35:32,820 --> 00:35:34,500 се сматрају лишће. 656 00:35:34,500 --> 00:35:37,210 Тако да заједно са иде Цијели ствар, зар не? 657 00:35:37,210 --> 00:35:39,860 Листови су на ивицама своје дрво. 658 00:35:39,860 --> 00:35:45,820 >> А онда имамо и неколико Услови да причамо о чворова у односу 659 00:35:45,820 --> 00:35:46,680 једни другима. 660 00:35:46,680 --> 00:35:49,700 Дакле, имамо родитеља, деца, браћа и сестре. 661 00:35:49,700 --> 00:35:56,260 Дакле, у овом случају, је 3 родитељ 5, 6 и 7. 662 00:35:56,260 --> 00:36:00,370 Дакле, све што је родитељ један корак изнад год да си 663 00:36:00,370 --> 00:36:02,940 позивајући се, па само као породично стабло. 664 00:36:02,940 --> 00:36:07,090 Надамо се да, ово је све помало мало више интуитивно него покушаја. 665 00:36:07,090 --> 00:36:10,970 >> Браћа и сестре су све које имају исти родитељ, зар не? 666 00:36:10,970 --> 00:36:13,470 Они су на истом нивоу овде. 667 00:36:13,470 --> 00:36:16,960 И онда, као што сам био говорећи, деца су само 668 00:36:16,960 --> 00:36:22,630 све што је један корак у наставку чвор у питању, у реду? 669 00:36:22,630 --> 00:36:23,470 Цоол. 670 00:36:23,470 --> 00:36:25,610 Дакле, бинарни дрво. 671 00:36:25,610 --> 00:36:31,450 Може ли ико нагађам о једној од Карактеристике бинарног дрвета? 672 00:36:31,450 --> 00:36:32,770 >> ПУБЛИКА: Макс два крила. 673 00:36:32,770 --> 00:36:33,478 >> СПЕАКЕР 1: Добро. 674 00:36:33,478 --> 00:36:34,640 Дакле, максимално два листа. 675 00:36:34,640 --> 00:36:39,730 Дакле, у овом једном пре, имали смо један који је имао три, али у бинарном стаблу, 676 00:36:39,730 --> 00:36:45,000 имате мак од два Деца по родитељ, зар не? 677 00:36:45,000 --> 00:36:46,970 Постоји још једна Интересантно карактеристика. 678 00:36:46,970 --> 00:36:51,550 Да ли неко зна да? 679 00:36:51,550 --> 00:36:52,620 Бинарни Трее. 680 00:36:52,620 --> 00:37:00,350 >> Дакле, бинарни дрво ће имати све на-- ово није сортед-- 681 00:37:00,350 --> 00:37:05,320 али у поређано бинарном стаблу, све на десној страни 682 00:37:05,320 --> 00:37:08,530 је већа од родитеља, и све на левој 683 00:37:08,530 --> 00:37:10,035 је мање од родитеља. 684 00:37:10,035 --> 00:37:15,690 И то је био квиз питање пре, тако да добро знам. 685 00:37:15,690 --> 00:37:19,500 Дакле, начин на који смо дефинисали ово, Опет, имамо још један чвор. 686 00:37:19,500 --> 00:37:21,880 Ово изгледа веома слично ономе што? 687 00:37:21,880 --> 00:37:28,336 688 00:37:28,336 --> 00:37:28,836 Двоструко 689 00:37:28,836 --> 00:37:29,320 >> Публика: Линкед Листс 690 00:37:29,320 --> 00:37:31,100 >> СПЕАКЕР 1: Доубле линкед лист, зар не? 691 00:37:31,100 --> 00:37:33,690 Дакле, ако се замени ово у односу на претходни и следећи, 692 00:37:33,690 --> 00:37:35,670 Ово ће бити двоструко повезана листа. 693 00:37:35,670 --> 00:37:40,125 Али у овом случају, заправо имају лево и десно и то је то. 694 00:37:40,125 --> 00:37:41,500 У супротном, то је управо то исто. 695 00:37:41,500 --> 00:37:43,374 Ми увек имамо елемент тражиш, 696 00:37:43,374 --> 00:37:45,988 а ви само две тројке ће све што је следеће. 697 00:37:45,988 --> 00:37:49,210 698 00:37:49,210 --> 00:37:51,870 Да, па Бинарно стабло претраге. 699 00:37:51,870 --> 00:37:57,665 Ако приметимо, све на овде је већа тхан-- 700 00:37:57,665 --> 00:37:59,850 или све одмах да овде 701 00:37:59,850 --> 00:38:02,840 је већи од, свега Овде је мање од. 702 00:38:02,840 --> 00:38:06,980 703 00:38:06,980 --> 00:38:14,000 >> Дакле, ако смо да тражи кроз њега, би требало да изгледа веома близу бинарно претраживање 704 00:38:14,000 --> 00:38:14,910 овде, зар не? 705 00:38:14,910 --> 00:38:17,640 Осим уместо да гледају на пола низа, 706 00:38:17,640 --> 00:38:21,720 Ми само тражимо било на лево страна или десној страни дрвета. 707 00:38:21,720 --> 00:38:24,850 Дакле, постаје мало једноставнији, мислим. 708 00:38:24,850 --> 00:38:29,300 >> Дакле, ако ваш корен НУЛЛ, Очигледно да је то само лажна. 709 00:38:29,300 --> 00:38:33,470 И ако је ту, очигледно то је истина. 710 00:38:33,470 --> 00:38:35,320 Ако је мање него што смо претражите лево. 711 00:38:35,320 --> 00:38:37,070 Ако је већи од, тражимо право. 712 00:38:37,070 --> 00:38:39,890 То је исто као бинарно претраживање, само другачији структура података 713 00:38:39,890 --> 00:38:40,600 који се користи. 714 00:38:40,600 --> 00:38:42,790 Уместо низа, то је само бинарни дрво. 715 00:38:42,790 --> 00:38:45,820 716 00:38:45,820 --> 00:38:48,090 >> У реду, димњацима. 717 00:38:48,090 --> 00:38:51,550 И такође, изгледа да смо можда има мало времена. 718 00:38:51,550 --> 00:38:54,460 Ако то урадимо, ја сам срећан да одем преко било шта од овога поново. 719 00:38:54,460 --> 00:38:56,856 У реду, тако димњацима. 720 00:38:56,856 --> 00:39:02,695 Ли се ико сећа шта стацкс-- Било која карактеристике Стацк? 721 00:39:02,695 --> 00:39:05,550 722 00:39:05,550 --> 00:39:10,400 >> У реду, тако да је већина од нас, мислим, једу у трпезарији халлс-- 723 00:39:10,400 --> 00:39:13,100 колико смо можда не воле да. 724 00:39:13,100 --> 00:39:16,900 Али, очигледно, можете мислити о стека буквално као стек каблова 725 00:39:16,900 --> 00:39:18,460 или гомила ствари. 726 00:39:18,460 --> 00:39:21,820 И оно што је важно да схвате да је то 727 00:39:21,820 --> 00:39:26,850 нешто-- карактеристика да зовемо је по-- је ЛИФО. 728 00:39:26,850 --> 00:39:28,450 Да ли неко зна шта значи? 729 00:39:28,450 --> 00:39:29,070 Ммхмм? 730 00:39:29,070 --> 00:39:30,650 >> ПУБЛИКА: Последњи у, прво се. 731 00:39:30,650 --> 00:39:32,250 >> СПЕАКЕР 1: Добро, траје у, прво се. 732 00:39:32,250 --> 00:39:36,585 Дакле, ако знамо, ако смо слагање ствари се, најлакше да зграбите медјувремену- 733 00:39:36,585 --> 00:39:39,570 а можда једина ствар коју можемо зграбити Не ако је наш стек је велика еноугх-- 734 00:39:39,570 --> 00:39:40,850 је да се горњи елемент. 735 00:39:40,850 --> 00:39:43,460 Дакле, шта год је стављен на ласт-- као што овде видимо, 736 00:39:43,460 --> 00:39:46,370 год је гурнуо Мост на рецентли-- је 737 00:39:46,370 --> 00:39:51,160 ће бити први Оно што ми пући, у реду? 738 00:39:51,160 --> 00:39:56,324 >> Дакле, оно што имамо овде је други типедеф струцт. 739 00:39:56,324 --> 00:39:58,740 Ово је стварно само волим Црасх Цоурсе у структури података, 740 00:39:58,740 --> 00:40:01,650 тако да доста бачена на вас. 741 00:40:01,650 --> 00:40:02,540 Знам. 742 00:40:02,540 --> 00:40:04,970 Дакле, још један Струцт. 743 00:40:04,970 --> 00:40:06,740 Иаи за објекте. 744 00:40:06,740 --> 00:40:16,660 >> И у овом случају, то је нека Поинтер до низа која има неки капацитет. 745 00:40:16,660 --> 00:40:20,830 Дакле, ово представља нашу стацк Овде, као и наше стварне арраи 746 00:40:20,830 --> 00:40:22,520 да се држи наше елементе. 747 00:40:22,520 --> 00:40:24,850 А онда ту имамо неку величину. 748 00:40:24,850 --> 00:40:31,170 >> И обично, желите да задржите Трацк Колика је твој стацк 749 00:40:31,170 --> 00:40:36,180 јер оно што ће се дозволити да урадите је да ли знате величина, 750 00:40:36,180 --> 00:40:39,170 омогућава вам да кажете, У реду, ја сам у својству? 751 00:40:39,170 --> 00:40:40,570 Могу ли да додам још нешто? 752 00:40:40,570 --> 00:40:44,650 И то вам говори где врху вашег стацк 753 00:40:44,650 --> 00:40:48,180 је тако да знате шта вас могу заправо скинути. 754 00:40:48,180 --> 00:40:51,760 И то је заправо ће бити мало јасније овде. 755 00:40:51,760 --> 00:40:57,350 >> Дакле, за пусх, једна ствар, ако су икада да спроведе пусх, 756 00:40:57,350 --> 00:41:01,330 као што сам рекао, часни Стацк има ограничену величину, зар не? 757 00:41:01,330 --> 00:41:03,990 Наш низ имао неку капацитете. 758 00:41:03,990 --> 00:41:04,910 То је низ. 759 00:41:04,910 --> 00:41:08,930 То је фиксне величине, тако да морамо да уверите се да не стављамо више 760 00:41:08,930 --> 00:41:11,950 у наш низ од нас заправо имају простор за. 761 00:41:11,950 --> 00:41:16,900 >> Дакле, када правите пусх функција, прва ствар коју урадите је рецимо, у реду, 762 00:41:16,900 --> 00:41:18,570 имам простор у мом стек? 763 00:41:18,570 --> 00:41:23,330 Јер ако ја не радим, извини, Не могу остављати елемент. 764 00:41:23,330 --> 00:41:28,980 Ако то урадим, онда желите да сачувате је на врху стека, зар не? 765 00:41:28,980 --> 00:41:31,325 >> И то је разлог зашто смо пратити наше величине. 766 00:41:31,325 --> 00:41:35,290 Ако не пратите наше величине, не знамо где да га стави. 767 00:41:35,290 --> 00:41:39,035 Ми не знамо колико ствари су већ у нашем низу. 768 00:41:39,035 --> 00:41:41,410 Као и очигледно постоје начини да можда ти то можеш. 769 00:41:41,410 --> 00:41:44,610 Могао би све да инитиализе НУЛЛ а затим проверите најновије НУЛЛ, 770 00:41:44,610 --> 00:41:47,950 али много лакше ствар је само да кажем, у реду, пратити величине. 771 00:41:47,950 --> 00:41:51,840 Као да ја знам да имам четири елемента у мом низу, тако да следећа ствар 772 00:41:51,840 --> 00:41:55,930 које смо ставили у, ми смо ће складиштити на индекс 4. 773 00:41:55,930 --> 00:42:00,940 И онда, наравно, то значи да успешно сте гурнули несто 774 00:42:00,940 --> 00:42:03,320 на твој стацк, ти желе да повећају величину 775 00:42:03,320 --> 00:42:08,880 тако да знате где си тако да можете гурнути више ствари на. 776 00:42:08,880 --> 00:42:12,730 >> Дакле, ако покушавамо да поп нешто са стека, 777 00:42:12,730 --> 00:42:16,072 шта би могло да буде прва ствар да желите да проверите? 778 00:42:16,072 --> 00:42:18,030 Ви покушавате да нешто у вашем стацк. 779 00:42:18,030 --> 00:42:21,710 780 00:42:21,710 --> 00:42:24,781 Да ли сте сигурни да је то нешто у вашем стек? 781 00:42:24,781 --> 00:42:25,280 Не. 782 00:42:25,280 --> 00:42:26,894 Дакле, оно што би ми желели да проверите? 783 00:42:26,894 --> 00:42:27,810 >> ПУБЛИКА: [неразумљиво]. 784 00:42:27,810 --> 00:42:29,880 СПЕАКЕР 1: Проверите величине? 785 00:42:29,880 --> 00:42:31,840 Величина. 786 00:42:31,840 --> 00:42:38,520 Дакле, желимо да проверите да ли наша величина је већа од 0, у реду? 787 00:42:38,520 --> 00:42:44,970 А ако јесте, онда желимо да се смањује наше величине од 0 и вратити то. 788 00:42:44,970 --> 00:42:45,840 Зашто? 789 00:42:45,840 --> 00:42:49,950 >> У првој смо гура, ми то гура 790 00:42:49,950 --> 00:42:52,460 на величини и затим ажурира величине. 791 00:42:52,460 --> 00:42:57,850 У овом случају, ми децрементинг величину а затим га скида, то черупање 792 00:42:57,850 --> 00:42:58,952 из нашег низа. 793 00:42:58,952 --> 00:42:59,826 Зашто би ми то радимо? 794 00:42:59,826 --> 00:43:04,800 795 00:43:04,800 --> 00:43:11,811 Дакле, ако имам само једну ствар на стек, Шта би било моје величине у том тренутку? 796 00:43:11,811 --> 00:43:13,140 1. 797 00:43:13,140 --> 00:43:15,180 >> И где се елеменат 1 чува? 798 00:43:15,180 --> 00:43:17,621 На ком индекс? 799 00:43:17,621 --> 00:43:18,120 ПУБЛИКА: 0. 800 00:43:18,120 --> 00:43:19,060 СПЕАКЕР 1: 0. 801 00:43:19,060 --> 00:43:22,800 Дакле, у овом случају, ми Увек треба да се суре-- 802 00:43:22,800 --> 00:43:27,630 уместо враћања величина минус 1, јер смо ми 803 00:43:27,630 --> 00:43:31,730 Знам да је наш елеменат ће бити чувани на 1 Мање 804 00:43:31,730 --> 00:43:34,705 Шта год да је величина, ово само брине о њему. 805 00:43:34,705 --> 00:43:36,080 То је нешто више елегантан начин. 806 00:43:36,080 --> 00:43:41,220 И управо смо смањите ОУР величина, а затим се вратите величину. 807 00:43:41,220 --> 00:43:42,330 Ммхмм? 808 00:43:42,330 --> 00:43:45,300 >> ПУБЛИКА: Претпостављам само уопштено, Зашто би ово структура података 809 00:43:45,300 --> 00:43:47,800 бити корисно? 810 00:43:47,800 --> 00:43:50,660 >> СПЕАКЕР 1: То зависи од вашег контекста. 811 00:43:50,660 --> 00:43:57,420 Дакле, за неке теорије, Ако радите са-- ОК, 812 00:43:57,420 --> 00:44:02,750 да видим да ли постоји користан један које је корисно више него ван 813 00:44:02,750 --> 00:44:05,420 за ЦС. 814 00:44:05,420 --> 00:44:15,780 Са гомиле, сваки пут када је потребно пратити нешто што 815 00:44:15,780 --> 00:44:20,456 је недавно додао је, када ћеш да желите да користите стек. 816 00:44:20,456 --> 00:44:24,770 >> И не могу да се сетим је добра пример за то одмах. 817 00:44:24,770 --> 00:44:29,955 Али кад год најновији ствар је најважније за вас, 818 00:44:29,955 --> 00:44:31,705 Тада Стацк ће бити од користи. 819 00:44:31,705 --> 00:44:35,797 820 00:44:35,797 --> 00:44:39,330 Покушавам да мислим, ако постоји добра за ово. 821 00:44:39,330 --> 00:44:43,720 Кад помислим на добар пример у следећа 20 минута, ја ћу вам рећи дефинитивно. 822 00:44:43,720 --> 00:44:49,455 >> Али све у свему, ако има нешто, као што сам рекао највише, где најновију 823 00:44:49,455 --> 00:44:52,470 је најважније, то је где стек долази у игру. 824 00:44:52,470 --> 00:44:58,860 Док редовима су некако супротно. 825 00:44:58,860 --> 00:44:59,870 И сви мали пси. 826 00:44:59,870 --> 00:45:00,890 Зар ово није сјајно, зар не? 827 00:45:00,890 --> 00:45:03,299 Осећам се као да би требало само зеца видео 828 00:45:03,299 --> 00:45:05,090 право у сред Секција за вас 829 00:45:05,090 --> 00:45:08,870 јер је ово интензивна секција. 830 00:45:08,870 --> 00:45:10,480 >> Дакле, ред. 831 00:45:10,480 --> 00:45:12,710 Основи ред је као линија. 832 00:45:12,710 --> 00:45:15,780 Ви Сигуран сам да употреба Овај свакодневни, баш као у нашим трпезаријама. 833 00:45:15,780 --> 00:45:18,160 Дакле, морамо да идемо у и да наше тацне, ја сам 834 00:45:18,160 --> 00:45:21,260 Сигурно морате да чекате у реду да превуците или добили храну. 835 00:45:21,260 --> 00:45:24,650 >> Дакле, разлика овде да је ово ФИФО. 836 00:45:24,650 --> 00:45:30,090 Дакле, ако је последњи у ЛИФО, прво напоље, ФИФО је први у, први Оут. 837 00:45:30,090 --> 00:45:33,400 Дакле, ово је место где год сте ставили на први је ваша најважнија. 838 00:45:33,400 --> 00:45:35,540 Дакле, ако сте чекали у лине-- може вас 839 00:45:35,540 --> 00:45:39,130 замислите да сте отишли ​​у иди нови иПхоне 840 00:45:39,130 --> 00:45:42,800 и то је стацк где Последња особа у складу је прво добио, 841 00:45:42,800 --> 00:45:44,160 људи би убијају једни друге. 842 00:45:44,160 --> 00:45:49,800 >> Дакле ФИФО, сви смо веома познато са овде у стварном свету, 843 00:45:49,800 --> 00:45:54,930 а то све има везе са стварно врста поновно целу ову линију 844 00:45:54,930 --> 00:45:56,900 и чекања структуре. 845 00:45:56,900 --> 00:46:02,390 Дакле, док се са стека, имамо подстицај и поп. 846 00:46:02,390 --> 00:46:06,440 Са реду, имамо енкуеуе и декуеуе. 847 00:46:06,440 --> 00:46:10,910 Дакле, у основи значи енкуеуе стави га на леђа, 848 00:46:10,910 --> 00:46:13,680 и декуеуе средства узети Офф са предње стране. 849 00:46:13,680 --> 00:46:18,680 Дакле, наша структура података мало компликованије. 850 00:46:18,680 --> 00:46:21,060 Имамо другу ствар да пратите. 851 00:46:21,060 --> 00:46:25,950 >> Дакле, без глава, ово управо стек, зар не? 852 00:46:25,950 --> 00:46:27,900 То је иста структура као димњак. 853 00:46:27,900 --> 00:46:32,480 Једино што сада другачије ми је имају ову главу, који шта мислите 854 00:46:32,480 --> 00:46:34,272 ће пратити? 855 00:46:34,272 --> 00:46:35,510 >> ПУБЛИКА: Први. 856 00:46:35,510 --> 00:46:38,685 >> СПЕАКЕР 1: Добро, Прва ствар коју смо ставили у. 857 00:46:38,685 --> 00:46:41,130 Шеф наше ред. 858 00:46:41,130 --> 00:46:42,240 Ко год је први у реду. 859 00:46:42,240 --> 00:46:45,300 860 00:46:45,300 --> 00:46:49,420 У реду, тако да ако радимо енкуеуе. 861 00:46:49,420 --> 00:46:52,720 862 00:46:52,720 --> 00:46:55,920 Опет, са било ове структуре података, 863 00:46:55,920 --> 00:46:59,760 јер имамо посла са низом, треба да провери да ли имамо простора. 864 00:46:59,760 --> 00:47:03,290 >> То је нешто као ми говори момци, ако отворите датотеку, 865 00:47:03,290 --> 00:47:04,760 морате да проверите нулл. 866 00:47:04,760 --> 00:47:08,330 Са било којим од ових стацк и редови, треба 867 00:47:08,330 --> 00:47:13,420 да видим да ли има простора јер смо бави одређену величину низа, 868 00:47:13,420 --> 00:47:16,030 као што видимо овде-- 0, 1 Сви до 5. 869 00:47:16,030 --> 00:47:20,690 Дакле, оно што ми радимо у том случају је провера да видимо да ли имамо још простора. 870 00:47:20,690 --> 00:47:23,110 Да ли је наша величина мања од капацитета? 871 00:47:23,110 --> 00:47:28,480 >> Ако је тако, морамо да га чувате у реп и ми ажурирали наше величине. 872 00:47:28,480 --> 00:47:30,250 Па шта би реп буде у овом случају? 873 00:47:30,250 --> 00:47:32,360 Није експлицитно написано напоље. 874 00:47:32,360 --> 00:47:33,380 Како бисмо то Сторе? 875 00:47:33,380 --> 00:47:34,928 Шта би био реп? 876 00:47:34,928 --> 00:47:38,600 877 00:47:38,600 --> 00:47:40,190 >> Па хајде да прођете кроз овај пример. 878 00:47:40,190 --> 00:47:44,590 Дакле, ово је низ величине 6, зар не? 879 00:47:44,590 --> 00:47:49,220 И ми имамо сада, наша величина је 5. 880 00:47:49,220 --> 00:47:55,240 А када смо га ставили у, иде да иду у пети индекс, зар не? 881 00:47:55,240 --> 00:47:57,030 Дакле, чувајте у реп. 882 00:47:57,030 --> 00:48:05,600 >> Други начин да се напише реп бих само бити наш низ на индекс величине, зар не? 883 00:48:05,600 --> 00:48:07,560 То је величина 5. 884 00:48:07,560 --> 00:48:11,490 Следећа ствар је ићи у 5. 885 00:48:11,490 --> 00:48:12,296 Цоол? 886 00:48:12,296 --> 00:48:13,290 У реду. 887 00:48:13,290 --> 00:48:16,350 То мало компликованије добија када почнемо петљају са главом. 888 00:48:16,350 --> 00:48:17,060 Да? 889 00:48:17,060 --> 00:48:20,090 >> ПУБЛИКА: Да ли то значи да смо би прогласили низа који 890 00:48:20,090 --> 00:48:23,880 била дуга пет елемената и онда ћемо додавањем на њега? 891 00:48:23,880 --> 00:48:24,730 >> СПЕАКЕР 1: Не 892 00:48:24,730 --> 00:48:27,560 Дакле, у овом случају, то је стек. 893 00:48:27,560 --> 00:48:31,760 То ће бити проглашена као низ величине 6. 894 00:48:31,760 --> 00:48:37,120 И у овом случају, ми само један простора. 895 00:48:37,120 --> 00:48:42,720 >> Ок, тако да једна ствар је у томе Цасе, ако је наш шеф је на 0, 896 00:48:42,720 --> 00:48:45,270 онда можемо да га додате у величини. 897 00:48:45,270 --> 00:48:51,020 Али добија мало компликованије јер заправо, они 898 00:48:51,020 --> 00:48:52,840 немају слајд за то, тако да идем 899 00:48:52,840 --> 00:48:56,670 да изведе један, јер није баш тако једноставно када вас 900 00:48:56,670 --> 00:48:59,230 почети да се отараси ствари. 901 00:48:59,230 --> 00:49:03,920 Дакле, док са стацк ви увек имате 902 00:49:03,920 --> 00:49:08,920 да брине о томе шта је величина кад додао нешто на, 903 00:49:08,920 --> 00:49:15,710 с ред такође треба да сигурни да ваша глава је чини, 904 00:49:15,710 --> 00:49:20,760 јер добра ствар у вези са редовима је да ако ниси у капацитету, 905 00:49:20,760 --> 00:49:23,040 заправо може да га омотати око. 906 00:49:23,040 --> 00:49:28,810 >> Ок, тако да једна ствар Ох, Ово је страшно креда. 907 00:49:28,810 --> 00:49:31,815 Једна ствар коју треба размотрити је случај. 908 00:49:31,815 --> 00:49:35,514 909 00:49:35,514 --> 00:49:37,140 Само ћемо урадити пет. 910 00:49:37,140 --> 00:49:41,810 Ок, тако да идемо у кажу глава је овде. 911 00:49:41,810 --> 00:49:46,140 Ово је 0, 1, 2, 3, 4. 912 00:49:46,140 --> 00:49:54,210 >> Глава је тамо, и Молимо вас да имају ствари у њима. 913 00:49:54,210 --> 00:49:58,340 И желимо да додамо нешто, зар не? 914 00:49:58,340 --> 00:50:01,170 Тако што морамо да знају је да је глава увек 915 00:50:01,170 --> 00:50:05,620 прећи на овај начин и затим петља назад око, у реду? 916 00:50:05,620 --> 00:50:10,190 >> Дакле, ово је простор ред, зар не? 917 00:50:10,190 --> 00:50:13,950 Има простора у самом почетку, врста супротно од овога. 918 00:50:13,950 --> 00:50:17,920 Дакле, оно што треба да урадимо је да треба израчунати реп. 919 00:50:17,920 --> 00:50:20,530 Ако знате да је ваш Хеад није преселио, реп 920 00:50:20,530 --> 00:50:24,630 је само твој низ у индекс величине. 921 00:50:24,630 --> 00:50:30,000 >> Али у стварности, ако користите ред, твоја глава се ажурира. 922 00:50:30,000 --> 00:50:33,890 Дакле, оно што је потребно да урадите је да заправо израчунати реп. 923 00:50:33,890 --> 00:50:39,990 Дакле, оно што ми радимо је ова формула Овде, који ћу да вас пусти 924 00:50:39,990 --> 00:50:42,680 момци мисле о, и онда ћемо причати о томе. 925 00:50:42,680 --> 00:50:49,567 926 00:50:49,567 --> 00:50:50,400 Дакле, ово је капацитет. 927 00:50:50,400 --> 00:50:55,890 928 00:50:55,890 --> 00:50:59,660 >> Дакле, ово ће заправо да вам начин да се то уради. 929 00:50:59,660 --> 00:51:03,205 930 00:51:03,205 --> 00:51:04,330 Јер у овом случају, шта? 931 00:51:04,330 --> 00:51:09,205 Седиште је у 1, наша величина је 4. 932 00:51:09,205 --> 00:51:11,760 933 00:51:11,760 --> 00:51:18,490 Ако се мод да до 5, добијамо 0, где смо требали да улаз. 934 00:51:18,490 --> 00:51:23,320 935 00:51:23,320 --> 00:51:26,080 >> Тако онда у следећем предмету, ако смо за то, 936 00:51:26,080 --> 00:51:33,390 кажемо, у реду, хајде да декуеуе нешто. 937 00:51:33,390 --> 00:51:34,390 Ми декуеуе ово. 938 00:51:34,390 --> 00:51:37,740 Узимамо овај елемент, зар не? 939 00:51:37,740 --> 00:51:47,930 >> А сада наш глава окренута овде, и желимо додати у другој ствари. 940 00:51:47,930 --> 00:51:52,470 То је у основи Назад на нашој линији, зар не? 941 00:51:52,470 --> 00:51:55,450 Редови се омотати око низа. 942 00:51:55,450 --> 00:51:57,310 То је једна од главних разлика. 943 00:51:57,310 --> 00:51:58,780 Димњаци, не могу то да урадим. 944 00:51:58,780 --> 00:52:01,140 >> Са редова, можете јер све је важно 945 00:52:01,140 --> 00:52:03,940 је да знате шта је недавно додат. 946 00:52:03,940 --> 00:52:10,650 Пошто је све ће бити додат у ова лефтвард правац, у овом случају, 947 00:52:10,650 --> 00:52:16,480 и онда замотати око, можете настави стављање у новим елементима 948 00:52:16,480 --> 00:52:18,830 на предњем делу низа јер није баш 949 00:52:18,830 --> 00:52:20,640 предњи део низа више. 950 00:52:20,640 --> 00:52:26,320 Можете мислити од почетка Арраи као где твоја глава је у ствари. 951 00:52:26,320 --> 00:52:29,710 >> Дакле, ова формула како се рачуна реп. 952 00:52:29,710 --> 00:52:32,780 953 00:52:32,780 --> 00:52:35,610 Да ли то има смисла? 954 00:52:35,610 --> 00:52:36,110 У реду. 955 00:52:36,110 --> 00:52:39,400 956 00:52:39,400 --> 00:52:44,040 У реду, декуеуе, а затим ви имате 10 минута 957 00:52:44,040 --> 00:52:48,840 да ме питате било разјашњавању питања хоћеш, јер знам да је то лудо. 958 00:52:48,840 --> 00:52:51,980 >> У реду, тако да у истој ваи-- Не знам да ли сте приметили, 959 00:52:51,980 --> 00:52:53,450 али ЦС је све о обрасцима. 960 00:52:53,450 --> 00:52:57,370 Ствари су прилично Исто, само са ситним изменама. 961 00:52:57,370 --> 00:52:58,950 Дакле, иста ствар овде. 962 00:52:58,950 --> 00:53:04,040 Морамо да проверите да ли смо заиста Имам нешто у нашем реду, зар не? 963 00:53:04,040 --> 00:53:05,960 Саи ОК, је наша величина већи од 0! 964 00:53:05,960 --> 00:53:06,730 Цоол. 965 00:53:06,730 --> 00:53:10,690 >> Ако то урадимо, онда крећемо наше главе, који је оно што сам показао овде. 966 00:53:10,690 --> 00:53:13,870 Ми ажурирати наш главе да буде још један. 967 00:53:13,870 --> 00:53:18,390 А онда смањите наше величина и вратити елемент. 968 00:53:18,390 --> 00:53:21,000 969 00:53:21,000 --> 00:53:26,250 >> Много конкретнија постоји код на студи.цс50.нет, 970 00:53:26,250 --> 00:53:29,440 и ја препоручујем идем кроз њу ако имате времена, 971 00:53:29,440 --> 00:53:30,980 чак и ако је само псеудо-код. 972 00:53:30,980 --> 00:53:35,980 И ако хоћете да причамо преко да са мном један на један, молим те пусти 973 00:53:35,980 --> 00:53:37,500 Знам. 974 00:53:37,500 --> 00:53:38,770 Ја бих радо. 975 00:53:38,770 --> 00:53:42,720 Структуре података, ако узмеш ЦС 124, ви ћете 976 00:53:42,720 --> 00:53:47,830 Знам да структуре података се веома забава и то је тек почетак. 977 00:53:47,830 --> 00:53:50,350 >> Па знам да је тешко. 978 00:53:50,350 --> 00:53:51,300 То је у реду. 979 00:53:51,300 --> 00:53:52,410 Боримо се. 980 00:53:52,410 --> 00:53:53,630 И даље радим. 981 00:53:53,630 --> 00:53:56,660 Дакле, не брините превише о томе. 982 00:53:56,660 --> 00:54:02,390 >> Али, то је у основи твој убрзани курс из структуре података. 983 00:54:02,390 --> 00:54:03,400 Знам да је доста. 984 00:54:03,400 --> 00:54:06,860 Да ли постоји нешто што можемо бих да одем поново? 985 00:54:06,860 --> 00:54:09,400 Све што желимо да разговарамо преко? 986 00:54:09,400 --> 00:54:10,060 Да? 987 00:54:10,060 --> 00:54:16,525 >> ПУБЛИКА: На том примеру, тако нови реп је на 0 преко тога? 988 00:54:16,525 --> 00:54:17,150 СПЕАКЕР 1: Да. 989 00:54:17,150 --> 00:54:18,230 ПУБЛИКА: У реду. 990 00:54:18,230 --> 00:54:24,220 Па онда иде кроз, морао би 1 плус 4 или-- 991 00:54:24,220 --> 00:54:27,671 >> СПЕАКЕР 1: Дакле, ви сте рекли, када желимо да идемо ово опет? 992 00:54:27,671 --> 00:54:28,296 ПУБЛИКА: Да. 993 00:54:28,296 --> 00:54:38,290 Дакле, ако сте рачунајући оут-- где су Ви рачунања реп од у то? 994 00:54:38,290 --> 00:54:44,260 >> СПЕАКЕР 1: Тако реп био сам у-- променила ово. 995 00:54:44,260 --> 00:54:52,010 Дакле, у овом примеру овде, ово је Арраи гледамо, у реду? 996 00:54:52,010 --> 00:54:54,670 Дакле, имамо ствари на 1, 2, 3 и 4. 997 00:54:54,670 --> 00:55:05,850 Дакле, имамо наш главни једнака 1 у Ова тачка, а наша величина је једнак 4 998 00:55:05,850 --> 00:55:07,050 у овом тренутку, зар не? 999 00:55:07,050 --> 00:55:08,960 >> Ви сви се слажу да је то тако? 1000 00:55:08,960 --> 00:55:14,620 Тако да радимо главу плус величину, који даје нам 5, а онда мод за 5. 1001 00:55:14,620 --> 00:55:20,690 Добијамо 0, што нам говори да је 0 где је наш реп, где имамо простора. 1002 00:55:20,690 --> 00:55:22,010 >> ПУБЛИКА: Шта је капа? 1003 00:55:22,010 --> 00:55:23,520 >> СПЕАКЕР 1: Капацитет. 1004 00:55:23,520 --> 00:55:24,020 Извините. 1005 00:55:24,020 --> 00:55:29,640 Тако да је величина вашег низа. 1006 00:55:29,640 --> 00:55:35,210 1007 00:55:35,210 --> 00:55:36,047 Да? 1008 00:55:36,047 --> 00:55:39,210 >> ПУБЛИКА: [неразумљиво] пре враћамо елемент? 1009 00:55:39,210 --> 00:55:46,270 >> СПЕАКЕР 1: Дакле, крећемо глава или вратите тренутак? 1010 00:55:46,270 --> 00:55:52,680 Дакле, ако идемо један, смањите величину? 1011 00:55:52,680 --> 00:55:54,150 Сачекај. 1012 00:55:54,150 --> 00:55:55,770 Дефинитивно заборавио другог. 1013 00:55:55,770 --> 00:56:00,646 1014 00:56:00,646 --> 00:56:01,990 Ништа за то. 1015 00:56:01,990 --> 00:56:04,980 Не постоји једна формула. 1016 00:56:04,980 --> 00:56:09,980 Да, што би желели да се врате глава и онда се вратимо. 1017 00:56:09,980 --> 00:56:13,270 >> ПУБЛИКА: У реду, јер у овом Поинт, глава је била на 0, 1018 00:56:13,270 --> 00:56:18,452 а затим желите да се вратите индекс 0, а затим да глава 1? 1019 00:56:18,452 --> 00:56:19,870 >> СПЕАКЕР 1: Добро. 1020 00:56:19,870 --> 00:56:22,820 Мислим да је то још једна Формула некако овако. 1021 00:56:22,820 --> 00:56:26,970 Ја га немам на врху главу као Не желим да ти дам погрешан. 1022 00:56:26,970 --> 00:56:35,470 Али мислим да је савршено важи за рецимо, у реду, чувајте овај елемент-- год 1023 00:56:35,470 --> 00:56:40,759 Елемент глава је-- смањите ваше величина, померите главу изнад, и повратак 1024 00:56:40,759 --> 00:56:41,800 шта год да је елеменат. 1025 00:56:41,800 --> 00:56:44,760 То је савршено важећа. 1026 00:56:44,760 --> 00:56:45,260 У реду. 1027 00:56:45,260 --> 00:56:48,360 1028 00:56:48,360 --> 00:56:53,560 Осећам се као да то није као мост-- ниси 1029 00:56:53,560 --> 00:56:55,740 ће да хода одавде као, да, знам покушаја. 1030 00:56:55,740 --> 00:56:56,880 Имам све. 1031 00:56:56,880 --> 00:56:57,670 То је у реду. 1032 00:56:57,670 --> 00:57:00,200 Обећавам. 1033 00:57:00,200 --> 00:57:05,240 Али структуре података су нешто што је потребно доста времена да се навикнем. 1034 00:57:05,240 --> 00:57:10,010 Вероватно један од најтеже ствари, мислим да је у току. 1035 00:57:10,010 --> 00:57:15,330 >> Тако да дефинитивно треба понављање и гледајући ат-- И 1036 00:57:15,330 --> 00:57:20,050 не знам повезане листе док сам далеко урадио превише са њима, 1037 00:57:20,050 --> 00:57:22,550 на исти начин на који нисам заиста разумемо показиваче 1038 00:57:22,550 --> 00:57:27,040 док сам морао да га научи за два године и учинити своје псетс са њим. 1039 00:57:27,040 --> 00:57:28,990 Потребно је много времена и понављања. 1040 00:57:28,990 --> 00:57:32,600 И на крају, то ће некако цлицк. 1041 00:57:32,600 --> 00:57:36,320 >> Али, у међувремену, ако сте љубазни имате високог нивоа разумевања за оно што 1042 00:57:36,320 --> 00:57:39,321 ово уради, њиховим предностима а цонс-- која је шта 1043 00:57:39,321 --> 00:57:41,820 заиста се труде да нагласе, посебно у току интро. 1044 00:57:41,820 --> 00:57:45,511 Као, зашто би ми користимо пробајте преко низа? 1045 00:57:45,511 --> 00:57:48,010 Као што су позитивне и негативи сваког од њих? 1046 00:57:48,010 --> 00:57:51,610 >> И разумевање компромисе између свака од ових структура 1047 00:57:51,610 --> 00:57:54,910 је оно што је много важније сада. 1048 00:57:54,910 --> 00:57:58,140 Могу постојати један луди питање или два да је 1049 00:57:58,140 --> 00:58:03,710 ћу да вас замолим да спроведе пусх или имплементирају поп или енкуеуе и декуеуе. 1050 00:58:03,710 --> 00:58:07,340 Али углавном, имајући то виши ниво разумевања и 1051 00:58:07,340 --> 00:58:09,710 од интуитивно схватање је важнији од ствари 1052 00:58:09,710 --> 00:58:11,250 бити у стању да га спроведе. 1053 00:58:11,250 --> 00:58:14,880 >> Било би заиста сјајно када сви ви могао изаћи и идемо имплементирати пробати, 1054 00:58:14,880 --> 00:58:19,720 али ми разумемо да није нужно најразумнији ствар сада. 1055 00:58:19,720 --> 00:58:23,370 Али можете у вашој псет, ако желите да, а онда ћете добити праксу, 1056 00:58:23,370 --> 00:58:27,200 а онда можда ћете заиста разумем. 1057 00:58:27,200 --> 00:58:27,940 Да? 1058 00:58:27,940 --> 00:58:30,440 >> ПУБЛИКА: Ок, тако да су оне које ми треба да користимо у псет? 1059 00:58:30,440 --> 00:58:31,916 Да ли треба да користите један од њих? 1060 00:58:31,916 --> 00:58:32,540 СПЕАКЕР 1: Да. 1061 00:58:32,540 --> 00:58:34,199 Тако да имате избор. 1062 00:58:34,199 --> 00:58:36,740 Претпостављам да у овом случају, можемо говорити о псет помало 1063 00:58:36,740 --> 00:58:40,480 јер сам водио кроз њих. 1064 00:58:40,480 --> 00:58:47,779 Дакле, у вашем псет, ви имате своје Избор покушаја или хеш табеле. 1065 00:58:47,779 --> 00:58:49,570 Неки људи ће покушати и користе БЛООМ филтере, 1066 00:58:49,570 --> 00:58:51,840 али они нису технички исправна. 1067 00:58:51,840 --> 00:58:55,804 Због њихове пробабилистичке природе, Понекад они дају лажне позитивне. 1068 00:58:55,804 --> 00:58:57,095 Они су кул гледати, мада. 1069 00:58:57,095 --> 00:58:59,030 Препоручујемо лоокинг их најмање. 1070 00:58:59,030 --> 00:59:03,260 Али имате избор између хеш табели и пробати. 1071 00:59:03,260 --> 00:59:06,660 И то ће бити, где убацујете у вашем речнику. 1072 00:59:06,660 --> 00:59:09,230 >> А ви ћете морати да изаберете Ваша хасх функција, 1073 00:59:09,230 --> 00:59:13,420 мораћете да изаберете колико кашике имате, а то ће се разликовати. 1074 00:59:13,420 --> 00:59:17,440 Као и ако имате више кашике, можда ће радити брже. 1075 00:59:17,440 --> 00:59:22,790 Али можда губите доста простора на тај начин, иако. 1076 00:59:22,790 --> 00:59:26,320 Морате да га схватим. 1077 00:59:26,320 --> 00:59:27,140 Ммхмм? 1078 00:59:27,140 --> 00:59:29,875 >> ПУБЛИКА: Рекли сте пре тога можемо користити и друге функције хасх, 1079 00:59:29,875 --> 00:59:31,750 да ми не морамо да креира хеш функцију? 1080 00:59:31,750 --> 00:59:32,666 >> СПЕАКЕР 1: Да, у праву. 1081 00:59:32,666 --> 00:59:38,150 Дакле, буквално за ваш хеш функције, као и Гоогле "хасх функција" 1082 00:59:38,150 --> 00:59:40,770 и тражити неке добре. 1083 00:59:40,770 --> 00:59:43,250 Ви се не очекује да изгради сопствених хеш функције. 1084 00:59:43,250 --> 00:59:46,100 Људи троши своје Тезе о тим стварима. 1085 00:59:46,100 --> 00:59:50,250 >> Дакле, не брините о изградњи свој. 1086 00:59:50,250 --> 00:59:53,350 Нађи један Онлине за почетак. 1087 00:59:53,350 --> 00:59:56,120 Неки од њих морате да манипулише мало 1088 00:59:56,120 --> 00:59:59,430 Провјерите да ли врсте Реванш се и шта све не, па у почетку, 1089 00:59:59,430 --> 01:00:02,420 Ја бих препоручио користећи нешто веома лако да је можда управо 1090 01:00:02,420 --> 01:00:04,680 хешева на првом слову. 1091 01:00:04,680 --> 01:00:08,760 И онда када имате да рад, уграђеним цоолер хасх функција. 1092 01:00:08,760 --> 01:00:09,260 Ммхмм? 1093 01:00:09,260 --> 01:00:13,020 >> ПУБЛИКА: Да ли би било пробати или ефикасно али само теже, као-- 1094 01:00:13,020 --> 01:00:15,880 >> СПЕАКЕР 1: Па покушај, мислим, је интуитивно тешко спровести 1095 01:00:15,880 --> 01:00:18,310 али је врло брзо. 1096 01:00:18,310 --> 01:00:20,620 Међутим, заузима више простора. 1097 01:00:20,620 --> 01:00:25,270 Опет, можете оптимизирати како оних у различите начине и да постоје начини да-- 1098 01:00:25,270 --> 01:00:26,770 ПУБЛИКА: Како смо оцењује на ово? 1099 01:00:26,770 --> 01:00:27,540 Да ли обзира-- 1100 01:00:27,540 --> 01:00:29,164 >> СПЕАКЕР 1: Значи ви оцењени нормалан начин. 1101 01:00:29,164 --> 01:00:31,330 Идеш да се оцењује на дизајну. 1102 01:00:31,330 --> 01:00:36,020 Како год урадите, желите да уверите се да је као елегантан као што може да буде 1103 01:00:36,020 --> 01:00:38,610 и као ефикасно као што може бити. 1104 01:00:38,610 --> 01:00:41,950 Али ако изаберете пробати или хасх табле, све док ради, 1105 01:00:41,950 --> 01:00:45,350 смо задовољни тим. 1106 01:00:45,350 --> 01:00:48,370 А ако користите нешто што хешева на првом писму, то је у реду, 1107 01:00:48,370 --> 01:00:51,410 Као можда као питању дизајна. 1108 01:00:51,410 --> 01:00:53,410 Такође смо постизања тачка у овом семестер-- 1109 01:00:53,410 --> 01:00:55,340 Не знам да ли си момци нотицед-- ако сте 1110 01:00:55,340 --> 01:00:58,780 псет оцене одбити мало због дизајна и ситница, 1111 01:00:58,780 --> 01:00:59,900 То је сасвим у реду. 1112 01:00:59,900 --> 01:01:02,960 Постаје до тачке где се ваши Програми постају компликованији. 1113 01:01:02,960 --> 01:01:04,830 Тхере аре море места можете побољшати на. 1114 01:01:04,830 --> 01:01:06,370 >> Дакле, то је сасвим нормално. 1115 01:01:06,370 --> 01:01:08,810 Није да си радиш горе на псет. 1116 01:01:08,810 --> 01:01:11,885 То је само смо бити теже на тебе. 1117 01:01:11,885 --> 01:01:13,732 Дакле, сви су га осећа. 1118 01:01:13,732 --> 01:01:14,940 Само оцењује све твоје псетс. 1119 01:01:14,940 --> 01:01:16,490 Знам да сви то осећа. 1120 01:01:16,490 --> 01:01:19,600 >> Дакле, немојте се забринути због тога. 1121 01:01:19,600 --> 01:01:23,580 А ако имате било каквих питања у вези претходне псетс или начина на које можете побољшати, 1122 01:01:23,580 --> 01:01:27,760 Покушавам и коментарисати специфичне места, али понекад је касно 1123 01:01:27,760 --> 01:01:30,840 и ја се уморити. 1124 01:01:30,840 --> 01:01:34,885 Да ли постоје неке друге ствари око структуре података? 1125 01:01:34,885 --> 01:01:37,510 Сигуран сам да момци не баш желим више да причам о њима, 1126 01:01:37,510 --> 01:01:42,650 али ако има, ја сам срећан да иди на њих, као и било шта 1127 01:01:42,650 --> 01:01:45,580 од предавања протеклом недеље или прошле недеље. 1128 01:01:45,580 --> 01:01:51,580 >> Знам да прошле недеље је све преглед, тако да да смо прескочили неки преглед 1129 01:01:51,580 --> 01:01:54,190 од предавања. 1130 01:01:54,190 --> 01:01:58,230 Има ли још питања могу да одговорим? 1131 01:01:58,230 --> 01:01:59,350 Добро, у реду. 1132 01:01:59,350 --> 01:02:02,400 Па, ви излази 15 минута раније. 1133 01:02:02,400 --> 01:02:08,370 >> Надам се да је ово полу-корисно барем, и ја ћу вас видим следеће недеље, 1134 01:02:08,370 --> 01:02:12,150 или четвртак радног времена. 1135 01:02:12,150 --> 01:02:15,285 Да ли постоје захтеви за грицкалице за следећу недељу, то је ствар? 1136 01:02:15,285 --> 01:02:17,459 Зато што сам заборавио бомбоне данас. 1137 01:02:17,459 --> 01:02:19,750 И донео бомбоне последњи недеља, али то је било Сатурдаи, 1138 01:02:19,750 --> 01:02:25,400 тако да су као шест људи који су имао четири кесице бомбона себи. 1139 01:02:25,400 --> 01:02:28,820 Ја могу довести Старбурстс Опет, ако желите. 1140 01:02:28,820 --> 01:02:29,580 Старбурстс? 1141 01:02:29,580 --> 01:02:32,250 У реду, звучи добро. 1142 01:02:32,250 --> 01:02:35,050 Хаве велики дан, момци. 1143 01:02:35,050 --> 01:02:39,510