1 00:00:00,000 --> 00:00:05,204 2 00:00:05,204 --> 00:00:07,370 Даг Ллоид: Дакле, ако сте гледао видео на стеку, 3 00:00:07,370 --> 00:00:09,870 Ово је вероватно ће се осећати као мало деја ву. 4 00:00:09,870 --> 00:00:13,850 То ће врло сличан концепт, само са благим преокретом на њему. 5 00:00:13,850 --> 00:00:15,530 Ми ћемо сада говорити о редовима. 6 00:00:15,530 --> 00:00:19,350 Дакле, ред, сличан стека, је друга врста структуре података 7 00:00:19,350 --> 00:00:22,412 да можемо користити за одржавање Подаци на организован начин. 8 00:00:22,412 --> 00:00:24,120 Слично стеку, може да се спроводи 9 00:00:24,120 --> 00:00:27,000 као низа или повезане листе. 10 00:00:27,000 --> 00:00:30,320 За разлику од гомиле, правила које користимо за одређивање 11 00:00:30,320 --> 00:00:34,210 Када ствари постану додао и уклоњена из Ред је су мало другачије. 12 00:00:34,210 --> 00:00:36,590 >> За разлику од гомиле, која је ЛИФО структура, 13 00:00:36,590 --> 00:00:45,610 ласт ин, фирст оут, низ је ФИФО структура, ФИФО први у, први напоље. 14 00:00:45,610 --> 00:00:49,320 Сада редови, вероватно имају аналогију са редовима. 15 00:00:49,320 --> 00:00:52,820 Ако сте икада били у реду у забавни парк или у банци, 16 00:00:52,820 --> 00:00:56,430 ту је нека врста праведности имплементацију структуре. 17 00:00:56,430 --> 00:00:59,160 Прва особа у реду у банка је прва особа 18 00:00:59,160 --> 00:01:00,760 ко ће говорити на Врачару. 19 00:01:00,760 --> 00:01:03,522 >> Било би врста расе на дно, ако једини начин 20 00:01:03,522 --> 00:01:06,730 мораш да разговарате са благајника на Банка је требало да буде последња особа у реду. 21 00:01:06,730 --> 00:01:09,146 Сви би увек желе да је последња особа у реду, 22 00:01:09,146 --> 00:01:12,580 а особа која је тамо први који је чекао неко време, 23 00:01:12,580 --> 00:01:14,715 може бити тамо сатима, и сати, и сати 24 00:01:14,715 --> 00:01:17,590 пре него што имају прилику да заиста повући никакав новац у банци. 25 00:01:17,590 --> 00:01:22,510 И тако су редови врста од правичност спровођење структуру. 26 00:01:22,510 --> 00:01:25,780 Али то не мора да значи да гомила су лоша ствар, само 27 00:01:25,780 --> 00:01:28,160 да редови су још један начин да се то уради. 28 00:01:28,160 --> 00:01:32,420 Дакле, опет ред је први у, први се, насупрот стека који траје у, 29 00:01:32,420 --> 00:01:34,440 Први напоље. 30 00:01:34,440 --> 00:01:36,190 Слично стеку, имамо две операције 31 00:01:36,190 --> 00:01:38,470 да можемо изводити на редовима. 32 00:01:38,470 --> 00:01:43,910 Имена су енкуеуе, што је додавање нови елемент до краја реда, 33 00:01:43,910 --> 00:01:47,330 и декуеуе, које је за уклањање најстарији 34 00:01:47,330 --> 00:01:49,670 елеменат са предње реда. 35 00:01:49,670 --> 00:01:53,600 Тако да ћемо додати елементи на крају реда, 36 00:01:53,600 --> 00:01:57,220 а ми ћемо уклонити елементе са предње реда. 37 00:01:57,220 --> 00:02:00,790 Опет, са стека, додајући смо елементи до врха стека 38 00:02:00,790 --> 00:02:03,380 и уклањање елемената са врха стека. 39 00:02:03,380 --> 00:02:07,570 Тако је и са енкуеуе, то додајући да крај, уклањање са предње стране. 40 00:02:07,570 --> 00:02:10,639 Тако најстарија ствар у ту увек је следећа ствар 41 00:02:10,639 --> 00:02:13,620 да изађу ако покушамо и декуеуе нешто. 42 00:02:13,620 --> 00:02:18,330 >> Дакле, опет, са редовима, можемо арраи-басед имплементације 43 00:02:18,330 --> 00:02:20,110 и повезана листа на бази имплементације. 44 00:02:20,110 --> 00:02:24,620 Ми ћемо поново почети са арраи-басед имплементације. 45 00:02:24,620 --> 00:02:27,070 Дефиниција Структура Изгледа прилично слично. 46 00:02:27,070 --> 00:02:30,720 Имамо још један низ има података типа вредности, 47 00:02:30,720 --> 00:02:32,690 тако да може да произвољне врсте података. 48 00:02:32,690 --> 00:02:35,570 Опет ћемо користити целих бројева у овом примеру. 49 00:02:35,570 --> 00:02:39,830 >> И баш као са нашим Имплементација стек низ-басед, 50 00:02:39,830 --> 00:02:42,340 јер смо коришћењем Арраи, ми нужно 51 00:02:42,340 --> 00:02:46,850 има ту ограничење да је Ц врста од намеће на нас, који смо се 52 00:02:46,850 --> 00:02:51,670 немају динамику у нашим способност да расте и смањују низ. 53 00:02:51,670 --> 00:02:55,710 Морамо да одлучимо на почетку што је максималан број ствари 54 00:02:55,710 --> 00:02:59,300 да можемо ставити у ово ред, и у овом случају, 55 00:02:59,300 --> 00:03:02,070 Капацитет ће бити неких фунта дефинисана константа у нашем коду. 56 00:03:02,070 --> 00:03:05,430 И за потребе овог Видео, капацитет ће бити 10. 57 00:03:05,430 --> 00:03:07,690 >> Морамо да пратимо предњи део реда 58 00:03:07,690 --> 00:03:11,160 тако да знамо који елеменат желимо да декуеуе, 59 00:03:11,160 --> 00:03:15,070 и ми такође треба да пратите Нешто елсе-- број елемената 60 00:03:15,070 --> 00:03:16,690 да имамо у нашем реду. 61 00:03:16,690 --> 00:03:19,360 Обратите пажњу да не праћење на крају реда, само 62 00:03:19,360 --> 00:03:21,150 величина реда. 63 00:03:21,150 --> 00:03:24,310 А разлог за то ће, надамо се, постати јасније у једном тренутку. 64 00:03:24,310 --> 00:03:26,143 Када смо завршили овај тип дефиниција, 65 00:03:26,143 --> 00:03:29,080 имамо нову врсту података зове ред, што сада можемо 66 00:03:29,080 --> 00:03:30,630 прогласи променљиве тог типа података. 67 00:03:30,630 --> 00:03:35,350 И помало збуњујуће, одлучила сам звати овај редослед к, писмо 68 00:03:35,350 --> 00:03:38,090 К уместо типа података к. 69 00:03:38,090 --> 00:03:39,600 >> Дакле, овде је наш ред. 70 00:03:39,600 --> 00:03:40,700 То је структура. 71 00:03:40,700 --> 00:03:45,730 Она садржи три члана или три поља, низ величине капацитета. 72 00:03:45,730 --> 00:03:47,340 У том случају, капацитет је 10. 73 00:03:47,340 --> 00:03:49,580 И ово је низ да држи цели бројеви. 74 00:03:49,580 --> 00:03:55,240 У зеленој је предњи део нашег реду је Следећи елемент да се уклоне, а ин ред 75 00:03:55,240 --> 00:03:58,610 ће бити величина реда, колико елементи су тренутно 76 00:03:58,610 --> 00:04:01,190 постоје у реду. 77 00:04:01,190 --> 00:04:05,300 Дакле, ако кажемо к.фронт једнаки 0, а к.сизе величина износи 0-- 78 00:04:05,300 --> 00:04:07,120 стављамо 0с у тим областима. 79 00:04:07,120 --> 00:04:11,070 И у овом тренутку, ми смо прилично спремни да почнемо да радимо са нашим редовима. 80 00:04:11,070 --> 00:04:14,140 >> Дакле, прва операција можемо врши се на енкуеуе нешто, 81 00:04:14,140 --> 00:04:16,860 да додате нови елемент крај реда. 82 00:04:16,860 --> 00:04:19,089 Па шта треба да раде у општем случају? 83 00:04:19,089 --> 00:04:23,690 Па ова функција енкуеуе потребе да прихвати показивач на нашем реду. 84 00:04:23,690 --> 00:04:26,370 Опет, ако смо прогласили наш ред глобално, 85 00:04:26,370 --> 00:04:29,490 не би требало да урадите нужно, али генерално, ми смо 86 00:04:29,490 --> 00:04:32,330 треба да прихвате савете структурама података 87 00:04:32,330 --> 00:04:35,040 овако, јер у супротном, смо пролазили поред валуе-- смо 88 00:04:35,040 --> 00:04:38,140 пролази копије реду, па ми у ствари не мења 89 00:04:38,140 --> 00:04:41,050 да је ред да намеравамо да се мења. 90 00:04:41,050 --> 00:04:44,860 >> Друга ствар је потребно да урадите је да прихвати елемент података одговарајућег типа. 91 00:04:44,860 --> 00:04:46,818 Опет, у овом случају, то је ће бити цели бројеви, 92 00:04:46,818 --> 00:04:49,330 али ти произвољно могао прогласи тип података као вредност 93 00:04:49,330 --> 00:04:51,160 и користити ово уопште. 94 00:04:51,160 --> 00:04:56,030 То је елеменат желимо да енкуеуе, желимо да додамо на крај реда. 95 00:04:56,030 --> 00:04:58,573 Онда смо заправо желе да поставите те податке у реду. 96 00:04:58,573 --> 00:05:01,490 У овом случају, што га сврстава у тачна локација нашег низа, 97 00:05:01,490 --> 00:05:05,040 а онда желите да промените величину у реду, колико нам елементи 98 00:05:05,040 --> 00:05:07,050 Тренутно имамо. 99 00:05:07,050 --> 00:05:07,990 >> Дакле, хајде да почнемо. 100 00:05:07,990 --> 00:05:10,890 Ево, опет, да се општи облик функција декларација 101 00:05:10,890 --> 00:05:13,980 за оно енкуеуе може изгледати. 102 00:05:13,980 --> 00:05:14,910 И идемо. 103 00:05:14,910 --> 00:05:18,335 Хајде да енкуеуе број 28 у реду. 104 00:05:18,335 --> 00:05:19,460 Па шта ћемо да радимо? 105 00:05:19,460 --> 00:05:23,390 Па, предњи део нашег реду је на 0, и величину нашег реда 106 00:05:23,390 --> 00:05:29,680 је на 0, и тако смо вероватно желите да поставите број 28 у арраи броју елемената 107 00:05:29,680 --> 00:05:31,124 0, зар не? 108 00:05:31,124 --> 00:05:32,540 Дакле, сада смо поставили да тамо. 109 00:05:32,540 --> 00:05:34,820 Дакле, сада шта нам је потребно да промените? 110 00:05:34,820 --> 00:05:37,090 Ми не желимо да промените предњи део реда, 111 00:05:37,090 --> 00:05:40,850 јер желимо да знамо шта елемент смо можда ћете морати да декуеуе касније. 112 00:05:40,850 --> 00:05:44,020 Дакле, разлог што имамо предњи тамо је нека врста показатеља шта је 113 00:05:44,020 --> 00:05:46,439 најстарија ствар у низу. 114 00:05:46,439 --> 00:05:49,730 Па најстарија ствар у арраи-- у Чињеница је једина ствар у низу право 115 00:05:49,730 --> 00:05:53,540 сада-- је 28, што је на арраи локацији 0. 116 00:05:53,540 --> 00:05:56,160 Дакле, ми не желимо да промијенити тај број зелено, 117 00:05:56,160 --> 00:05:57,910 јер је то најстарији елеменат. 118 00:05:57,910 --> 00:06:00,510 Уместо тога, желимо да промените величину. 119 00:06:00,510 --> 00:06:04,110 Дакле, у овом случају, ми ћемо инкрементирање величине до 1. 120 00:06:04,110 --> 00:06:08,430 >> Сада општи врста идеје где Следећи елемент ће ићи у реду 121 00:06:08,430 --> 00:06:12,310 је то адд та два броја заједно, предња и величина, 122 00:06:12,310 --> 00:06:16,390 и то ће вам рећи где следећи елемент у реду је ићи. 123 00:06:16,390 --> 00:06:18,130 Дакле, хајде да енкуеуе други број. 124 00:06:18,130 --> 00:06:20,250 Идемо енкуеуе 33. 125 00:06:20,250 --> 00:06:24,480 Дакле, 33 ће ићи у Арраи локација 0, плус 1. 126 00:06:24,480 --> 00:06:26,840 Дакле, у овом случају, то ће да иде у арраи број 1, 127 00:06:26,840 --> 00:06:29,500 а сада величине нашег реду је 2. 128 00:06:29,500 --> 00:06:31,840 >> Опет, ми не мења предњи део нашег реда, 129 00:06:31,840 --> 00:06:34,730 јер 28 је и даље Најстарији елеменат, а ми 130 00:06:34,730 --> 00:06:38,220 Желим да-- када смо на крају добили да декуеуинг, уклањање елемената 131 00:06:38,220 --> 00:06:43,300 из овог реда, желимо да знамо где је најстарији елемент. 132 00:06:43,300 --> 00:06:48,620 И тако смо увек треба да се одржи неки показатељ где је то. 133 00:06:48,620 --> 00:06:50,410 Дакле, то је оно што је ту за 0. 134 00:06:50,410 --> 00:06:52,910 То је оно фронт је тамо. 135 00:06:52,910 --> 00:06:55,022 >> Хајде да у енкуеуе још један елемент, 19. 136 00:06:55,022 --> 00:06:56,980 Сигуран сам да можете да погодите где 19 се ићи. 137 00:06:56,980 --> 00:06:59,860 То ће ићи у низ локација број 2. 138 00:06:59,860 --> 00:07:01,570 То је 0, плус 2. 139 00:07:01,570 --> 00:07:03,199 И сада величина нашег реду је 3. 140 00:07:03,199 --> 00:07:04,240 Имамо 3 елемента у себи. 141 00:07:04,240 --> 00:07:08,490 Дакле, ако бисмо и ми не идемо да одмах, енкуеуе један елемент, 142 00:07:08,490 --> 00:07:11,370 да ће то ићи у арраи локација број 3, а величина нашег реда 143 00:07:11,370 --> 00:07:13,160 ће бити 4. 144 00:07:13,160 --> 00:07:15,279 Тако смо енкуеуед неколико елемената сада. 145 00:07:15,279 --> 00:07:16,570 Сада ћемо почети да их уклоните. 146 00:07:16,570 --> 00:07:19,450 Хајде да их декуеуе из реда. 147 00:07:19,450 --> 00:07:23,340 >> Дакле, слично поп, који је некако од аналога ово за гомиле, 148 00:07:23,340 --> 00:07:26,180 декуеуе треба да прихвате показивач на куеуе-- опет, 149 00:07:26,180 --> 00:07:28,140 осим ако је глобално проглашен. 150 00:07:28,140 --> 00:07:31,610 Сада желимо да променимо локацију на предњој страни реда. 151 00:07:31,610 --> 00:07:35,050 Ово је место где је врста у питању у игру, да предња променљива, 152 00:07:35,050 --> 00:07:37,310 јер када смо уклонили елемент, желимо 153 00:07:37,310 --> 00:07:40,720 да га прешли на следећи најстарији елемент. 154 00:07:40,720 --> 00:07:44,180 >> Затим желимо да смањите величина реда, 155 00:07:44,180 --> 00:07:47,130 и онда желе да се врате вредност који је уклоњен из реда. 156 00:07:47,130 --> 00:07:48,921 Опет, не желимо само да га одбаците. 157 00:07:48,921 --> 00:07:51,170 Ми вероватно су вађење је од куеуе-- коме смо 158 00:07:51,170 --> 00:07:54,170 то декуеуинг јер нам је стало о томе. 159 00:07:54,170 --> 00:08:01,080 Дакле, желимо ову функцију да се врати елемент података типа вредности. 160 00:08:01,080 --> 00:08:04,360 Опет, у овом случају, вредност је цео број. 161 00:08:04,360 --> 00:08:05,670 >> Тако да сада идемо декуеуе нешто. 162 00:08:05,670 --> 00:08:09,310 Да бисте уклонили елемент из реда. 163 00:08:09,310 --> 00:08:15,970 Ако кажемо инт једнако & К, Амперсанд к-- Опет то је показивач на овом к подацима 164 00:08:15,970 --> 00:08:20,177 струцтуре-- шта елеменат ће бити декуеуед? 165 00:08:20,177 --> 00:08:23,840 166 00:08:23,840 --> 00:08:29,480 У овом случају, јер је први у, први пут од структуре података, ФИФО, 167 00:08:29,480 --> 00:08:33,690 Прва ствар коју смо ставили у ово ред је био 28, па у том случају, 168 00:08:33,690 --> 00:08:37,245 ћемо узети 28 од је ред, а не 19, што је оно што 169 00:08:37,245 --> 00:08:38,870 бисмо урадили ако је то гомила. 170 00:08:38,870 --> 00:08:42,220 Идемо да 28 из реда. 171 00:08:42,220 --> 00:08:44,960 >> Слично ономе што смо урадили са стек, нисмо заправо 172 00:08:44,960 --> 00:08:47,345 Избрисаћете 28 из самог реда, 173 00:08:47,345 --> 00:08:49,470 ми ћемо само врсти од претварамо да не постоји. 174 00:08:49,470 --> 00:08:51,678 Тако да ће остати тамо у меморији, али ми смо само 175 00:08:51,678 --> 00:08:57,820 да некако игнорисати померањем друга два поља нашег к података 176 00:08:57,820 --> 00:08:58,830 структура. 177 00:08:58,830 --> 00:09:00,230 Ми ћемо променити фронт. 178 00:09:00,230 --> 00:09:04,290 К.фронт ће сада бе 1, јер то је сада 179 00:09:04,290 --> 00:09:07,740 најстарији елеменат имамо у нашој ред, јер смо већ уклоњени 28, 180 00:09:07,740 --> 00:09:10,460 што је бивши најстарији елеменат. 181 00:09:10,460 --> 00:09:13,540 >> А сада, желимо да променимо величина реда 182 00:09:13,540 --> 00:09:15,780 да два елемента уместо три. 183 00:09:15,780 --> 00:09:20,450 Сада се сетим раније сам рекао када смо желите да додате елементе у ред, 184 00:09:20,450 --> 00:09:26,000 смо га у низ локација што је збир напред и величине. 185 00:09:26,000 --> 00:09:29,050 Дакле, у овом случају, ми смо и даље стављање да, следећи елемент у реду, 186 00:09:29,050 --> 00:09:33,360 у арраи Локација 3, и видећемо да у секунди. 187 00:09:33,360 --> 00:09:35,730 >> Дакле, сада смо наше декуеуед први елемент из реда. 188 00:09:35,730 --> 00:09:36,480 Хајде да то урадимо поново. 189 00:09:36,480 --> 00:09:38,696 Да бисте уклонили други елеменат из реда. 190 00:09:38,696 --> 00:09:42,400 У овом случају, садашњи најстарији елемент је низ локација 1. 191 00:09:42,400 --> 00:09:44,220 То је оно што к.фронт нам говори. 192 00:09:44,220 --> 00:09:46,980 То зелена кутија нам говори да То је најстарији елеменат. 193 00:09:46,980 --> 00:09:49,310 И тако, х ће постати 33. 194 00:09:49,310 --> 00:09:52,130 Само ћемо некако заборави да 33 постоји у низу, 195 00:09:52,130 --> 00:09:55,100 и ми ћемо рећи да сада, Нова најстарији елемент у реду 196 00:09:55,100 --> 00:09:58,900 је на арраи локацији 2, и величину у реду, број елемената 197 00:09:58,900 --> 00:10:02,152 имамо у реду, је 1. 198 00:10:02,152 --> 00:10:05,110 Сада идемо енкуеуе нешто, а ја некако је то далеко пре секунде, 199 00:10:05,110 --> 00:10:10,340 али ако желимо да пут 40 Инто тхе ред, где је 40 ићи? 200 00:10:10,340 --> 00:10:12,880 201 00:10:12,880 --> 00:10:17,730 Па смо га ставља у к.фронт, плус куеуе величине, 202 00:10:17,730 --> 00:10:20,850 па има смисла заправо ставити 40 овде. 203 00:10:20,850 --> 00:10:22,840 Сада приметите да је на нека поента, идемо 204 00:10:22,840 --> 00:10:27,980 да се до краја наш низ унутар к, 205 00:10:27,980 --> 00:10:32,010 али да избледела 28 и 33-- они у ствари, технички 206 00:10:32,010 --> 00:10:33,300 отворени простори, зар не? 207 00:10:33,300 --> 00:10:36,040 И тако, можемо евентуалли-- то правило додавања 208 00:10:36,040 --> 00:10:40,390 њих двојица заједно-- смо на крају може требају мод по величини капацитета 209 00:10:40,390 --> 00:10:41,410 тако да можемо завршити около. 210 00:10:41,410 --> 00:10:43,620 >> Дакле, ако стигнемо до елемента број 10, ако смо 211 00:10:43,620 --> 00:10:48,790 замењујући у елементу броја 10, ми би Заправо га у арраи локацији 0. 212 00:10:48,790 --> 00:10:50,997 А ако ћемо да Арраи лоцатион-- ме извините, 213 00:10:50,997 --> 00:10:53,080 ако их додао заједно, и морамо да број 214 00:10:53,080 --> 00:10:56,330 11 би било гдје бисмо морали да ставе она која не постоји у овом арраи-- 215 00:10:56,330 --> 00:10:58,200 да би се иде ван граница. 216 00:10:58,200 --> 00:11:03,367 Могли мод са 10 и стави је у арраи локацији 1. 217 00:11:03,367 --> 00:11:04,450 Па тако редови раде. 218 00:11:04,450 --> 00:11:08,540 Они увек отићи из леве десно и евентуално обавије око. 219 00:11:08,540 --> 00:11:11,280 И знате да су они пуну величину ако то црвеној кутији, 220 00:11:11,280 --> 00:11:13,710 постаје једнако капацитету. 221 00:11:13,710 --> 00:11:16,720 И тако након што смо додали 40 до ред, па шта треба да радимо? 222 00:11:16,720 --> 00:11:19,890 Па, најстарији елеменат у реду је и даље 19, 223 00:11:19,890 --> 00:11:21,990 тако да не желите да промените предњи део реда, 224 00:11:21,990 --> 00:11:23,820 али сада имамо два елементи у реду, 225 00:11:23,820 --> 00:11:28,710 па желимо да повећамо наше величине од 1 до 2. 226 00:11:28,710 --> 00:11:31,820 >> То је прилично га много са рад са арраи-басед редовима, 227 00:11:31,820 --> 00:11:33,630 и слично стацк, Такође постоји начин 228 00:11:33,630 --> 00:11:36,450 да спроведе ред као повезане листе. 229 00:11:36,450 --> 00:11:40,150 Сада, ако ова структура података тип Изгледа познато, јесте. 230 00:11:40,150 --> 00:11:43,780 То није појединачно линкед лист, То је двоструко повезана листа. 231 00:11:43,780 --> 00:11:46,790 И сада, као на страну, то је заправо могуће спровести 232 00:11:46,790 --> 00:11:50,160 Ред је као појединачно повезане листе, али Мислим да је у питању визуелизације, 233 00:11:50,160 --> 00:11:53,350 заправо може помоћи да видите ово као двоструко повезане листе. 234 00:11:53,350 --> 00:11:56,850 Али је свакако могуће ово као појединачно повезане листе. 235 00:11:56,850 --> 00:12:00,110 >> Дакле, хајде да погледамо шта би ово могло изгледати. 236 00:12:00,110 --> 00:12:02,750 Ако желимо да енкууе-- тако да сада, опет смо 237 00:12:02,750 --> 00:12:05,360 Преласком на повезане листе заснован модел овде. 238 00:12:05,360 --> 00:12:08,420 Ако желимо да енкуеуе, желимо да додате нови елемент, добро 239 00:12:08,420 --> 00:12:09,730 шта треба да урадимо? 240 00:12:09,730 --> 00:12:12,770 Па, пре свега, због тога што смо додавање до краја 241 00:12:12,770 --> 00:12:15,520 и уклањање из почиње, вероватно 242 00:12:15,520 --> 00:12:20,050 желе да задрже путоказе до оба глава и реп повезане листе? 243 00:12:20,050 --> 00:12:22,660 Реп као још један термин за крај повезане листе, 244 00:12:22,660 --> 00:12:24,496 последњи елемент у повезане листе. 245 00:12:24,496 --> 00:12:26,620 И то ће вероватно, опет, бити корисно нам 246 00:12:26,620 --> 00:12:28,477 ако су глобалне променљиве. 247 00:12:28,477 --> 00:12:31,060 Али сада ако желимо да додамо нови елеменат шта морамо да урадимо? 248 00:12:31,060 --> 00:12:35,262 Оно што смо [? Малак?] или динамички издвајају наш нови чвор за себе. 249 00:12:35,262 --> 00:12:38,220 А онда, баш као кад додамо било елемент за двоструко повезана попису, 250 00:12:38,220 --> 00:12:40,410 Само треба да сортирате од-- те последња три корака овде 251 00:12:40,410 --> 00:12:43,330 само све о померање показивачи на исправан начин 252 00:12:43,330 --> 00:12:46,710 тако да је елемент се додаје в ланац без прекидања ланца 253 00:12:46,710 --> 00:12:49,580 или прављење неку врсту грешке или имају неку врсту несреће 254 00:12:49,580 --> 00:12:54,505 догодити чиме смо случајно сироче неке елементе наше ред. 255 00:12:54,505 --> 00:12:55,880 Ево шта би то могло изгледати. 256 00:12:55,880 --> 00:13:00,980 Желимо да додате елемент 10 до краја овог реда. 257 00:13:00,980 --> 00:13:03,380 Дакле, најстарији елеменат овде заступа главу. 258 00:13:03,380 --> 00:13:06,800 То је прва ствар коју смо ставили у овом хипотетички ред овде. 259 00:13:06,800 --> 00:13:10,430 И реп, 13, је највише Недавно је додао елемент. 260 00:13:10,430 --> 00:13:17,030 И тако, ако желимо да енкуеуе 10 у ово ред, желимо да га ставите након 13. 261 00:13:17,030 --> 00:13:19,860 И тако ћемо динамички доделити простор за нови чвор 262 00:13:19,860 --> 00:13:23,280 и проверите нулл бисте били сигурни немамо меморијску неуспех. 263 00:13:23,280 --> 00:13:27,040 Онда ћемо место 10 у тај чвор, 264 00:13:27,040 --> 00:13:30,030 и сада морамо да будемо опрезни о томе како смо организујемо савете 265 00:13:30,030 --> 00:13:32,180 тако да не прекинути ланац. 266 00:13:32,180 --> 00:13:38,910 >> Можемо сет 10 је претходном пољу да укаже врати на старо репа, 267 00:13:38,910 --> 00:13:41,620 и пошто '10 ће бити Нова реп у неком тренутку 268 00:13:41,620 --> 00:13:44,459 у време свих ових ланци су повезани, 269 00:13:44,459 --> 00:13:46,250 ништа се неће доћи после 10 сада. 270 00:13:46,250 --> 00:13:49,880 И тако 10 је следећи показивач ће указати на нулл, 271 00:13:49,880 --> 00:13:53,580 и онда када смо ово, након што сам повезан 10 уназад за ланац, 272 00:13:53,580 --> 00:13:57,780 можемо узети стару главу, или, изговор ја, стари реп реду. 273 00:13:57,780 --> 00:14:02,980 Стари крај реда, 13, и чине га указују на 10. 274 00:14:02,980 --> 00:14:08,220 И сада, у овом тренутку имамо енкуеуед број 10 у овом реду. 275 00:14:08,220 --> 00:14:14,740 Све што треба да урадимо је само померање реп да укаже на 10, уместо на 13. 276 00:14:14,740 --> 00:14:17,630 >> Декуеуинг је заправо веома сличан искакање 277 00:14:17,630 --> 00:14:21,710 из стека који је имплементиран као повезане листе 278 00:14:21,710 --> 00:14:24,040 ако сте видели димњака видео. 279 00:14:24,040 --> 00:14:27,280 Све што треба да урадите је почети у почиње, наћи други елемент, 280 00:14:27,280 --> 00:14:30,480 ослободи први елемент, а затим померите главу 281 00:14:30,480 --> 00:14:32,930 да укаже на други елемент. 282 00:14:32,930 --> 00:14:37,920 Вероватно боље да га представи Само да би било екстра јасно о томе. 283 00:14:37,920 --> 00:14:39,230 Дакле, овде је опет наш ред. 284 00:14:39,230 --> 00:14:42,600 12 је најстарији елеменат у нашем реду, главе. 285 00:14:42,600 --> 00:14:46,210 10 је најновији елеменат у нашем реду, наш репа. 286 00:14:46,210 --> 00:14:49,310 >> И тако, када желимо да декуеуе елемент, 287 00:14:49,310 --> 00:14:52,202 желимо да уклоните најстарији елемент. 288 00:14:52,202 --> 00:14:52,910 Па шта да радимо? 289 00:14:52,910 --> 00:14:55,243 Па смо поставили Траверсал показивач који почиње на челу, 290 00:14:55,243 --> 00:14:57,840 а ми га померите тако да указује на други елемент 291 00:14:57,840 --> 00:15:02,290 ово куеуе-- нешто говорећи Трав једнако Трав арров следећи, на пример, 292 00:15:02,290 --> 00:15:07,170 би се кретали Трав ту да укаже на 15, који, када смо декуеуе 12, 293 00:15:07,170 --> 00:15:13,030 или након што смо уклонили 12, хоће постао тада најстарији елеменат. 294 00:15:13,030 --> 00:15:16,360 >> Сада имамо држите на први елеменат преко показивача главе 295 00:15:16,360 --> 00:15:19,440 а други елемент преко показивача трав. 296 00:15:19,440 --> 00:15:25,170 Ми смо сада могу слободно главу, а онда можемо кажу ништа више долази пре 15 година. 297 00:15:25,170 --> 00:15:29,990 Дакле, можемо да променимо 15 је претходна показивач да укаже на нулл, 298 00:15:29,990 --> 00:15:31,874 а ми смо само померите главу изнад. 299 00:15:31,874 --> 00:15:32,540 И тамо идемо. 300 00:15:32,540 --> 00:15:35,840 Сада смо успешно декуеуед 12, а сада смо 301 00:15:35,840 --> 00:15:39,180 још један ред од 4 елемента. 302 00:15:39,180 --> 00:15:41,700 То је отприлике све ту је редовима, 303 00:15:41,700 --> 00:15:45,810 и низ засноване и повезане листа основи. 304 00:15:45,810 --> 00:15:46,860 Ја сам Доуг Лојд. 305 00:15:46,860 --> 00:15:49,100 Ово је ЦС 50. 306 00:15:49,100 --> 00:15:50,763