1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:05,120 [CHWARAE CERDDORIAETH] 3 00:00:05,120 --> 00:00:12,026 4 00:00:12,026 --> 00:00:12,900 SIARADWR 1: Pob hawl. 5 00:00:12,900 --> 00:00:14,600 Mae pawb yn croesawu yn ôl i'r adran. 6 00:00:14,600 --> 00:00:18,660 Rwy'n gobeithio y byddwch i gyd yn llwyddiannus hadennill oddi wrth eich cwis 7 00:00:18,660 --> 00:00:19,510 o wythnos diwethaf. 8 00:00:19,510 --> 00:00:22,564 Rwy'n gwybod ei fod yn ychydig yn wallgof ar adegau. 9 00:00:22,564 --> 00:00:25,230 Fel yr oeddwn yn ei ddweud o'r blaen, os ydych yn o fewn y gwyriad safonol, 10 00:00:25,230 --> 00:00:28,188 ddim wir yn poeni am y peth, yn enwedig ar gyfer adran llai cyfforddus. 11 00:00:28,188 --> 00:00:30,230 Dyna am ble y dylech fod. 12 00:00:30,230 --> 00:00:32,850 >> Os wnaethoch chi fawr, yna awesome. 13 00:00:32,850 --> 00:00:33,650 Kudos i chi. 14 00:00:33,650 --> 00:00:36,149 Ac os ydych yn teimlo fel chi ei angen ychydig yn fwy o help, os gwelwch yn dda 15 00:00:36,149 --> 00:00:38,140 croeso i gyrraedd allan i unrhyw un o'r TFS. 16 00:00:38,140 --> 00:00:40,030 Yr ydym i gyd yma i helpu. 17 00:00:40,030 --> 00:00:40,960 >> Dyna pam ein bod yn addysgu. 18 00:00:40,960 --> 00:00:44,550 Dyna pam rwyf yma bob dydd Llun ar eich rhan guys ac yn swyddfa oriau ar ddydd Iau. 19 00:00:44,550 --> 00:00:48,130 Felly, mae croeso i chi gadewch i mi wybod os ydych yn poeni am unrhyw beth 20 00:00:48,130 --> 00:00:52,450 neu os oes unrhyw beth ar y cwis y byddech yn wir yn hoffi i fynd i'r afael. 21 00:00:52,450 --> 00:00:56,940 >> Felly, yr agenda ar gyfer heddiw yw popeth am strwythurau data. 22 00:00:56,940 --> 00:01:01,520 Mae rhai o'r rhain yn unig yn mynd i fod yr un i gael eich bod yn gyfarwydd â'r rhain. 23 00:01:01,520 --> 00:01:04,870 Efallai na fyddwch byth yn gweithredu nhw yn y dosbarth hwn. 24 00:01:04,870 --> 00:01:08,690 Mae rhai ohonynt byddwch, tebyg am eich pset sillafu. 25 00:01:08,690 --> 00:01:11,380 >> Bydd gennych eich dewis rhwng tablau hash a geisiau. 26 00:01:11,380 --> 00:01:13,680 Felly byddwn yn bendant yn mynd dros y rhai. 27 00:01:13,680 --> 00:01:18,690 Mae'n mynd i fod yn bendant yn fwy o fath o adran lefel uchel heddiw, fodd bynnag, 28 00:01:18,690 --> 00:01:22,630 oherwydd mae llawer ohonyn nhw, ac os rydym yn mynd i mewn i'r manylion gweithredu 29 00:01:22,630 --> 00:01:26,490 ar bob un o'r rhain, nid byddem hyd yn oed yn mynd trwy restrau cysylltiedig 30 00:01:26,490 --> 00:01:28,520 ac efallai ychydig o dablau hash. 31 00:01:28,520 --> 00:01:31,200 >> Felly yn amyneddgar gyda mi. 32 00:01:31,200 --> 00:01:33,530 Dydyn ni ddim yn mynd i fod yn ei wneud gymaint codio y tro hwn. 33 00:01:33,530 --> 00:01:36,870 Os oes gennych unrhyw gwestiynau am y peth neu os ydych am weld yn cael ei rhoi ar waith 34 00:01:36,870 --> 00:01:39,260 neu roi cynnig arni i chi eich hun, Rwy'n bendant yn argymell 35 00:01:39,260 --> 00:01:44,250 mynd i study.cs50.net, a oedd Mae enghreifftiau o'r rhain i gyd. 36 00:01:44,250 --> 00:01:46,400 Bydd yn cael fy PowerPoints â'r nodiadau sydd gennym 37 00:01:46,400 --> 00:01:50,860 yn tueddu i ddefnyddio yn ogystal â rhywfaint o raglennu ymarferion, yn enwedig ar gyfer pethau 38 00:01:50,860 --> 00:01:55,250 fel rhestrau cysylltiedig a deuaidd coed staciau a chiwiau. 39 00:01:55,250 --> 00:01:59,590 Felly, ychydig yn fwy lefel uchel, sy'n Gallai fod yn neis i chi guys. 40 00:01:59,590 --> 00:02:01,320 >> Felly, gyda hynny, byddwn yn dechrau arni. 41 00:02:01,320 --> 00:02:03,060 A hefyd, cwisiau yes--. 42 00:02:03,060 --> 00:02:06,550 Rwy'n credu y rhan fwyaf ohonoch chi sydd mewn mae fy adran wedi eich cwisiau, 43 00:02:06,550 --> 00:02:12,060 ond mae unrhyw un yn dod i mewn, neu ryw reswm yr ydych Nid yn gwneud, maent yn iawn yma yn y tu blaen. 44 00:02:12,060 --> 00:02:12,740 >> Felly, rhestrau cysylltiedig. 45 00:02:12,740 --> 00:02:15,650 Rwy'n gwybod y math hwn o yn mynd i yn ôl cyn eich cwis. 46 00:02:15,650 --> 00:02:17,940 Dyna oedd yr wythnos cyn ein bod yn dysgu am hyn. 47 00:02:17,940 --> 00:02:21,040 Ond yn yr achos hwn, rydym yn annhymerus unig mynd ychydig yn fwy manwl. 48 00:02:21,040 --> 00:02:25,900 >> Felly pam y gallem ddewis rhestr gysylltiedig dros arae? 49 00:02:25,900 --> 00:02:27,130 Beth sy'n eu gwahaniaethu? 50 00:02:27,130 --> 00:02:27,630 Ie? 51 00:02:27,630 --> 00:02:30,464 >> GYNULLEIDFA: Gallwch ehangu a chysylltu rhestru yn erbyn maint sefydlog arae yn. 52 00:02:30,464 --> 00:02:31,171 SIARADWR 1: Iawn. 53 00:02:31,171 --> 00:02:33,970 Amrywiaeth wedi sefydlog maint tra bod rhestr gysylltiedig â faint amrywiol. 54 00:02:33,970 --> 00:02:36,970 Felly, os nad ydym yn gwybod sut cymaint yr ydym yn awyddus i storio, 55 00:02:36,970 --> 00:02:39,880 rhestr cysylltiedig yn rhoi i ni yn fawr ffordd o wneud hynny oherwydd ein bod yn gallu jyst 56 00:02:39,880 --> 00:02:43,730 ychwanegu ar nod arall ac ychwanegu ar nod arall ac yn ychwanegu ar y nod arall. 57 00:02:43,730 --> 00:02:45,750 Ond hyn a allai fod yn fasnach-off? 58 00:02:45,750 --> 00:02:49,521 A oes unrhyw un yn cofio y fasnach-off rhwng araeau a rhestrau cysylltiedig? 59 00:02:49,521 --> 00:02:50,020 Mmhmm? 60 00:02:50,020 --> 00:02:51,460 >> GYNULLEIDFA: rhaid i chi mynd trwy'r holl ffordd 61 00:02:51,460 --> 00:02:53,738 drwy'r rhestr cysylltiedig dod o hyd i elfen mewn rhestr. 62 00:02:53,738 --> 00:02:55,570 Mewn amrywiaeth, gallwch jyst ddod o hyd i elfen. 63 00:02:55,570 --> 00:02:56,278 >> SIARADWR 1: Iawn. 64 00:02:56,278 --> 00:02:57,120 Felly, gyda arrays-- 65 00:02:57,120 --> 00:02:58,500 >> GYNULLEIDFA: [Anghlywadwy]. 66 00:02:58,500 --> 00:03:01,090 >> SIARADWR 1: Gyda araeau, rydym wedi hyn a elwir mynediad ar hap. 67 00:03:01,090 --> 00:03:04,820 Yn golygu os ydym am yr hyn sy'n erioed y pwynt pumed o restr 68 00:03:04,820 --> 00:03:07,230 neu'r pwynt rhan o bump o'n array, gallwn jyst chrafangia '. 69 00:03:07,230 --> 00:03:10,440 Os yw'n rhestr cysylltiedig, rydym wedi i ailadrodd drwy, dde? 70 00:03:10,440 --> 00:03:14,020 Felly mae cael mynediad elfen mewn amrywiaeth yn amser gyson, 71 00:03:14,020 --> 00:03:19,530 tra â rhestr cysylltiedig y byddai fwyaf tebygol o fod yn amser llinol oherwydd efallai 72 00:03:19,530 --> 00:03:21,370 ein elfen yn yr holl ffordd ar y diwedd. 73 00:03:21,370 --> 00:03:23,446 Mae'n rhaid i ni chwilio drwy bopeth. 74 00:03:23,446 --> 00:03:25,320 Felly, gyda'r holl ddata hyn strwythurau rydym yn mynd 75 00:03:25,320 --> 00:03:29,330 i yn treulio ychydig mwy o amser ar, beth yw'r pwyntiau cadarnhaol a negyddol. 76 00:03:29,330 --> 00:03:31,480 Pryd y gallai rydym am defnyddiwch un dros y llall? 77 00:03:31,480 --> 00:03:34,970 A dyna caredig y beth mwy i fynd i ffwrdd. 78 00:03:34,970 --> 00:03:40,140 >> Felly mae gennym yma yw'r diffiniad o nôd. 79 00:03:40,140 --> 00:03:43,040 Mae fel un elfen mewn ein rhestr cysylltiedig, dde? 80 00:03:43,040 --> 00:03:46,180 Felly, rydym ni i gyd yn gyfarwydd gyda'n structs typedef, 81 00:03:46,180 --> 00:03:47,980 a aeth i ni drosodd mewn adolygiad tro diwethaf. 82 00:03:47,980 --> 00:03:53,180 Yr oedd yn y bôn yn unig yn creu un arall math o ddata y gallem eu defnyddio. 83 00:03:53,180 --> 00:03:57,930 >> Ac yn yr achos hwn, mae'n rhywfaint o nod a fydd yn cynnal rhai cyfanrif mewn. 84 00:03:57,930 --> 00:04:00,210 Ac yna beth yw'r ail ran yn fan hyn? 85 00:04:00,210 --> 00:04:03,192 86 00:04:03,192 --> 00:04:05,677 Dylai unrhyw un? 87 00:04:05,677 --> 00:04:06,680 >> GYNULLEIDFA: [Anghlywadwy]. 88 00:04:06,680 --> 00:04:07,020 >> SIARADWR 1: Yeah. 89 00:04:07,020 --> 00:04:08,400 Mae'n pwyntydd at y nod nesaf. 90 00:04:08,400 --> 00:04:12,610 Felly, dylai hyn mewn gwirionedd fod hyd yma. 91 00:04:12,610 --> 00:04:18,790 Mae hwn yn pwyntydd o fath nod at y peth nesaf. 92 00:04:18,790 --> 00:04:22,410 A dyna beth maent yn yn cwmpasu ein nod. 93 00:04:22,410 --> 00:04:24,060 Cool. 94 00:04:24,060 --> 00:04:29,390 >> Mae pob hawl, felly â chwilio, gan ein bod dim ond dweud flaen llaw, os ydych yn 95 00:04:29,390 --> 00:04:31,840 mynd i chwilio drwy, rhaid i chi ailadrodd mewn gwirionedd 96 00:04:31,840 --> 00:04:33,660 drwy eich rhestr cysylltiedig. 97 00:04:33,660 --> 00:04:38,530 Felly os ydym yn chwilio am y rhif 9, byddem yn dechrau am ein ben 98 00:04:38,530 --> 00:04:41,520 ac sy'n ein pwyntiau ar y dechrau o'n rhestr cysylltiedig, dde? 99 00:04:41,520 --> 00:04:44,600 Ac yr ydym yn ei ddweud, OK, yn gwneud hyn nod yn cynnwys y rhif 9? 100 00:04:44,600 --> 00:04:45,690 Nac oes? 101 00:04:45,690 --> 00:04:47,500 >> Mae pob hawl, yn mynd i'r un nesaf. 102 00:04:47,500 --> 00:04:48,312 Dilynwch iddo. 103 00:04:48,312 --> 00:04:49,520 A yw'n cynnwys y rhif 9? 104 00:04:49,520 --> 00:04:50,570 Rhif 105 00:04:50,570 --> 00:04:51,550 Dilynwch yr un nesaf. 106 00:04:51,550 --> 00:04:55,490 >> Felly, mae'n rhaid i ni ailadrodd mewn gwirionedd drwy ein rhestr cysylltiedig. 107 00:04:55,490 --> 00:05:00,070 Ni allwn fynd yn uniongyrchol i ble 9 yw. 108 00:05:00,070 --> 00:05:05,860 Ac os ydych guys mewn gwirionedd eisiau gweld rhai ffug-god i fyny yno. 109 00:05:05,860 --> 00:05:10,420 Mae gennym rai swyddogaeth chwilio yma sy'n cymryd in-- beth y mae'n ei gymryd i mewn? 110 00:05:10,420 --> 00:05:13,110 111 00:05:13,110 --> 00:05:14,320 Beth ydych chi'n feddwl? 112 00:05:14,320 --> 00:05:15,960 Un mor hawdd. 113 00:05:15,960 --> 00:05:17,784 Beth yw hyn? 114 00:05:17,784 --> 00:05:18,700 GYNULLEIDFA: [Anghlywadwy]. 115 00:05:18,700 --> 00:05:20,366 SIARADWR 1: Nifer yr ydym yn chwilio am. 116 00:05:20,366 --> 00:05:20,980 Hawl? 117 00:05:20,980 --> 00:05:22,875 A beth fyddai hyn yn cyd-fynd? 118 00:05:22,875 --> 00:05:25,020 Mae'n pwyntydd i? 119 00:05:25,020 --> 00:05:26,000 >> GYNULLEIDFA: A nod. 120 00:05:26,000 --> 00:05:28,980 >> SIARADWR 1: A nod at y rhestr ein bod yn edrych ar, dde? 121 00:05:28,980 --> 00:05:33,700 Felly, mae gennym rai nodau yn pwyntydd yma. 122 00:05:33,700 --> 00:05:37,240 Mae hwn yn bwynt sy'n mynd i mewn gwirionedd yn ailadrodd drwy ein rhestr. 123 00:05:37,240 --> 00:05:39,630 Rydym yn gosod hi'n gyfartal i restru oherwydd dyna yn unig 124 00:05:39,630 --> 00:05:44,380 osod hi'n gyfartal i'r dechrau ein rhestr cysylltiedig. 125 00:05:44,380 --> 00:05:50,660 >> Ac er nad yw'n NULL, tra rydym yn dal i gael pethau yn ein rhestr, 126 00:05:50,660 --> 00:05:55,580 wirio i weld os yw'r nod wedi mae'r nifer rydym yn chwilio am. 127 00:05:55,580 --> 00:05:57,740 Dychwelyd yn wir. 128 00:05:57,740 --> 00:06:01,070 Fel arall, ei diweddaru, dde? 129 00:06:01,070 --> 00:06:04,870 >> Os yw'n NULL, rydym yn gadael ein tra dolen a dychwelyd ffug 130 00:06:04,870 --> 00:06:08,340 oherwydd mae hynny'n golygu nad ydym wedi dod o hyd iddo. 131 00:06:08,340 --> 00:06:11,048 A yw pawb yn cael sut mae hynny'n gweithio? 132 00:06:11,048 --> 00:06:11,548 OK. 133 00:06:11,548 --> 00:06:14,940 134 00:06:14,940 --> 00:06:20,260 >> Felly, gyda mewnosod, chi gael tair ffordd wahanol. 135 00:06:20,260 --> 00:06:25,250 Gallwch prepend, gallwch atodi a gallwch mewnosod i mewn assorted. 136 00:06:25,250 --> 00:06:28,215 Yn yr achos hwn, rydym yn mynd i wneud prepend. 137 00:06:28,215 --> 00:06:33,380 Oes rhywun yn gwybod sut y rheini Gallai tri achos yn wahanol? 138 00:06:33,380 --> 00:06:36,920 >> Felly prepend yn golygu eich bod yn rhoi ei fod ar flaen eich rhestr. 139 00:06:36,920 --> 00:06:39,770 Felly byddai hynny'n golygu bod waeth beth yw eich nod yw, ni waeth 140 00:06:39,770 --> 00:06:43,160 beth mae'r gwerth yw, rydych chi'n mynd i roi pethau'n iawn yma yn blaen, OK? 141 00:06:43,160 --> 00:06:45,160 Mae'n mynd i fod y cyntaf elfen yn eich rhestr. 142 00:06:45,160 --> 00:06:49,510 >> Os ydych yn atodi iddo, mae'n mynd i fynd i gefn eich rhestr. 143 00:06:49,510 --> 00:06:54,010 Ac yn mewnosod i mewn i assorted yn golygu eich bod yn mynd i roi mewn gwirionedd i mewn i'r lle 144 00:06:54,010 --> 00:06:57,700 lle mae'n cadw eich rhestr cysylltiedig didoli. 145 00:06:57,700 --> 00:07:00,810 Unwaith eto, sut yr ydych yn defnyddio y rhai a phan fyddwch yn defnyddio 146 00:07:00,810 --> 00:07:02,530 bydd yn eu amrywio yn dibynnu ar eich achos. 147 00:07:02,530 --> 00:07:05,834 148 00:07:05,834 --> 00:07:07,750 Os na fydd yn rhaid eu datrys, prepend tueddu 149 00:07:07,750 --> 00:07:10,460 i fod yn yr hyn y rhan fwyaf o bobl defnyddio oherwydd nad ydych yn ei wneud 150 00:07:10,460 --> 00:07:15,680 rhaid i chi fynd drwy'r rhestr gyfan i ddod o hyd y diwedd i ychwanegu ar, dde? 151 00:07:15,680 --> 00:07:17,720 Alli jyst lynu yn iawn yn. 152 00:07:17,720 --> 00:07:21,930 >> Felly, byddwn yn mynd drwy mewnosod 1 ar hyn o bryd. 153 00:07:21,930 --> 00:07:26,360 Felly, un peth yr wyf i'n mynd i dal argymell ar pset hwn 154 00:07:26,360 --> 00:07:29,820 yw tynnu pethau allan, fel bob amser. 155 00:07:29,820 --> 00:07:35,130 Mae'n bwysig iawn eich bod yn diweddaru eich awgrymiadau yn y drefn gywir 156 00:07:35,130 --> 00:07:38,620 oherwydd os ydych yn eu diweddaru ychydig allan o drefn, 157 00:07:38,620 --> 00:07:42,210 ydych yn mynd i roi diwedd ar i fyny colli rannau o'ch rhestr. 158 00:07:42,210 --> 00:07:49,680 >> Felly, er enghraifft, yn yr achos hwn, rydym yn dweud wrth y pennaeth i bwynt yn unig i 1. 159 00:07:49,680 --> 00:07:56,070 Os ydym yn unig yn gwneud hynny heb arbed hyn 1, 160 00:07:56,070 --> 00:07:58,570 nid oes gennym unrhyw syniad beth 1 Dylai bwyntio at nawr 161 00:07:58,570 --> 00:08:02,490 oherwydd ein bod wedi colli beth y pen tynnu sylw at. 162 00:08:02,490 --> 00:08:05,530 Felly, un peth i'w gofio pan fyddwch chi'n ei wneud yn prepend 163 00:08:05,530 --> 00:08:09,630 yw achub yr hyn y mae'r pwyntiau ben i'r cyntaf, 164 00:08:09,630 --> 00:08:15,210 Yna ail-neilltuo iddo, ac yna diweddaru yr hyn y dylai eich nod newydd yn cyfeirio at. 165 00:08:15,210 --> 00:08:20,870 166 00:08:20,870 --> 00:08:22,560 Yn yr achos hwn, mae hyn yn un ffordd o wneud hynny. 167 00:08:22,560 --> 00:08:25,440 >> Felly, pe baem wedi ei wneud fel hyn lle rydym yn unig symudir pen, 168 00:08:25,440 --> 00:08:30,320 rydym yn colli y bôn ein rhestr gyfan, dde? 169 00:08:30,320 --> 00:08:38,000 Un ffordd i wneud hynny yw cael 1 pwynt i nesaf, ac wedyn pwynt pen i 1. 170 00:08:38,000 --> 00:08:42,650 Neu gallwch wneud math o fel y storio dros dro, y soniais amdano. 171 00:08:42,650 --> 00:08:45,670 >> Ond yn ailgyfeirio eich awgrymiadau yn y drefn gywir 172 00:08:45,670 --> 00:08:48,750 yn mynd i fod yn iawn, iawn bwysig ar gyfer pset hwn. 173 00:08:48,750 --> 00:08:53,140 Fel arall, rydych yn mynd i gael hash tabl neu cynnig arni sy'n 'jyst yn mynd i fod yn 174 00:08:53,140 --> 00:08:56,014 dim ond rhan o'r geiriau a ydych eisiau ac yna'n you're-- mmhmm? 175 00:08:56,014 --> 00:08:58,930 GYNULLEIDFA: Beth oedd y dros dro beth storio oeddech yn siarad am? 176 00:08:58,930 --> 00:09:00,305 SIARADWR 1: Mae storio dros dro. 177 00:09:00,305 --> 00:09:02,760 Felly y bôn un arall ffordd y gallech wneud hyn 178 00:09:02,760 --> 00:09:07,650 ei storio y pennaeth rywbeth, fel ei storio y newidyn dros dro. 179 00:09:07,650 --> 00:09:11,250 Neilltuo i 1 a Yna diweddaru 1 i bwynt 180 00:09:11,250 --> 00:09:13,830 i ba bynnag pen a ddefnyddir i bwyntio at. 181 00:09:13,830 --> 00:09:16,920 Fel hyn, yn amlwg mwy cain oherwydd eich bod 182 00:09:16,920 --> 00:09:20,770 Nid oes angen gwerth dros dro, ond dim ond yn cynnig ffordd arall i wneud hynny. 183 00:09:20,770 --> 00:09:23,999 184 00:09:23,999 --> 00:09:25,790 Ac rydym yn ei wneud mewn gwirionedd yn cael rhywfaint cod ar gyfer hyn. 185 00:09:25,790 --> 00:09:28,080 Felly, ar gyfer y rhestr cysylltiedig, rydym yn mewn gwirionedd yn cael rhywfaint o cod. 186 00:09:28,080 --> 00:09:31,930 Felly rhowch yma, mae hyn yn prepending. 187 00:09:31,930 --> 00:09:34,290 Felly, mae hyn yn mynd i mewn iddo yn y pen. 188 00:09:34,290 --> 00:09:38,820 >> Felly mae peth cyntaf, mae angen i chi greu eich nod newydd, wrth gwrs, 189 00:09:38,820 --> 00:09:40,790 ac yn gwirio am NULL. 190 00:09:40,790 --> 00:09:43,250 Bob amser yn dda. 191 00:09:43,250 --> 00:09:47,840 Ac yna bydd angen i chi aseinio gwerthoedd. 192 00:09:47,840 --> 00:09:51,260 Pryd bynnag y byddwch yn creu nod newydd, byddwch yn ddim yn gwybod yr hyn y mae'n pwyntio i'r nesaf, 193 00:09:51,260 --> 00:09:54,560 felly yr ydych eisiau ei ymgychwyn iddo nwl. 194 00:09:54,560 --> 00:09:58,760 Os bydd yn y pen draw yn pwyntio at rywbeth arall, mae'n cael ei hailneilltuo ac mae'n iawn. 195 00:09:58,760 --> 00:10:00,740 Os mai dyma'r peth cyntaf yn y rhestr, mae angen 196 00:10:00,740 --> 00:10:04,270 i bwyntio at nwl oherwydd dyna ddiwedd y rhestr. 197 00:10:04,270 --> 00:10:12,410 >> Felly, yna i fewnosod iddo, gwelwn dyma ni yn aseinio y gwerth nesaf ein nod 198 00:10:12,410 --> 00:10:17,380 i fod beth bynnag pen yw, sef yr hyn oedd gennym yma. 199 00:10:17,380 --> 00:10:19,930 Dyna beth yr ydym yn unig oedd. 200 00:10:19,930 --> 00:10:25,820 Ac yna rydym yn aseinio pen i bwynt at ein nod newydd, gan fod yn cofio, 201 00:10:25,820 --> 00:10:31,090 newydd yw'r peth pwyntydd i nod, a dyna'n union yr hyn y pen yn. 202 00:10:31,090 --> 00:10:34,370 Dyna'n union pam yr ydym yn gael saeth hwn accessor. 203 00:10:34,370 --> 00:10:37,030 204 00:10:37,030 --> 00:10:37,530 Cool? 205 00:10:37,530 --> 00:10:38,130 Mmhmm? 206 00:10:38,130 --> 00:10:41,100 >> GYNULLEIDFA: Oes rhaid i ni ymgychwyn nesaf newydd i NULL yn gyntaf, 207 00:10:41,100 --> 00:10:44,240 neu gallwn jyst ymgychwyn iddo i ben? 208 00:10:44,240 --> 00:10:48,210 >> SIARADWR 1: New nesaf angen iddo fod yn NULL i ddechrau 209 00:10:48,210 --> 00:10:53,760 oherwydd nad ydych yn gwybod ble mae'n mynd i fod. 210 00:10:53,760 --> 00:10:56,100 Hefyd, mae hyn yn fath o yn union fel patrwm. 211 00:10:56,100 --> 00:10:59,900 Rydych yn gosod ei bod yn hafal i NULL yn unig i wneud yn siwr bod eich holl ganolfannau yn cael eu cynnwys 212 00:10:59,900 --> 00:11:04,070 cyn i chi wneud unrhyw ailbennu fel bod byddwch bob amser yn gwarantu y bydd yn 213 00:11:04,070 --> 00:11:08,880 yn cael ei bwyntio at werth penodol erbyn fel gwerth garbage. 214 00:11:08,880 --> 00:11:12,210 Oherwydd, ie, rydym yn aseinio newydd nesaf yn awtomatig, 215 00:11:12,210 --> 00:11:15,420 ond ei fod yn fwy union fel arfer da i ymgychwyn iddo 216 00:11:15,420 --> 00:11:19,270 yn y ffordd honno, ac yna ail-neilltuo. 217 00:11:19,270 --> 00:11:23,420 >> OK, yn gysylltiedig felly ddwbl rhestrau nawr. 218 00:11:23,420 --> 00:11:24,601 Beth ydym yn ei feddwl? 219 00:11:24,601 --> 00:11:26,350 Beth sy'n wahanol gyda rhestrau cysylltiedig ddwbl? 220 00:11:26,350 --> 00:11:30,750 221 00:11:30,750 --> 00:11:34,300 >> Felly, yn ein rhestrau cysylltiedig, gallwn Dim ond yn symud i un cyfeiriad, dde? 222 00:11:34,300 --> 00:11:35,270 Mai dim ond nesaf. 223 00:11:35,270 --> 00:11:36,760 Ni allwn ond fynd yn ei flaen. 224 00:11:36,760 --> 00:11:40,300 >> Gyda rhestr cysylltiedig ddwbl, gallwn hefyd yn symud tuag yn ôl. 225 00:11:40,300 --> 00:11:44,810 Felly mae gennym nid yn unig yr rhif yr ydym am i storio, 226 00:11:44,810 --> 00:11:50,110 mae gennym lle mae'n cyfeirio at nesaf a lle rydym yn unig yn dod o. 227 00:11:50,110 --> 00:11:52,865 Felly, mae hyn yn caniatáu ar gyfer rhywfaint o groesi yn well. 228 00:11:52,865 --> 00:11:56,620 229 00:11:56,620 --> 00:12:01,240 >> Nodau Felly cysylltu'n ddwbl, debyg iawn, dde? 230 00:12:01,240 --> 00:12:05,000 Dim ond gwahaniaeth yn awr rydym fod â nesaf a blaenorol. 231 00:12:05,000 --> 00:12:06,235 Mae'n yw'r unig wahaniaeth. 232 00:12:06,235 --> 00:12:09,570 233 00:12:09,570 --> 00:12:14,790 >> Felly, pe baem yn prepend neu append-- rydym Nid oes rhaid i unrhyw god ar gyfer hyn i fyny Yma-- 234 00:12:14,790 --> 00:12:17,830 ond pe baech yn ceisio mewnosod iddo, y peth pwysig 235 00:12:17,830 --> 00:12:19,980 mae angen i chi wneud yn siŵr eich bod yn neilltuo 236 00:12:19,980 --> 00:12:23,360 yn eich blaenorol a'ch pwyntydd nesaf yn gywir. 237 00:12:23,360 --> 00:12:29,010 Felly, yn yr achos hwn, byddai chi nid yn unig yn ymgychwyn nesaf, 238 00:12:29,010 --> 00:12:31,820 rydych ymgychwyn blaenorol. 239 00:12:31,820 --> 00:12:36,960 Os ydym yn ar ben y rhestr, rydym yn Byddai nid yn unig yn gwneud pen cyfartal newydd, 240 00:12:36,960 --> 00:12:41,750 ond dylai ein blaenorol newydd bwyntio at y pen, dde? 241 00:12:41,750 --> 00:12:43,380 >> Dyna'r unig wahaniaeth. 242 00:12:43,380 --> 00:12:47,200 Ac os ydych chi eisiau mwy o ymarfer gyda rhain gyda rhestrau cysylltiedig, gyda mewnosod, 243 00:12:47,200 --> 00:12:49,900 gyda dileu, gyda mewnosoder i mewn i restr amrywiol, 244 00:12:49,900 --> 00:12:52,670 os gwelwch yn dda edrychwch ar study.cs50.net. 245 00:12:52,670 --> 00:12:54,870 Mae 'na griw o ymarferion gwych. 246 00:12:54,870 --> 00:12:55,870 Yr wyf yn eu argymell yn fawr. 247 00:12:55,870 --> 00:12:59,210 Yr wyf yn dymuno oedd gennym amser i fynd drwyddynt ond mae llawer o strwythurau data 248 00:12:59,210 --> 00:13:01,530 i gael drwy. 249 00:13:01,530 --> 00:13:02,650 >> OK, felly tablau hash. 250 00:13:02,650 --> 00:13:07,070 Mae'n debyg mai dyma'r mwyaf bit ddefnyddiol ar gyfer eich pset 251 00:13:07,070 --> 00:13:11,090 yma oherwydd eich bod yn mynd i fod yn gweithredu un o'r rhain, neu rhoi cynnig. 252 00:13:11,090 --> 00:13:12,200 Fi 'n sylweddol yn hoffi tablau hash. 253 00:13:12,200 --> 00:13:13,110 Maen nhw 'n bert oera. 254 00:13:13,110 --> 00:13:17,080 >> Felly y bôn beth digwydd yw tabl hash 255 00:13:17,080 --> 00:13:22,050 yw pan mae gwir angen gyflym mewnosod, dileu, ac am-edrych. 256 00:13:22,050 --> 00:13:25,010 Dyna'r pethau yr ydym ni'n blaenoriaethu mewn tabl hash. 257 00:13:25,010 --> 00:13:29,500 Gallant fynd eithaf mawr, ond fel y byddwn yn gweld gyda cheisiau, 258 00:13:29,500 --> 00:13:33,040 mae yna bethau sydd yn fwy o lawer. 259 00:13:33,040 --> 00:13:38,330 >> Ond yn y bôn, i gyd yn hash tabl yn swyddogaeth hash 260 00:13:38,330 --> 00:13:47,215 sy'n dweud wrthych pa bwced i roi pob o'ch data, pob un o'ch elfennau mewn. 261 00:13:47,215 --> 00:13:51,140 Ffordd syml i feddwl am dabl hash yw mai dim ond bwcedi o bethau, 262 00:13:51,140 --> 00:13:51,770 iawn? 263 00:13:51,770 --> 00:13:59,720 Felly, pan fyddwch yn didoli pethau yn ôl fel y llythyren gyntaf eu henw, 264 00:13:59,720 --> 00:14:01,820 sy'n fath o fel tabl hash. 265 00:14:01,820 --> 00:14:06,180 >> Felly, pe bawn yn grŵp yr ydych guys yn yn grwpiau o pwy bynnag ei ​​enw yn dechrau 266 00:14:06,180 --> 00:14:11,670 gyda A dros yma, neu bwy bynnag sy'n pen-blwydd yn ym mis Ionawr, Chwefror, Mawrth, 267 00:14:11,670 --> 00:14:15,220 beth bynnag, mae hynny'n effeithiol creu tabl hash. 268 00:14:15,220 --> 00:14:18,120 Dim ond ei fod yn creu bwcedi sy'n roi trefn ar eich elfennau i mewn 269 00:14:18,120 --> 00:14:19,520 fel y gallwch ddod o hyd iddynt yn haws. 270 00:14:19,520 --> 00:14:22,300 Felly, y ffordd pan fydd angen i mi i ddod o hyd i un o chi, 271 00:14:22,300 --> 00:14:24,680 Nid oes rhaid i mi chwilio drwy bob un o'ch enwau. 272 00:14:24,680 --> 00:14:29,490 Gallaf fod yn debyg, oh, yr wyf yn gwybod bod Pen-blwydd Danielle yn in-- 273 00:14:29,490 --> 00:14:30,240 GYNULLEIDFA: --April. 274 00:14:30,240 --> 00:14:30,948 SIARADWR 1: Ebrill. 275 00:14:30,948 --> 00:14:33,120 Felly, yr wyf yn edrych yn fy Ebrill bwced, a gydag unrhyw lwc, 276 00:14:33,120 --> 00:14:38,270 bydd hi'n fydd yr unig un i mewn 'na ac yn fy amser yn gyson yn hynny o beth, 277 00:14:38,270 --> 00:14:41,230 ond os oes rhaid i mi edrych drwy criw cyfan o bobl, 278 00:14:41,230 --> 00:14:43,090 mae'n mynd i gymryd llawer mwy o amser. 279 00:14:43,090 --> 00:14:45,830 Felly tablau hash yn wir yn unig bwcedi. 280 00:14:45,830 --> 00:14:48,630 Ffordd hawdd i feddwl amdanynt. 281 00:14:48,630 --> 00:14:52,930 >> Felly, yn beth pwysig iawn am tabl hash yn swyddogaeth hash. 282 00:14:52,930 --> 00:14:58,140 Felly mae'r pethau Fi jyst siarad am, fel eich llythyr gyntaf eich enw cyntaf 283 00:14:58,140 --> 00:15:01,450 neu eich mis pen-blwydd, mae'r rhain yn syniadau sy'n 284 00:15:01,450 --> 00:15:03,070 'n sylweddol cydberthyn i swyddogaeth hash. 285 00:15:03,070 --> 00:15:08,900 'I' jyst yn ffordd o benderfynu pa bwced eich bod yn elfen yn mynd i mewn, OK? 286 00:15:08,900 --> 00:15:14,850 Felly, ar gyfer pset hon, gallwch edrych i fyny 'n bert lawer unrhyw swyddogaeth hash yr ydych ei eisiau. 287 00:15:14,850 --> 00:15:16,030 >> Nid oes rhaid i fod yn eich pen eich hun. 288 00:15:16,030 --> 00:15:21,140 Mae rhai rhai 'n sylweddol oera allan yna sy'n gwneud pob math o mathemateg crazy. 289 00:15:21,140 --> 00:15:25,170 Ac os ydych chi am wneud eich gwirydd sillafu super gyflym, 290 00:15:25,170 --> 00:15:27,620 Byddwn yn bendant edrych i mewn i un o'r rheini. 291 00:15:27,620 --> 00:15:32,390 >> Ond mae yna hefyd y rhai syml, fel cyfrifiannu 292 00:15:32,390 --> 00:15:39,010 swm y geiriau, fel Mae pob llythyren a rhif. 293 00:15:39,010 --> 00:15:39,940 Cyfrifiannu y swm. 294 00:15:39,940 --> 00:15:42,230 Sy'n penderfynu y bwced. 295 00:15:42,230 --> 00:15:45,430 Maent hefyd yn cael y rhai hawdd a yn union fel pob un o'r A yn fan hyn, 296 00:15:45,430 --> 00:15:47,050 pob un o'r B sydd yma. 297 00:15:47,050 --> 00:15:48,920 Unrhyw un o'r rheiny. 298 00:15:48,920 --> 00:15:55,770 >> Yn y bôn, 'i jyst yn dweud wrthych pa mynegai array eich elfen ddylai fynd i mewn. 299 00:15:55,770 --> 00:15:58,690 Dim ond penderfynu y bucket-- 'i' i gyd swyddogaeth hash yn. 300 00:15:58,690 --> 00:16:04,180 Felly dyma mae gennym enghraifft sy'n dim ond y llythyren gyntaf y llinyn 301 00:16:04,180 --> 00:16:05,900 fy mod yn siarad amdani. 302 00:16:05,900 --> 00:16:11,900 >> Felly, mae gennych rhywfaint o hash sy'n dim ond y llythyren gyntaf eich llinyn minws A, 303 00:16:11,900 --> 00:16:16,090 a fydd yn rhoi i chi rai rhif rhwng 0 a 25. 304 00:16:16,090 --> 00:16:20,790 A beth ydych am ei wneud yw gwneud yn siŵr bod hyn yn cynrychioli 305 00:16:20,790 --> 00:16:24,110 maint eich hash table-- faint o bwcedi ceir. 306 00:16:24,110 --> 00:16:25,860 Gyda llawer o'r rhain swyddogaethau hash, eu bod yn 307 00:16:25,860 --> 00:16:31,630 mynd i fod yn dychwelyd gwerthoedd y allai yn llawer uwch na nifer y bwcedi 308 00:16:31,630 --> 00:16:33,610 eich bod mewn gwirionedd yn cael yn eich tabl hash, 309 00:16:33,610 --> 00:16:37,240 felly mae angen i chi wneud siŵr a mod gan y rhai. 310 00:16:37,240 --> 00:16:42,190 Fel arall, mae'n mynd i ddweud, oh, dylai fod mewn bwced 5,000 311 00:16:42,190 --> 00:16:46,040 ond dim ond rhaid i chi 30 bwcedi yn eich tabl hash. 312 00:16:46,040 --> 00:16:49,360 Ac wrth gwrs, rydym i gyd yn gwybod bod yn yn mynd i arwain at rai gwallau crazy. 313 00:16:49,360 --> 00:16:52,870 Felly gwnewch yn siwr i mod gan y maint eich tabl hash. 314 00:16:52,870 --> 00:16:58,430 315 00:16:58,430 --> 00:16:58,930 Cool. 316 00:16:58,930 --> 00:17:00,506 Felly gwrthdrawiadau. 317 00:17:00,506 --> 00:17:02,620 A yw pawb yn dda hyd yn hyn? 318 00:17:02,620 --> 00:17:03,120 Mmhmm? 319 00:17:03,120 --> 00:17:05,900 >> GYNULLEIDFA: Pam y byddai ei dychwelyd gwerth mor fawr? 320 00:17:05,900 --> 00:17:09,210 >> SIARADWR 1: Yn dibynnu ar y algorithm bod eich swyddogaeth hash defnyddio. 321 00:17:09,210 --> 00:17:12,270 Bydd rhai ohonynt yn gwneud lluosi crazy. 322 00:17:12,270 --> 00:17:16,270 Ac mae'n ymwneud â chael a hyd yn oed yn dosbarthu, 323 00:17:16,270 --> 00:17:18,490 fel eu bod yn gwneud rhywfaint o wir yn pethau crazy weithiau. 324 00:17:18,490 --> 00:17:20,960 Dyna i gyd. 325 00:17:20,960 --> 00:17:22,140 Unrhyw beth arall? 326 00:17:22,140 --> 00:17:22,829 OK. 327 00:17:22,829 --> 00:17:24,480 >> Felly gwrthdrawiadau. 328 00:17:24,480 --> 00:17:29,270 Yn y bôn, fel y dywedais yn gynharach, yn y senario achos gorau, 329 00:17:29,270 --> 00:17:32,040 unrhyw bwced Rwy'n edrych i mewn yn mynd i gael un peth, 330 00:17:32,040 --> 00:17:34,160 felly nid oes rhaid i mi edrych o gwbl, dde? 331 00:17:34,160 --> 00:17:37,040 Rwy'n naill ai yn gwybod ei fod yno, neu ei fod yn Nid yw, a dyna beth yr ydym yn wir eisiau. 332 00:17:37,040 --> 00:17:43,960 Ond os ydym wedi degau o filoedd o pwyntiau data ac yn llai na'r nifer hwnnw 333 00:17:43,960 --> 00:17:48,700 o bwcedi, rydym yn mynd i gael gwrthdrawiadau lle yn y pen draw rhywbeth 334 00:17:48,700 --> 00:17:54,210 yn mynd i gael i roi diwedd ar i fyny mewn bwced sydd ag elfen eisoes. 335 00:17:54,210 --> 00:17:57,390 >> Felly, y cwestiwn yw, beth ydym yn ei wneud yn yr achos hwnnw? 336 00:17:57,390 --> 00:17:58,480 Beth ydym ni'n ei wneud? 337 00:17:58,480 --> 00:17:59,300 Rydym eisoes wedi rywbeth yno? 338 00:17:59,300 --> 00:18:00,060 A ydym jyst daflu allan? 339 00:18:00,060 --> 00:18:00,700 >> Rhif 340 00:18:00,700 --> 00:18:01,980 Mae'n rhaid i ni gadw ddau ohonynt. 341 00:18:01,980 --> 00:18:06,400 Felly, y ffordd yr ydym fel arfer yn gwneud hynny yn yr hyn? 342 00:18:06,400 --> 00:18:08,400 Beth yw'r strwythur data ni jyst yn siarad am? 343 00:18:08,400 --> 00:18:09,316 GYNULLEIDFA: Rhestr Cysylltiedig. 344 00:18:09,316 --> 00:18:10,500 SIARADWR 1: Rhestr cysylltiedig. 345 00:18:10,500 --> 00:18:16,640 Felly nawr, yn lle pob un o'r rhain bwcedi dim ond cael un elfen, 346 00:18:16,640 --> 00:18:24,020 mae'n mynd i gynnwys rhestr cysylltiedig o yr elfennau a gafodd eu hashed i mewn iddo. 347 00:18:24,020 --> 00:18:27,588 OK, mae pawb yn fath o cael y syniad? 348 00:18:27,588 --> 00:18:30,546 Oherwydd na allem gael amrywiaeth oherwydd nid ydym yn gwybod faint o bethau 349 00:18:30,546 --> 00:18:31,730 yn mynd i fod mewn 'na. 350 00:18:31,730 --> 00:18:36,540 Mae rhestr cysylltiedig yn ein galluogi i wedi dim ond union nifer y 351 00:18:36,540 --> 00:18:38,465 yn cael eu hashed i mewn i'r bwced, dde? 352 00:18:38,465 --> 00:18:42,260 353 00:18:42,260 --> 00:18:50,500 >> Felly llinellol treiddgar yw bôn idea-- hwn 354 00:18:50,500 --> 00:18:52,300 mae'n un ffordd i ddelio â gwrthdrawiad. 355 00:18:52,300 --> 00:18:58,010 Yr hyn y gallwch chi ei wneud yw os, yn hyn o achos, aeron ei hashed i mewn i 1 356 00:18:58,010 --> 00:19:01,130 ac mae gennym eisoes rhywbeth yno, 'ch jyst 357 00:19:01,130 --> 00:19:04,840 dal i fynd i lawr hyd nes y byddwch yn dod o hyd i slot gwag. 358 00:19:04,840 --> 00:19:06,370 Dyna un ffordd i ymdrin â hwy. 359 00:19:06,370 --> 00:19:09,020 Y ffordd arall i drin y mae gyda hyn yr ydym newydd 360 00:19:09,020 --> 00:19:12,280 called-- y cysylltu Gelwir y rhestr yn cael ei gadwyno. 361 00:19:12,280 --> 00:19:20,510 >> Felly, y syniad hwn yn gweithio os eich tabl hash yn eich barn chi 362 00:19:20,510 --> 00:19:24,150 yn llawer mwy na'r gosod eich data, neu os ydych yn 363 00:19:24,150 --> 00:19:28,870 am geisio lleihau gadwyno nes ei fod yn gwbl angenrheidiol. 364 00:19:28,870 --> 00:19:34,050 Felly, mae un peth yn llinol treiddgar amlwg yn golygu 365 00:19:34,050 --> 00:19:37,290 bod eich swyddogaeth hash yn ddim cweit mor ddefnyddiol 366 00:19:37,290 --> 00:19:42,200 oherwydd eich bod yn mynd i roi diwedd ar i fyny gan ddefnyddio eich swyddogaeth hash, mynd i bwynt, 367 00:19:42,200 --> 00:19:46,400 llinol chi ymchwilio i lawr i rhywfaint o le sydd ar gael. 368 00:19:46,400 --> 00:19:49,670 Ond yn awr, wrth gwrs, unrhyw beth arall sy'n dod i ben i fyny yno, 369 00:19:49,670 --> 00:19:52,050 rydych yn mynd i gael i chwilio hyd yn oed ymhellach i lawr. 370 00:19:52,050 --> 00:19:55,650 >> Ac mae llawer mwy draul chwilio sy'n 371 00:19:55,650 --> 00:19:59,820 mynd i mewn i fewnbynnu elfen yn eich tabl hash yn awr, dde? 372 00:19:59,820 --> 00:20:05,640 Ac yn awr pan fyddwch yn mynd ac yn ceisio dod o hyd aeron eto, rydych chi'n mynd i hash iddo, 373 00:20:05,640 --> 00:20:07,742 ac mae'n mynd i ddweud, oh, edrychwch mewn bwced 1, 374 00:20:07,742 --> 00:20:09,700 ac nid yw'n mynd i fod yn mewn bwced 1, felly rydych chi'n 375 00:20:09,700 --> 00:20:11,970 mynd i gael i groesi drwy weddill y rhain. 376 00:20:11,970 --> 00:20:17,720 Felly mae'n ddefnyddiol weithiau, ond yn y rhan fwyaf o achosion, 377 00:20:17,720 --> 00:20:22,660 rydym yn mynd i ddweud bod gadwyno yw'r hyn rydych am ei wneud. 378 00:20:22,660 --> 00:20:25,520 >> Felly, rydym yn siarad am hyn yn gynharach. 379 00:20:25,520 --> 00:20:27,812 Cawn ychydig o flaen fy hun. 380 00:20:27,812 --> 00:20:33,560 Ond gadwyno yn y bôn bod pob bwced yn eich tabl hash 381 00:20:33,560 --> 00:20:36,120 yn unig yw rhestr cysylltiedig. 382 00:20:36,120 --> 00:20:39,660 >> Felly ffordd arall, neu fwy technegol ffordd, i feddwl am dabl hash 383 00:20:39,660 --> 00:20:44,490 yw mai dim ond amrywiaeth o restrau cysylltiedig, a oedd 384 00:20:44,490 --> 00:20:49,330 pan fyddwch yn ysgrifennu eich geiriadur ac rydych yn ceisio ei lwytho, 385 00:20:49,330 --> 00:20:52,070 meddwl am y peth fel yn amrywiaeth o restrau cysylltiedig 386 00:20:52,070 --> 00:20:54,390 yn ei gwneud yn llawer haws i chi ei ymgychwyn. 387 00:20:54,390 --> 00:20:57,680 >> GYNULLEIDFA: Felly tabl hash Mae maint a bennwyd ymlaen llaw, 388 00:20:57,680 --> 00:20:58,980 fel [Anghlywadwy] o bwcedi? 389 00:20:58,980 --> 00:20:59,220 >> SIARADWR 1: Iawn. 390 00:20:59,220 --> 00:21:01,655 Felly, mae ganddo nifer penodol o bwcedi eich bod determine-- 391 00:21:01,655 --> 00:21:03,530 Dylai yr ydych guys croeso i chwarae gyda nhw. 392 00:21:03,530 --> 00:21:05,269 Gall fod yn 'n bert oera i weld beth sy'n digwydd 393 00:21:05,269 --> 00:21:06,810 wrth i chi newid eich nifer y bwcedi. 394 00:21:06,810 --> 00:21:09,410 395 00:21:09,410 --> 00:21:11,510 Ond ie, mae ganddo gosod nifer o bwcedi. 396 00:21:11,510 --> 00:21:15,360 Yr hyn yn eich galluogi i ffitio fel llawer o elfennau ag y byddwch ei angen 397 00:21:15,360 --> 00:21:19,350 yw hyn gadwyno ar wahân lle rydych yn wedi cysylltu rhestri ym mhob bwced. 398 00:21:19,350 --> 00:21:22,850 Mae hynny'n golygu eich tabl hash yn union faint 399 00:21:22,850 --> 00:21:25,440 eich bod angen iddo fod, dde? 400 00:21:25,440 --> 00:21:27,358 Dyna holl bwynt rhestrau cysylltiedig. 401 00:21:27,358 --> 00:21:30,850 402 00:21:30,850 --> 00:21:32,480 Cool. 403 00:21:32,480 --> 00:21:38,780 >> Fel bod pawb yn iawn yno? 404 00:21:38,780 --> 00:21:39,801 Mae pob hawl. 405 00:21:39,801 --> 00:21:40,300 Ah. 406 00:21:40,300 --> 00:21:41,860 Beth yn union ddigwyddodd? 407 00:21:41,860 --> 00:21:42,960 Really nawr. 408 00:21:42,960 --> 00:21:45,250 Dyfalwch rhywun wedi lladd fi. 409 00:21:45,250 --> 00:21:52,060 >> OK rydym yn mynd i fynd i mewn geisiau, sef ychydig yn wallgof. 410 00:21:52,060 --> 00:21:53,140 Rwy'n hoffi tablau hash. 411 00:21:53,140 --> 00:21:54,460 Rwy'n credu eu bod 'n sylweddol oera. 412 00:21:54,460 --> 00:21:56,710 Ceisiau yn oer, hefyd. 413 00:21:56,710 --> 00:21:59,590 >> Felly, oes unrhyw un yn cofio beth cynnig arni yw? 414 00:21:59,590 --> 00:22:01,740 Dylech fod wedi mynd dros ei fod yn fyr mewn darlith? 415 00:22:01,740 --> 00:22:04,570 416 00:22:04,570 --> 00:22:06,377 Ydych chi'n cofio math o sut mae'n gweithio? 417 00:22:06,377 --> 00:22:08,460 GYNULLEIDFA: Im 'jyst yn nodio ein bod yn mynd drosto. 418 00:22:08,460 --> 00:22:09,626 SIARADWR 1: Rydym yn mynd drosto. 419 00:22:09,626 --> 00:22:13,100 OK, rydym yn wir yn mynd i fynd drosto yn awr yw hyn yr ydym yn ei ddweud. 420 00:22:13,100 --> 00:22:14,860 >> GYNULLEIDFA: Dyna i goeden adalw. 421 00:22:14,860 --> 00:22:15,280 >> SIARADWR 1: Yeah. 422 00:22:15,280 --> 00:22:16,196 Mae'n goeden adalw. 423 00:22:16,196 --> 00:22:16,960 Awesome. 424 00:22:16,960 --> 00:22:23,610 Felly, un peth i sylwi yma yw ein bod yn yn edrych ar gymeriadau unigol 425 00:22:23,610 --> 00:22:24,480 yma, dde? 426 00:22:24,480 --> 00:22:29,710 >> Felly, cyn â'n swyddogaeth hash, rydym yn yn edrych ar y geiriau yn ei gyfanrwydd, 427 00:22:29,710 --> 00:22:32,270 ac yn awr rydym yn edrych yn fwy yn y cymeriadau, dde? 428 00:22:32,270 --> 00:22:38,380 Felly mae gennym Maxwell dros yma a Mendel. 429 00:22:38,380 --> 00:22:47,840 Felly, yn y bôn mae try-- ffordd o feddwl am hyn yw bod pob lefel yma 430 00:22:47,840 --> 00:22:49,000 yn amrywiaeth o lythyrau. 431 00:22:49,000 --> 00:22:53,310 432 00:22:53,310 --> 00:22:55,790 Felly, mae hyn yn eich nod gwraidd fan hyn, dde? 433 00:22:55,790 --> 00:23:01,980 Mae hyn yn cynnwys yr holl gymeriadau y wyddor am ddechrau pob gair. 434 00:23:01,980 --> 00:23:06,480 >> A beth ydych am ei wneud yw dyweder, OK, mae gennym rai gair M. 435 00:23:06,480 --> 00:23:10,590 Rydym yn mynd i chwilio am Maxwell, felly rydym yn mynd i M. A M pwyntiau at ei chyfanrwydd 436 00:23:10,590 --> 00:23:14,800 eraill amrywiaeth lle mae pob air, cyn belled â bod 437 00:23:14,800 --> 00:23:17,044 yn air sydd wedi A fel yr ail lythyr, 438 00:23:17,044 --> 00:23:19,460 cyn belled ag y mae gair hwnnw Mae B wrth i'r ail lythyr, 439 00:23:19,460 --> 00:23:24,630 bydd yn cael pwyntydd mynd i ryw amrywiaeth nesaf. 440 00:23:24,630 --> 00:23:29,290 >> Nid oes yn ôl pob tebyg yn gair sy'n MP rhywbeth, 441 00:23:29,290 --> 00:23:32,980 felly ar y sefyllfa P yn hyn array, byddai'n jyst yn null. 442 00:23:32,980 --> 00:23:38,840 Byddai'n dweud, OK, nid oes gair sydd wedi M ddilyn gan P, OK? 443 00:23:38,840 --> 00:23:43,100 Felly os ydym yn meddwl am y peth, pob un un o'r pethau llai hyn 444 00:23:43,100 --> 00:23:47,990 mewn gwirionedd yn un o'r rhain araeau mawr o A trwy Z. 445 00:23:47,990 --> 00:23:55,064 Felly, yr hyn a allai fod yn un o'r pethau mae hynny'n fath o anfantais o cynnig arni? 446 00:23:55,064 --> 00:23:56,500 >> GYNULLEIDFA: Mae llawer o gof. 447 00:23:56,500 --> 00:23:59,940 >> SIARADWR 1: Mae'n tunnell o gof, dde? 448 00:23:59,940 --> 00:24:08,750 Mae pob un o'r blociau hyn yma yn cynrychioli 26 o leoedd, 26 elfen arae. 449 00:24:08,750 --> 00:24:13,680 Felly geisiau yn cael hynod drwm gofod. 450 00:24:13,680 --> 00:24:17,100 >> Ond maent yn gyflym iawn. 451 00:24:17,100 --> 00:24:22,540 Felly, yn anhygoel o gyflym ond 'n sylweddol o le aneffeithlon. 452 00:24:22,540 --> 00:24:24,810 Kind o rhaid i chyfrif pa un yr ydych ei eisiau. 453 00:24:24,810 --> 00:24:29,470 Mae'r rhain yn 'n sylweddol oera ar gyfer eich pset, ond maent yn cymryd llawer o gof, 454 00:24:29,470 --> 00:24:30,290 felly yr ydych yn masnachu i ffwrdd. 455 00:24:30,290 --> 00:24:31,480 Yeah? 456 00:24:31,480 --> 00:24:34,300 >> GYNULLEIDFA: A fyddai'n bosibl i sefydlu cynnig arni ac yna 457 00:24:34,300 --> 00:24:37,967 unwaith y bydd gennych yr holl data ynddo eich bod need-- 458 00:24:37,967 --> 00:24:39,550 Nid wyf yn gwybod os byddai hynny'n gwneud synnwyr. 459 00:24:39,550 --> 00:24:42,200 Roeddwn yn cael gwared ar yr holl Cymeriadau NULL, ond yna 460 00:24:42,200 --> 00:24:42,910 ni fyddech yn gallu mynegai them-- 461 00:24:42,910 --> 00:24:43,275 >> SIARADWR 1: dal i fod angen arnynt i chi. 462 00:24:43,275 --> 00:24:44,854 >> GYNULLEIDFA: - yr un ffordd bob tro. 463 00:24:44,854 --> 00:24:45,520 SIARADWR 1: Yeah. 464 00:24:45,520 --> 00:24:50,460 Mae angen y cymeriadau null chi adael eich bod yn gwybod os nad oes 'na air yno. 465 00:24:50,460 --> 00:24:52,040 Oedd Ben mae gennych rywbeth yr ydych eisiau? 466 00:24:52,040 --> 00:24:52,540 OK. 467 00:24:52,540 --> 00:24:54,581 Mae pob hawl, felly rydym yn mynd i fynd ychydig yn fwy 468 00:24:54,581 --> 00:24:58,920 i mewn i'r manylion technegol y tu ôl i cynnig arni a gweithio trwy esiampl. 469 00:24:58,920 --> 00:25:01,490 >> Iawn, felly mae hwn yn yr un peth. 470 00:25:01,490 --> 00:25:06,290 Tra yn rhestr cysylltiedig, mae ein prif math o- beth yw'r gair yr wyf am ei gael? - 471 00:25:06,290 --> 00:25:08,350 fel bloc adeiladu yn nod. 472 00:25:08,350 --> 00:25:12,280 Yn cynnig arni, mae gennym hefyd nod, ond mae wedi diffinio'n wahanol. 473 00:25:12,280 --> 00:25:17,000 >> Felly, mae gennym rai bool sy'n cynrychioli a yw gair mewn gwirionedd 474 00:25:17,000 --> 00:25:23,530 yn bodoli yn y lleoliad hwn, ac yna mae gennym rai amrywiaeth Yma-- neu yn hytrach, 475 00:25:23,530 --> 00:25:27,840 mae hwn yn pwyntydd i amrywiaeth o 27 o gymeriadau. 476 00:25:27,840 --> 00:25:33,339 Ac mae hyn yn ar gyfer, yn yr achos hwn, mae hyn yn 27-- Rwy'n siŵr bob un ohonoch yn debyg, aros, 477 00:25:33,339 --> 00:25:34,880 mae 26 o lythyrau yn yr wyddor. 478 00:25:34,880 --> 00:25:36,010 Pam mae gennym 27? 479 00:25:36,010 --> 00:25:37,870 >> Felly, yn dibynnu ar y ffordd yr ydych yn gweithredu hyn, 480 00:25:37,870 --> 00:25:43,240 mae hyn yn dod o pset hwnnw caniatáu ar gyfer collnodau. 481 00:25:43,240 --> 00:25:46,010 Felly dyna pam y un ychwanegol. 482 00:25:46,010 --> 00:25:50,500 Bydd gennych hefyd mewn rhai achosion y terminator null 483 00:25:50,500 --> 00:25:53,230 yn cael ei gynnwys fel un o'r cymeriadau ei fod yn caniatáu i fod, 484 00:25:53,230 --> 00:25:56,120 a dyna sut y maent yn gwirio i weld a yw'n ddiwedd y gair. 485 00:25:56,120 --> 00:26:01,340 Os oes gennych ddiddordeb, edrychwch ar Fideo Kevin ar study.cs50, 486 00:26:01,340 --> 00:26:04,790 yn ogystal â Wicipedia Mae gan rhai adnoddau da yno. 487 00:26:04,790 --> 00:26:09,000 >> Ond rydym yn mynd i fynd drwy'r unig fath o sut y byddwch yn gweithio trwy cynnig arni 488 00:26:09,000 --> 00:26:11,010 os ydych yn cael un. 489 00:26:11,010 --> 00:26:16,230 Felly mae gennym un super syml yma y Mae gan y geiriau "bat" a "chwyddo" ynddynt. 490 00:26:16,230 --> 00:26:18,920 Ac wrth i ni weld i fyny yma, gofod bach hyn yma 491 00:26:18,920 --> 00:26:22,560 cynrychioli ein bool sy'n Meddai, ie, mae hyn yn air. 492 00:26:22,560 --> 00:26:27,060 Ac yna mae hyn yn ein araeau o gymeriadau, dde? 493 00:26:27,060 --> 00:26:33,480 >> Felly, rydym yn mynd i fynd drwy dod o hyd i "bat" yn y cais hwn. 494 00:26:33,480 --> 00:26:38,340 Felly, yn dechrau ar y brig, dde? 495 00:26:38,340 --> 00:26:46,290 A gwyddom fod b cyfateb i yr ail mynegai, yr ail elfen 496 00:26:46,290 --> 00:26:47,840 yn y arae hwn, oherwydd bod a b. 497 00:26:47,840 --> 00:26:51,340 Felly tua yr ail un. 498 00:26:51,340 --> 00:26:58,820 >> Ac y mae'n ei ddweud, OK, oer, yn dilyn hynny i mewn yr amrywiaeth nesaf, oherwydd os ydym yn cofio, 499 00:26:58,820 --> 00:27:02,160 nid yw'n bod pob un o'r rhain mewn gwirionedd yn cynnwys yr elfen. 500 00:27:02,160 --> 00:27:07,110 Mae pob un o'r rhain araeau yn cynnwys pwyntydd, dde? 501 00:27:07,110 --> 00:27:10,030 Mae'n wahaniaeth pwysig i'w wneud. 502 00:27:10,030 --> 00:27:13,450 >> Rwy'n gwybod hyn yn mynd i be-- ceisiau yn galed iawn i fynd ar y tro cyntaf, 503 00:27:13,450 --> 00:27:15,241 felly hyd yn oed os yw hyn yn ail neu'r trydydd tro 504 00:27:15,241 --> 00:27:18,370 ac mae'n dal i fod yn garedig o ymddangos yn anodd, 505 00:27:18,370 --> 00:27:21,199 Rwy'n addo os byddwch yn mynd gwylio y tymor byr eto yfory, 506 00:27:21,199 --> 00:27:22,740 Mae'n debyg y bydd yn gwneud llawer mwy o synnwyr. 507 00:27:22,740 --> 00:27:23,890 Mae'n cymryd llawer i dreulio. 508 00:27:23,890 --> 00:27:27,800 Rwy'n dal i weithiau mod fel, aros, beth yw cais? 509 00:27:27,800 --> 00:27:29,080 Sut ydw i'n defnyddio hyn? 510 00:27:29,080 --> 00:27:33,880 >> Felly rydym wedi b yn yr achos hwn, sef ein hail mynegai. 511 00:27:33,880 --> 00:27:40,240 Os byddwn wedi, dyweder, c neu d neu unrhyw lythyr arall, 512 00:27:40,240 --> 00:27:45,810 mae angen i fapio hwnnw yn ôl i'r mynegai o'n amrywiaeth hwnnw sy'n cyfateb i. 513 00:27:45,810 --> 00:27:56,930 Felly, byddem yn eu cymryd fel rchar ac rydym yn unig tynnu oddi ar i fapio i mewn i 0 i 25 oed. 514 00:27:56,930 --> 00:27:58,728 Mae pawb yn dda sut yr ydym ddangos bod ein cymeriadau? 515 00:27:58,728 --> 00:28:00,440 OK. 516 00:28:00,440 --> 00:28:05,980 >> Felly, rydym yn mynd i'r ail un ac rydym yn gweld hynny, ie, nid yw i NULL. 517 00:28:05,980 --> 00:28:07,780 Gallwn symud ymlaen at y casgliad nesaf. 518 00:28:07,780 --> 00:28:12,300 Felly, rydym yn mynd ymlaen i hwn amrywiaeth nesaf yma. 519 00:28:12,300 --> 00:28:15,500 >> Ac yr ydym yn ei ddweud, OK, yn awr rydym yn angen i ni weld os yw wedi cyrraedd. 520 00:28:15,500 --> 00:28:18,590 Ydy A null neu a yw'n mewn gwirionedd yn symud ymlaen? 521 00:28:18,590 --> 00:28:21,880 Felly mae mewn gwirionedd yn symud ymlaen yn amrywiaeth hwn. 522 00:28:21,880 --> 00:28:24,570 Ac yr ydym yn ei ddweud, OK, t yw ein llythyr diwethaf. 523 00:28:24,570 --> 00:28:27,580 Felly, rydym yn mynd i'r t yn y mynegai. 524 00:28:27,580 --> 00:28:30,120 Ac yna rydym yn symud ymlaen oherwydd mae un arall. 525 00:28:30,120 --> 00:28:38,340 Ac mae hyn yn un yn dweud y bôn hynny, ie, mae'n dweud bod yna air Yma-- 526 00:28:38,340 --> 00:28:41,750 bod os byddwch yn dilyn hyn llwybr, yr ydych wedi cyrraedd 527 00:28:41,750 --> 00:28:43,210 mewn gair, yr ydym yn ei wybod yw "ystlum." 528 00:28:43,210 --> 00:28:43,800 Ie? 529 00:28:43,800 --> 00:28:46,770 >> GYNULLEIDFA: A yw'n safonol i gael y fel mynegai 0 ac wedyn yn cael rhyw fath o 1 530 00:28:46,770 --> 00:28:47,660 neu i fod ar y diwedd? 531 00:28:47,660 --> 00:28:48,243 >> SIARADWR 1: No. 532 00:28:48,243 --> 00:28:55,360 Felly, os ydym yn edrych yn ôl ar ein datganiad yma, mae'n bool, 533 00:28:55,360 --> 00:28:59,490 felly mae'n ei elfen ei hun yn eich nod. 534 00:28:59,490 --> 00:29:03,331 Felly nid yw'n rhan o'r rhesi. 535 00:29:03,331 --> 00:29:03,830 Cool. 536 00:29:03,830 --> 00:29:08,370 Felly, pan fyddwn yn gorffen ein gair ac rydym yn ar amrywiaeth hwn, yr hyn yr ydym am ei wneud 537 00:29:08,370 --> 00:29:12,807 yn gwneud siec am yw hyn air. 538 00:29:12,807 --> 00:29:14,390 Ac yn yr achos hwn, byddai'n dychwelyd ie. 539 00:29:14,390 --> 00:29:17,220 540 00:29:17,220 --> 00:29:24,090 >> Felly, ar y nodyn hwnnw, rydym yn gwybod bod "sw" - rydym yn gwybod fel bodau dynol fod "sw" yn air, 541 00:29:24,090 --> 00:29:24,820 iawn? 542 00:29:24,820 --> 00:29:28,990 Ond yn cael eu ceisiwch yma byddai yn dweud, na, nid yw'n. 543 00:29:28,990 --> 00:29:33,980 A byddai'n dweud hynny gan ein wedi nid yw'n dynodi fel gair yma. 544 00:29:33,980 --> 00:29:40,440 Hyd yn oed er y gall yr ydym yn croesi hyd at amrywiaeth hwn, 545 00:29:40,440 --> 00:29:43,890 Byddai'r cynnig hwn yn dweud, na, Nid yw sw yn eich geiriadur 546 00:29:43,890 --> 00:29:47,070 oherwydd nad ydym wedi ei dynodi felly. 547 00:29:47,070 --> 00:29:52,870 >> Felly, un ffordd o wneud that-- oh, ddrwg gennym, mae hyn yn un. 548 00:29:52,870 --> 00:29:59,450 Felly, yn yr achos hwn, nid yw "sw" yw gair, ond y mae yn ein cynnig. 549 00:29:59,450 --> 00:30:05,690 Ond yn yr un, yn dweud ein bod am ei gael cyflwyno'r gair "bath," beth sy'n digwydd 550 00:30:05,690 --> 00:30:08,260 yw ein bod yn dilyn through-- b, a, t. 551 00:30:08,260 --> 00:30:11,820 Ein bod mewn amrywiaeth hon, ac rydym yn mynd i chwilio am h. 552 00:30:11,820 --> 00:30:15,220 >> Yn yr achos hwn, pan fyddwn yn edrych ar y pwyntydd yn h, 553 00:30:15,220 --> 00:30:17,890 mae'n pwyntio at NULL, OK? 554 00:30:17,890 --> 00:30:20,780 Felly, oni bai ei fod yn benodol gan dynnu sylw at amrywiaeth arall, 555 00:30:20,780 --> 00:30:25,000 ydych yn cymryd yn ganiataol bod yr holl awgrymiadau yn y arae hon yn pwyntio at null. 556 00:30:25,000 --> 00:30:28,270 Felly, yn yr achos hwn, h yn pwyntio i null felly ni allwn wneud unrhyw beth, 557 00:30:28,270 --> 00:30:31,540 felly byddai hefyd yn dychwelyd Nid ffug, "bath" yn fan hyn. 558 00:30:31,540 --> 00:30:34,102 559 00:30:34,102 --> 00:30:35,810 Felly nawr rydym yn mewn gwirionedd mynd i fynd drwy'r 560 00:30:35,810 --> 00:30:39,790 sut y byddem yn mewn gwirionedd yn dweud bod "sw" yw yn ein cynnig. 561 00:30:39,790 --> 00:30:42,920 Sut ydym yn mewnosoder "sw" yn ein cais? 562 00:30:42,920 --> 00:30:47,810 Felly, yn yr un ffordd a ddechreuwyd gennym gyda ein rhestr cysylltiedig, rydym yn dechrau ar y gwraidd. 563 00:30:47,810 --> 00:30:50,600 Pan fyddwch mewn amheuaeth, yn dechrau am y wraidd pethau hyn. 564 00:30:50,600 --> 00:30:53,330 >> A byddwn yn ei ddweud, OK, z. 565 00:30:53,330 --> 00:30:55,650 z yn bodoli yn hyn, ac mae'n ei wneud. 566 00:30:55,650 --> 00:30:58,370 Felly, rydych yn symud ymlaen i eich array nesaf, OK? 567 00:30:58,370 --> 00:31:01,482 Ac yna ar yr un nesaf, yr ydym yn ei ddweud, OK, mae o yn bodoli? 568 00:31:01,482 --> 00:31:03,000 Mae'n gwneud. 569 00:31:03,000 --> 00:31:04,330 Mae hyn eto. 570 00:31:04,330 --> 00:31:08,670 >> Ac yn y blaen ein un nesaf, yr ydym wedi dweud, OK, "sw" eisoes yn bodoli yma. 571 00:31:08,670 --> 00:31:12,440 Y cyfan sydd angen ei wneud yw gosod hyn yn gyfartal i wir, bod yna air yno. 572 00:31:12,440 --> 00:31:15,260 Os ydych wedi dilyn popeth hyd at flaen y pwynt hwnnw, 573 00:31:15,260 --> 00:31:17,030 'i' yn air, felly dim ond osod cyfartal i cyfryw. 574 00:31:17,030 --> 00:31:17,530 Ie? 575 00:31:17,530 --> 00:31:22,550 >> GYNULLEIDFA: Felly, yna yn ei wneud hynny yn golygu bod "ba" yn air hefyd? 576 00:31:22,550 --> 00:31:24,120 >> SIARADWR 1: No. 577 00:31:24,120 --> 00:31:28,870 Felly, yn yr achos hwn, "ba" byddem yn ei gael yma, byddem yn ei ddweud yw ei air, 578 00:31:28,870 --> 00:31:31,590 a byddai'n dal i fod dim. 579 00:31:31,590 --> 00:31:32,822 OK? 580 00:31:32,822 --> 00:31:33,740 Mmhmm? 581 00:31:33,740 --> 00:31:36,360 >> GYNULLEIDFA: Felly, ar ôl i chi a yw'n gair a ydych yn dweud ie, yna mae'n 582 00:31:36,360 --> 00:31:38,380 bydd yn cynnwys mynd i'r m? 583 00:31:38,380 --> 00:31:42,260 >> SIARADWR 1: Felly, mae hyn wedi ei wneud with-- rydych yn llwytho hyn yn. 584 00:31:42,260 --> 00:31:43,640 Yr ydych yn dweud "sw" yn air. 585 00:31:43,640 --> 00:31:47,020 Pan fyddwch yn mynd i check-- fel, dywedwch eich bod am ei ddweud, 586 00:31:47,020 --> 00:31:49,400 mae "sw" yn bodoli yn y geiriadur hwn? 587 00:31:49,400 --> 00:31:54,200 Rydych yn unig yn mynd i chwilio am "sw," ac yna edrychwch i weld os yw'n air. 588 00:31:54,200 --> 00:31:57,291 Dydych chi byth yn mynd i symud hyd at m am nad yw hynny'n 589 00:31:57,291 --> 00:31:58,290 hyn yr ydych yn chwilio am. 590 00:31:58,290 --> 00:32:02,690 591 00:32:02,690 --> 00:32:08,070 >> Felly, os ydym mewn gwirionedd yn awyddus i ychwanegwch "bath" i mewn i gais hon, 592 00:32:08,070 --> 00:32:11,390 byddem yn gwneud yr un peth fel y gwnaethom gyda "sw," 593 00:32:11,390 --> 00:32:15,380 ac eithrio byddem yn gweld bod pan fyddwn ceisio cael at h, nid yw'n bodoli. 594 00:32:15,380 --> 00:32:20,090 Felly, gallwch chi feddwl am hyn fel cheisio i ychwanegu nod newydd i mewn i restr cysylltiedig, 595 00:32:20,090 --> 00:32:27,210 felly byddai angen i ni ychwanegu un arall un o araeau hyn, fel cynifer. 596 00:32:27,210 --> 00:32:35,670 Ac yna yr hyn a wnawn yn cael ei rydym yn unig yn gosod yr h elfen o amrywiaeth yma pwyntio at hyn. 597 00:32:35,670 --> 00:32:39,430 >> Ac yna beth y byddem am ei wneud fan hyn? 598 00:32:39,430 --> 00:32:43,110 Ychwanegu hi'n gyfartal i gwir am ei fod yn air. 599 00:32:43,110 --> 00:32:46,350 600 00:32:46,350 --> 00:32:48,150 Cool. 601 00:32:48,150 --> 00:32:48,700 Yr wyf yn gwybod. 602 00:32:48,700 --> 00:32:51,170 Nid Ceisiau yw'r rhai mwyaf cyffrous. 603 00:32:51,170 --> 00:32:54,250 Ymddiriedolaeth i mi, yr wyf yn gwybod. 604 00:32:54,250 --> 00:32:58,040 >> Felly, un peth i sylweddoli gyda cheisiau, Dywedais, maent yn effeithlon iawn. 605 00:32:58,040 --> 00:33:00,080 Felly, rydym wedi gweld eu bod yn ymgymryd â tunnell o ofod. 606 00:33:00,080 --> 00:33:01,370 Maen nhw'n fath o ddryslyd. 607 00:33:01,370 --> 00:33:03,367 Felly pam y byddem byth yn defnyddio'r rhain? 608 00:33:03,367 --> 00:33:05,450 Rydym yn defnyddio'r rhain oherwydd eu bod yn anhygoel o effeithlon. 609 00:33:05,450 --> 00:33:08,130 >> Felly, os ydych yn chwilio erioed i fyny gair, rydych yn unig 610 00:33:08,130 --> 00:33:10,450 ffinio gan hyd y gair. 611 00:33:10,450 --> 00:33:15,210 Felly, os ydych yn chwilio am gair sydd o hyd bump, 612 00:33:15,210 --> 00:33:20,940 ydych yn mynd dim ond byth i gael i gwneud ar y mwyaf bum cymariaethau, OK? 613 00:33:20,940 --> 00:33:25,780 Felly mae'n ei gwneud yn y bôn yn gyson. 614 00:33:25,780 --> 00:33:29,150 Fel mewnosod a am-edrych yn y bôn amser cyson. 615 00:33:29,150 --> 00:33:33,750 >> Felly, os gallwch chi erioed wedi ei gael rhywbeth mewn amser cyson, 616 00:33:33,750 --> 00:33:35,150 dyna cystal ag y mae'n mynd. 617 00:33:35,150 --> 00:33:37,990 Ni allwch gael yn well na amser cyson am y pethau hyn. 618 00:33:37,990 --> 00:33:43,150 Felly, dyna un o'r pwyntiau cadarnhaol enfawr o geisiau. 619 00:33:43,150 --> 00:33:46,780 >> Ond mae'n llawer o le. 620 00:33:46,780 --> 00:33:50,380 Felly fath o rhaid i chi benderfynu beth sydd yn fwy pwysig i chi. 621 00:33:50,380 --> 00:33:54,700 Ac ar gyfrifiaduron heddiw, mae'r lle y gall cais gymryd hyd 622 00:33:54,700 --> 00:33:57,740 Nid yw efallai yn effeithio ar eich bod yn llawer, ond efallai 623 00:33:57,740 --> 00:34:01,350 rydych yn delio â rhywbeth sydd â llawer, llawer mwy o bethau, 624 00:34:01,350 --> 00:34:02,810 ac cynnig arni nid yn unig yn rhesymol. 625 00:34:02,810 --> 00:34:03,000 Ie? 626 00:34:03,000 --> 00:34:05,610 >> GYNULLEIDFA: Arhoswch, felly mae gennych 26 llythyrau ym mhob un un? 627 00:34:05,610 --> 00:34:07,440 >> SIARADWR 1: Mmhmm. 628 00:34:07,440 --> 00:34:08,570 Yeah, mae gennych 26. 629 00:34:08,570 --> 00:34:16,984 Gennych rywfaint yn farciwr geiriau ac yna mae gennych 26 o arwyddion ym mhob un. 630 00:34:16,984 --> 00:34:17,775 Ac maen nhw'n point-- 631 00:34:17,775 --> 00:34:20,280 >> GYNULLEIDFA: A phob 26, oes gan bob un ohonynt 26? 632 00:34:20,280 --> 00:34:21,500 >> SIARADWR 1: Ydw. 633 00:34:21,500 --> 00:34:27,460 A dyna pam, ag y gallwch gweld, yn ehangu yn eithaf cyflym. 634 00:34:27,460 --> 00:34:28,130 Mae pob hawl. 635 00:34:28,130 --> 00:34:32,524 Felly, rydym yn mynd i fynd i mewn i goed, a oedd Rwy'n teimlo fel ei haws a bydd yn ôl pob tebyg 636 00:34:32,524 --> 00:34:36,150 fod hachub bach neis o geisiau yno. 637 00:34:36,150 --> 00:34:39,620 Felly, gobeithio y rhan fwyaf ohonoch wedi gweld coeden o'r blaen. 638 00:34:39,620 --> 00:34:41,820 Ddim yn hoffi'r 'n bert rhai y tu allan, yr wyf yn 639 00:34:41,820 --> 00:34:44,340 ddim yn gwybod os oes unrhyw un Aeth yr awyr agored yn ddiweddar. 640 00:34:44,340 --> 00:34:49,230 Es afal codi y penwythnos hwn, ac oh fy diar, yr oedd yn brydferth. 641 00:34:49,230 --> 00:34:52,250 Doeddwn i ddim yn adnabod dail Gallai edrych mor bert. 642 00:34:52,250 --> 00:34:53,610 >> Felly, mae hyn yn unig yw coeden, dde? 643 00:34:53,610 --> 00:34:56,790 Dim ond rhywfaint o nod, ac mae'n cyfeirio at griw o nodau eraill. 644 00:34:56,790 --> 00:34:59,570 Fel y gwelwch yma, mae hyn yn fath o thema ailadroddus. 645 00:34:59,570 --> 00:35:03,720 Nodau pwyntio at ganolfannau yn fath o hanfod llawer o strwythurau data. 646 00:35:03,720 --> 00:35:06,670 'I jyst yn dibynnu ar sut yr ydym yn rhaid eu cyfeirio at ei gilydd 647 00:35:06,670 --> 00:35:08,600 a sut yr ydym yn croesi drwyddynt a sut yr ydym yn 648 00:35:08,600 --> 00:35:14,500 rhowch bethau sy'n penderfynu eu nodweddion gwahanol. 649 00:35:14,500 --> 00:35:17,600 >> Felly, dim ond rhywfaint o derminoleg, yr wyf wedi ei ddefnyddio o'r blaen. 650 00:35:17,600 --> 00:35:20,010 Felly gwraidd yn beth bynnag sydd ar y brig. 651 00:35:20,010 --> 00:35:21,200 'i' lle'r ydym bob amser yn dechrau. 652 00:35:21,200 --> 00:35:23,610 Gallwch chi feddwl am y peth fel y pen hefyd. 653 00:35:23,610 --> 00:35:28,750 Ond ar gyfer coed, rydym yn tueddu i yn cyfeirio ati fel y gwraidd. 654 00:35:28,750 --> 00:35:32,820 >> Unrhyw beth yn y Yma-- gwaelod yn y, bottom-- iawn iawn 655 00:35:32,820 --> 00:35:34,500 yn dail ystyriwyd. 656 00:35:34,500 --> 00:35:37,210 Felly, mae'n mynd ynghyd â'r beth goeden gyfan, dde? 657 00:35:37,210 --> 00:35:39,860 Dail ar ymylon eich coeden. 658 00:35:39,860 --> 00:35:45,820 >> Ac yna mae gennym hefyd un neu ddau o termau i siarad am nodau mewn perthynas 659 00:35:45,820 --> 00:35:46,680 at ei gilydd. 660 00:35:46,680 --> 00:35:49,700 Felly mae gennym rhiant, plant, a brodyr a chwiorydd. 661 00:35:49,700 --> 00:35:56,260 Felly, yn yr achos hwn, 3 yw'r rhiant o 5, 6, a 7. 662 00:35:56,260 --> 00:36:00,370 Felly mae'r rhiant yn beth bynnag sydd un cam yn uwch beth bynnag yr ydych chi'n 663 00:36:00,370 --> 00:36:02,940 gan gyfeirio at, felly dim ond fel coeden deulu. 664 00:36:02,940 --> 00:36:07,090 Gobeithio, mae hyn i gyd ychydig yn ychydig yn fwy greddfol na'r ceisiau. 665 00:36:07,090 --> 00:36:10,970 >> Brodyr a chwiorydd yw unrhyw sydd â yr un rhiant, dde? 666 00:36:10,970 --> 00:36:13,470 Maen nhw ar yr un lefel yma. 667 00:36:13,470 --> 00:36:16,960 Ac yna, fel yr oeddwn gan ddywedyd, plant yn unig 668 00:36:16,960 --> 00:36:22,630 beth bynnag yw un cam isod y nod dan sylw, OK? 669 00:36:22,630 --> 00:36:23,470 Cool. 670 00:36:23,470 --> 00:36:25,610 Felly coeden ddeuaidd. 671 00:36:25,610 --> 00:36:31,450 A all unrhyw un yn dyfalu ar un o nodweddion y goeden ddeuol? 672 00:36:31,450 --> 00:36:32,770 >> GYNULLEIDFA: Max dwy ddeilen. 673 00:36:32,770 --> 00:36:33,478 >> SIARADWR 1: Iawn. 674 00:36:33,478 --> 00:36:34,640 Felly dim mwy na dwy ddeilen. 675 00:36:34,640 --> 00:36:39,730 Felly, yn yr un o'r blaen, yr oedd gennym yr un yma fod gan dri, ond mewn coeden ddeuaidd, 676 00:36:39,730 --> 00:36:45,000 gennych max o ddau plant am bob rhiant, dde? 677 00:36:45,000 --> 00:36:46,970 Mae un arall nodwedd ddiddorol. 678 00:36:46,970 --> 00:36:51,550 Oes rhywun yn gwybod hynny? 679 00:36:51,550 --> 00:36:52,620 Goeden ddeuol. 680 00:36:52,620 --> 00:37:00,350 >> Felly, bydd coeden ddeuaidd yn cael popeth ar the-- nid yw'r un yn sorted-- 681 00:37:00,350 --> 00:37:05,320 ond mewn coeden ddeuaidd didoli, popeth ar y dde 682 00:37:05,320 --> 00:37:08,530 yn fwy na'r rhiant, a phopeth ar y chwith 683 00:37:08,530 --> 00:37:10,035 yn llai na'r rhiant. 684 00:37:10,035 --> 00:37:15,690 Ac mae hynny wedi bod yn cwis cwestiwn o'r blaen, mor dda i wybod. 685 00:37:15,690 --> 00:37:19,500 Felly, y ffordd yr ydym yn diffinio hyn, unwaith eto, mae gennym nod arall. 686 00:37:19,500 --> 00:37:21,880 Mae hyn yn edrych yn debyg iawn i'r hyn? 687 00:37:21,880 --> 00:37:28,336 688 00:37:28,336 --> 00:37:28,836 Ddwbl 689 00:37:28,836 --> 00:37:29,320 >> GYNULLEIDFA: Yn gysylltiedig rhestrau 690 00:37:29,320 --> 00:37:31,100 >> SIARADWR 1: Rhestr cysylltiedig dwbl, dde? 691 00:37:31,100 --> 00:37:33,690 Felly, os byddwn yn cymryd lle'r hyn gyda blaenorol ac nesaf, 692 00:37:33,690 --> 00:37:35,670 byddai hyn fod yn rhestr cysylltiedig ddwbl. 693 00:37:35,670 --> 00:37:40,125 Ond yn yr achos hwn, rydym yn mewn gwirionedd wedi chwith ac i'r dde a dyna ni. 694 00:37:40,125 --> 00:37:41,500 Fel arall, 'i' yn union yr un fath. 695 00:37:41,500 --> 00:37:43,374 Rydym yn dal i gael yr elfen rydych yn chwilio am, 696 00:37:43,374 --> 00:37:45,988 ac os oes gen ti ddau awgrymiadau mynd i beth bynnag sydd nesaf. 697 00:37:45,988 --> 00:37:49,210 698 00:37:49,210 --> 00:37:51,870 Yeah, coeden chwilio mor deuaidd. 699 00:37:51,870 --> 00:37:57,665 Os byddwn yn sylwi, popeth ar y i'r dde yma yn fwy than-- 700 00:37:57,665 --> 00:37:59,850 neu mae popeth ar unwaith i'r dde yma 701 00:37:59,850 --> 00:38:02,840 yn fwy na, popeth yma yn llai na. 702 00:38:02,840 --> 00:38:06,980 703 00:38:06,980 --> 00:38:14,000 >> Felly, pe baem yn chwilio drwy, mae'n Dylai edrych yn agos iawn at chwilio deuaidd 704 00:38:14,000 --> 00:38:14,910 yma, dde? 705 00:38:14,910 --> 00:38:17,640 Ac eithrio yn hytrach na chwilio am hanner yr amrywiaeth, 706 00:38:17,640 --> 00:38:21,720 rydym yn dim ond edrych ar un ai y chwith ochr neu yr ochr dde o'r goeden. 707 00:38:21,720 --> 00:38:24,850 Felly, mae'n mynd ychydig yn symlach, dwi'n meddwl. 708 00:38:24,850 --> 00:38:29,300 >> Felly, os yw eich gwraidd yn NULL, amlwg 'i' jyst ffug. 709 00:38:29,300 --> 00:38:33,470 Ac os ei fod yno, yn amlwg ei fod yn wir. 710 00:38:33,470 --> 00:38:35,320 Os yw'n llai na, rydym yn chwilio y chwith. 711 00:38:35,320 --> 00:38:37,070 Os yw'n fwy na, rydym yn chwilio y dde. 712 00:38:37,070 --> 00:38:39,890 Mae'n union fel chwiliad deuaidd, dim ond strwythur data gwahanol 713 00:38:39,890 --> 00:38:40,600 ein bod yn defnyddio. 714 00:38:40,600 --> 00:38:42,790 Yn hytrach na amrywiaeth, 'i' jyst goeden ddeuol. 715 00:38:42,790 --> 00:38:45,820 716 00:38:45,820 --> 00:38:48,090 >> OK, pentyrrau. 717 00:38:48,090 --> 00:38:51,550 A hefyd, mae'n edrych yn debyg i ni allai fod ychydig bach o amser. 718 00:38:51,550 --> 00:38:54,460 Os ydym yn ei wneud, rwy'n hapus i fynd dros unrhyw ran o hyn eto. 719 00:38:54,460 --> 00:38:56,856 OK, felly pentyrrau. 720 00:38:56,856 --> 00:39:02,695 A oes unrhyw un yn cofio beth stacks-- unrhyw nodweddion stac? 721 00:39:02,695 --> 00:39:05,550 722 00:39:05,550 --> 00:39:10,400 >> Iawn, felly mae'r rhan fwyaf ohonom, yr wyf yn meddwl, bwyta yn yr ystafell fwyta halls-- 723 00:39:10,400 --> 00:39:13,100 gymaint ag y mae'n bosibl na fyddwn yn hoffi. 724 00:39:13,100 --> 00:39:16,900 Ond yn amlwg, gallwch chi feddwl am pentwr llythrennol yn union fel pentwr o hambyrddau 725 00:39:16,900 --> 00:39:18,460 neu pentwr o bethau. 726 00:39:18,460 --> 00:39:21,820 A beth sy'n bwysig i sylweddoli yw ei fod yn 727 00:39:21,820 --> 00:39:26,850 something-- y nodwedd yr ydym yn ei alw by-- yw LIFO. 728 00:39:26,850 --> 00:39:28,450 Oes rhywun yn gwybod beth sy'n sefyll am? 729 00:39:28,450 --> 00:39:29,070 Mmhmm? 730 00:39:29,070 --> 00:39:30,650 >> GYNULLEIDFA: Olaf i mewn, cyntaf allan. 731 00:39:30,650 --> 00:39:32,250 >> SIARADWR 1: Iawn, bara i mewn, cyntaf allan. 732 00:39:32,250 --> 00:39:36,585 Felly os ydym yn gwybod, os ydym yn pentyrru pethau i fyny, y peth hawsaf i chrafangia off-- 733 00:39:36,585 --> 00:39:39,570 ac efallai yr unig beth y gallwn ei chrafangia off os yw ein pentwr yw enough-- mawr 734 00:39:39,570 --> 00:39:40,850 yw bod elfen top. 735 00:39:40,850 --> 00:39:43,460 Felly, beth bynnag ei ​​roi ar last-- fel y gwelwn yma, 736 00:39:43,460 --> 00:39:46,370 beth bynnag ei ​​wthio ar y rhan fwyaf recently-- yw 737 00:39:46,370 --> 00:39:51,160 mynd i fod y cyntaf beth yr ydym yn pop i ffwrdd, OK? 738 00:39:51,160 --> 00:39:56,324 >> Felly, yr hyn sydd gennym yma yw struct typedef arall. 739 00:39:56,324 --> 00:39:58,740 Mae hyn yn wir yn union fel a damwain cwrs yn y strwythur data, 740 00:39:58,740 --> 00:40:01,650 felly mae 'na lot taflu ar chi guys. 741 00:40:01,650 --> 00:40:02,540 Yr wyf yn gwybod. 742 00:40:02,540 --> 00:40:04,970 Felly eto struct arall. 743 00:40:04,970 --> 00:40:06,740 Yay gyfer strwythurau. 744 00:40:06,740 --> 00:40:16,660 >> Ac yn yr achos hwn, mae'n rhywfaint o pwyntydd i amrywiaeth sydd â rhyw allu. 745 00:40:16,660 --> 00:40:20,830 Felly, mae hyn yn cynrychioli ein pentwr yma, fel ein amrywiaeth gwirioneddol 746 00:40:20,830 --> 00:40:22,520 mae hynny'n cynnal ein elfennau. 747 00:40:22,520 --> 00:40:24,850 Ac yna dyma mae gennym rai faint. 748 00:40:24,850 --> 00:40:31,170 >> Ac fel arfer, rydych am ei gadw golwg ar pa mor fawr yw eich stac yn 749 00:40:31,170 --> 00:40:36,180 oherwydd yr hyn mae'n mynd i ganiatáu chi ei wneud yw os ydych yn gwybod y maint, 750 00:40:36,180 --> 00:40:39,170 mae'n eich galluogi i ddweud, OK, a wyf yn gallu? 751 00:40:39,170 --> 00:40:40,570 Alla i ychwanegu unrhyw beth mwy? 752 00:40:40,570 --> 00:40:44,650 Ac mae hefyd yn dweud wrthych lle mae'r ben eich pentwr 753 00:40:44,650 --> 00:40:48,180 yw er mwyn i chi wybod beth rydych Gall gymryd i ffwrdd mewn gwirionedd. 754 00:40:48,180 --> 00:40:51,760 Ac mae hynny'n wir yn mynd i fod ychydig yn fwy clir yma. 755 00:40:51,760 --> 00:40:57,350 >> Felly, ar gyfer gwthio, un peth, os ydych oedd erioed i weithredu gwthio, 756 00:40:57,350 --> 00:41:01,330 gan fy mod i'n jyst yn dweud, eich pentwr Mae maint cyfyngedig, dde? 757 00:41:01,330 --> 00:41:03,990 Roedd gan ein array rhywfaint o gapasiti. 758 00:41:03,990 --> 00:41:04,910 Mae'n arae. 759 00:41:04,910 --> 00:41:08,930 Mae'n faint penodol, felly mae angen i ni gwneud yn siŵr nad ydym yn rhoi mwy 760 00:41:08,930 --> 00:41:11,950 i mewn i'n amrywiaeth nag yr ydym mewn gwirionedd yn cael lle ar gyfer. 761 00:41:11,950 --> 00:41:16,900 >> Felly, pan fyddwch yn creu gwthio swyddogaeth, peth cyntaf i chi ei wneud yw dweud, OK, 762 00:41:16,900 --> 00:41:18,570 mae gen i le yn fy pentwr? 763 00:41:18,570 --> 00:41:23,330 Oherwydd os nad wyf yn ei wneud, mae'n ddrwg gennyf, Nid wyf yn gallu storio eich elfen. 764 00:41:23,330 --> 00:41:28,980 Os wyf yn ei wneud, yna rydych am ei storio ei fod ar frig y pentwr, dde? 765 00:41:28,980 --> 00:41:31,325 >> A dyma pam yr ydym wedi i gadw golwg ar ein maint. 766 00:41:31,325 --> 00:41:35,290 Os nad ydym yn cadw golwg ar ein maint, nad ydym yn gwybod ble i roi. 767 00:41:35,290 --> 00:41:39,035 Nid ydym yn gwybod faint o bethau yn ein amrywiaeth yn barod. 768 00:41:39,035 --> 00:41:41,410 Fel yn amlwg mae yna ffyrdd hynny efallai y gallech wneud hynny. 769 00:41:41,410 --> 00:41:44,610 Gallech ymgychwyn popeth i nwl ac yna edrychwch am y NULL diweddaraf, 770 00:41:44,610 --> 00:41:47,950 ond mae yn beth llawer haws yn unig i ddweud, OK, cadw golwg ar faint. 771 00:41:47,950 --> 00:41:51,840 Fel yr wyf yn gwybod fy mod wedi pedair elfen yn fy array, felly y peth nesaf 772 00:41:51,840 --> 00:41:55,930 ein bod yn rhoi ar, rydym yn mynd i storio ar fynegai 4. 773 00:41:55,930 --> 00:42:00,940 Ac yna, wrth gwrs, mae hyn yn golygu bod eich bod wedi gwthio rhywbeth yn llwyddiannus 774 00:42:00,940 --> 00:42:03,320 ar eich pentwr, rydych eisiau i gynyddu maint 775 00:42:03,320 --> 00:42:08,880 fel eich bod yn gwybod ble rydych chi mor eich bod yn gallu gwthio mwy o bethau ar. 776 00:42:08,880 --> 00:42:12,730 >> Felly, os ydym yn ceisio pop rhywbeth oddi ar y pentwr, 777 00:42:12,730 --> 00:42:16,072 yr hyn a allai fod y peth cyntaf ein bod am i wirio am? 778 00:42:16,072 --> 00:42:18,030 Rydych yn ceisio cymryd rhywbeth oddi ar eich pentwr. 779 00:42:18,030 --> 00:42:21,710 780 00:42:21,710 --> 00:42:24,781 A ydych yn sicr mae 'na rhywbeth yn eich pentwr? 781 00:42:24,781 --> 00:42:25,280 Rhif 782 00:42:25,280 --> 00:42:26,894 Felly, beth y gallem am wirio? 783 00:42:26,894 --> 00:42:27,810 >> GYNULLEIDFA: [Anghlywadwy]. 784 00:42:27,810 --> 00:42:29,880 SIARADWR 1: Gwirio am faint? 785 00:42:29,880 --> 00:42:31,840 Maint. 786 00:42:31,840 --> 00:42:38,520 Felly, rydym am i wirio i weld os ein maint yn fwy na 0, OK? 787 00:42:38,520 --> 00:42:44,970 Ac os ydyw, yna rydym am i ostwng ein maint erbyn 0 a dychwelyd hynny. 788 00:42:44,970 --> 00:42:45,840 Pam? 789 00:42:45,840 --> 00:42:49,950 >> Yn yr un cyntaf roeddem yn gwthio, rydym yn gwthio ei 790 00:42:49,950 --> 00:42:52,460 ar faint a maint wedyn diweddaru. 791 00:42:52,460 --> 00:42:57,850 Yn yr achos hwn, rydym yn decrementing maint ac yna mynd ag ef i ffwrdd, plicio ei 792 00:42:57,850 --> 00:42:58,952 gan ein amrywiaeth. 793 00:42:58,952 --> 00:42:59,826 Pam y gallai rydym yn ei wneud hynny? 794 00:42:59,826 --> 00:43:04,800 795 00:43:04,800 --> 00:43:11,811 Felly, os oes gen i un peth ar fy corn, beth fyddai fy maint ar y pwynt hwnnw? 796 00:43:11,811 --> 00:43:13,140 1. 797 00:43:13,140 --> 00:43:15,180 >> A lle mae elfen 1 ei storio? 798 00:43:15,180 --> 00:43:17,621 Ar ba mynegai? 799 00:43:17,621 --> 00:43:18,120 GYNULLEIDFA: 0. 800 00:43:18,120 --> 00:43:19,060 SIARADWR 1: 0. 801 00:43:19,060 --> 00:43:22,800 Felly, yn yr achos hwn, rydym yn angen i ni wneud bob amser sure-- 802 00:43:22,800 --> 00:43:27,630 yn hytrach na dychwelyd maint minws 1, oherwydd ein 803 00:43:27,630 --> 00:43:31,730 gwybod bod ein elfen yw yn mynd i gael eu storio ar 1 yn llai 804 00:43:31,730 --> 00:43:34,705 beth bynnag yw ein maint, mae hyn dim ond yn cymryd gofal ohono. 805 00:43:34,705 --> 00:43:36,080 Mae'n ffordd ychydig yn fwy cain. 806 00:43:36,080 --> 00:43:41,220 Ac rydym yn unig lleihau a ein maint ac yna dychwelyd maint. 807 00:43:41,220 --> 00:43:42,330 Mmhmm? 808 00:43:42,330 --> 00:43:45,300 >> GYNULLEIDFA: Amcana jyst yn gyffredinol, pam y byddai hyn yn strwythur data 809 00:43:45,300 --> 00:43:47,800 yn fuddiol? 810 00:43:47,800 --> 00:43:50,660 >> SIARADWR 1: Mae'n dibynnu ar eich cyd-destun. 811 00:43:50,660 --> 00:43:57,420 Felly, ar gyfer rhai o'r theori, os ydych yn gweithio with-- OK, 812 00:43:57,420 --> 00:44:02,750 gadael i mi weld os oes un buddiol bod o fudd i fwy nag y tu allan 813 00:44:02,750 --> 00:44:05,420 o CS. 814 00:44:05,420 --> 00:44:15,780 Gydag staciau, unrhyw adeg ei angen arnoch i gadw golwg ar rywbeth sydd 815 00:44:15,780 --> 00:44:20,456 yw'r ychwanegwyd fwyaf diweddar yw pan rydych yn mynd i eisiau defnyddio stac. 816 00:44:20,456 --> 00:44:24,770 >> Ac ni allaf feddwl am dda enghraifft o hynny ar hyn o bryd. 817 00:44:24,770 --> 00:44:29,955 Ond pryd bynnag y diweddaraf beth sydd bwysicaf i chi, 818 00:44:29,955 --> 00:44:31,705 dyna pryd stac yn mynd i fod yn ddefnyddiol. 819 00:44:31,705 --> 00:44:35,797 820 00:44:35,797 --> 00:44:39,330 Im 'yn ceisio i feddwl os mae 'na un da ar gyfer hyn. 821 00:44:39,330 --> 00:44:43,720 Os byddaf yn meddwl am enghraifft dda yn y nesaf 20 munud, byddaf yn bendant yn dweud wrthych. 822 00:44:43,720 --> 00:44:49,455 >> Ond yn gyffredinol, os oes unrhyw beth, fel y dywedais y rhan fwyaf, lle mae'r rhan fwyaf diweddar 823 00:44:49,455 --> 00:44:52,470 yn fwyaf pwysig, mae hynny'n ble daw pentwr i mewn i chwarae. 824 00:44:52,470 --> 00:44:58,860 Tra bod ciwiau yn garedig i'r gwrthwyneb. 825 00:44:58,860 --> 00:44:59,870 A'r holl cŵn bach. 826 00:44:59,870 --> 00:45:00,890 Onid yw hyn yn wych, dde? 827 00:45:00,890 --> 00:45:03,299 Rwy'n teimlo fel y dylwn os oes gen fideo bunny 828 00:45:03,299 --> 00:45:05,090 i'r dde yng nghanol adran i chi guys 829 00:45:05,090 --> 00:45:08,870 oherwydd mae hwn yn adran dwys. 830 00:45:08,870 --> 00:45:10,480 >> Felly ciw. 831 00:45:10,480 --> 00:45:12,710 Yn y bôn ciw yn debyg i llinell. 832 00:45:12,710 --> 00:45:15,780 Rydych guys Rwy'n siŵr y defnydd bob dydd hwn, yn union fel yn ein neuaddau bwyta. 833 00:45:15,780 --> 00:45:18,160 Felly, mae'n rhaid i ni fynd i mewn a chael ein hambyrddau, rwy'n 834 00:45:18,160 --> 00:45:21,260 yn sicr rhaid i chi aros yn unol i swipe neu gael eich bwyd. 835 00:45:21,260 --> 00:45:24,650 >> Felly y gwahaniaeth yma yw bod hyn yn FIFO. 836 00:45:24,650 --> 00:45:30,090 Felly os LIFO yn olaf i mewn, cyntaf allan, FIFO yn gyntaf i mewn, allan gyntaf. 837 00:45:30,090 --> 00:45:33,400 Felly dyma lle beth bynnag yr ydych yn rhoi ar cyntaf yw'r un mwyaf pwysig. 838 00:45:33,400 --> 00:45:35,540 Felly, os ydych yn aros mewn line-- gallwch chi 839 00:45:35,540 --> 00:45:39,130 dychmygwch os ydych yn mynd i mynd yn cael y iPhone newydd 840 00:45:39,130 --> 00:45:42,800 ac yr oedd pentwr lle mae'r person olaf yn unol got it gyntaf, 841 00:45:42,800 --> 00:45:44,160 Byddai pobl yn lladd ei gilydd. 842 00:45:44,160 --> 00:45:49,800 >> Felly FIFO, rydym ni i gyd yn gyfarwydd iawn â hwy yn y byd go iawn yma, 843 00:45:49,800 --> 00:45:54,930 ac mae pob un wedi ei wneud gyda mewn gwirionedd math o ail-greu y llinell cyfan 844 00:45:54,930 --> 00:45:56,900 a chiwio strwythur. 845 00:45:56,900 --> 00:46:02,390 Felly, tra gyda'r stac, rydym wedi gwthio a pop. 846 00:46:02,390 --> 00:46:06,440 Gyda ciw, rydym wedi enqueue a dequeue. 847 00:46:06,440 --> 00:46:10,910 Felly, yn y bôn yn golygu enqueue roi ar y cefn, 848 00:46:10,910 --> 00:46:13,680 a dulliau dequeue cymryd i ffwrdd o'r tu blaen. 849 00:46:13,680 --> 00:46:18,680 Felly mae ein strwythur data yn ychydig bach yn fwy cymhleth. 850 00:46:18,680 --> 00:46:21,060 Mae gennym ail beth i gadw golwg ar. 851 00:46:21,060 --> 00:46:25,950 >> Felly heb y pen, mae hyn yn union pentwr, dde? 852 00:46:25,950 --> 00:46:27,900 Mae hyn yn yr un strwythur fel pentwr. 853 00:46:27,900 --> 00:46:32,480 Yr unig beth yn wahanol yn awr yw ein bod cael pen hwn, a beth yn eich barn chi 854 00:46:32,480 --> 00:46:34,272 yn mynd i gadw golwg ar? 855 00:46:34,272 --> 00:46:35,510 >> GYNULLEIDFA: Mae'r un cyntaf. 856 00:46:35,510 --> 00:46:38,685 >> SIARADWR 1: Iawn, mae'r peth cyntaf yr ydym yn eu rhoi ar. 857 00:46:38,685 --> 00:46:41,130 Mae'r pennaeth ein ciw. 858 00:46:41,130 --> 00:46:42,240 Pwy bynnag sydd yn gyntaf yn unol. 859 00:46:42,240 --> 00:46:45,300 860 00:46:45,300 --> 00:46:49,420 Mae pob hawl, felly os ydym yn ei wneud enqueue. 861 00:46:49,420 --> 00:46:52,720 862 00:46:52,720 --> 00:46:55,920 Unwaith eto, gydag unrhyw un y strwythurau data, 863 00:46:55,920 --> 00:46:59,760 gan ein bod yn delio gydag amrywiaeth, mae angen i ni wirio os bydd gennym le. 864 00:46:59,760 --> 00:47:03,290 >> Mae hyn yn fath o fel fi dweud chi guys, os byddwch yn agor ffeil, 865 00:47:03,290 --> 00:47:04,760 angen i chi wirio am null. 866 00:47:04,760 --> 00:47:08,330 Ag unrhyw un o'r pentyrrau hyn a ciwiau, mae angen i chi 867 00:47:08,330 --> 00:47:13,420 i weld a oes lle oherwydd ein bod yn delio gydag amrywiaeth maint sefydlog, 868 00:47:13,420 --> 00:47:16,030 wrth i ni weld Yma-- 0, 1 i gyd hyd at 5. 869 00:47:16,030 --> 00:47:20,690 Felly, yr hyn yr ydym yn ei wneud yn yr achos hwnnw yw gwirio i weld a ydym yn dal i gael lle. 870 00:47:20,690 --> 00:47:23,110 A yw ein maint yn llai na gallu? 871 00:47:23,110 --> 00:47:28,480 >> Os felly, mae angen i storio ar y gynffon ac yn diweddaru ein maint. 872 00:47:28,480 --> 00:47:30,250 Felly, yr hyn a allai fod y gynffon yn yr achos hwn? 873 00:47:30,250 --> 00:47:32,360 Dyw hi ddim yn ysgrifennu allan yn benodol. 874 00:47:32,360 --> 00:47:33,380 Sut y byddem yn ei storio? 875 00:47:33,380 --> 00:47:34,928 Beth fyddai'r gynffon fod? 876 00:47:34,928 --> 00:47:38,600 877 00:47:38,600 --> 00:47:40,190 >> Felly gadewch i ni gerdded drwy'r esiampl. 878 00:47:40,190 --> 00:47:44,590 Felly mae hwn yn amrywiaeth o maint 6, dde? 879 00:47:44,590 --> 00:47:49,220 Ac mae gennym ar hyn o bryd, mae ein maint yw 5. 880 00:47:49,220 --> 00:47:55,240 A phan fyddwn yn ei roi i mewn, mae'n mynd i fynd i mewn i'r pumed fynegai, dde? 881 00:47:55,240 --> 00:47:57,030 Felly storio yn y gynffon. 882 00:47:57,030 --> 00:48:05,600 >> Ffordd arall i ysgrifennu gynffon byddai unig fydd ein amrywiaeth yn mynegai o faint, dde? 883 00:48:05,600 --> 00:48:07,560 Mae hyn yn maint 5. 884 00:48:07,560 --> 00:48:11,490 Peth nesaf yn mynd i fynd i mewn i 5. 885 00:48:11,490 --> 00:48:12,296 Cool? 886 00:48:12,296 --> 00:48:13,290 OK. 887 00:48:13,290 --> 00:48:16,350 Mae'n mynd ychydig yn fwy cymhleth pan fyddwn yn dechrau cyboli gyda'r pennaeth. 888 00:48:16,350 --> 00:48:17,060 Ie? 889 00:48:17,060 --> 00:48:20,090 >> GYNULLEIDFA: A yw hynny'n golygu ein bod yn Byddai wedi datgan arae fod 890 00:48:20,090 --> 00:48:23,880 Roedd pum elfen hir a Yna, rydym yn ychwanegu arno? 891 00:48:23,880 --> 00:48:24,730 >> SIARADWR 1: No. 892 00:48:24,730 --> 00:48:27,560 Felly, yn yr achos hwn, mae hyn yn stac. 893 00:48:27,560 --> 00:48:31,760 Byddai hyn yn cael ei ddatgan fel amrywiaeth o faint 6. 894 00:48:31,760 --> 00:48:37,120 Ac yn yr achos hwn, rydym yn dim ond un sydd ar ôl yn cael lle. 895 00:48:37,120 --> 00:48:42,720 >> Iawn, felly mae un peth yn yn hyn achos, os bydd ein pen yw ar 0, 896 00:48:42,720 --> 00:48:45,270 Yna, rydym yn unig yn gallu ychwanegu at faint. 897 00:48:45,270 --> 00:48:51,020 Ond mae'n mynd ychydig yn anoddach oherwydd mewn gwirionedd, maent yn 898 00:48:51,020 --> 00:48:52,840 Nid oes rhaid i sleid ar gyfer hyn, felly dwi'n mynd 899 00:48:52,840 --> 00:48:56,670 i dynnu un gan nad yw'n yn eithaf syml â hynny ar ôl i chi 900 00:48:56,670 --> 00:48:59,230 yn dechrau cael gwared o bethau. 901 00:48:59,230 --> 00:49:03,920 Felly, tra gyda stac chi dim ond byth yn cael 902 00:49:03,920 --> 00:49:08,920 i chi boeni am yr hyn y mae'r maint yn pan fyddwch yn ychwanegu rhywbeth ar, 903 00:49:08,920 --> 00:49:15,710 gyda ciw angen i chi hefyd wneud yn siŵr bod eich pen yn cael ei cyfrif am, 904 00:49:15,710 --> 00:49:20,760 am fod yn beth cŵl am ciwiau yw os nad ydych yn gallu, 905 00:49:20,760 --> 00:49:23,040 alli 'n weithredol wneud yn cofleidiol. 906 00:49:23,040 --> 00:49:28,810 >> OK, felly un thing-- oh, mae hyn yn ofnadwy sialc. 907 00:49:28,810 --> 00:49:31,815 Un peth i'w ystyried yw'r achos. 908 00:49:31,815 --> 00:49:35,514 909 00:49:35,514 --> 00:49:37,140 Byddwn yn jyst yn gwneud pump. 910 00:49:37,140 --> 00:49:41,810 Iawn, felly rydym yn mynd i yn dweud y pennaeth yma. 911 00:49:41,810 --> 00:49:46,140 Mae hyn yn 0, 1, 2, 3, 4. 912 00:49:46,140 --> 00:49:54,210 >> Y pennaeth sydd yno, ac os gwelwch yn dda cael pethau ynddynt. 913 00:49:54,210 --> 00:49:58,340 Ac rydym am ychwanegu rhywbeth mewn, dde? 914 00:49:58,340 --> 00:50:01,170 Felly, y peth y mae angen i i ni yn gwybod yw bod y pennaeth bob amser 915 00:50:01,170 --> 00:50:05,620 mynd i symud y ffordd hon ac Yna cylch yn ôl o gwmpas, OK? 916 00:50:05,620 --> 00:50:10,190 >> Felly ciw mae hyn wedi gofod, dde? 917 00:50:10,190 --> 00:50:13,950 Mae ganddo le yn y cychwyn cyntaf, math o y gwrthwyneb i hyn. 918 00:50:13,950 --> 00:50:17,920 Felly, beth mae angen i ni ei wneud yw ein bod Mae angen i gyfrifo'r gynffon. 919 00:50:17,920 --> 00:50:20,530 Os ydych yn gwybod bod eich pen Nid yw wedi symud, cynffon 920 00:50:20,530 --> 00:50:24,630 yn unig yw eich arae ar y mynegai o faint. 921 00:50:24,630 --> 00:50:30,000 >> Ond mewn gwirionedd, os ydych yn defnyddio ciw, eich pen yn cael ei ddiweddaru yn ôl pob tebyg. 922 00:50:30,000 --> 00:50:33,890 Felly beth sydd angen i chi ei wneud yw mewn gwirionedd yn cyfrifo y gynffon. 923 00:50:33,890 --> 00:50:39,990 Felly, yr hyn yr ydym yn ei wneud yw fformiwla hon yma, yr wyf i'n mynd i adael i chi 924 00:50:39,990 --> 00:50:42,680 guys yn meddwl am, a Yna, byddwn yn siarad am y peth. 925 00:50:42,680 --> 00:50:49,567 926 00:50:49,567 --> 00:50:50,400 Felly, mae hyn yn gallu. 927 00:50:50,400 --> 00:50:55,890 928 00:50:55,890 --> 00:50:59,660 >> Felly hefyd y bydd hyn yn mewn gwirionedd rhoi ffordd i wneud hynny i chi. 929 00:50:59,660 --> 00:51:03,205 930 00:51:03,205 --> 00:51:04,330 Gan fod yn yr achos hwn, beth? 931 00:51:04,330 --> 00:51:09,205 Mae ein pen yw yn 1, mae ein maint yw 4. 932 00:51:09,205 --> 00:51:11,760 933 00:51:11,760 --> 00:51:18,490 Os byddwn mod, erbyn 5, rydym yn cael 0, a dyna lle y dylai mewnbwn iddo. 934 00:51:18,490 --> 00:51:23,320 935 00:51:23,320 --> 00:51:26,080 >> Felly, yna yn yr achos nesaf, pe baem yn gwneud hyn, 936 00:51:26,080 --> 00:51:33,390 yr ydym yn ei ddweud, OK, gadewch i dequeue rhywbeth. 937 00:51:33,390 --> 00:51:34,390 Rydym yn dequeue hyn. 938 00:51:34,390 --> 00:51:37,740 Rydym yn cymryd allan yr elfen hon, dde? 939 00:51:37,740 --> 00:51:47,930 >> Ac yn awr mae ein pen yn pwyntio yma, ac rydym am i ychwanegu yn beth arall. 940 00:51:47,930 --> 00:51:52,470 Mae hyn yn y bôn y yn ôl ein llinell, dde? 941 00:51:52,470 --> 00:51:55,450 Gall Ciwiau lapio o amgylch y rhesi. 942 00:51:55,450 --> 00:51:57,310 Dyna un o'r prif wahaniaethau. 943 00:51:57,310 --> 00:51:58,780 Staciau, ni allwch wneud hyn. 944 00:51:58,780 --> 00:52:01,140 >> Gyda ciwiau, gallwch gan fod yr holl sy'n bwysig 945 00:52:01,140 --> 00:52:03,940 yw eich bod yn gwybod beth Ychwanegwyd yn fwyaf diweddar. 946 00:52:03,940 --> 00:52:10,650 Gan fod popeth yn mynd i gael eu hychwanegu yn y cyfeiriad leftward, yn yr achos hwn, 947 00:52:10,650 --> 00:52:16,480 ac yna cofleidiol, gallwch parhau i roi elfennau newydd 948 00:52:16,480 --> 00:52:18,830 ar flaen y rhesi oherwydd nad yw'n wir 949 00:52:18,830 --> 00:52:20,640 flaen y rhesi anymore. 950 00:52:20,640 --> 00:52:26,320 Gallwch chi feddwl am gychwyn y array fel lle mae eich pen mewn gwirionedd. 951 00:52:26,320 --> 00:52:29,710 >> Felly fformiwla dyma sut y byddwch yn cyfrifo eich cynffon. 952 00:52:29,710 --> 00:52:32,780 953 00:52:32,780 --> 00:52:35,610 Ydy hynny'n gwneud synnwyr? 954 00:52:35,610 --> 00:52:36,110 OK. 955 00:52:36,110 --> 00:52:39,400 956 00:52:39,400 --> 00:52:44,040 OK, dequeue, ac yna chi guys wedi 10 munud 957 00:52:44,040 --> 00:52:48,840 i ofyn unrhyw gwestiynau esboniadol mi rydych eisiau, gan fy mod yn gwybod ei fod yn wallgof. 958 00:52:48,840 --> 00:52:51,980 >> Mae pob hawl, felly yn yr un way-- Nid wyf yn gwybod os ydych yn guys sylwi, 959 00:52:51,980 --> 00:52:53,450 ond mae CS yn ymwneud batrymau. 960 00:52:53,450 --> 00:52:57,370 Mae pethau'n 'n bert lawer yr un fath, dim ond gyda tweaks bach. 961 00:52:57,370 --> 00:52:58,950 Felly, un peth yma. 962 00:52:58,950 --> 00:53:04,040 Mae angen i ni wirio i weld a ydym mewn gwirionedd rhywbeth yn ein ciw, dde? 963 00:53:04,040 --> 00:53:05,960 Dweud, OK, mae ein maint fwy na 0? 964 00:53:05,960 --> 00:53:06,730 Cool. 965 00:53:06,730 --> 00:53:10,690 >> Os ydym yn ei wneud, yna rydym yn symud ein pen, a oedd yw hyn yr wyf newydd ddangoswyd yma. 966 00:53:10,690 --> 00:53:13,870 Rydym yn diweddaru ein pen i fod yn un yn fwy. 967 00:53:13,870 --> 00:53:18,390 Ac yna rydym yn lleihau a ein maint a dychwelyd yr elfen. 968 00:53:18,390 --> 00:53:21,000 969 00:53:21,000 --> 00:53:26,250 >> Mae llawer mwy cadarn cod ar study.cs50.net, 970 00:53:26,250 --> 00:53:29,440 a Fi 'n dal argymell mynd drwyddo os oes gennych amser, 971 00:53:29,440 --> 00:53:30,980 hyd yn oed os mai dim ond ffug-god. 972 00:53:30,980 --> 00:53:35,980 Ac os ydych chi guys eisiau siarad drwy bod gyda mi un ar un, os gwelwch yn dda gadewch i mi 973 00:53:35,980 --> 00:53:37,500 gwybod. 974 00:53:37,500 --> 00:53:38,770 Byddwn yn hapus i. 975 00:53:38,770 --> 00:53:42,720 Strwythurau data, os byddwch yn cymryd CS 124, wnewch chi helpu 976 00:53:42,720 --> 00:53:47,830 gwybod bod strwythurau data yn cael iawn hwyl ac mae hyn yn dechrau. 977 00:53:47,830 --> 00:53:50,350 >> Felly, yr wyf yn gwybod ei bod yn anodd. 978 00:53:50,350 --> 00:53:51,300 Mae'n iawn. 979 00:53:51,300 --> 00:53:52,410 Rydym yn ei chael yn anodd. 980 00:53:52,410 --> 00:53:53,630 Rwy'n dal i wneud. 981 00:53:53,630 --> 00:53:56,660 Felly peidiwch â phoeni gormod am y peth. 982 00:53:56,660 --> 00:54:02,390 >> Ond mae hynny yn y bôn eich damwain cwrs mewn strwythurau data. 983 00:54:02,390 --> 00:54:03,400 Rwy'n gwybod ei fod yn llawer. 984 00:54:03,400 --> 00:54:06,860 A oes unrhyw beth yr ydym hoffwn fynd ar ôl tro? 985 00:54:06,860 --> 00:54:09,400 Unrhyw beth yr ydym am ei drafod? 986 00:54:09,400 --> 00:54:10,060 Ie? 987 00:54:10,060 --> 00:54:16,525 >> GYNULLEIDFA: Er bod enghraifft, felly y gynffon newydd ar 0 dros hynny? 988 00:54:16,525 --> 00:54:17,150 SIARADWR 1: Ydw. 989 00:54:17,150 --> 00:54:18,230 GYNULLEIDFA: OK. 990 00:54:18,230 --> 00:54:24,220 Felly, yna mynd drwy, byddech yn cael 1 ynghyd â 4 or-- 991 00:54:24,220 --> 00:54:27,671 >> SIARADWR 1: Felly yr ydych yn dweud, pan fyddwn eisiau mynd yn gwneud hyn eto? 992 00:54:27,671 --> 00:54:28,296 GYNULLEIDFA: Yeah. 993 00:54:28,296 --> 00:54:38,290 Felly, os ydych yn figuring out-- ble mae ydych yn cyfrifo y gynffon oddi wrth hynny? 994 00:54:38,290 --> 00:54:44,260 >> SIARADWR 1: Felly, mae'r gynffon Roedd in-- Newidiais hyn. 995 00:54:44,260 --> 00:54:52,010 Felly, yn yr enghraifft yma, roedd hyn yn yr amrywiaeth rydym yn edrych ar, OK? 996 00:54:52,010 --> 00:54:54,670 Felly, rydym wedi pethau yn 1, 2, 3, a 4. 997 00:54:54,670 --> 00:55:05,850 Felly, rydym wedi ein pen yn hafal i 1 yn y pwynt hwn, ac mae ein maint yn hafal i 4 998 00:55:05,850 --> 00:55:07,050 yn y fan hon, dde? 999 00:55:07,050 --> 00:55:08,960 >> Yr ydych i gyd yn cytuno bod hynny'n wir? 1000 00:55:08,960 --> 00:55:14,620 Felly, rydym yn gwneud y pen yn ogystal maint, a oedd yn 5 yn rhoi i ni, ac yna rydym mod erbyn 5. 1001 00:55:14,620 --> 00:55:20,690 Rydym yn cael 0, sy'n dweud wrthym fod 0 yn pa le y mae ein gynffon, lle mae gennym le. 1002 00:55:20,690 --> 00:55:22,010 >> GYNULLEIDFA: Beth yw cap? 1003 00:55:22,010 --> 00:55:23,520 >> SIARADWR 1: Y cynhwysedd. 1004 00:55:23,520 --> 00:55:24,020 Mae'n ddrwg gennym. 1005 00:55:24,020 --> 00:55:29,640 Felly dyna yw maint eich arae. 1006 00:55:29,640 --> 00:55:35,210 1007 00:55:35,210 --> 00:55:36,047 Ie? 1008 00:55:36,047 --> 00:55:39,210 >> GYNULLEIDFA: [Anghlywadwy] cyn byddwn yn dychwelyd yr elfen? 1009 00:55:39,210 --> 00:55:46,270 >> SIARADWR 1: Felly, yr ydym yn symud y pen neu ddychwelyd o bryd? 1010 00:55:46,270 --> 00:55:52,680 Felly, os ydym yn symud un, lleihau a faint? 1011 00:55:52,680 --> 00:55:54,150 Dal ar. 1012 00:55:54,150 --> 00:55:55,770 Rwy'n bendant yn anghofio un arall. 1013 00:55:55,770 --> 00:56:00,646 1014 00:56:00,646 --> 00:56:01,990 Peidiwch byth â meddwl. 1015 00:56:01,990 --> 00:56:04,980 Nid oes fformiwla arall. 1016 00:56:04,980 --> 00:56:09,980 Yeah, byddech am i ddychwelyd y pen ac yna symud yn ôl. 1017 00:56:09,980 --> 00:56:13,270 >> GYNULLEIDFA: OK, oherwydd Ar hyn bwynt, y pennaeth oedd ar 0, 1018 00:56:13,270 --> 00:56:18,452 ac yna rydych am ddychwelyd mynegai 0 ac yna gwneud pen 1? 1019 00:56:18,452 --> 00:56:19,870 >> SIARADWR 1: Iawn. 1020 00:56:19,870 --> 00:56:22,820 Rwy'n credu bod yna un arall fformiwla fath o fel hyn. 1021 00:56:22,820 --> 00:56:26,970 Nid oes gennyf ei fod ar y top fy mhen fel Dydw i ddim am roi'r un anghywir i chi. 1022 00:56:26,970 --> 00:56:35,470 Ond yr wyf yn credu ei fod yn berffaith ddilys i dyweder, OK, storio element-- hwn beth bynnag 1023 00:56:35,470 --> 00:56:40,759 yw-- elfen pennaeth lleihau a dy maint, symud eich pen drosodd, a dychwelyd 1024 00:56:40,759 --> 00:56:41,800 beth bynnag yr elfen honno yn. 1025 00:56:41,800 --> 00:56:44,760 Mae hynny'n berffaith ddilys. 1026 00:56:44,760 --> 00:56:45,260 OK. 1027 00:56:45,260 --> 00:56:48,360 1028 00:56:48,360 --> 00:56:53,560 Rwy'n teimlo fel nad yw hyn yn fel yr most-- nad ydych yn 1029 00:56:53,560 --> 00:56:55,740 mynd i gerdded allan o'r yma fel, ie, yr wyf yn gwybod geisiau. 1030 00:56:55,740 --> 00:56:56,880 Rwy'n cael y cyfan. 1031 00:56:56,880 --> 00:56:57,670 Mae hynny'n iawn. 1032 00:56:57,670 --> 00:57:00,200 Wyf yn addo. 1033 00:57:00,200 --> 00:57:05,240 Ond mae strwythurau data yn rhywbeth y mae'n cymryd llawer o amser i ddod i arfer â. 1034 00:57:05,240 --> 00:57:10,010 Mae'n debyg mai un o'r anoddaf pethau, rwy'n credu, yn y cwrs. 1035 00:57:10,010 --> 00:57:15,330 >> Felly mae'n bendant yn cymryd ailadrodd ac edrych at-- I 1036 00:57:15,330 --> 00:57:20,050 nid oedd yn wir yn gwybod rhestrau cysylltiedig nes i mi wneud llawer gormod gyda nhw, 1037 00:57:20,050 --> 00:57:22,550 yn yr un ffordd nad oeddwn yn gwneud wir yn deall awgrymiadau 1038 00:57:22,550 --> 00:57:27,040 nes i mi wedi cael ei ddysgu am ddwy mlynedd ac yn gwneud fy psets hun ag ef. 1039 00:57:27,040 --> 00:57:28,990 Mae'n cymryd llawer o ailadrodd ac amser. 1040 00:57:28,990 --> 00:57:32,600 Ac yn y pen draw, bydd yn fath o glicio. 1041 00:57:32,600 --> 00:57:36,320 >> Ond yn y cyfamser, os oes gennych fath o ddealltwriaeth lefel uchel o'r hyn 1042 00:57:36,320 --> 00:57:39,321 mae'r rhain yn ei wneud, eu manteision ac cons-- sef yr hyn 1043 00:57:39,321 --> 00:57:41,820 ydym yn wir yn tueddu i bwysleisio, yn enwedig yn y cwrs intro. 1044 00:57:41,820 --> 00:57:45,511 Fel, pam y byddem yn defnyddio'r cynnig arni dros arae? 1045 00:57:45,511 --> 00:57:48,010 Fel, beth yw'r pethau cadarnhaol a negyddol pob un o'r rheiny? 1046 00:57:48,010 --> 00:57:51,610 >> A deall y cyfaddawdau rhwng pob un o'r strwythurau hyn 1047 00:57:51,610 --> 00:57:54,910 yn beth llawer mwy pwysig ar hyn o bryd. 1048 00:57:54,910 --> 00:57:58,140 Efallai y bydd un crazy cwestiwn neu ddau dyna 1049 00:57:58,140 --> 00:58:03,710 mynd i ofyn i chi i weithredu gwthio neu gweithredu pop neu enqueue a dequeue. 1050 00:58:03,710 --> 00:58:07,340 Ond ar gyfer y rhan fwyaf, ar ôl hynny dealltwriaeth lefel uwch a mwy 1051 00:58:07,340 --> 00:58:09,710 o amgyffrediad greddfol yw bwysicach nag mewn gwirionedd 1052 00:58:09,710 --> 00:58:11,250 y gallu i weithredu. 1053 00:58:11,250 --> 00:58:14,880 >> Byddai'n wirioneddol wych pe bai pob un ohonoch allai fynd allan a mynd yn gweithredu arni, 1054 00:58:14,880 --> 00:58:19,720 ond rydym yn deall nad yw o reidrwydd y peth mwyaf rhesymol ar hyn o bryd. 1055 00:58:19,720 --> 00:58:23,370 Ond y gallwch yn eich pset, os ydych am i, ac yna byddwch yn cael ymarfer, 1056 00:58:23,370 --> 00:58:27,200 ac yna efallai wnewch chi helpu wir yn ei ddeall. 1057 00:58:27,200 --> 00:58:27,940 Ie? 1058 00:58:27,940 --> 00:58:30,440 >> GYNULLEIDFA: Iawn, felly pa rai sydd rydym yn golygu i'w defnyddio yn y pset? 1059 00:58:30,440 --> 00:58:31,916 A oes angen i mi ddefnyddio un ohonyn nhw? 1060 00:58:31,916 --> 00:58:32,540 SIARADWR 1: Ydw. 1061 00:58:32,540 --> 00:58:34,199 Felly, rydych yn cael eich dewis. 1062 00:58:34,199 --> 00:58:36,740 Amcana yn yr achos hwn, gallwn siarad am y pset ychydig 1063 00:58:36,740 --> 00:58:40,480 oherwydd fy mod yn rhedeg drwy'r rhain. 1064 00:58:40,480 --> 00:58:47,779 Felly, yn eich pset, mae gennych eich dewis o geisiau neu dablau hash. 1065 00:58:47,779 --> 00:58:49,570 Bydd rhai pobl yn ceisio ac yn defnyddio hidlwyr blodeuo, 1066 00:58:49,570 --> 00:58:51,840 ond y rhai nad dechnegol yn gywir. 1067 00:58:51,840 --> 00:58:55,804 Oherwydd eu natur tebygol, maent yn rhoi positif ffug weithiau. 1068 00:58:55,804 --> 00:58:57,095 Maen nhw'n edrych oer i mewn, er. 1069 00:58:57,095 --> 00:58:59,030 Dal argymell chwilio arnyn nhw o leiaf. 1070 00:58:59,030 --> 00:59:03,260 Ond yr ydych wedi eich dewis rhwng tabl hash a rhoi cynnig. 1071 00:59:03,260 --> 00:59:06,660 Ac mae hynny'n mynd i fod yn lle rydych yn llwytho yn eich geiriadur. 1072 00:59:06,660 --> 00:59:09,230 >> A bydd angen i chi ddewis eich swyddogaeth hash, 1073 00:59:09,230 --> 00:59:13,420 bydd angen i chi ddewis faint o Bwcedi sydd gennych, a bydd yn amrywio. 1074 00:59:13,420 --> 00:59:17,440 Fel os oes gennych fwy bwcedi, efallai y bydd yn rhedeg yn gynt. 1075 00:59:17,440 --> 00:59:22,790 Ond efallai eich bod yn gwastraffu llawer o le y ffordd honno, er. 1076 00:59:22,790 --> 00:59:26,320 Mae'n rhaid i chi chyfrif 'ii maes. 1077 00:59:26,320 --> 00:59:27,140 Mmhmm? 1078 00:59:27,140 --> 00:59:29,875 >> GYNULLEIDFA: Dywedasoch cyn hynny gallwn ddefnyddio swyddogaethau hash eraill, 1079 00:59:29,875 --> 00:59:31,750 nad ydym yn rhaid i ni creu swyddogaeth hash? 1080 00:59:31,750 --> 00:59:32,666 >> SIARADWR 1: Ie, ar y dde. 1081 00:59:32,666 --> 00:59:38,150 Felly, yn llythrennol ar gyfer eich swyddogaeth hash, fel google "swyddogaeth hash" 1082 00:59:38,150 --> 00:59:40,770 ac yn chwilio am rhai rhai oer. 1083 00:59:40,770 --> 00:59:43,250 Nid oes disgwyl i chi i adeiladu eich swyddogaethau hash hun. 1084 00:59:43,250 --> 00:59:46,100 Mae pobl yn treulio eu traethodau ymchwil ar y pethau hyn. 1085 00:59:46,100 --> 00:59:50,250 >> Felly peidiwch â phoeni am adeiladu eich hun. 1086 00:59:50,250 --> 00:59:53,350 Dod o hyd i un ar-lein i ddechrau. 1087 00:59:53,350 --> 00:59:56,120 Mae rhai ohonynt yn rhaid i chi trin ychydig bach 1088 00:59:56,120 --> 00:59:59,430 i wneud yn siŵr fathau dychwelyd yn cyd-fynd i fyny a whatnot, felly yn y dechrau, 1089 00:59:59,430 --> 01:00:02,420 Byddwn yn argymell defnyddio rhywbeth hawdd iawn mai efallai dim ond 1090 01:00:02,420 --> 01:00:04,680 hashes ar lythyren gyntaf. 1091 01:00:04,680 --> 01:00:08,760 Ac yna ar ôl i chi wedi bod gweithio, ymgorffori swyddogaeth hash oerach. 1092 01:00:08,760 --> 01:00:09,260 Mmhmm? 1093 01:00:09,260 --> 01:00:13,020 >> GYNULLEIDFA: A fyddai cynnig arni fod, neu effeithlon, ond dim ond yn fwy anodd i, like-- 1094 01:00:13,020 --> 01:00:15,880 >> SIARADWR 1: Felly cynnig arni, rwy'n credu, yn reddfol galed i weithredu 1095 01:00:15,880 --> 01:00:18,310 ond yn gyflym iawn. 1096 01:00:18,310 --> 01:00:20,620 Fodd bynnag, yn cymryd mwy o le. 1097 01:00:20,620 --> 01:00:25,270 Unwaith eto, gallwch wneud y mwyaf y ddau o'r rheiny yn gwahanol ffyrdd ac mae ffyrdd i-- 1098 01:00:25,270 --> 01:00:26,770 GYNULLEIDFA: Sut yr ydym yn eu graddio ar hyn? 1099 01:00:26,770 --> 01:00:27,540 A yw'n matter-- 1100 01:00:27,540 --> 01:00:29,164 >> SIARADWR 1: Felly, rydych yn graddio ffordd arferol. 1101 01:00:29,164 --> 01:00:31,330 Rydych yn mynd i gael ei graddio ar ddylunio. 1102 01:00:31,330 --> 01:00:36,020 Pa bynnag ffordd rydych yn ei wneud, eich bod am gwnewch yn siŵr ei fod mor gain ag y gall fod 1103 01:00:36,020 --> 01:00:38,610 ac mor effeithlon ag y gall fod. 1104 01:00:38,610 --> 01:00:41,950 Ond os byddwch yn dewis cynnig arni neu hash bwrdd, cyn belled ag y mae'n gweithio, 1105 01:00:41,950 --> 01:00:45,350 rydym yn fodlon ar hynny. 1106 01:00:45,350 --> 01:00:48,370 Ac os byddwch yn defnyddio rhywbeth sy'n hashes ar y llythyr cyntaf, mae hynny'n iawn, 1107 01:00:48,370 --> 01:00:51,410 tebyg efallai fel dylunio-ddoeth. 1108 01:00:51,410 --> 01:00:53,410 Rydym ni hefyd yn cyrraedd y pwynt yn y semester-- hwn 1109 01:00:53,410 --> 01:00:55,340 Nid wyf yn gwybod os ydych yn guys noticed-- os ydych chi'n 1110 01:00:55,340 --> 01:00:58,780 graddau pset dirywiad ychydig oherwydd dyluniad a whatnot, 1111 01:00:58,780 --> 01:00:59,900 mae hynny'n berffaith iawn. 1112 01:00:59,900 --> 01:01:02,960 Mae'n mynd i bwynt lle mae eich rhaglenni yn mynd yn fwy cymhleth. 1113 01:01:02,960 --> 01:01:04,830 Mae mwy o leoedd gallwch wella ar. 1114 01:01:04,830 --> 01:01:06,370 >> Felly mae'n gwbl normal. 1115 01:01:06,370 --> 01:01:08,810 Dyw hi ddim yn eich bod yn gwneud yn waeth ar eich pset. 1116 01:01:08,810 --> 01:01:11,885 'I' jyst rydym yn cael galetach ar chi nawr. 1117 01:01:11,885 --> 01:01:13,732 Felly mae pawb yn teimlo ei. 1118 01:01:13,732 --> 01:01:14,940 Fi jyst graddio eich holl psets. 1119 01:01:14,940 --> 01:01:16,490 Rwy'n gwybod bod pawb yn teimlo iddo. 1120 01:01:16,490 --> 01:01:19,600 >> Felly peidiwch â bod yn poeni am hynny. 1121 01:01:19,600 --> 01:01:23,580 Ac os oes gennych unrhyw gwestiynau am psets neu ffyrdd y gallwch wella ymlaen llaw, 1122 01:01:23,580 --> 01:01:27,760 Rwy'n ceisio sylwadau y penodol lleoedd, ond weithiau mae'n hwyr 1123 01:01:27,760 --> 01:01:30,840 ac yr wyf yn blino. 1124 01:01:30,840 --> 01:01:34,885 A oes unrhyw bethau eraill am strwythurau data? 1125 01:01:34,885 --> 01:01:37,510 Rwy'n siwr nad ydych yn guys yn ei wneud mewn gwirionedd eisiau siarad am nhw anymore, 1126 01:01:37,510 --> 01:01:42,650 ond os oes, rwy'n hapus i mynd drostynt, yn ogystal ag unrhyw beth 1127 01:01:42,650 --> 01:01:45,580 o'r gorffennol ddarlith hon wythnos neu wythnos diwethaf. 1128 01:01:45,580 --> 01:01:51,580 >> Yr wyf yn gwybod yr wythnos diwethaf oedd pob adolygiad, felly efallai ein bod wedi hepgor dros rai adolygiad 1129 01:01:51,580 --> 01:01:54,190 o ddarlith. 1130 01:01:54,190 --> 01:01:58,230 Unrhyw gwestiynau eraill gallaf ei ateb? 1131 01:01:58,230 --> 01:01:59,350 OK, i gyd yn iawn. 1132 01:01:59,350 --> 01:02:02,400 Wel, rydych guys yn mynd allan 15 munud yn gynnar. 1133 01:02:02,400 --> 01:02:08,370 >> Rwy'n gobeithio y mae hyn yn lled-ddefnyddiol o leiaf, a byddaf yn gweld chi guys yr wythnos nesaf, 1134 01:02:08,370 --> 01:02:12,150 neu oriau swyddfa Iau. 1135 01:02:12,150 --> 01:02:15,285 A oes ceisiadau am fyrbrydau ar gyfer yr wythnos nesaf, mae'n y peth? 1136 01:02:15,285 --> 01:02:17,459 Oherwydd yr wyf yn anghofio Candy heddiw. 1137 01:02:17,459 --> 01:02:19,750 Ac yr wyf yn dod â Candy diwethaf wythnos, ond yr oedd yn Ddiwrnod Columbus, 1138 01:02:19,750 --> 01:02:25,400 felly yr oedd yn hoffi chwech o bobl sydd Roedd gan bedwar bag o candy iddynt hwy eu hunain. 1139 01:02:25,400 --> 01:02:28,820 Gallaf ddod Starbursts eto os ydych yn dymuno. 1140 01:02:28,820 --> 01:02:29,580 Starbursts? 1141 01:02:29,580 --> 01:02:32,250 OK, swnio'n dda. 1142 01:02:32,250 --> 01:02:35,050 Cael diwrnod gwych, guys. 1143 01:02:35,050 --> 01:02:39,510