1 00:00:00,000 --> 00:00:05,204 2 00:00:05,204 --> 00:00:07,370 DOUG LLOYD: Felly, os ydych chi wedi gwylio'r fideo ar simnai, 3 00:00:07,370 --> 00:00:09,870 Mae'n debyg mae hyn yn mynd i deimlo'n fel ychydig o Deja vu. 4 00:00:09,870 --> 00:00:13,850 Mae'n mynd i gysyniad debyg iawn, dim ond gydag ychydig o thro arno. 5 00:00:13,850 --> 00:00:15,530 Rydym yn mynd i siarad yn awr am ciwiau. 6 00:00:15,530 --> 00:00:19,350 Felly ciw, yn debyg i stac, math arall o strwythur data 7 00:00:19,350 --> 00:00:22,412 y gallwn eu defnyddio i gynnal data mewn ffordd drefnus. 8 00:00:22,412 --> 00:00:24,120 Yn debyg i stac, gellir ei roi ar waith 9 00:00:24,120 --> 00:00:27,000 fel arae neu restr cysylltiedig. 10 00:00:27,000 --> 00:00:30,320 Yn wahanol i stac, mae'r rheolau a ddefnyddiwn i benderfynu 11 00:00:30,320 --> 00:00:34,210 pan fydd pethau'n cael eu hychwanegu a'u tynnu oddi ciw yn ychydig yn wahanol. 12 00:00:34,210 --> 00:00:36,590 >> Yn wahanol pentwr, a oedd yn yn strwythur LIFO, 13 00:00:36,590 --> 00:00:45,610 olaf i mewn, cyntaf allan, ciw yn FIFO strwythur, FIFO, yn gyntaf yn, allan gyntaf. 14 00:00:45,610 --> 00:00:49,320 Nawr ciwiau, mae'n debyg cael cyfatebiaeth i ciwiau. 15 00:00:49,320 --> 00:00:52,820 Os ydych wedi bod erioed yn unol ar parc adloniant neu mewn banc, 16 00:00:52,820 --> 00:00:56,430 mae fath o degwch gweithredu strwythur. 17 00:00:56,430 --> 00:00:59,160 Y person cyntaf yn unol ar mae'r banc yn y person cyntaf 18 00:00:59,160 --> 00:01:00,760 pwy sy'n cael siarad â'r teller. 19 00:01:00,760 --> 00:01:03,522 >> Byddai'n fath o ras i'r gwaelod os mai'r unig ffordd 20 00:01:03,522 --> 00:01:06,730 rhaid i chi siarad â'r teller yn y banc oedd i fod y person olaf yn unol. 21 00:01:06,730 --> 00:01:09,146 Byddai pawb bob amser am i fod y person olaf yn unol, 22 00:01:09,146 --> 00:01:12,580 a bod y person a oedd yno yn gyntaf sydd wedi bod yn aros am ychydig, 23 00:01:12,580 --> 00:01:14,715 Gallai fod yno am oriau, ac oriau, ac oriau 24 00:01:14,715 --> 00:01:17,590 cyn iddynt gael cyfle i mewn gwirionedd tynnu unrhyw arian yn y banc. 25 00:01:17,590 --> 00:01:22,510 Ac felly ciwiau yn fath o tegwch gweithredu strwythur. 26 00:01:22,510 --> 00:01:25,780 Ond nid yw hynny'n golygu o reidrwydd bod staciau yn beth drwg, dim ond 27 00:01:25,780 --> 00:01:28,160 bod ciwiau yn ffordd arall i wneud hynny. 28 00:01:28,160 --> 00:01:32,420 Felly, unwaith eto ciw yn gyntaf i mewn, cyntaf allan, yn erbyn bentwr sy'n para i mewn, 29 00:01:32,420 --> 00:01:34,440 cyntaf allan. 30 00:01:34,440 --> 00:01:36,190 Yn debyg i stac, mae gennym ddau gweithrediadau 31 00:01:36,190 --> 00:01:38,470 ein bod yn gallu perfformio ar ciwiau. 32 00:01:38,470 --> 00:01:43,910 Mae enwau yn enqueue, sef ychwanegu elfen newydd at ddiwedd y ciw, 33 00:01:43,910 --> 00:01:47,330 a dequeue, sef i gael gwared ar y hynaf 34 00:01:47,330 --> 00:01:49,670 elfen o du blaen y ciw. 35 00:01:49,670 --> 00:01:53,600 Felly rydym yn mynd i ychwanegu elfennau ar ddiwedd y ciw, 36 00:01:53,600 --> 00:01:57,220 ac rydym yn mynd i gael gwared ar elfennau o du blaen y ciw. 37 00:01:57,220 --> 00:02:00,790 Unwaith eto, gyda'r stac, roeddem yn ychwanegu elfen i ben y pentwr 38 00:02:00,790 --> 00:02:03,380 a chael gwared ar elfennau o ben y pentwr. 39 00:02:03,380 --> 00:02:07,570 Felly, gyda enqueue, mae'n ychwanegu at y diwedd, cael gwared o'r tu blaen. 40 00:02:07,570 --> 00:02:10,639 Felly, y peth hynaf i mewn 'na bob amser yn y peth nesaf 41 00:02:10,639 --> 00:02:13,620 i ddod allan os ydym yn ceisio ac yn dequeue rhywbeth. 42 00:02:13,620 --> 00:02:18,330 >> Felly unwaith eto, gyda chiwiau, y gallwn gweithrediadau sy'n seiliedig arae- 43 00:02:18,330 --> 00:02:20,110 ac yn gysylltiedig-rhestr implementations yn seiliedig. 44 00:02:20,110 --> 00:02:24,620 Byddwn yn dechrau eto gyda gweithrediadau sy'n seiliedig ar amrywiaeth. 45 00:02:24,620 --> 00:02:27,070 Mae'r diffiniad Strwythur edrych yn eithaf tebyg. 46 00:02:27,070 --> 00:02:30,720 Mae gennym amrywiaeth arall mae data gwerth fath, 47 00:02:30,720 --> 00:02:32,690 fel y gellir ei ddal mathau data mympwyol. 48 00:02:32,690 --> 00:02:35,570 Rydym yn unwaith eto yn mynd i ddefnyddio gyfanrifau yn yr enghraifft hon. 49 00:02:35,570 --> 00:02:39,830 >> Ac yn union fel gyda'n gweithredu stac seiliedig array-, 50 00:02:39,830 --> 00:02:42,340 oherwydd ein bod yn defnyddio array, rydym reidrwydd 51 00:02:42,340 --> 00:02:46,850 gael y cyfyngiad sy'n C math o yn gorfodi arnom ni, sef ein bod 52 00:02:46,850 --> 00:02:51,670 Nid oes rhaid i unrhyw bywiogrwydd yn ein gallu i dyfu ac yn crebachu y rhesi. 53 00:02:51,670 --> 00:02:55,710 Mae'n rhaid i ni benderfynu ar y dechrau beth yw'r nifer mwyaf o bethau 54 00:02:55,710 --> 00:02:59,300 y gallwn roi i mewn i hyn ciw, ac yn yr achos hwn, 55 00:02:59,300 --> 00:03:02,070 Byddai gallu cael rhyw bunt a ddiffinnir yn gyson yn ein cod. 56 00:03:02,070 --> 00:03:05,430 Ac at ddibenion y fideo, cynhwysedd yn mynd i fod yn 10. 57 00:03:05,430 --> 00:03:07,690 >> Mae angen i ni gadw golwg ar flaen y ciw 58 00:03:07,690 --> 00:03:11,160 felly rydym yn gwybod pa elfen rydym am dequeue, 59 00:03:11,160 --> 00:03:15,070 ac mae angen i ni hefyd gadw golwg ar rhywbeth else-- nifer yr elfennau 60 00:03:15,070 --> 00:03:16,690 sydd gennym yn ein ciw. 61 00:03:16,690 --> 00:03:19,360 Sylwch nid ydym yn cadw golwg i ddiwedd y ciw, dim ond 62 00:03:19,360 --> 00:03:21,150 maint y ciw. 63 00:03:21,150 --> 00:03:24,310 A'r rheswm am hynny a fydd, gobeithio, dod yn dipyn cliriach mewn munud. 64 00:03:24,310 --> 00:03:26,143 Unwaith y byddwn wedi cwblhau diffiniad math hwn, 65 00:03:26,143 --> 00:03:29,080 mae gennym fath ddata newydd Gelwir ciw, a allwn yn awr 66 00:03:29,080 --> 00:03:30,630 yn datgan newidynnau o'r math hwnnw data. 67 00:03:30,630 --> 00:03:35,350 A braidd yn ddryslyd, rwyf wedi penderfynu i alw ciw hwn q, y llythyr 68 00:03:35,350 --> 00:03:38,090 q yn hytrach na'r math data q. 69 00:03:38,090 --> 00:03:39,600 >> Felly dyma yw ein ciw. 70 00:03:39,600 --> 00:03:40,700 Mae'n strwythur. 71 00:03:40,700 --> 00:03:45,730 Mae'n cynnwys tri aelod neu dri caeau, amrywiaeth o faint GALLU. 72 00:03:45,730 --> 00:03:47,340 Yn yr achos hwn, GALLU yw 10. 73 00:03:47,340 --> 00:03:49,580 Ac mae amrywiaeth hwn mynd i ddal cyfanrifau. 74 00:03:49,580 --> 00:03:55,240 Yn wyrdd yw flaen ein ciw, y Elfen nesaf i'w dileu, ac mewn coch 75 00:03:55,240 --> 00:03:58,610 Bydd maint y ciw, faint o elfennau yw ar hyn o bryd 76 00:03:58,610 --> 00:04:01,190 sydd eisoes yn bodoli yn y ciw. 77 00:04:01,190 --> 00:04:05,300 Felly, os ydym yn dweud hafal q.front 0, a maint q.size hafal 0-- 78 00:04:05,300 --> 00:04:07,120 rydym yn rhoi 0au i gaeau hynny. 79 00:04:07,120 --> 00:04:11,070 Ac yn y fan hon, rydym yn 'n bert lawer barod i ddechrau gweithio gyda'n ciw. 80 00:04:11,070 --> 00:04:14,140 >> Felly y llawdriniaeth gyntaf y gallwn perfformio yw enqueue rhywbeth, 81 00:04:14,140 --> 00:04:16,860 i ychwanegu elfen newydd i diwedd y ciw. 82 00:04:16,860 --> 00:04:19,089 Wel beth sydd angen i ni'n ei wneud yn yr achos gyffredinol? 83 00:04:19,089 --> 00:04:23,690 Wel anghenion swyddogaeth hon enqueue i dderbyn pwyntydd at ein ciw. 84 00:04:23,690 --> 00:04:26,370 Unwaith eto, os ydym wedi datgan ein ciw yn fyd-eang, 85 00:04:26,370 --> 00:04:29,490 Ni fyddai angen i ni wneud hyn o reidrwydd, ond yn gyffredinol, rydym yn 86 00:04:29,490 --> 00:04:32,330 Mae angen i dderbyn awgrymiadau i strwythurau data 87 00:04:32,330 --> 00:04:35,040 fel hyn, oherwydd fel arall, rydym yn pasio trwy value-- rydym yn 88 00:04:35,040 --> 00:04:38,140 pasio mewn copïau o'r ciw, ac felly nid ydym yn newid mewn gwirionedd 89 00:04:38,140 --> 00:04:41,050 y ciw y bwriadwn eu newid. 90 00:04:41,050 --> 00:04:44,860 >> Y peth arall y mae angen ei wneud yw derbyn elfen data o'r math priodol. 91 00:04:44,860 --> 00:04:46,818 Eto, yn yr achos hwn, mae'n mynd i fod yn cyfanrifau, 92 00:04:46,818 --> 00:04:49,330 ond fe allech chi fympwyol ddatgan y math data fel gwerth 93 00:04:49,330 --> 00:04:51,160 a defnyddio hyn yn fwy cyffredinol. 94 00:04:51,160 --> 00:04:56,030 Dyna'r elfen yr ydym am ei enqueue, rydym eisiau ychwanegu at ddiwedd y ciw. 95 00:04:56,030 --> 00:04:58,573 Yna, rydym mewn gwirionedd eisiau rhoi data hwnnw yn y ciw. 96 00:04:58,573 --> 00:05:01,490 Yn yr achos hwn, ei roi yn y lleoliad cywir o'n array, 97 00:05:01,490 --> 00:05:05,040 ac yna rydym am newid maint y ciw, faint o elfennau yr ydym yn 98 00:05:05,040 --> 00:05:07,050 ar hyn o bryd. 99 00:05:07,050 --> 00:05:07,990 >> Felly gadewch i ni ddechrau arni. 100 00:05:07,990 --> 00:05:10,890 Dyma, unwaith eto, fod gyffredinol Datganiad Ffurflen swyddogaeth 101 00:05:10,890 --> 00:05:13,980 am yr hyn y gallai enqueue edrych. 102 00:05:13,980 --> 00:05:14,910 A dyma ni yn mynd. 103 00:05:14,910 --> 00:05:18,335 Gadewch i ni enqueue rhif 28 i mewn i'r ciw. 104 00:05:18,335 --> 00:05:19,460 Felly, beth ydym yn mynd i'w wneud? 105 00:05:19,460 --> 00:05:23,390 Wel, mae'r flaen ein ciw yw ar 0, a maint ein ciw 106 00:05:23,390 --> 00:05:29,680 yw ar 0, ac felly mae'n debyg ein bod eisiau rhoi rhif 28 yn array rhif elfen 107 00:05:29,680 --> 00:05:31,124 0, dde? 108 00:05:31,124 --> 00:05:32,540 Felly rydym wedi gosod nawr bod i mewn 'na. 109 00:05:32,540 --> 00:05:34,820 Felly nawr beth sydd angen i ni newid? 110 00:05:34,820 --> 00:05:37,090 Nid ydym am newid flaen y ciw, 111 00:05:37,090 --> 00:05:40,850 am ein bod eisiau gwybod pa elfen Efallai y bydd angen i ni dequeue yn nes ymlaen. 112 00:05:40,850 --> 00:05:44,020 Felly, y rheswm sydd gennym flaen yno yn fath o ddangosydd o'r hyn sydd 113 00:05:44,020 --> 00:05:46,439 y peth hynaf yn y casgliad. 114 00:05:46,439 --> 00:05:49,730 Wel y peth hynaf yn y array-- yn wir, yr unig beth yn y casgliad cywir 115 00:05:49,730 --> 00:05:53,540 now-- yw 28, sy'n yn y lleoliad array 0. 116 00:05:53,540 --> 00:05:56,160 Felly nid ydym am i newid y rhif hwnnw gwyrdd, 117 00:05:56,160 --> 00:05:57,910 oherwydd dyna yr elfen hynaf. 118 00:05:57,910 --> 00:06:00,510 Yn hytrach, rydym am newid maint. 119 00:06:00,510 --> 00:06:04,110 Felly, yn yr achos hwn, rydym yn chi helpu cynyddiad maint i 1. 120 00:06:04,110 --> 00:06:08,430 >> Erbyn hyn, mae rhyw fath o syniad cyffredinol o gyflwr lle mae'r elfen nesaf yn mynd i fynd mewn ciw 121 00:06:08,430 --> 00:06:12,310 yw ychwanegu rhai ddau rif gyda'i gilydd, blaen a maint, 122 00:06:12,310 --> 00:06:16,390 a bydd hynny'n dweud wrthych ble mae'r nesaf elfen yn y ciw yn mynd i fynd. 123 00:06:16,390 --> 00:06:18,130 Felly nawr gadewch i ni enqueue rhif arall. 124 00:06:18,130 --> 00:06:20,250 Gadewch i ni enqueue 33. 125 00:06:20,250 --> 00:06:24,480 Felly 33 yn mynd i fynd i mewn i Lleoliad array 0 ac 1. 126 00:06:24,480 --> 00:06:26,840 Felly, yn yr achos hwn, mae'n mynd i fynd i mewn i amrywiaeth leoliad 1, 127 00:06:26,840 --> 00:06:29,500 ac yn awr maint ein ciw yw 2. 128 00:06:29,500 --> 00:06:31,840 >> Unwaith eto, nid ydym yn newid flaen ein ciw, 129 00:06:31,840 --> 00:06:34,730 oherwydd bod 28 yn dal i fod y elfen hynaf, ac yr ydym yn 130 00:06:34,730 --> 00:06:38,220 eisiau canlynol-- pan fyddwn yn y pen draw yn cael i dequeuing, cael gwared ar elfennau 131 00:06:38,220 --> 00:06:43,300 o'r ciw hwn, rydym am wybod lle yr elfen hynaf yw. 132 00:06:43,300 --> 00:06:48,620 Ac felly bob amser angen i ni gynnal rhyw arwydd o ble y mae. 133 00:06:48,620 --> 00:06:50,410 Felly dyna beth mae'r 0 yno ar gyfer. 134 00:06:50,410 --> 00:06:52,910 Dyna beth blaen yno ar gyfer. 135 00:06:52,910 --> 00:06:55,022 >> Gadewch i ni yn enqueue un fwy o elfennau, 19. 136 00:06:55,022 --> 00:06:56,980 Rwy'n siwr y gallwch chi ddyfalu lle mae 19 yn mynd i fynd. 137 00:06:56,980 --> 00:06:59,860 Mae'n mynd i fynd i mewn i amrywiaeth rhif Lleoliad 2. 138 00:06:59,860 --> 00:07:01,570 Dyna 0 a 2. 139 00:07:01,570 --> 00:07:03,199 Ac yn awr maint ein ciw yw 3. 140 00:07:03,199 --> 00:07:04,240 Mae gennym 3 elfen ynddo. 141 00:07:04,240 --> 00:07:08,490 Felly, pe baem yn, ac nid ydym yn mynd i ar hyn o bryd, enqueue elfen arall, 142 00:07:08,490 --> 00:07:11,370 byddai'n mynd i mewn i leoliad array rhif 3, a maint ein ciw 143 00:07:11,370 --> 00:07:13,160 fyddai 4. 144 00:07:13,160 --> 00:07:15,279 Felly rydym wedi enqueued sawl elfen yn awr. 145 00:07:15,279 --> 00:07:16,570 Nawr, gadewch i ni ddechrau i gael gwared arnynt. 146 00:07:16,570 --> 00:07:19,450 Gadewch i ni eu dequeue o'r ciw. 147 00:07:19,450 --> 00:07:23,340 >> Mor debyg i pop, sydd yn didoli o analog hyn ar gyfer staciau, 148 00:07:23,340 --> 00:07:26,180 Mae angen dequeue i dderbyn pwyntydd i'r queue-- eto, 149 00:07:26,180 --> 00:07:28,140 oni bai ei fod yn datgan yn fyd-eang. 150 00:07:28,140 --> 00:07:31,610 Nawr rydym am newid y lleoliad o flaen y ciw. 151 00:07:31,610 --> 00:07:35,050 Dyma lle mae'n fath o yn dod i chwarae, y newidyn blaen, 152 00:07:35,050 --> 00:07:37,310 oherwydd unwaith rydym yn cael gwared elfen, rydym am 153 00:07:37,310 --> 00:07:40,720 i'w symud i'r elfen hynaf nesaf. 154 00:07:40,720 --> 00:07:44,180 >> Yna, rydym am i ostwng maint y ciw, 155 00:07:44,180 --> 00:07:47,130 ac yna rydym eisiau dychwelyd y gwerth a gafodd ei dynnu oddi ar y ciw. 156 00:07:47,130 --> 00:07:48,921 Unwaith eto, nid ydym am i ddim ond taflu iddo. 157 00:07:48,921 --> 00:07:51,170 Rydym yn ôl pob tebyg yn tynnu oddi ar y queue-- rydym yn 158 00:07:51,170 --> 00:07:54,170 dequeuing oherwydd yr ydym yn gofalu am y peth. 159 00:07:54,170 --> 00:08:01,080 Felly rydym am swyddogaeth hon i ddychwelyd elfen data o werth fath. 160 00:08:01,080 --> 00:08:04,360 Eto, yn yr achos hwn, gwerth yn gyfanrif. 161 00:08:04,360 --> 00:08:05,670 >> Felly nawr gadewch i dequeue rhywbeth. 162 00:08:05,670 --> 00:08:09,310 Gadewch i ni gael gwared ar elfen o'r ciw. 163 00:08:09,310 --> 00:08:15,970 Os dywedwn int x yn hafal & q, ampersand q-- unwaith eto mae hynny'n pwyntydd i hyn q data 164 00:08:15,970 --> 00:08:20,177 structure-- pa elfen yn mynd i gael ei dequeued? 165 00:08:20,177 --> 00:08:23,840 166 00:08:23,840 --> 00:08:29,480 Yn yr achos hwn, oherwydd ei fod yn gyntaf i mewn, cyntaf allan strwythur data, FIFO, 167 00:08:29,480 --> 00:08:33,690 y peth cyntaf rydym yn rhoi i mewn i hyn Roedd ciw 28, ac felly yn yr achos hwn, 168 00:08:33,690 --> 00:08:37,245 rydym yn mynd i gymryd 28 allan o y ciw, nid 19, sef yr hyn 169 00:08:37,245 --> 00:08:38,870 byddem wedi gwneud os oedd hyn pentwr. 170 00:08:38,870 --> 00:08:42,220 Rydym yn mynd i gymryd 28 allan o'r ciw. 171 00:08:42,220 --> 00:08:44,960 >> Yn debyg i'r hyn a wnaethom gyda pentwr, dydyn ni ddim mewn gwirionedd 172 00:08:44,960 --> 00:08:47,345 mynd i ddileu 28 oddi wrth y ciw ei hun, 173 00:08:47,345 --> 00:08:49,470 rydym yn jyst yn mynd i fath o esgus nad yw yno. 174 00:08:49,470 --> 00:08:51,678 Felly, mae'n mynd i aros yno mewn cof, ond rydym yn unig 175 00:08:51,678 --> 00:08:57,820 mynd i fath o hanwybyddu drwy symud y ddau gae arall o'n q data 176 00:08:57,820 --> 00:08:58,830 strwythur. 177 00:08:58,830 --> 00:09:00,230 Rydym yn mynd i newid y tu blaen. 178 00:09:00,230 --> 00:09:04,290 Q.front yn awr yn mynd i fod yn 1, gan mai dyna bellach 179 00:09:04,290 --> 00:09:07,740 yr elfen hynaf sydd gennym yn ein ciw, gan ein bod eisoes wedi tynnu 28, 180 00:09:07,740 --> 00:09:10,460 sef y cyn elfen hynaf. 181 00:09:10,460 --> 00:09:13,540 >> Ac yn awr, rydym am newid maint y ciw 182 00:09:13,540 --> 00:09:15,780 i ddwy elfen yn lle tri. 183 00:09:15,780 --> 00:09:20,450 Nawr cofiwch y dywedais yn gynharach pan fyddwn yn eisiau ychwanegu elfennau at y ciw, 184 00:09:20,450 --> 00:09:26,000 rydym yn ei roi mewn lleoliad arae sef y swm o flaen a maint. 185 00:09:26,000 --> 00:09:29,050 Felly, yn yr achos hwn, rydym yn dal i roi hynny, yr elfen nesaf yn y ciw, 186 00:09:29,050 --> 00:09:33,360 i mewn i amrywiaeth lleoliad 3, a byddwn yn gweld hynny mewn eiliad. 187 00:09:33,360 --> 00:09:35,730 >> Felly, rydym yn awr wedi dequeued ein elfen gyntaf o'r ciw. 188 00:09:35,730 --> 00:09:36,480 Gadewch i ni wneud hynny eto. 189 00:09:36,480 --> 00:09:38,696 Gadewch i ni gael gwared ar un arall elfen o'r ciw. 190 00:09:38,696 --> 00:09:42,400 Yn yr achos hwn, y presennol hynaf elfen yw amrywiaeth lleoliad 1. 191 00:09:42,400 --> 00:09:44,220 Dyna beth q.front dweud wrthym. 192 00:09:44,220 --> 00:09:46,980 Bod blwch gwyrdd yn dweud wrthym fod dyna yr elfen hynaf. 193 00:09:46,980 --> 00:09:49,310 Ac felly, bydd yn dod yn x 33. 194 00:09:49,310 --> 00:09:52,130 Byddwn yn unig fath o anghofio bod 33 yn bodoli yn y array, 195 00:09:52,130 --> 00:09:55,100 a byddwn yn dweud hynny yn awr, mae'r Elfen hynaf newydd yn y ciw 196 00:09:55,100 --> 00:09:58,900 mewn amrywiaeth lleoliad 2, a maint y ciw, mae nifer o elfennau 197 00:09:58,900 --> 00:10:02,152 gennym yn y ciw, yw 1. 198 00:10:02,152 --> 00:10:05,110 Nawr, gadewch i enqueue rhywbeth, ac yr wyf yn fath o roddodd hwn i ffwrdd eiliad yn ôl, 199 00:10:05,110 --> 00:10:10,340 ond os ydym am roi 40 i mewn i'r ciw, lle mae wedi 40 mynd i fynd? 200 00:10:10,340 --> 00:10:12,880 201 00:10:12,880 --> 00:10:17,730 Wel rydym wedi bod yn ei roi yn q.front yn ogystal â ciw maint, 202 00:10:17,730 --> 00:10:20,850 ac felly mae'n gwneud synnwyr i mewn gwirionedd i roi 40 yma. 203 00:10:20,850 --> 00:10:22,840 Nawr yn sylwi bod o ryw adeg, rydym yn mynd 204 00:10:22,840 --> 00:10:27,980 i gyrraedd y diwedd ein amrywiaeth tu mewn q, 205 00:10:27,980 --> 00:10:32,010 ond y pylu allan 28 a 33-- eu bod mewn gwirionedd, yn dechnegol 206 00:10:32,010 --> 00:10:33,300 mannau agored, dde? 207 00:10:33,300 --> 00:10:36,040 Ac felly, efallai y byddwn eventually-- y rheol o ychwanegu 208 00:10:36,040 --> 00:10:40,390 dau y rhai together-- efallai y byddwn yn y pen draw Mae angen mod gan faint o gapasiti 209 00:10:40,390 --> 00:10:41,410 fel y gallwn cofleidiol. 210 00:10:41,410 --> 00:10:43,620 >> Felly, os ydym yn cael i elfen rhif 10, os ydym yn 211 00:10:43,620 --> 00:10:48,790 ddisodli yn yr elfen rhif 10, byddem mewn gwirionedd yn ei roi mewn lleoliad array 0. 212 00:10:48,790 --> 00:10:50,997 Ac os ydym yn mynd i location-- arae esgus i mi, 213 00:10:50,997 --> 00:10:53,080 os byddwn yn ychwanegu i fyny at ei gilydd, ac rydym yn cael i rif 214 00:10:53,080 --> 00:10:56,330 Byddai 11 yn lle y byddai'n rhaid i ni roi iddo, nad yw'n bodoli yn y array-- hwn 215 00:10:56,330 --> 00:10:58,200 byddai'n cael ei mynd allan waharddedig. 216 00:10:58,200 --> 00:11:03,367 Gallem mod erbyn 10 ac yn rhoi mewn amrywiaeth lleoliad 1. 217 00:11:03,367 --> 00:11:04,450 Felly dyna sut y ciwiau yn gweithio. 218 00:11:04,450 --> 00:11:08,540 Maen nhw'n wastad yn mynd i fynd o'r chwith i'r dde ac o bosibl cofleidiol. 219 00:11:08,540 --> 00:11:11,280 A ydych yn gwybod eu bod yn os maint llawn, y bocs coch, 220 00:11:11,280 --> 00:11:13,710 yn dod yn gyfartal i gynhwysedd. 221 00:11:13,710 --> 00:11:16,720 Ac felly ar ôl i ni wedi ychwanegu 40 at y ciw, yn dda yr hyn sydd angen i ni ei wneud? 222 00:11:16,720 --> 00:11:19,890 Wel, yr elfen hynaf yn y ciw yn dal i fod 19, 223 00:11:19,890 --> 00:11:21,990 felly nid ydym am newid flaen y ciw, 224 00:11:21,990 --> 00:11:23,820 ond erbyn hyn mae gennym ddau elfennau yn y ciw, 225 00:11:23,820 --> 00:11:28,710 ac felly rydym yn awyddus i gynyddu ein maint 1-2. 226 00:11:28,710 --> 00:11:31,820 >> Dyna 'n bert lawer' i ag gweithio gyda chiwiau seiliedig arae-, 227 00:11:31,820 --> 00:11:33,630 ac yn debyg i'r golwg, mae hefyd yn ffordd 228 00:11:33,630 --> 00:11:36,450 i weithredu ciw fel rhestr cysylltiedig. 229 00:11:36,450 --> 00:11:40,150 Nawr, os y math hwn o strwythur data yn edrych yn gyfarwydd i chi, y mae. 230 00:11:40,150 --> 00:11:43,780 Nid yw'n rhestr cysylltiedig yn unigol, mae'n rhestr gysylltiedig ddwbl. 231 00:11:43,780 --> 00:11:46,790 Ac yn awr, wrth fynd heibio, mae'n mewn gwirionedd yn bosibl i weithredu 232 00:11:46,790 --> 00:11:50,160 ciw fel rhestr cysylltiedig yn unigol, ond Yr wyf yn meddwl yn nhermau delweddu, 233 00:11:50,160 --> 00:11:53,350 mae mewn gwirionedd fod o gymorth i weld hyn fel rhestr cysylltiedig ddwbl. 234 00:11:53,350 --> 00:11:56,850 Ond mae'n bendant yn bosibl i yn gwneud hyn fel rhestr cysylltiedig yn unigol. 235 00:11:56,850 --> 00:12:00,110 >> Felly gadewch i ni gael golwg ar beth y gallai hyn edrych. 236 00:12:00,110 --> 00:12:02,750 Os ydym am enquue-- felly yn awr, unwaith eto rydym yn 237 00:12:02,750 --> 00:12:05,360 newid i gysylltu-restr model lleoli yma. 238 00:12:05,360 --> 00:12:08,420 Os ydym am enqueue, rydym am i ychwanegu elfen newydd, yn dda 239 00:12:08,420 --> 00:12:09,730 beth sydd angen i ni ei wneud? 240 00:12:09,730 --> 00:12:12,770 Wel, yn gyntaf oll, oherwydd rydym yn ychwanegu at ddiwedd 241 00:12:12,770 --> 00:12:15,520 ac yn tynnu oddi ar y dechrau, mae'n debyg ein bod 242 00:12:15,520 --> 00:12:20,050 am gynnal awgrymiadau at y pennaeth a'r gynffon y rhestr cysylltiedig? 243 00:12:20,050 --> 00:12:22,660 Cynffon yn dymor arall ar gyfer diwedd y rhestr cysylltiedig, 244 00:12:22,660 --> 00:12:24,496 yr elfen olaf yn y rhestr cysylltiedig. 245 00:12:24,496 --> 00:12:26,620 A bydd yn ôl pob tebyg y rhain, unwaith eto, fod o fudd i ni 246 00:12:26,620 --> 00:12:28,477 os ydynt yn newidynnau byd-eang. 247 00:12:28,477 --> 00:12:31,060 Ond yn awr os ydym am ychwanegu newydd Elfen beth sy'n rhaid i ni ei wneud? 248 00:12:31,060 --> 00:12:35,262 Yr hyn yr ydym yn unig [? Malak?] neu ddeinamig dyrannu ein nod newydd i ni ein hunain. 249 00:12:35,262 --> 00:12:38,220 Ac yna, yn union fel pan fyddwn yn ychwanegu unrhyw elfen i restr rydym cysylltiedig ddwywaith, 250 00:12:38,220 --> 00:12:40,410 dim ond rhaid i ddidoli o- y rhai tri cham diwethaf yma 251 00:12:40,410 --> 00:12:43,330 yn unig popeth am symud y arwyddion yn y ffordd gywir 252 00:12:43,330 --> 00:12:46,710 fel bod yr elfen yn cael ei ychwanegu at y gadwyn heb dorri'r gadwyn 253 00:12:46,710 --> 00:12:49,580 neu wneud rhyw fath o gamgymeriad neu gael rhyw fath o ddamwain 254 00:12:49,580 --> 00:12:54,505 digwydd lle yr ydym yn ddamweiniol amddifad rhai elfennau o'n ciw. 255 00:12:54,505 --> 00:12:55,880 Dyma beth y gallai hyn edrych. 256 00:12:55,880 --> 00:13:00,980 Rydym eisiau ychwanegu'r elfen 10 hyd at ddiwedd ciw yma. 257 00:13:00,980 --> 00:13:03,380 Felly yr elfen hynaf yma cael ei gynrychioli gan ben. 258 00:13:03,380 --> 00:13:06,800 Dyna'r peth cyntaf rydym yn rhoi i mewn i hyn ciw damcaniaethol yma. 259 00:13:06,800 --> 00:13:10,430 A chynffon, 13, yw'r mwyaf Elfen ychwanegwyd yn ddiweddar. 260 00:13:10,430 --> 00:13:17,030 Ac felly os ydym am enqueue 10 i mewn ciw hwn, rydym am roi ar ôl 13. 261 00:13:17,030 --> 00:13:19,860 Ac felly rydym yn mynd i ddeinamig neilltuo lle ar gyfer nod newydd 262 00:13:19,860 --> 00:13:23,280 a gwirio am null i wneud yn siŵr Nid oes gennym fethiant cof. 263 00:13:23,280 --> 00:13:27,040 Yna, rydym yn mynd i gosod 10 i mewn i'r nod, 264 00:13:27,040 --> 00:13:30,030 ac yn awr mae angen i ni fod yn ofalus am sut yr ydym yn trefnu awgrymiadau 265 00:13:30,030 --> 00:13:32,180 felly nid ydym yn torri'r gadwyn. 266 00:13:32,180 --> 00:13:38,910 >> Gallwn osod 10 o faes blaenorol i bwyntio yn ôl i'r hen gynffon, 267 00:13:38,910 --> 00:13:41,620 ac ers '10 fydd y cynffon newydd ar ryw bwynt 268 00:13:41,620 --> 00:13:44,459 erbyn yr amser pob un o'r rhain cadwyni yn cael eu cysylltu, 269 00:13:44,459 --> 00:13:46,250 dim byd yn mynd i ddod ar ôl 10 ar hyn o bryd. 270 00:13:46,250 --> 00:13:49,880 Ac felly 10 yn pwyntydd nesaf Bydd pwyntio at null, 271 00:13:49,880 --> 00:13:53,580 ac yna ar ôl i ni wneud hyn, ar ôl i ni cysylltu 10 yn ôl i'r gadwyn, 272 00:13:53,580 --> 00:13:57,780 gallwn gymryd yr hen ben, neu, esgus mi, yr hen gynffon y ciw. 273 00:13:57,780 --> 00:14:02,980 Mae'r hen ddiwedd y ciw, 13, ac yn ei gwneud yn pwyntio at 10. 274 00:14:02,980 --> 00:14:08,220 Ac yn awr, ar y pwynt hwn, rydym wedi enqueued y rhif 10 i mewn i ciw hwn. 275 00:14:08,220 --> 00:14:14,740 Y cyfan sydd angen i ni ei wneud yn awr yw dim ond symud y gynffon i bwyntio at 10 yn lle i 13. 276 00:14:14,740 --> 00:14:17,630 >> Dequeuing mewn gwirionedd debyg iawn i popping 277 00:14:17,630 --> 00:14:21,710 o bentwr sy'n rhoi ar waith fel rhestr cysylltiedig 278 00:14:21,710 --> 00:14:24,040 os ydych chi wedi gweld y fideo teisi. 279 00:14:24,040 --> 00:14:27,280 Y cyfan sydd angen ei wneud yw dechrau ar y dechrau, dod o hyd i'r ail elfen, 280 00:14:27,280 --> 00:14:30,480 rhad ac am ddim yr elfen gyntaf, ac yna symud y pen 281 00:14:30,480 --> 00:14:32,930 i dynnu sylw at yr ail elfen. 282 00:14:32,930 --> 00:14:37,920 Yn ôl pob tebyg yn well i ddychmygu iddo dim ond i fod yn hynod glir am y peth. 283 00:14:37,920 --> 00:14:39,230 Felly dyma ein ciw eto. 284 00:14:39,230 --> 00:14:42,600 12 yw'r elfen hynaf yn ein ciw, y pennaeth. 285 00:14:42,600 --> 00:14:46,210 10 yw'r elfen mwyaf newydd yn ein ciw, ein gynffon. 286 00:14:46,210 --> 00:14:49,310 >> Ac felly pan rydym am i dequeue elfen, 287 00:14:49,310 --> 00:14:52,202 rydym am gael gwared ar yr elfen hynaf. 288 00:14:52,202 --> 00:14:52,910 Felly beth ydym ni'n ei wneud? 289 00:14:52,910 --> 00:14:55,243 Wel rydym yn gosod pwyntydd llwybro sy'n dechrau ar ben, 290 00:14:55,243 --> 00:14:57,840 ac yr ydym yn symud fel ei fod yn cyfeirio at yr ail elfen 291 00:14:57,840 --> 00:15:02,290 o hyn queue-- rhywbeth trwy ddweud Trav hafal Trav saeth nesaf, er enghraifft, 292 00:15:02,290 --> 00:15:07,170 Byddai symud Trav yno i dynnu sylw at 15, sydd, ar ôl i ni dequeue 12, 293 00:15:07,170 --> 00:15:13,030 neu ar ôl i ni gael gwared ar 12, bydd yn dod yn elfen yna-hynaf. 294 00:15:13,030 --> 00:15:16,360 >> Nawr mae gennym gafael ar y cyntaf elfen drwy'r pen pwyntydd 295 00:15:16,360 --> 00:15:19,440 a'r ail elfen drwy'r Trav pwyntydd. 296 00:15:19,440 --> 00:15:25,170 Y gallwn pen yn awr rhad ac am ddim, ac yna o fewn ein gallu yn dweud dim byd yn dod cyn 15 anymore. 297 00:15:25,170 --> 00:15:29,990 Felly rydym yn gallu newid 15 oed blaenorol pwyntydd i bwyntio at null, 298 00:15:29,990 --> 00:15:31,874 ac rydym yn unig yn symud y pen drosodd. 299 00:15:31,874 --> 00:15:32,540 Ac dyna ni. 300 00:15:32,540 --> 00:15:35,840 Nawr rydym wedi llwyddo i dequeued 12, ac yn awr rydym 301 00:15:35,840 --> 00:15:39,180 cael ciw arall o 4 elfen. 302 00:15:39,180 --> 00:15:41,700 Dyna 'n bert lawer holl mae i ciwiau, 303 00:15:41,700 --> 00:15:45,810 y ddau yn seiliedig arae-ac yn gysylltiedig-rhestr sy'n seiliedig ar. 304 00:15:45,810 --> 00:15:46,860 Rwy'n Doug Lloyd. 305 00:15:46,860 --> 00:15:49,100 Mae hyn yn CS 50. 306 00:15:49,100 --> 00:15:50,763