1 00:00:00,000 --> 00:00:03,423 >> [CHWARAE CERDDORIAETH] 2 00:00:03,423 --> 00:00:05,380 3 00:00:05,380 --> 00:00:08,210 >> Andi Peng: Croeso i wythnos 6 o adran. 4 00:00:08,210 --> 00:00:11,620 Rydym yn gwyro oddi wrth ein safon amser adran dydd Mawrth 5 00:00:11,620 --> 00:00:14,130 prynhawn i hyn fore Sul hyfryd. 6 00:00:14,130 --> 00:00:17,330 Diolch yn fawr i bawb sydd Ymunodd mi heddiw, ond o ddifrif, 7 00:00:17,330 --> 00:00:18,170 rownd o gymeradwyaeth. 8 00:00:18,170 --> 00:00:20,600 >> Dyna ymdrech eithaf mawr. 9 00:00:20,600 --> 00:00:23,600 Nid wyf bron yn ddim hyd yn oed yn ei gwneud yn i fyny mewn amser, ond Yr oedd yn iawn. 10 00:00:23,600 --> 00:00:27,520 Felly yr wyf yn gwybod bod pob un ohonoch newydd ei gwneud yn i'r cwis. 11 00:00:27,520 --> 00:00:30,370 Yn gyntaf oll, croeso i ar ochr arall hynny. 12 00:00:30,370 --> 00:00:32,917 >> Yn ail, byddwn yn siarad am y peth. 13 00:00:32,917 --> 00:00:34,000 Byddwn yn siarad am y cwis. 14 00:00:34,000 --> 00:00:35,700 Byddwn yn siarad am y ffordd rydych chi'n ei wneud yn y dosbarth. 15 00:00:35,700 --> 00:00:36,550 Byddwch yn iawn. 16 00:00:36,550 --> 00:00:39,080 Mae gen i eich cwisiau am chi ar ddiwedd y fan hon, 17 00:00:39,080 --> 00:00:42,120 felly os ydych chi guys eisiau cymryd a edrych arno, yn hollol iawn. 18 00:00:42,120 --> 00:00:46,590 >> Mor gyflym cyn i ni ddechrau, mae'r agenda ar gyfer heddiw yw fel a ganlyn. 19 00:00:46,590 --> 00:00:48,430 Fel y gwelwch, rydym yn tanio yn y bôn cyflym 20 00:00:48,430 --> 00:00:52,120 drwy criw cyfan o strwythurau data iawn, iawn, yn gyflym iawn. 21 00:00:52,120 --> 00:00:54,380 Felly, fel y cyfryw, ni fydd yn heddiw super rhyngweithiol. 22 00:00:54,380 --> 00:00:59,620 Fe 'i jyst yn fi fath o gweiddi pethau y byddwch chi, ac os wyf yn drysu chi, 23 00:00:59,620 --> 00:01:02,680 os ydw i'n mynd yn rhy gyflym, gadewch i mi wybod. 24 00:01:02,680 --> 00:01:05,200 Maen nhw jyst data amrywiol strwythurau, ac fel rhan 25 00:01:05,200 --> 00:01:07,070 eich pset ar gyfer hyn wythnos sydd i ddod, wnewch chi helpu 26 00:01:07,070 --> 00:01:10,340 gofynnir i weithredu un ohonynt, efallai dwy o them-- dau ohonynt 27 00:01:10,340 --> 00:01:12,319 yn eich pset. 28 00:01:12,319 --> 00:01:14,610 Iawn, felly Im 'jyst yn mynd i yn dechrau gyda rhai cyhoeddiadau. 29 00:01:14,610 --> 00:01:19,070 Byddwn yn mynd dros staciau ac ciwiau mwy mewn dyfnder na'r hyn a wnaethom cyn y cwis. 30 00:01:19,070 --> 00:01:20,990 Byddwn yn mynd dros cysylltiedig rhestru eto, unwaith eto, 31 00:01:20,990 --> 00:01:23,899 mwy o ddyfnder na'r hyn oedd gennym cyn y cwis. 32 00:01:23,899 --> 00:01:26,440 Ac yna byddwn yn siarad am hash tablau, coed a geisiau, a oedd yn 33 00:01:26,440 --> 00:01:28,890 i gyd yn eithaf angenrheidiol ar gyfer eich pset. 34 00:01:28,890 --> 00:01:32,925 Ac yna byddwn yn mynd dros rai awgrymiadau defnyddiol ar gyfer pset5. 35 00:01:32,925 --> 00:01:37,360 >> Iawn, felly cwis 0. 36 00:01:37,360 --> 00:01:41,090 Y cyfartaledd oedd 58%. 37 00:01:41,090 --> 00:01:45,370 Roedd yn isel iawn, ac er mwyn i chi guys i gyd Gwnaeth iawn, yn dda iawn yn unol 38 00:01:45,370 --> 00:01:46,510 â hynny. 39 00:01:46,510 --> 00:01:49,970 >> 'N bert lawer, synnwyr y fawd yw os ydych yn o fewn gwyriad safonol o'r cymedr 40 00:01:49,970 --> 00:01:52,990 yn enwedig gan ein bod mewn llai adran cyffyrddus, rydych yn hollol iawn. 41 00:01:52,990 --> 00:01:54,120 Rydych chi ar y trywydd iawn. 42 00:01:54,120 --> 00:01:55,190 Mae bywyd yn dda. 43 00:01:55,190 --> 00:01:58,952 >> Dwi'n gwybod ei fod frawychus i feddwl y Ges fel 40% ar y cwis hwn. 44 00:01:58,952 --> 00:02:00,160 Rydw i'n mynd i fethu y dosbarth hwn. 45 00:02:00,160 --> 00:02:02,243 Yr wyf yn addo i chi, nad ydych chi'n mynd i fethu y dosbarth. 46 00:02:02,243 --> 00:02:03,680 Rydych yn hollol iawn. 47 00:02:03,680 --> 00:02:06,850 >> I'r rhai ohonoch a gafodd dros y cymedr, trawiadol, trawiadol, 48 00:02:06,850 --> 00:02:08,780 fel, wneud yn ddifrifol yn dda. 49 00:02:08,780 --> 00:02:09,689 Yr wyf yn eu cael gyda mi. 50 00:02:09,689 --> 00:02:11,730 Mae croeso i chi ddod eu cael ar ddiwedd yr adran hon. 51 00:02:11,730 --> 00:02:14,520 Gadewch i mi wybod os oes gennych unrhyw materion, cwestiynau gyda nhw. 52 00:02:14,520 --> 00:02:17,204 Os byddwn yn ychwanegu i fyny eich sgôr anghywir, rhowch wybod i ni. 53 00:02:17,204 --> 00:02:21,240 >> Iawn, felly pset5, mae hwn yn 'n sylweddol wythnos rhyfedd i Iâl yn yr ystyr 54 00:02:21,240 --> 00:02:24,240 bod ein pset yn ddyledus Dydd Mercher am hanner dydd, gan gynnwys 55 00:02:24,240 --> 00:02:27,317 ddiwedd y dydd, felly mae'n mewn gwirionedd ddamcaniaethol ddyledus Mawrth am hanner dydd. 56 00:02:27,317 --> 00:02:29,150 Mae'n debyg nad oes neb yn gorffen yn Mawrth am hanner dydd. 57 00:02:29,150 --> 00:02:30,830 Mae hynny'n hollol iawn. 58 00:02:30,830 --> 00:02:33,700 Rydym yn mynd i gael oriau swyddfa heno yn ogystal â nos Lun. 59 00:02:33,700 --> 00:02:36,810 A phob un o'r adrannau wythnos hon bydd mewn gwirionedd yn cael ei droi i mewn i weithdai, 60 00:02:36,810 --> 00:02:38,800 felly mae croeso i chi alw mewn unrhyw adran rydych eisiau, 61 00:02:38,800 --> 00:02:42,810 a byddant yn fath o mini-pset gweithdai am help ar hynny. 62 00:02:42,810 --> 00:02:45,620 Felly, fel y cyfryw, dyma'r unig adran lle'r ydym yn ddeunydd addysgu. 63 00:02:45,620 --> 00:02:49,220 Bydd yr holl adrannau eraill yn canolbwyntio yn gyfan gwbl ar gymorth ar gyfer y pset. 64 00:02:49,220 --> 00:02:50,146 Yeah? 65 00:02:50,146 --> 00:02:52,000 >> GYNULLEIDFA: Ble mae'r oriau swyddfa? 66 00:02:52,000 --> 00:02:56,120 >> Andi Peng: Oriau swyddfa tonight-- oh, cwestiwn da. 67 00:02:56,120 --> 00:03:00,580 Rwy'n credu oriau swyddfa heno yn Teal neu yn y Cyffredin. 68 00:03:00,580 --> 00:03:02,984 Os ydych yn gwirio CS50 ar-lein a'ch bod yn mynd i oriau swyddfa, 69 00:03:02,984 --> 00:03:05,650 dylid cael amserlen sy'n yn dweud wrthych ble pob un ohonynt yn cael eu. 70 00:03:05,650 --> 00:03:07,954 >> Yr wyf yn gwybod ai heno neu yfory yn corhwyaid, 71 00:03:07,954 --> 00:03:10,120 ac yr wyf yn meddwl efallai y byddwn yn cael tiroedd comin ar gyfer y noson o'r blaen. 72 00:03:10,120 --> 00:03:11,020 Dydw i ddim yn siwr. 73 00:03:11,020 --> 00:03:11,700 Cwestiwn da. 74 00:03:11,700 --> 00:03:14,430 Gwiriwch ar CS50. 75 00:03:14,430 --> 00:03:18,780 >> Cool, unrhyw gwestiynau ynghylch y amserlen ar gyfer y nesaf fel tri diwrnod? 76 00:03:18,780 --> 00:03:21,690 Rwy'n addo i chi guys fel David Meddai, dyma ben y bryn. 77 00:03:21,690 --> 00:03:23,050 Rydych guys yn cael eu bron yno. 78 00:03:23,050 --> 00:03:24,644 Dim ond tri diwrnod yn fwy. 79 00:03:24,644 --> 00:03:26,310 Gyrraedd yno, ac yna byddwn i gyd yn dod i lawr. 80 00:03:26,310 --> 00:03:28,114 Byddwn yn cael seibiant CS-rhad ac am ddim 'n glws. 81 00:03:28,114 --> 00:03:28,780 Byddwn yn dod yn ôl. 82 00:03:28,780 --> 00:03:30,779 Byddwn yn plymio i mewn i we rhaglennu a datblygu, 83 00:03:30,779 --> 00:03:35,150 pethau sy'n hwyl iawn o gymharu i rai o'r psets eraill. 84 00:03:35,150 --> 00:03:37,974 A bydd yn cael ei oeri, ac byddwn yn cael llawer o hwyl. 85 00:03:37,974 --> 00:03:38,890 Bydd gennym fwy o Candy. 86 00:03:38,890 --> 00:03:39,730 Mae'n ddrwg gennyf am candy. 87 00:03:39,730 --> 00:03:40,945 Wedi anghofio Candy. 88 00:03:40,945 --> 00:03:43,310 Roedd yn fore garw. 89 00:03:43,310 --> 00:03:46,340 Felly rydych guys yn cael eu bron yno, ac rwyf yn falch iawn ohonoch guys. 90 00:03:46,340 --> 00:03:49,570 >> Iawn, felly staciau. 91 00:03:49,570 --> 00:03:53,331 Pwy caru y cwestiwn am Jack ac mae ei ddillad ar y cwis? 92 00:03:53,331 --> 00:03:53,830 Neb? 93 00:03:53,830 --> 00:03:56,500 OK, mae hynny'n iawn. 94 00:03:56,500 --> 00:04:00,200 >> Felly, yn y bôn ag y gallwch llun Jack, y boi yma, 95 00:04:00,200 --> 00:04:03,350 wrth ei bodd yn cymryd y dillad allan o ben y pentwr, 96 00:04:03,350 --> 00:04:05,750 ac efe yn ei roi yn ôl ar y pentwr ar ôl iddo ei wneud. 97 00:04:05,750 --> 00:04:07,600 Felly, yn y modd hwn, byth ymddangos i fod yn mynd yn 98 00:04:07,600 --> 00:04:10,090 i waelod y stac yn ei ddillad. 99 00:04:10,090 --> 00:04:12,600 Felly, mae hyn yn disgrifio math o y strwythur data sylfaenol 100 00:04:12,600 --> 00:04:16,610 o sut y pentwr yn cael ei roi ar waith. 101 00:04:16,610 --> 00:04:20,060 >> Yn y bôn, meddyliwch am stac fel unrhyw pentwr o wrthrychau 102 00:04:20,060 --> 00:04:24,900 lle rydych yn rhoi pethau ar y top, a yna rydych yn eu pop allan o'r brig. 103 00:04:24,900 --> 00:04:28,600 Felly LIFO yw'r acronym rydym yn hoffi i use-- Yn diwethaf, Cyntaf Allan. 104 00:04:28,600 --> 00:04:32,480 Ac felly yn para mewn i frig y stac yw'r un cyntaf sy'n dod allan. 105 00:04:32,480 --> 00:04:34,260 Ac felly y ddau dymor rydym yn awyddus i gysylltu 106 00:04:34,260 --> 00:04:36,190 yn cael eu galw gwthio a pop gyda hynny. 107 00:04:36,190 --> 00:04:39,790 Pan fyddwch yn gwthio rhywbeth ar y stac, ac i chi pop yn ôl i fyny. 108 00:04:39,790 --> 00:04:43,422 >> Ac felly yr wyf yn dyfalu mae hwn yn fath o cysyniad haniaethol ar gyfer y rhai ohonoch 109 00:04:43,422 --> 00:04:45,630 sydd am weld fel gweithrediad gwirioneddol o hyn 110 00:04:45,630 --> 00:04:46,740 yn y byd go iawn. 111 00:04:46,740 --> 00:04:50,170 Faint ohonoch chi wedi ysgrifennu traethawd efallai fel awr cyn ei bod yn ddyledus, 112 00:04:50,170 --> 00:04:54,510 ac yr ydych yn ddamweiniol dileu enfawr talp ohono, fel ddamweiniol? 113 00:04:54,510 --> 00:04:58,560 Ac yna beth rheolaeth yn ei wneud a ddefnyddiwn i roi yn ôl? 114 00:04:58,560 --> 00:05:00,030 Rheoli-Z, ie? 115 00:05:00,030 --> 00:05:03,640 Rheoli-Z, felly faint o weithiau bod Control-Z wedi achub fy mywyd, 116 00:05:03,640 --> 00:05:08,820 wedi achub fy ass, bob tro sydd wedi ei weithredu drwy pentwr. 117 00:05:08,820 --> 00:05:13,020 >> Yn y bôn yr holl wybodaeth sydd ar eich dogfen Word, 118 00:05:13,020 --> 00:05:15,080 mae'n mynd gwthio a popped ar ewyllys. 119 00:05:15,080 --> 00:05:19,460 Ac felly y bôn pryd bynnag y byddwch dileu unrhyw beth, i chi pop yn ôl i fyny. 120 00:05:19,460 --> 00:05:22,820 Ac yna os ydych ei angen yn ôl ar, byddwch yn wthio, sef yr hyn Rheoli-C yn ei wneud. 121 00:05:22,820 --> 00:05:26,770 Ac swyddogaeth byd mor real o strwythur data pa mor syml 122 00:05:26,770 --> 00:05:28,690 Gall helpu gyda'ch bywyd bob dydd. 123 00:05:28,690 --> 00:05:31,710 124 00:05:31,710 --> 00:05:40,150 >> Felly mae struct yw'r ffordd y rydym mewn gwirionedd yn creu pentwr. 125 00:05:40,150 --> 00:05:44,720 Rydym yn teipio diffinio struct, ac yna rydym yn galw ei fod yn dal dŵr ar y gwaelod. 126 00:05:44,720 --> 00:05:47,440 Ac o fewn y pentwr, mae gennym ddau paramedrau 127 00:05:47,440 --> 00:05:51,580 y gallwn ei hanfod drin, felly rydym wedi gallu llinynnau seren char. 128 00:05:51,580 --> 00:05:55,150 >> Y cyfan y mae'n ei wneud yn creu amrywiaeth 129 00:05:55,150 --> 00:05:58,835 ein bod yn gallu storio beth bynnag y dymunwch y gallwn benderfynu ar ei allu. 130 00:05:58,835 --> 00:06:01,990 Gallu Ai dim ond y swm max o eitemau y gallwn roi mewn amrywiaeth hwn. 131 00:06:01,990 --> 00:06:05,660 maint int yw'r cownter sy'n cadw golwg ar faint o eitemau ar hyn o bryd 132 00:06:05,660 --> 00:06:07,850 yn y pentwr. 133 00:06:07,850 --> 00:06:11,860 Felly, yna gallwn gadw golwg ar, A, y ddau pa mor fawr y pentwr gwir yw, 134 00:06:11,860 --> 00:06:14,850 a, B, faint o'r pentwr rydym yn llenwi oherwydd nad ydym am 135 00:06:14,850 --> 00:06:18,800 i orlifo dros yr hyn yw ein gallu. 136 00:06:18,800 --> 00:06:24,340 >> Felly, er enghraifft, mae hyn yn hyfryd cwestiwn oedd ar eich cwis. 137 00:06:24,340 --> 00:06:28,160 Yn y bôn sut ydyn ni'n gwthio ar ben y pentwr. 138 00:06:28,160 --> 00:06:28,830 Pretty syml. 139 00:06:28,830 --> 00:06:30,621 Os ydych yn edrych arno, byddwn yn cerdded trwy hyn. 140 00:06:30,621 --> 00:06:32,640 Os [Anghlywadwy] size-- cofiwch, pryd bynnag y byddwch 141 00:06:32,640 --> 00:06:35,300 am gael mynediad i unrhyw paramedr fewn struct, 142 00:06:35,300 --> 00:06:40,320 byddwch yn gwneud enw'r struct.parameter. 143 00:06:40,320 --> 00:06:42,720 >> Yn yr achos hwn, s enw ein corn. 144 00:06:42,720 --> 00:06:46,230 Rydym yn awyddus i gael gafael ar y maint ohono, felly rydym yn ei wneud s.size. 145 00:06:46,230 --> 00:06:50,280 Felly, ar yr amod nad yw maint yw gyfartal i allu neu ar yr amod 146 00:06:50,280 --> 00:06:52,940 gan ei fod yn llai na gallu, naill ai y byddai'n gweithio yma. 147 00:06:52,940 --> 00:06:57,180 >> Rydych am gael mynediad i'r tu mewn eich simnai, felly s.strings, 148 00:06:57,180 --> 00:07:00,790 ac rydych yn mynd i roi y rhif newydd eich bod am i fewnosod i mewn yno. 149 00:07:00,790 --> 00:07:05,030 Gadewch i 'jyst dweud byddwn am mewnosod int n ar y pentwr, 150 00:07:05,030 --> 00:07:08,905 gallem ei wneud s.strings, cromfachau, s.size hafal n. 151 00:07:08,905 --> 00:07:11,030 Oherwydd bod maint yw lle rydym ar hyn o bryd yn y pentwr 152 00:07:11,030 --> 00:07:14,590 os ydym yn mynd i wthio ymlaen, rydym yn unig gael mynediad 153 00:07:14,590 --> 00:07:17,370 lle bynnag y mae maint yw, y llawnder presennol y pentwr, 154 00:07:17,370 --> 00:07:21,729 ac yr ydym yn gwthio'r int n arno. 155 00:07:21,729 --> 00:07:24,770 Ac yna rydym am wneud yn siŵr bod rydym hefyd yn incrementing maint y n, 156 00:07:24,770 --> 00:07:27,436 fel y gallwn gadw golwg rydym wedi Ychwanegodd beth ychwanegol i'r pentwr. 157 00:07:27,436 --> 00:07:29,660 Nawr rydym yn cael mwy o faint. 158 00:07:29,660 --> 00:07:33,196 Ydy hyn yn gwneud synnwyr yma i pawb, pa mor rhesymegol mae'n gweithio? 159 00:07:33,196 --> 00:07:34,160 Roedd yn fath o gyflym. 160 00:07:34,160 --> 00:07:39,535 161 00:07:39,535 --> 00:07:42,160 GYNULLEIDFA: Allwch chi fynd dros y s.stringss.strings [s.size] eto? 162 00:07:42,160 --> 00:07:45,808 Andi Peng: Cadarn, felly beth sydd s.size ar hyn o bryd yn rhoi i ni? 163 00:07:45,808 --> 00:07:47,440 GYNULLEIDFA: Mae'n y maint presennol. 164 00:07:47,440 --> 00:07:50,890 Andi Peng: Yn union, felly mae'r mynegai ar hyn o bryd y mae ein maint ar, 165 00:07:50,890 --> 00:07:57,780 ac felly yr ydym am roi'r cyfanrif newydd ein bod am i fewnosod i mewn i s.size. 166 00:07:57,780 --> 00:07:58,760 A yw hynny'n gwneud synnwyr? 167 00:07:58,760 --> 00:08:01,110 Gan fod s.strings, y cyfan sydd yw yw enw'r y rhesi. 168 00:08:01,110 --> 00:08:03,510 Mae'r holl mae'n ei cael mynediad i'r amrywiaeth o fewn ein struct, 169 00:08:03,510 --> 00:08:06,030 ac felly os ydym eisiau rhowch n i mewn i'r mynegai, 170 00:08:06,030 --> 00:08:09,651 gallwn jyst gael mynediad iddo gan ddefnyddio cromfachau s.size. 171 00:08:09,651 --> 00:08:10,150 Cool. 172 00:08:10,150 --> 00:08:13,580 173 00:08:13,580 --> 00:08:18,916 >> Mae pob hawl, pop, yr wyf yn pseudocode 'ii maes i chi guys, ond cysyniad tebyg. 174 00:08:18,916 --> 00:08:19,790 A yw hynny'n gwneud synnwyr? 175 00:08:19,790 --> 00:08:22,310 Os yw maint yn fwy na sero, yna rydych 176 00:08:22,310 --> 00:08:25,350 yn gwybod eich bod am gymryd rhywbeth allan oherwydd os nad yw maint yw 177 00:08:25,350 --> 00:08:27,620 mwy na sero, yna rydych ganddynt unrhyw beth yn y pentwr. 178 00:08:27,620 --> 00:08:29,840 >> Felly dim ond eisiau gweithredu cod hwn, y gall dim ond 179 00:08:29,840 --> 00:08:32,320 pop os oes rhywbeth i pop. 180 00:08:32,320 --> 00:08:35,830 Felly, os yw maint yn fwy na 0, rydym minws maint. 181 00:08:35,830 --> 00:08:40,020 Rydym yn lleihau a maint ac yna dychwelyd beth bynnag sydd tu mewn iddo oherwydd 182 00:08:40,020 --> 00:08:42,710 drwy popping, rydym am mynediad beth bynnag yn cael ei storio 183 00:08:42,710 --> 00:08:45,694 yn y mynegai ben y pentwr. 184 00:08:45,694 --> 00:08:46,610 Mae popeth yn gwneud synnwyr? 185 00:08:46,610 --> 00:08:49,693 Os byddaf yn gwneud i chi guys ysgrifennu hyn allan, fyddech chi guys yn gallu ysgrifennu allan? 186 00:08:49,693 --> 00:08:52,029 187 00:08:52,029 --> 00:08:53,570 OK, gallwch chi guys chwarae o gwmpas ag ef. 188 00:08:53,570 --> 00:08:55,252 Dim pryderon os nad ydych yn ei gael. 189 00:08:55,252 --> 00:08:57,460 Nid oes gennym amser i cod allan heddiw oherwydd rydym wedi 190 00:08:57,460 --> 00:08:59,959 cael llawer o strwythurau hyn i fynd drwy'r, ond yn ei hanfod 191 00:08:59,959 --> 00:09:02,214 pseudocode, iawn, yn debyg iawn i wthio. 192 00:09:02,214 --> 00:09:03,380 Dilynwch ar hyd y rhesymeg. 193 00:09:03,380 --> 00:09:06,092 Gwnewch yn siŵr eich bod yn cael mynediad at yr holl nodweddion eich struct yn gywir. 194 00:09:06,092 --> 00:09:06,574 Yeah? 195 00:09:06,574 --> 00:09:09,282 >> GYNULLEIDFA: A wnaiff y sleidiau hyn a mae hyn holl beth fod hyd heddiw-ish? 196 00:09:09,282 --> 00:09:11,586 Andi Peng: Bob amser, yep. 197 00:09:11,586 --> 00:09:13,710 Rydw i'n mynd i geisio rhoi hyn i fyny fel awr ar ôl. 198 00:09:13,710 --> 00:09:16,626 'N annhymerus' anfon e-bost David, bydd David yn ceisio ei roi i fyny fel awr ar ôl hyn. 199 00:09:16,626 --> 00:09:20,040 200 00:09:20,040 --> 00:09:25,470 >> Iawn, felly yna rydym yn symud i mewn i hyn eraill strwythur data hyfryd o'r enw ciw. 201 00:09:25,470 --> 00:09:30,140 Fel y gallwch weld guys yma, mae ciw, ar gyfer y British yn ein plith, 202 00:09:30,140 --> 00:09:32,010 i gyd mae'n llinell. 203 00:09:32,010 --> 00:09:34,680 Felly, yn groes i'r hyn yn eich barn chi pentwr yw, 204 00:09:34,680 --> 00:09:37,750 ciw yn union yr hyn yn rhesymegol credwch ei fod yn. 205 00:09:37,750 --> 00:09:41,914 Mae'n cael ei dal gan y rheolau FIFO, sef First Mewn, Cyntaf Allan. 206 00:09:41,914 --> 00:09:43,705 Os mai chi yw'r cyntaf un yn y llinell, rydych yn 207 00:09:43,705 --> 00:09:46,230 yr un cyntaf i yn dod allan y llinell. 208 00:09:46,230 --> 00:09:49,680 >> Felly, yr hyn yr ydym yn hoffi i alw hyn yn dequeueing a enqueueing. 209 00:09:49,680 --> 00:09:52,380 Os ydym am ychwanegu rhywbeth at ein ciw, rydym yn enqueue. 210 00:09:52,380 --> 00:09:55,690 Os ydym am dequeue, neu gymryd rhywbeth i ffwrdd, rydym yn dequeue. 211 00:09:55,690 --> 00:10:03,350 >> Felly un synnwyr ein bod fath o creu elfennau-maint sefydlog yr ydym 212 00:10:03,350 --> 00:10:06,500 Gall storio penodol pethau, ond allwn hefyd 213 00:10:06,500 --> 00:10:10,100 newid lle'r ydym yn gosod paramedrau y tu mewn ohonynt 214 00:10:10,100 --> 00:10:13,140 yn seiliedig ar y math o functionality yr ydym ei eisiau. 215 00:10:13,140 --> 00:10:16,700 Felly staciau, roeddem am yr olaf un, N i fod yr un allan gyntaf. 216 00:10:16,700 --> 00:10:19,800 Ciw yw ein bod am y peth cyntaf yn i fod y peth cyntaf allan. 217 00:10:19,800 --> 00:10:22,510 218 00:10:22,510 --> 00:10:26,710 >> Felly mae'r struct-math ddiffinio, fel y gwelwch, 219 00:10:26,710 --> 00:10:29,470 mae'n ychydig yn wahanol o'r hyn y mae'r pentwr oedd 220 00:10:29,470 --> 00:10:33,120 oherwydd nid yn unig y mae yn rhaid i ni gadw trac o gyflwr lle mae'r maint ar hyn o bryd yw, 221 00:10:33,120 --> 00:10:37,420 rydym hefyd yn awyddus i gadw golwg ar y pen yn ogystal â lle yr ydym ar hyn o bryd yn cael eu. 222 00:10:37,420 --> 00:10:39,580 Felly yr wyf yn credu ei fod yn haws os wyf yn tynnu hyn i fyny. 223 00:10:39,580 --> 00:10:53,270 Felly gadewch i ni ddychmygu mae gennym ciw, felly gadewch i ni ddweud y pen yn iawn yma. 224 00:10:53,270 --> 00:10:55,811 225 00:10:55,811 --> 00:10:58,310 Mae pennaeth y llinell, gadewch i ni dim ond dweud dyna bryd yno, 226 00:10:58,310 --> 00:11:01,809 ac rydym am i fewnosod rhywbeth i mewn i'r ciw. 227 00:11:01,809 --> 00:11:04,350 Rydw i'n mynd i alw maint y bôn yr un peth â gynffon, 228 00:11:04,350 --> 00:11:06,314 diwedd lle bynnag y bo eich ciw yw. 229 00:11:06,314 --> 00:11:07,730 Gadewch i 'jyst dweud faint yn iawn yma. 230 00:11:07,730 --> 00:11:14,380 231 00:11:14,380 --> 00:11:18,400 >> Felly sut mae un yn ymarferol mewnosod rhywbeth i mewn ciw? 232 00:11:18,400 --> 00:11:21,000 233 00:11:21,000 --> 00:11:24,130 Pa mynegai ydym ni eisiau gosod lle yr ydym am i fewnosod i mewn. 234 00:11:24,130 --> 00:11:29,320 Os yw hyn yn ddechrau eich ciw ac mae hyn yn y diwedd 235 00:11:29,320 --> 00:11:31,860 neu faint ohono, lle yr ydym yn eisiau ychwanegu y gwrthrych nesaf? 236 00:11:31,860 --> 00:11:32,920 >> GYNULLEIDFA: [Anghlywadwy] 237 00:11:32,920 --> 00:11:35,920 Andi Peng: Yn union, ydych am ychwanegu mae'n dibynnu ar a ydych wedi ei ysgrifennu. 238 00:11:35,920 --> 00:11:37,840 Naill ai mae hyn yn wag, neu fod yn wag. 239 00:11:37,840 --> 00:11:42,630 Felly rydych eisiau ei ychwanegu yn ôl pob tebyg yma oherwydd os bydd y maint yw-- 240 00:11:42,630 --> 00:11:50,540 os yw'r rhain i gyd yn llawn, yr ydych am ychwanegu yn iawn yma, dde? 241 00:11:50,540 --> 00:11:57,150 >> Ac felly dyna, tra iawn, iawn syml, ddim yn hollol bob amser yn gywir 242 00:11:57,150 --> 00:12:00,690 oherwydd bod y prif wahaniaeth rhwng ciw a stac 243 00:12:00,690 --> 00:12:04,350 yw y gall y ciw mewn gwirionedd yn cael eu trin 244 00:12:04,350 --> 00:12:06,980 fel bod y pen newidiadau yn dibynnu ar ble rydych am 245 00:12:06,980 --> 00:12:08,650 ddechrau eich ciw i ddechrau. 246 00:12:08,650 --> 00:12:11,900 Ac o ganlyniad, bydd eich cynffon hefyd yn mynd i newid. 247 00:12:11,900 --> 00:12:14,770 Ac felly cymerwch olwg ar cod hwn ar hyn o bryd. 248 00:12:14,770 --> 00:12:18,620 Fel gofynnwyd i chi guys hefyd i ysgrifennu ar y cwis, enqueue. 249 00:12:18,620 --> 00:12:22,580 Efallai byddwn yn siarad drwy pam yr ateb oedd yr hyn yr oedd. 250 00:12:22,580 --> 00:12:26,790 >> Allwn i ddim eithaf ffitio llinell hon ar un, ond yn ei hanfod darn hwn o god 251 00:12:26,790 --> 00:12:29,030 Dylai fod ar un llinell. 252 00:12:29,030 --> 00:12:30,140 Gwario fel 30 eiliad. 253 00:12:30,140 --> 00:12:33,000 Cymerwch olwg, ac yn gweld pam mae hyn yw'r ffordd y mae. 254 00:12:33,000 --> 00:12:50,030 255 00:12:50,030 --> 00:12:55,420 >> Iawn, struct debyg iawn, iawn, iawn strwythur tebyg i'r blaenorol 256 00:12:55,420 --> 00:12:58,090 pentwr yma ond efallai un llinell o god. 257 00:12:58,090 --> 00:13:01,190 A bod un llinell o god penderfynu ar y swyddogaeth. 258 00:13:01,190 --> 00:13:03,900 Ac mae'n wir yn gwahaniaethu ciw o bentwr. 259 00:13:03,900 --> 00:13:18,510 260 00:13:18,510 --> 00:13:22,010 >> Dylai unrhyw un eisiau cymryd drywanu yn egluro pam eich bod wedi 261 00:13:22,010 --> 00:13:24,980 got hyn beth cymhleth yn fan hyn? 262 00:13:24,980 --> 00:13:27,845 Rydym yn gweld dychweliad ein ffrind modwlws gwych. 263 00:13:27,845 --> 00:13:31,020 Fel y byddwch yn guys yn fuan yn dod i gydnabod mewn rhaglenni, 264 00:13:31,020 --> 00:13:34,910 bron unrhyw adeg rydych angen rhywbeth i lapio o gwmpas unrhyw beth, 265 00:13:34,910 --> 00:13:36,850 modwlws yn mynd i fod ar y ffordd i wneud hynny. 266 00:13:36,850 --> 00:13:40,510 Felly gan wybod bod, oes rhywun eisiau i roi cynnig ar egluro bod llinell o god? 267 00:13:40,510 --> 00:13:44,060 268 00:13:44,060 --> 00:13:47,507 Yeah, pob atebion yn derbyniol a chroeso. 269 00:13:47,507 --> 00:13:48,840 GYNULLEIDFA: A ydych yn siarad â mi? 270 00:13:48,840 --> 00:13:49,506 Andi Peng: Yeah. 271 00:13:49,506 --> 00:13:56,200 GYNULLEIDFA: O, na sori. 272 00:13:56,200 --> 00:14:00,250 Andi Peng: OK, felly gadewch i ni cerdded drwy y cod hwn. 273 00:14:00,250 --> 00:14:03,642 Felly, pan fyddwch yn ceisio ychwanegu rhywbeth ar ciw, 274 00:14:03,642 --> 00:14:08,510 yn yr achos hyfryd bod y pen yn digwydd i fod yn iawn yma, mae'n hawdd iawn i ni 275 00:14:08,510 --> 00:14:10,960 i jyst yn mynd i ben mewnosod rhywbeth, dde? 276 00:14:10,960 --> 00:14:14,690 Ond holl bwynt ciw yw bod y pennaeth yn gallu mewn gwirionedd yn ddynamig 277 00:14:14,690 --> 00:14:17,280 newid yn dibynnu ar lle rydym eisiau dechrau ein q i fod, 278 00:14:17,280 --> 00:14:19,880 ac fel y cyfryw, y gynffon hefyd yn mynd i newid. 279 00:14:19,880 --> 00:14:31,100 >> Ac felly dychmygwch nad oedd y oedd hyn yn ciw, ond yn hytrach hwn oedd y ciw. 280 00:14:31,100 --> 00:14:37,900 281 00:14:37,900 --> 00:14:39,330 Lets 'ddeud y pen yn iawn yma. 282 00:14:39,330 --> 00:14:54,900 283 00:14:54,900 --> 00:14:56,980 Lets 'ddeud ein ciw yn edrych fel hyn. 284 00:14:56,980 --> 00:15:00,190 Os ydym yn awyddus i symud lle cychwyn y llinell yw, 285 00:15:00,190 --> 00:15:03,400 gadewch i ni ddweud ein bod yn symud pen y ffordd hon a maint yma. 286 00:15:03,400 --> 00:15:07,100 >> Nawr rydym am i ychwanegu rhywbeth at ciw hwn, ond fel y gallwch weld guys, 287 00:15:07,100 --> 00:15:11,150 nid yw mor syml ag i ychydig ychwanegu beth bynnag sydd ar ôl y maint 288 00:15:11,150 --> 00:15:13,630 oherwydd wedyn rydym yn rhedeg allan o terfynau ein amrywiaeth gwirioneddol. 289 00:15:13,630 --> 00:15:16,190 Ble rydym ni eisiau mewn gwirionedd ychwanegu yma. 290 00:15:16,190 --> 00:15:18,610 Dyna harddwch ciw yw hynny i ni, yn weledol iddo 291 00:15:18,610 --> 00:15:22,380 edrych fel y llinell yn mynd fel hyn, ond pan storio mewn strwythur data, 292 00:15:22,380 --> 00:15:29,370 maent yn rhoi fel fel cylch. 293 00:15:29,370 --> 00:15:32,360 Mae'n fath o lapio o gwmpas i flaen yr un ffordd 294 00:15:32,360 --> 00:15:34,780 y gall llinell hefyd lapio o gwmpas yn dibynnu ar ble bynnag yr ydych 295 00:15:34,780 --> 00:15:36,279 eisiau gychwyn y llinell i fod. 296 00:15:36,279 --> 00:15:38,630 Ac felly os ydym yn cymryd edrych i lawr yma, gadewch i ni 297 00:15:38,630 --> 00:15:40,880 dweud ein bod eisiau creu swyddogaeth a elwir yn enqueue. 298 00:15:40,880 --> 00:15:43,980 Roeddem yn awyddus i ychwanegu int n i mewn i'r q. 299 00:15:43,980 --> 00:15:49,250 Os q.size q-- byddwn yn galw bod ein data structure-- os nad yw ein queue.size yn 300 00:15:49,250 --> 00:15:52,520 gyfartal i allu neu os mae'n llai na gallu, 301 00:15:52,520 --> 00:15:55,120 q.strings yn yr amrywiaeth o fewn ein q. 302 00:15:55,120 --> 00:15:58,380 Rydym yn mynd i osod hynny hafal i q.heads, 303 00:15:58,380 --> 00:16:02,730 sydd yn iawn yma, yn ogystal â q.size modwlws gan y gallu, a oedd yn 304 00:16:02,730 --> 00:16:04,290 lapio ni yn ôl o gwmpas yma. 305 00:16:04,290 --> 00:16:08,040 >> Felly, yn yr enghraifft hon, mynegai o pen yn 1, dde? 306 00:16:08,040 --> 00:16:11,480 Mae'r mynegai o faint yn 0, 1, 2, 3, 4. 307 00:16:11,480 --> 00:16:19,500 Felly, gallwn wneud 1 ynghyd â 4 modwlws gan ein capasiti sydd 5. 308 00:16:19,500 --> 00:16:20,920 Beth mae hynny'n ei roi i ni? 309 00:16:20,920 --> 00:16:23,270 Beth yw'r mynegai sy'n yn dod allan o hyn? 310 00:16:23,270 --> 00:16:24,080 >> GYNULLEIDFA: 0. 311 00:16:24,080 --> 00:16:27,870 >> Andi Peng: 0, a oedd yn digwydd bod yn iawn yma, 312 00:16:27,870 --> 00:16:30,640 ac felly yr ydym am fod yn gallu i fewnosod i mewn i dde yma. 313 00:16:30,640 --> 00:16:34,730 Ac felly hafaliad hwn yma garedig o jyst yn gweithio gydag unrhyw rifau 314 00:16:34,730 --> 00:16:36,750 gan ddibynnu ar ble mae eich pen a'ch maint yn cael eu. 315 00:16:36,750 --> 00:16:38,541 Os ydych yn gwybod beth y rhai pethau, eich bod yn gwybod 316 00:16:38,541 --> 00:16:43,170 yn union ble yr hoffech ei fewnosod beth bynnag sydd ar ôl eich ciw. 317 00:16:43,170 --> 00:16:44,640 A yw hynny'n gwneud synnwyr i bawb? 318 00:16:44,640 --> 00:16:48,560 >> Yr wyf yn gwybod fath o ymennydd teaser yn enwedig gan fod hwn 319 00:16:48,560 --> 00:16:50,512 Daeth yn dilyn eich cwis. 320 00:16:50,512 --> 00:16:52,220 Ond gobeithio pawb yn awr yn gallu deall 321 00:16:52,220 --> 00:16:57,800 pam ateb hwn neu hon swyddogaeth yw'r ffordd y mae. 322 00:16:57,800 --> 00:16:59,840 Dylai unrhyw un ychydig yn aneglur ar hynny? 323 00:16:59,840 --> 00:17:03,471 324 00:17:03,471 --> 00:17:03,970 IAWN. 325 00:17:03,970 --> 00:17:07,109 326 00:17:07,109 --> 00:17:09,970 >> Ac felly yn awr, os ydych yn awyddus i dequeue, mae hyn yn 327 00:17:09,970 --> 00:17:15,240 yw lle y byddai ein pen yn symud oherwydd pe baem yn dequeue, 328 00:17:15,240 --> 00:17:17,030 nid ydym yn cymryd oddi ar ddiwedd y q. 329 00:17:17,030 --> 00:17:19,130 Rydym yn awyddus i gymryd oddi ar y pen, dde? 330 00:17:19,130 --> 00:17:24,260 Felly, o ganlyniad, pen yn mynd i newid, a dyna pam pan fyddwch yn enqueue, 331 00:17:24,260 --> 00:17:26,800 mae'n rhaid i chi gadw golwg ar lle eich pen a'ch maint 332 00:17:26,800 --> 00:17:29,450 yn mynd i fod yn gallu mewnosod i mewn i'r safle cywir. 333 00:17:29,450 --> 00:17:32,740 >> Ac felly pan fyddwch yn dequeue, Rwyf hefyd yn pseudocode 'ii maes. 334 00:17:32,740 --> 00:17:35,480 Mae croeso i chi os ydych am i geisio codio hyn allan. 335 00:17:35,480 --> 00:17:36,980 Rydych chi eisiau symud y pen, dde? 336 00:17:36,980 --> 00:17:39,320 Os Roeddwn i eisiau dequeue, yr wyf yn Byddai symud y pen drosodd. 337 00:17:39,320 --> 00:17:40,800 Byddai hyn yn y pen. 338 00:17:40,800 --> 00:17:45,617 >> A byddai ein maint presennol tynnu oherwydd ein bod bellach yn 339 00:17:45,617 --> 00:17:46,950 cael pedair elfen yn y rhesi. 340 00:17:46,950 --> 00:17:51,370 Dim ond tri, ac yna rydym eisiau i ddychwelyd beth bynnag ei ​​storio y tu mewn 341 00:17:51,370 --> 00:17:56,260 y pen gan ein bod am gymryd hyn Gwerth allan mor debyg iawn i'r pentwr. 342 00:17:56,260 --> 00:17:58,010 Dim ond eich bod yn cymryd o le gwahanol, 343 00:17:58,010 --> 00:18:01,770 a rhaid i chi ail-neilltuo i'ch pwyntydd i le gwahanol o ganlyniad. 344 00:18:01,770 --> 00:18:03,890 Yn rhesymegol, pawb ddilyn? 345 00:18:03,890 --> 00:18:05,690 Great. 346 00:18:05,690 --> 00:18:10,156 >> Iawn, felly rydym yn mynd i siarad ychydig fwy manwl am restrau cysylltiedig 347 00:18:10,156 --> 00:18:13,280 oherwydd fe wna nhw fod yn iawn, yn werthfawr iawn ar eich cyfer yn ystod yr wythnos hon yn 348 00:18:13,280 --> 00:18:14,964 psets. 349 00:18:14,964 --> 00:18:17,130 Rhestrau cysylltiedig, wrth i chi guys gallu cofio, pob eu bod yn 350 00:18:17,130 --> 00:18:22,570 yn nodau sy'n cael eu nodau penodol gwerthoedd y ddau gwerth a pwyntydd 351 00:18:22,570 --> 00:18:26,290 sydd wedi eu cysylltu â'i gilydd gan awgrymiadau hynny. 352 00:18:26,290 --> 00:18:29,880 Ac felly y struct ar sut rydym yn creu nod yma yw ein bod 353 00:18:29,880 --> 00:18:33,569 cael int n, sydd yn beth bynnag gwerth mewn siop neu linyn n 354 00:18:33,569 --> 00:18:35,610 neu beth bynnag yr ydych eisiau ei alw, y seren torgoch n. 355 00:18:35,610 --> 00:18:41,482 Seren nôd Struct, sef y pwyntydd eich bod am gael ym mhob nod, 356 00:18:41,482 --> 00:18:43,690 ydych yn mynd i gael y pwynt pwyntydd tuag nesaf. 357 00:18:43,690 --> 00:18:48,207 358 00:18:48,207 --> 00:18:50,040 Byddwch yn cael y pen o restr cysylltiedig sy'n 359 00:18:50,040 --> 00:18:53,140 mynd i bwyntio at weddill gwerthoedd yn y blaen ac yn y blaen 360 00:18:53,140 --> 00:18:55,290 hyd nes y byddwch yn y pen draw yn cyrraedd y diwedd. 361 00:18:55,290 --> 00:18:58,040 Ac mae hyn nod olaf yn unig mynd i oes rhaid pwyntydd. 362 00:18:58,040 --> 00:18:59,952 Mae'n mynd i bwyntio at null, a dyna pryd 363 00:18:59,952 --> 00:19:01,910 eich bod yn gwybod eich bod wedi cyrraedd y diwedd eich rhestr cysylltiedig 364 00:19:01,910 --> 00:19:04,076 yw pan fydd eich pwyntydd ddiwethaf nid yw'n cyfeirio at unrhyw beth. 365 00:19:04,076 --> 00:19:06,670 366 00:19:06,670 --> 00:19:10,990 >> Felly rydym yn mynd i fynd ychydig yn fwy mewn ddyfnder ynglŷn â sut y byddai un o bosibl 367 00:19:10,990 --> 00:19:12,400 chwilio rhestr cysylltiedig. 368 00:19:12,400 --> 00:19:15,460 Cofiwch yr hyn yw rhai o'r anfanteision y rhestrau cysylltiedig 369 00:19:15,460 --> 00:19:19,340 penillion amrywiaeth o ran chwiliadau. 370 00:19:19,340 --> 00:19:22,565 Amrywiaeth gallwch chwilio deuaidd, ond pam na allwch chi wneud hynny mewn rhestr cysylltiedig? 371 00:19:22,565 --> 00:19:26,834 372 00:19:26,834 --> 00:19:30,320 >> GYNULLEIDFA: Oherwydd eu bod i gyd yn gysylltiedig, ond nid ydych yn hollol yn gwybod ble 373 00:19:30,320 --> 00:19:31,330 [Anghlywadwy]. 374 00:19:31,330 --> 00:19:34,600 >> Andi Peng: Yeah, yn union felly cofiwch bod y disgleirdeb amrywiaeth 375 00:19:34,600 --> 00:19:37,190 oedd y ffaith ein bod wedi cael cof hapgyrch lle 376 00:19:37,190 --> 00:19:41,580 os oeddwn i eisiau i'r gwerth o fynegai chwech, gallwn i jyst ddweud mynegai chwech, 377 00:19:41,580 --> 00:19:42,407 rhoi'r gwerth mi. 378 00:19:42,407 --> 00:19:45,240 Ac mae hynny oherwydd araeau yn cael eu datrys mewn gofod cydgyffwrdd o gof 379 00:19:45,240 --> 00:19:48,020 mewn un lle, tra bod fath o restrau cysylltiedig 380 00:19:48,020 --> 00:19:52,820 yn frith ar hap o gwmpas, a'r unig ffordd y gallwch ddod o hyd i un 381 00:19:52,820 --> 00:19:56,890 yw drwy pwyntydd sy'n dweud wrthych cyfeiriad y lle y nod nesaf yw. 382 00:19:56,890 --> 00:20:00,290 >> Ac felly, o ganlyniad, yr unig ffordd i chwilio drwy restr cysylltiedig 383 00:20:00,290 --> 00:20:01,560 yn chwilio llinol. 384 00:20:01,560 --> 00:20:05,890 Gan nad wyf yn gwybod yn union lle mae'r gwerth 12fed yn y rhestr cysylltiedig yw, 385 00:20:05,890 --> 00:20:08,780 Mae'n rhaid i mi groesi'r chyfanrwydd o'r rhestr honno un cysylltiedig 386 00:20:08,780 --> 00:20:12,450 gan un o'r pen i'r nod cyntaf, at yr ail nod, i'r trydydd nod, 387 00:20:12,450 --> 00:20:17,690 holl ffordd i lawr nes i mi o'r diwedd yn cael i ble y nod dwi'n chwilio amdano yw. 388 00:20:17,690 --> 00:20:22,110 Ac felly yn yr ystyr hwn, chwilio ar restr cysylltiedig yw n bob amser. 389 00:20:22,110 --> 00:20:23,040 Mae'n n bob amser. 390 00:20:23,040 --> 00:20:25,690 Mae bob amser mewn amser llinol. 391 00:20:25,690 --> 00:20:28,470 >> Ac felly y cod lle yr ydym yn gweithredu hyn, ac mae hyn 392 00:20:28,470 --> 00:20:32,620 yn ychydig yn newydd i chi guys ers i chi Nid yw guys wedi siarad mewn gwirionedd am neu erioed 393 00:20:32,620 --> 00:20:35,000 awgrymiadau a welir yn sut i chwilio drwy awgrymiadau, 394 00:20:35,000 --> 00:20:37,670 felly byddwn yn cerdded trwy mae hyn iawn, yn araf iawn. 395 00:20:37,670 --> 00:20:40,200 Felly Chwilio bool, ar y dde, gadewch i ni ddychmygu rydym am 396 00:20:40,200 --> 00:20:42,820 i greu swyddogaeth o'r enw chwilio sy'n dychwelyd gwir 397 00:20:42,820 --> 00:20:46,820 os ydych yn dod o hyd i werth y tu mewn i'r cysylltiedig rhestru, ac mae'n dychwelyd ffug fel arall. 398 00:20:46,820 --> 00:20:50,030 Rhestr seren nôd yn Ar hyn o bryd dim ond y pwyntydd 399 00:20:50,030 --> 00:20:52,960 at yr eitem gyntaf yn eich rhestr cysylltiedig. 400 00:20:52,960 --> 00:20:56,700 int n yw'r gwerth eich bod yn chwilio am yn y rhestr honno. 401 00:20:56,700 --> 00:20:58,770 >> Felly pwyntydd seren nôd hafal rhestr. 402 00:20:58,770 --> 00:21:00,970 Mae hynny'n golygu ein bod yn pennu a chreu pwyntydd 403 00:21:00,970 --> 00:21:03,592 at y nod cyntaf tu mewn i'r rhestr. 404 00:21:03,592 --> 00:21:04,300 Mae pawb gyda mi? 405 00:21:04,300 --> 00:21:06,530 Felly, pe baem yn mynd yn yn ôl yma, byddai gennyf 406 00:21:06,530 --> 00:21:13,850 ymgychwyn pwyntydd sy'n cyfeirio at y pennaeth beth bynnag y rhestr yn. 407 00:21:13,850 --> 00:21:18,600 >> Ac yna ar ôl i chi fynd i lawr fan hyn, er nad pwyntydd yn null cyfartal, 408 00:21:18,600 --> 00:21:22,160 felly mae hynny'n ddolen yr ydym yn mynd i fod wedyn yn croesi'r 409 00:21:22,160 --> 00:21:25,940 gweddill ein rhestr oherwydd mae'r hyn yn digwydd pan fydd pwyntydd hafal null? 410 00:21:25,940 --> 00:21:27,550 Rydym yn gwybod ein bod yn have-- 411 00:21:27,550 --> 00:21:28,450 >> GYNULLEIDFA: [Anghlywadwy] 412 00:21:28,450 --> 00:21:31,491 >> Andi Peng: Yn union, felly rydym yn gwybod bod rydym wedi dod i ddiwedd rhestr, dde? 413 00:21:31,491 --> 00:21:34,470 Os byddwch yn mynd yn ôl yma, mae pob nod Dylid pwyntio at nod arall 414 00:21:34,470 --> 00:21:36,550 ac yn y blaen ac yn y blaen hyd nes y byddwch yn taro yn y pen draw 415 00:21:36,550 --> 00:21:41,589 y gynffon eich rhestr cysylltiedig, sydd â pwyntydd mai dim ond 416 00:21:41,589 --> 00:21:43,130 Nid yw pwyntio yn unrhyw le heblaw dim. 417 00:21:43,130 --> 00:21:47,510 Ac felly eich bod yn gwybod bod y bôn eich rhestr mae dal i fyny 418 00:21:47,510 --> 00:21:50,900 hyd nes y pwyntydd nid yw'n gyfartal null oherwydd unwaith y bydd hafal null, 419 00:21:50,900 --> 00:21:53,310 eich bod yn gwybod nad oes dim mwy o stwff. 420 00:21:53,310 --> 00:21:56,930 >> Felly dyna'r ddolen yr ydym ni'n mynd i gael y chwiliad gwirioneddol. 421 00:21:56,930 --> 00:22:01,690 Ac os y pointer-- ydych chi'n gweld y math hwnnw o swyddogaeth saeth yno? 422 00:22:01,690 --> 00:22:06,930 Felly, os bwyntiau pwyntydd i n, os pwyntydd yn n hafal hafal n, 423 00:22:06,930 --> 00:22:09,180 fel eu bod yn golygu os pwyntydd eich bod yn 424 00:22:09,180 --> 00:22:13,420 chwilio am ar ddiwedd pob nod mewn gwirionedd cyfateb i werth 425 00:22:13,420 --> 00:22:15,990 ydych yn chwilio amdano, yna ydych am ddychwelyd wir. 426 00:22:15,990 --> 00:22:19,280 Felly y bôn, os ydych yn nod sy'n Mae gan y gwerth y rydych yn chwilio amdano, 427 00:22:19,280 --> 00:22:23,550 eich bod yn gwybod eich bod wedi bod gallu chwilio yn llwyddiannus. 428 00:22:23,550 --> 00:22:27,150 >> Fel arall, yr ydych am osod eich pwyntydd i'r nod nesaf. 429 00:22:27,150 --> 00:22:28,850 Dyna beth y llinell yma yn ei wneud. 430 00:22:28,850 --> 00:22:31,750 Pointer hafal pwyntydd nesaf. 431 00:22:31,750 --> 00:22:33,360 Mae pawb yn gweld sut mae hynny'n gweithio? 432 00:22:33,360 --> 00:22:36,580 >> Ac yn ei hanfod ydych yn mynd i jyst groesi'r gyfanrwydd y rhestr, 433 00:22:36,580 --> 00:22:41,920 ailosod eich pwyntydd bob tro hyd nes chi yn y pen draw yn cyrraedd y diwedd y rhestr. 434 00:22:41,920 --> 00:22:45,030 A ydych yn gwybod nad oes unrhyw mwy o nodau i chwilio drwy, 435 00:22:45,030 --> 00:22:47,999 ac yna gallwch ddychwelyd ffug oherwydd eich bod yn gwybod bod, oh, wel, 436 00:22:47,999 --> 00:22:50,540 os ydw i wedi llwyddo i chwilio drwy gydol y rhestr. 437 00:22:50,540 --> 00:22:54,530 Os yn yr enghraifft hon, os oeddwn i eisiau i chwilio am werth o 10, 438 00:22:54,530 --> 00:22:57,250 ac yr wyf yn dechrau yn y pen, ac Rwy'n chwilio holl ffordd i lawr, 439 00:22:57,250 --> 00:23:00,550 ac yr wyf yn y pen draw rhaid i hwn, sy'n pwyntydd sy'n pwyntio at null, 440 00:23:00,550 --> 00:23:04,415 Gwn fod, sothach, yr wyf yn dyfalu 10 Nid yw mewn rhestr hon oherwydd ni allwn ddod o hyd iddo. 441 00:23:04,415 --> 00:23:06,520 A dwi'n ar ddiwedd y rhestr. 442 00:23:06,520 --> 00:23:11,040 Ac yn yr achos eich bod yn gwybod Rydw i'n mynd i ddychwelyd ffug. 443 00:23:11,040 --> 00:23:12,900 >> Gadewch bod socian mewn am ychydig bach. 444 00:23:12,900 --> 00:23:17,350 Bydd hyn yn 'n bert pwysig ar gyfer eich pset. 445 00:23:17,350 --> 00:23:21,140 Mae rhesymeg mae'n syml iawn, efallai syntactically jyst roi ar waith. 446 00:23:21,140 --> 00:23:23,365 Rydych guys am wneud yn siŵr eich bod yn deall. 447 00:23:23,365 --> 00:23:25,870 448 00:23:25,870 --> 00:23:27,650 Cool. 449 00:23:27,650 --> 00:23:32,560 >> Iawn, felly sut y byddem yn mewnosod nodau, ar y dde, 450 00:23:32,560 --> 00:23:35,380 i mewn i rhestr oherwydd cofio beth yw beth am y budd-daliadau 451 00:23:35,380 --> 00:23:39,230 o gael rhestr gysylltiedig yn erbyn amrywiaeth o ran storio? 452 00:23:39,230 --> 00:23:41,110 >> GYNULLEIDFA: Mae'n ddeinamig, felly mae'n haws i'r canlynol-- 453 00:23:41,110 --> 00:23:43,180 >> Andi Peng: Yn union, felly mae'n deinamig, sy'n 454 00:23:43,180 --> 00:23:46,880 yn golygu ei fod yn gallu ehangu a crebachu yn dibynnu ar anghenion y defnyddiwr. 455 00:23:46,880 --> 00:23:56,570 Ac felly, yn yr ystyr hwn, nid oes angen i ni i wastraff cof diangen oherwydd fy mod yn 456 00:23:56,570 --> 00:24:00,850 os nad wyf yn gwybod faint o werthoedd yr wyf am i storio, nid yw'n gwneud synnwyr i mi 457 00:24:00,850 --> 00:24:04,310 i greu amrywiaeth oherwydd os wyf am i storio 10 o werthoedd 458 00:24:04,310 --> 00:24:08,380 ac yr wyf yn creu amrywiaeth o 1,000, dyna llawer o wastraffu cof, penodedig. 459 00:24:08,380 --> 00:24:11,180 Dyna pam ein bod am ddefnyddio cysylltiedig rhestr i allu ddeinamig 460 00:24:11,180 --> 00:24:13,860 newid neu crebachu ein maint. 461 00:24:13,860 --> 00:24:17,040 >> Ac felly sy'n gwneud mewnosod ychydig yn fwy cymhleth. 462 00:24:17,040 --> 00:24:20,810 Gan na allwn gael mynediad elfennau ar hap y modd y byddem yn o amrywiaeth. 463 00:24:20,810 --> 00:24:24,270 Os ydw i eisiau i fewnosod elfen i mewn i'r seithfed fynegai, 464 00:24:24,270 --> 00:24:26,930 Gallaf jyst rhowch ei i mewn i'r seithfed mynegai. 465 00:24:26,930 --> 00:24:30,020 Ar restr cysylltiedig, nid yw'n gwneud eithaf yn gweithio mor hawdd, 466 00:24:30,020 --> 00:24:34,947 ac felly os oeddem am i fewnosod yr un yma yn y rhestr cysylltiedig, 467 00:24:34,947 --> 00:24:36,280 ar eu golwg, mae'n hawdd iawn i'w weld. 468 00:24:36,280 --> 00:24:39,363 Rydym yn unig yn awyddus i fewnosod pethau'n iawn yno, i'r dde ar ddechrau'r rhestr, 469 00:24:39,363 --> 00:24:40,840 dde ar ôl pen. 470 00:24:40,840 --> 00:24:44,579 >> Ond mae'r ffordd y mae'n rhaid i ni ail-neilltuo mae'r arwyddion yn ychydig yn ddryslyd fel 471 00:24:44,579 --> 00:24:47,620 neu, yn rhesymegol, mae'n gwneud synnwyr, ond ydych am wneud yn siŵr eich bod wedi ei 472 00:24:47,620 --> 00:24:50,250 yn gyfan gwbl i lawr oherwydd y peth olaf rydych am 473 00:24:50,250 --> 00:24:52,990 yw ail-neilltuo pwyntydd y ffordd yr ydym yn ei wneud yma. 474 00:24:52,990 --> 00:24:58,170 Os ydych dereference y Pointer o ben i 1, 475 00:24:58,170 --> 00:25:01,086 yna yn yr sydyn weddill eich rhestr cysylltiedig 476 00:25:01,086 --> 00:25:04,680 cael ei golli oherwydd bod gennych beidio mewn gwirionedd creu unrhyw beth dros dro. 477 00:25:04,680 --> 00:25:06,220 Mae hynny wedi tynnu sylw at y 2. 478 00:25:06,220 --> 00:25:10,080 Os ydych yn ail-neilltuo pwyntydd, yna bydd y weddill eich rhestr yn cael ei golli yn llwyr. 479 00:25:10,080 --> 00:25:13,310 Felly rydych eisiau bod iawn, yn ofalus iawn yma 480 00:25:13,310 --> 00:25:17,010 i neilltuo gyntaf y pwyntydd o beth bynnag yr ydych 481 00:25:17,010 --> 00:25:20,150 eisiau i fewnosod i mewn i lle bynnag y bo rydych eisiau, ac yna rydych 482 00:25:20,150 --> 00:25:22,710 gall dereference weddill eich rhestr. 483 00:25:22,710 --> 00:25:25,250 >> Felly, mae hyn yn gwneud cais am ble bynnag ydych yn ceisio ei fewnosod i mewn. 484 00:25:25,250 --> 00:25:27,520 Os ydych am i fewnosod yn y ben, os ydych am ei ateb yma, 485 00:25:27,520 --> 00:25:29,455 os ydych am mewnosoder ar y diwedd, yn dda, diwedd yr wyf yn 486 00:25:29,455 --> 00:25:30,910 dyfalu y byddech yn unig yn cael unrhyw pwyntydd, ond rydych yn 487 00:25:30,910 --> 00:25:33,830 eisiau gwneud yn siŵr nad ydych yn ei wneud colli gweddill eich rhestr. 488 00:25:33,830 --> 00:25:36,640 Rydych chi bob amser yn awyddus i wneud yn siŵr eich nod newydd yn pwyntio 489 00:25:36,640 --> 00:25:39,330 tuag at beth bynnag yr ydych eisiau i fewnosod i mewn i, 490 00:25:39,330 --> 00:25:42,170 ac yna gallwch ychwanegu'r gadwyno ymlaen. 491 00:25:42,170 --> 00:25:43,330 Mae pawb yn glir? 492 00:25:43,330 --> 00:25:45,427 >> Mae hyn yn mynd i fod un o'r materion go iawn. 493 00:25:45,427 --> 00:25:48,010 Un o'r rhan fwyaf o faterion o bwys rydych yn mynd i gael ar eich pset 494 00:25:48,010 --> 00:25:51,340 yw eich bod yn mynd i geisio creu rhestr cysylltiedig a phethau mewnosoder 495 00:25:51,340 --> 00:25:53,340 ond yna dim ond yn colli'r weddill eich rhestr cysylltiedig. 496 00:25:53,340 --> 00:25:54,900 A ydych yn mynd i fod fel, yr wyf yn ddim yn gwybod pam fod hyn yn digwydd? 497 00:25:54,900 --> 00:25:58,040 Ac mae'n boen i fynd drwy'r a chwilio pob un o'ch awgrymiadau. 498 00:25:58,040 --> 00:26:02,100 >> Ac yr wyf yn eich sicrhau ar pset hwn, ysgrifennu a thynnu nodau hyn allan 499 00:26:02,100 --> 00:26:03,344 yn iawn, yn ddefnyddiol iawn. 500 00:26:03,344 --> 00:26:06,010 Fel y gallwch llwyr gadw golwg o ble mae eich holl awgrymiadau chi, 501 00:26:06,010 --> 00:26:08,540 beth sy'n mynd o'i le, lle mae eich holl nodau chi, 502 00:26:08,540 --> 00:26:12,660 beth sydd angen i chi ei wneud i gael mynediad neu mewnosod neu ddileu neu unrhyw un ohonynt. 503 00:26:12,660 --> 00:26:14,550 Mae pawb yn dda â hynny? 504 00:26:14,550 --> 00:26:15,050 Cool. 505 00:26:15,050 --> 00:26:19,300 506 00:26:19,300 --> 00:26:22,600 >> Felly, os ydym am edrych ar y cod? 507 00:26:22,600 --> 00:26:24,470 O, nid wyf yn gwybod a ydym Gall weld the-- Iawn, felly 508 00:26:24,470 --> 00:26:27,940 ar y brig i gyd, mae'n yn swyddogaeth mewnosod a enwir lle rydym eisiau 509 00:26:27,940 --> 00:26:31,365 i fewnosod int n i mewn i'r rhestr cysylltiedig. 510 00:26:31,365 --> 00:26:32,740 Rydym yn mynd i gerdded drwy'r hyn. 511 00:26:32,740 --> 00:26:34,770 Mae'n llawer o god, mae llawer o gystrawennau newydd. 512 00:26:34,770 --> 00:26:36,220 Byddwn yn iawn. 513 00:26:36,220 --> 00:26:39,120 >> Felly, i fyny ar y brig, pryd bynnag y rydym eisiau creu unrhyw beth 514 00:26:39,120 --> 00:26:42,380 beth sydd angen i ni ei wneud, yn enwedig os ydych am iddo beidio cael ei storio ar y pentwr 515 00:26:42,380 --> 00:26:43,920 ond yn y domen? 516 00:26:43,920 --> 00:26:45,460 Rydym yn mynd i malloc, dde? 517 00:26:45,460 --> 00:26:48,240 Felly rydym yn mynd i greu pwyntydd. 518 00:26:48,240 --> 00:26:52,074 Nôd, pwyntydd, gyfartal newydd malloc yr un maint â nôd 519 00:26:52,074 --> 00:26:53,740 oherwydd yr ydym am y nod i gael eu creu. 520 00:26:53,740 --> 00:26:56,720 Rydym am faint o cof bod nod yn cymryd i fyny 521 00:26:56,720 --> 00:26:59,300 i gael eu glustnodwyd ar gyfer y creu y nôd newydd. 522 00:26:59,300 --> 00:27:02,270 >> Ac yna rydym yn mynd i edrych i weld os hafal newydd yn hafal null. 523 00:27:02,270 --> 00:27:03,370 Cofiwch yr hyn a ddywedodd yr ydym? 524 00:27:03,370 --> 00:27:06,470 Beth bynnag y byddwch malloc, yr hyn y mae'n rhaid i chi bob amser yn ei wneud? 525 00:27:06,470 --> 00:27:09,490 Rhaid i chi bob amser yn edrych i weld a yw hynny'n null. 526 00:27:09,490 --> 00:27:13,620 >> Er enghraifft, os yw eich gweithredu system yn hollol lawn, 527 00:27:13,620 --> 00:27:17,060 os oedd gennych ddim mwy gof yn i gyd ac ydych yn ceisio malloc, 528 00:27:17,060 --> 00:27:18,410 byddai'n dychwelyd null i chi. 529 00:27:18,410 --> 00:27:21,094 Ac felly os ydych yn ceisio ei ddefnyddio pan oedd yn pwyntio at null, 530 00:27:21,094 --> 00:27:23,260 Nid ydych yn mynd i allu i gael gafael ar y wybodaeth honno. 531 00:27:23,260 --> 00:27:27,010 Ac felly fel y cyfryw, roeddem am wneud yn siwr bod pryd bynnag y byddwch chi'n mallocing, 532 00:27:27,010 --> 00:27:30,500 eich bod bob amser yn edrych i weld a oes y gof a roddwyd i chi yn null. 533 00:27:30,500 --> 00:27:33,670 Ac os nad yw'n, yna gallwn symud ymlaen gyda gweddill ein cod. 534 00:27:33,670 --> 00:27:36,140 >> Felly rydym yn mynd i ymgychwyn y nôd newydd. 535 00:27:36,140 --> 00:27:39,050 Rydym yn mynd i wneud n newydd hafal n. 536 00:27:39,050 --> 00:27:42,390 Ac yna rydym yn mynd i wneud gosod newydd y pwyntydd ar newydd 537 00:27:42,390 --> 00:27:46,900 i null oherwydd ar hyn o bryd nid ydym yn ei wneud eisiau dim byd iddo cyfeirio at. 538 00:27:46,900 --> 00:27:48,755 Nid oes gennym unrhyw syniad lle mae'n mynd i roi i chi, 539 00:27:48,755 --> 00:27:50,630 ac yna os ydym eisiau mewnosoder hynny ar y pen, 540 00:27:50,630 --> 00:27:53,820 yna gallwn ail-neilltuo pwyntydd i'r pen. 541 00:27:53,820 --> 00:27:58,530 Ydy pawb yn dilyn y rhesymeg o gyflwr lle mae hynny'n digwydd? 542 00:27:58,530 --> 00:28:02,502 >> Y cyfan yr ydym yn ei wneud yn creu newydd nod, gan osod y pwyntydd i null, 543 00:28:02,502 --> 00:28:04,210 ac yna ailgyfeirio i'r pen os ydym 544 00:28:04,210 --> 00:28:06,320 yn gwybod ein bod am i fewnosod hynny ar y pen. 545 00:28:06,320 --> 00:28:09,420 Ac yna y pennaeth yn mynd i pwyntio tuag at y nod newydd. 546 00:28:09,420 --> 00:28:11,060 Mae pawb yn iawn gyda hynny? 547 00:28:11,060 --> 00:28:12,380 >> Felly mae'n broses dau gam. 548 00:28:12,380 --> 00:28:14,760 Mae'n rhaid i chi aseinio cyntaf beth bynnag rydych yn ei greu. 549 00:28:14,760 --> 00:28:18,260 Gosodwch y pwyntydd i'r cyfeirio, ac yna rydych 550 00:28:18,260 --> 00:28:21,400 gall fath o dereference pwyntydd cyntaf 551 00:28:21,400 --> 00:28:22,972 ac yn pwyntio tuag at y nod newydd. 552 00:28:22,972 --> 00:28:25,680 Ble bynnag yr ydych eisiau ei fewnosod, y rhesymeg yn mynd i dal yn wir. 553 00:28:25,680 --> 00:28:27,530 >> Mae'n fath o fel aseinio newidynnau dros dro. 554 00:28:27,530 --> 00:28:28,700 Cofiwch, mae gennych i wneud yn siŵr eich bod yn 555 00:28:28,700 --> 00:28:30,346 peidiwch â cholli golwg ar os ydych yn cyfnewid. 556 00:28:30,346 --> 00:28:33,470 Y byddwch am wneud yn siŵr eich bod yn cael newidyn dros dro y math hwnnw o yn cadw 557 00:28:33,470 --> 00:28:35,620 cofnod o ble y peth yn cael ei storio er mwyn i chi 558 00:28:35,620 --> 00:28:41,190 peidiwch â cholli unrhyw werth yn y cwrs o fel chwarae o gwmpas ag ef. 559 00:28:41,190 --> 00:28:42,710 >> Iawn, felly bydd cod fod yma. 560 00:28:42,710 --> 00:28:45,020 Rydych guys gymryd golwg ar ôl adran. 561 00:28:45,020 --> 00:28:48,060 Bydd yn yno. 562 00:28:48,060 --> 00:28:50,280 >> Felly, yr wyf yn dyfalu sut mae mae hyn yn wahanol os ydym eisiau 563 00:28:50,280 --> 00:28:52,300 i fewnosod i mewn i'r canol neu'r diwedd? 564 00:28:52,300 --> 00:28:57,892 A oes unrhyw un gennych syniad o'r hyn sydd y pseudocode gan fod y cyfeiriad rhesymegol 565 00:28:57,892 --> 00:29:00,350 y byddem yn eu cymryd os oeddem am i fewnosod yn y canol? 566 00:29:00,350 --> 00:29:03,391 Felly, os oeddem am i fewnosod hynny ar y pen, popeth a wnawn yn creu nod newydd. 567 00:29:03,391 --> 00:29:06,311 Rydym yn gosod y pwyntydd y nod newydd i beth bynnag y pennaeth, 568 00:29:06,311 --> 00:29:08,310 ac yna rydym yn gosod y pen at y nod newydd, dde? 569 00:29:08,310 --> 00:29:11,560 Os ydym yn awyddus i fewnosod yn y canol y rhestr, yr hyn byddai'n rhaid i ni ei wneud? 570 00:29:11,560 --> 00:29:14,108 571 00:29:14,108 --> 00:29:16,110 >> GYNULLEIDFA: Byddai'n dal fod yn broses debyg 572 00:29:16,110 --> 00:29:19,114 o fel pennu pwyntydd a Yna aseinio y pwyntydd, 573 00:29:19,114 --> 00:29:20,530 ond byddai'n rhaid i ni ddod o hyd yno. 574 00:29:20,530 --> 00:29:23,560 >> Andi Peng: Yn union, felly yn union yr un broses ac eithrio chi 575 00:29:23,560 --> 00:29:27,820 rhaid i leoli ble yn union rydych eisiau bod pwyntydd newydd i fynd i mewn, 576 00:29:27,820 --> 00:29:44,790 felly os wyf am i fewnosod i mewn i canol cysylltiedig list-- OK, 577 00:29:44,790 --> 00:29:46,370 gadewch i ni ddweud dyna ein rhestr cysylltiedig. 578 00:29:46,370 --> 00:29:49,500 Os ydym am i fewnosod yn iawn fan hyn, rydym yn mynd i greu nod newydd. 579 00:29:49,500 --> 00:29:50,520 Rydym yn mynd i malloc. 580 00:29:50,520 --> 00:29:52,220 Rydym yn mynd i greu nod newydd. 581 00:29:52,220 --> 00:29:55,940 Rydym yn mynd i aseinio'r pwyntydd y nôd hwn yma. 582 00:29:55,940 --> 00:29:58,335 >> Ond y broblem sy'n wahanol o ble mae'r pennaeth yn 583 00:29:58,335 --> 00:30:00,490 yw ein bod yn gwybod yn union lle mae'r pen yn. 584 00:30:00,490 --> 00:30:01,930 Yr oedd yn iawn ar y cyntaf, dde? 585 00:30:01,930 --> 00:30:04,870 Ond yma mae'n rhaid i gadw golwg o ble rydym yn gosod i mewn. 586 00:30:04,870 --> 00:30:07,930 Os ydym yn mewnosod ein nod yma, rydym wedi cael 587 00:30:07,930 --> 00:30:12,270 i wneud yn siŵr bod y un blaenorol i nod hwn 588 00:30:12,270 --> 00:30:14,172 yw'r un sy'n reassigns pwyntydd. 589 00:30:14,172 --> 00:30:16,380 Felly, yna rhaid i chi math o gadw golwg ar ddau beth. 590 00:30:16,380 --> 00:30:19,420 Os ydych yn cadw golwg ar ble hwn nôd o bryd yn gosod i mewn. 591 00:30:19,420 --> 00:30:23,280 Hefyd, rhaid i chi gadw cofnod o ble y nôd blaenorol a ydych yn edrych ar 592 00:30:23,280 --> 00:30:24,340 Roedd hefyd yno. 593 00:30:24,340 --> 00:30:25,830 Mae pawb yn dda â hynny? 594 00:30:25,830 --> 00:30:26,500 IAWN. 595 00:30:26,500 --> 00:30:28,000 >> Beth am fewnosod yn y diwedd? 596 00:30:28,000 --> 00:30:34,220 Os oeddwn i eisiau ei ychwanegu Yma-- os oeddwn i eisiau i ychwanegu nod newydd ar ddiwedd y rhestr, 597 00:30:34,220 --> 00:30:37,009 sut y gallwn fynd ati i wneud hynny? 598 00:30:37,009 --> 00:30:39,300 GYNULLEIDFA: Felly ar hyn o bryd, mae'r Nododd un olaf i null. 599 00:30:39,300 --> 00:30:40,960 Andi Peng: Yeah. 600 00:30:40,960 --> 00:30:43,560 Yn union, felly mae hyn yn un hyn o bryd yn tynnu sylw at ei wybod, 601 00:30:43,560 --> 00:30:46,720 ac felly yr wyf yn dyfalu, yn yr ystyr hwn, mae'n hawdd iawn i ychwanegu at ddiwedd y rhestr. 602 00:30:46,720 --> 00:30:51,810 Y cyfan sydd raid i chi ei wneud yw gosod cyfartal i null ac yna ffyniant. 603 00:30:51,810 --> 00:30:53,070 Iawn yno, yn hawdd iawn. 604 00:30:53,070 --> 00:30:53,960 Syml iawn. 605 00:30:53,960 --> 00:30:56,430 >> Debyg iawn i'r pen, ond yn rhesymegol chi 606 00:30:56,430 --> 00:30:59,690 eisiau gwneud yn siŵr bod y camau byddwch yn eu cymryd tuag at wneud unrhyw ran o hyn, 607 00:30:59,690 --> 00:31:01,500 eich bod yn dilyn ar hyd. 608 00:31:01,500 --> 00:31:04,420 Mae'n hawdd iawn i, yn y canol eich cod, yn cael eu dal i fyny ar, 609 00:31:04,420 --> 00:31:05,671 oh, mae gen i gymaint o awgrymiadau. 610 00:31:05,671 --> 00:31:07,461 Nid wyf yn gwybod ble unrhyw beth yn pwyntio i. 611 00:31:07,461 --> 00:31:09,170 Dydw i ddim hyd yn oed yn gwybod pa nod dwi ar. 612 00:31:09,170 --> 00:31:11,490 Beth sy'n Digwydd? 613 00:31:11,490 --> 00:31:13,620 >> Ymlaciwch, ymdawelu, gymryd anadl ddofn. 614 00:31:13,620 --> 00:31:15,530 Tynnwch allan eich rhestr cysylltiedig. 615 00:31:15,530 --> 00:31:18,800 Os ydych yn dweud, yr wyf yn gwybod ble yn union Mae angen i mi mewnosod hyn i 616 00:31:18,800 --> 00:31:22,970 ac yr wyf yn gwybod yn union sut i ail-neilltuo fy awgrymiadau, llawer, llawer haws i'w llun 617 00:31:22,970 --> 00:31:27,200 out-- llawer, llawer haws i beidio mynd ar goll yn y bygiau eich cod. 618 00:31:27,200 --> 00:31:29,410 Mae pawb yn iawn gyda hynny? 619 00:31:29,410 --> 00:31:31,380 IAWN. 620 00:31:31,380 --> 00:31:35,120 >> Felly, yr wyf yn dyfalu yn gysyniad nad ydym wedi Siaradodd wir am cyn hyn, 621 00:31:35,120 --> 00:31:38,131 ac yr wyf yn dyfalu mae'n debyg Ni fydd yn dod ar draws llawer yet-- 622 00:31:38,131 --> 00:31:40,880 mae'n fath o concept-- uwch yw ein bod mewn gwirionedd yn cael data 623 00:31:40,880 --> 00:31:43,900 strwythur a elwir yn rhestr gysylltiedig ddwbl. 624 00:31:43,900 --> 00:31:46,390 Felly, fel y gallwch weld guys, cyfan yr ydym yn ei wneud yw creu 625 00:31:46,390 --> 00:31:50,400 gwerth gwirioneddol, ychwanegol pwyntydd ar bob un o'n nodau 626 00:31:50,400 --> 00:31:52,660 hynny hefyd yn cyfeirio at y nôd blaenorol. 627 00:31:52,660 --> 00:31:58,170 Felly, nid yn unig yr ydym wedi ein nodau pwyntio i'r un nesaf. 628 00:31:58,170 --> 00:32:01,430 Maent hefyd yn cyfeirio at yr un blaenorol. 629 00:32:01,430 --> 00:32:04,310 Rydw i'n mynd i anwybyddu'r ddau yma ar hyn o bryd. 630 00:32:04,310 --> 00:32:06,740 >> Felly, yna mae gennych gadwyn sy'n gallu symud y ddwy ffordd, 631 00:32:06,740 --> 00:32:09,630 ac yna mae'n ychydig yn haws i ddilyn ar hyd rhesymegol. 632 00:32:09,630 --> 00:32:11,896 Fel yma, yn hytrach na cadw golwg ar, oh, yr wyf yn 633 00:32:11,896 --> 00:32:14,520 rhaid i gwybod bod nod hwn yr un sydd rhaid i mi ei ail-neilltuo, 634 00:32:14,520 --> 00:32:17,532 Gallaf fynd yma ac dim ond tynnu y blaenorol. 635 00:32:17,532 --> 00:32:19,490 Yna mi yn gwybod yn union lle hynny yw, ac yna rydych 636 00:32:19,490 --> 00:32:21,130 Nid oes rhaid i groesi'r gyfanrwydd y rhestr cysylltiedig. 637 00:32:21,130 --> 00:32:22,180 Mae'n ychydig yn haws. 638 00:32:22,180 --> 00:32:24,960 >> Ond fel y cyfryw, mae gennych ddwbl faint o awgrymiadau, 639 00:32:24,960 --> 00:32:26,960 dyna ddwbl y swm o gof. 640 00:32:26,960 --> 00:32:28,950 Mae'n llawer o awgrymiadau i gadw golwg ar. 641 00:32:28,950 --> 00:32:32,140 Mae'n ychydig yn fwy cymhleth, ond mae'n ychydig yn fwy cyfeillgar i'r defnyddiwr, yn dibynnu 642 00:32:32,140 --> 00:32:34,080 ar yr hyn yr ydych yn ceisio ei gyflawni. 643 00:32:34,080 --> 00:32:36,910 >> Felly y math hwn o ddata strwythur yn bodoli yn llwyr, 644 00:32:36,910 --> 00:32:40,280 ac mae'r strwythur ar gyfer yn iawn, iawn syml ac eithrio yr holl ydych chi'n cael yw, 645 00:32:40,280 --> 00:32:43,850 hytrach na dim ond pwyntydd i'r nesaf, byddwch hefyd yn cael pwyntydd i blaenorol. 646 00:32:43,850 --> 00:32:45,940 Dyna i gyd y gwahaniaeth yn. 647 00:32:45,940 --> 00:32:47,740 Mae pawb yn dda â hynny? 648 00:32:47,740 --> 00:32:48,240 Cool. 649 00:32:48,240 --> 00:32:50,940 650 00:32:50,940 --> 00:32:53,280 >> Mae pob hawl, felly nawr rwy'n i 'n sylweddol yn gwario yn ôl pob tebyg 651 00:32:53,280 --> 00:32:56,870 fel 15 i 20 munud neu y rhan fwyaf o weddill yr amser yn adran 652 00:32:56,870 --> 00:32:58,360 siarad am tablau hash. 653 00:32:58,360 --> 00:33:02,590 Faint ohonoch chi guys wedi darllen spec pset5? 654 00:33:02,590 --> 00:33:03,620 Mae pob hawl, yn dda. 655 00:33:03,620 --> 00:33:06,160 Dyna uwch na'r 50% o fel arfer. 656 00:33:06,160 --> 00:33:07,560 Mae'n iawn. 657 00:33:07,560 --> 00:33:10,345 >> Felly, fel y byddwch yn guys yn gweld, eich bod yn her mewn pset5 658 00:33:10,345 --> 00:33:16,790 Bydd yn gweithredu geiriadur lle rydych yn llwytho mwy na 140,000 o eiriau 659 00:33:16,790 --> 00:33:20,610 ein bod yn rhoi ac yn gwirio sillafu i chi yn erbyn pob un o'r testun. 660 00:33:20,610 --> 00:33:22,580 Byddwn yn rhoi i chi ar hap darnau o lenyddiaeth. 661 00:33:22,580 --> 00:33:23,520 Byddwn yn rhoi Mae'r Odyssey chi. 662 00:33:23,520 --> 00:33:24,561 Byddwn yn rhoi The Iliad i chi. 663 00:33:24,561 --> 00:33:26,350 Byddwn yn rhoi Austin Powers i chi. 664 00:33:26,350 --> 00:33:28,220 >> Ac yn eich her fydd cywirydd sillafu 665 00:33:28,220 --> 00:33:31,760 pob gair yn yr holl o eiriaduron rhai 666 00:33:31,760 --> 00:33:34,960 yn y bôn â'n gwiriwr sillafu. 667 00:33:34,960 --> 00:33:38,620 Ac felly mae ychydig o rannau o greu pset hwn, 668 00:33:38,620 --> 00:33:41,970 yn gyntaf eich bod am fod gallu llwytho mewn gwirionedd 669 00:33:41,970 --> 00:33:43,970 yr holl eiriau i mewn i'ch geiriadur, ac yna rydych 670 00:33:43,970 --> 00:33:45,530 am fod yn gallu i gwirio sillafu pob un ohonynt. 671 00:33:45,530 --> 00:33:48,780 Ac felly fel y cyfryw, rydych yn mynd i'w gwneud yn ofynnol strwythur data y gellir gwneud hyn yn gyflym 672 00:33:48,780 --> 00:33:50,790 ac yn effeithlon ac yn ddeinamig. 673 00:33:50,790 --> 00:33:52,900 >> Felly, mae'n debyg yr hawsaf ffordd o wneud hyn, byddwch yn 674 00:33:52,900 --> 00:33:55,010 mae'n debyg y byddai creu amrywiaeth, dde? 675 00:33:55,010 --> 00:33:58,910 Y ffordd hawsaf o storfa yw eich Gall creu amrywiaeth o 140,000 o eiriau 676 00:33:58,910 --> 00:34:03,400 a dim ond nhw i gyd yn gosod yno ac yna eu croesi drwy chwilio deuaidd 677 00:34:03,400 --> 00:34:06,780 neu drwy dewisiadau neu not-- Mae'n ddrwg sy'n didoli. 678 00:34:06,780 --> 00:34:10,729 Gallwch eu didoli ac yna eu croesi trwy chwilio deuaidd neu chwilio yn unig llinellol 679 00:34:10,729 --> 00:34:13,730 a dim ond terfynol y geiriau, ond bod yn cymryd llawer iawn o gof, 680 00:34:13,730 --> 00:34:15,190 ac nid yw'n effeithlon iawn. 681 00:34:15,190 --> 00:34:18,350 >> Ac felly rydym yn mynd i ddechrau siarad am ffyrdd o wneud 682 00:34:18,350 --> 00:34:20,110 ein hamser yn rhedeg yn fwy effeithlon. 683 00:34:20,110 --> 00:34:23,190 Ac mae ein nod yw cael amser cyson lle 684 00:34:23,190 --> 00:34:25,810 'i' bron fel araeau, lle mae gennych fynediad y pryd. 685 00:34:25,810 --> 00:34:28,560 Os wyf yn awyddus i chwilio am unrhyw beth, Rwyf am fod yn gallu gyfiawn, 686 00:34:28,560 --> 00:34:30,810 ffyniant, yn ei chael yn union, a thynnu allan. 687 00:34:30,810 --> 00:34:34,100 Ac felly strwythur lle byddwn yn dod yn agos iawn 688 00:34:34,100 --> 00:34:37,569 i allu cael mynediad cyson amser, mae hyn greal sanctaidd 689 00:34:37,569 --> 00:34:41,370 mewn rhaglenni o cyson Gelwir amser tabl hash. 690 00:34:41,370 --> 00:34:45,370 Ac felly soniodd David eisoes y [Anghlywadwy] ychydig yn y ddarlith, 691 00:34:45,370 --> 00:34:49,100 ond rydyn ni'n mynd i 'n sylweddol plymio yn y dwfn yr wythnos hon 692 00:34:49,100 --> 00:34:51,780 ar ddarn sy'n ynglŷn â sut tabl hash yn gweithio. 693 00:34:51,780 --> 00:34:53,949 >> Felly, y ffordd y mae hash gwaith bwrdd, er enghraifft, 694 00:34:53,949 --> 00:35:00,230 os oeddwn i eisiau i storio bagad o eiriau, a criw o eiriau yn yr iaith Saesneg, 695 00:35:00,230 --> 00:35:02,940 Gallwn roi ddamcaniaethol banana, afal, kiwi, mango, pâr, 696 00:35:02,940 --> 00:35:04,980 a cantaloupe i gyd ar ddim ond arae. 697 00:35:04,980 --> 00:35:07,044 Gallai Maent i gyd yn ffitio i mewn a bod yn dod o hyd. 698 00:35:07,044 --> 00:35:09,210 Byddai'n fath o boen i chwilio drwy a mynediad, 699 00:35:09,210 --> 00:35:12,920 ond y ffordd haws o wneud hyn yw y gallwn greu mewn gwirionedd strwythur 700 00:35:12,920 --> 00:35:15,680 Gelwir tabl hash lle rydym hash. 701 00:35:15,680 --> 00:35:19,880 Rydym yn rhedeg ein holl allweddi drwy swyddogaeth hash, hafaliad, 702 00:35:19,880 --> 00:35:22,600 bod nhw i gyd yn troi i mewn rhyw fath o werth 703 00:35:22,600 --> 00:35:28,740 bod yna gallwn storio ar ei hanfod amrywiaeth o rhestr gysylltiedig. 704 00:35:28,740 --> 00:35:32,570 >> Ac felly yma, os oeddem am i storio geiriau Saesneg, 705 00:35:32,570 --> 00:35:37,250 gallem o bosibl yn unig, nid wyf yn ei wneud gwybod, trowch holl lythyrau cyntaf 706 00:35:37,250 --> 00:35:39,630 i mewn i ryw fath o nifer. 707 00:35:39,630 --> 00:35:43,140 Ac felly, er enghraifft, os oeddwn i eisiau A i yn gyfystyr â apple-- 708 00:35:43,140 --> 00:35:47,460 neu gyda mynegai o 0, a B i fod yn gyfystyr â 1, 709 00:35:47,460 --> 00:35:51,030 gallwn gael 26 o geisiadau Gall mai dim ond storio 710 00:35:51,030 --> 00:35:53,610 pob un o'r lythrennau'r wyddor y byddwn yn dechrau gyda. 711 00:35:53,610 --> 00:35:56,130 Ac yna gallwn gael afal yn y mynegai 0. 712 00:35:56,130 --> 00:35:59,160 Gallwn gael banana yn y mynegai 1, cantaloupe ar y mynegai o 2, 713 00:35:59,160 --> 00:36:00,540 ac yn y blaen ac yn y blaen. 714 00:36:00,540 --> 00:36:04,460 Ac felly os oeddwn i eisiau i chwilio fy mwrdd a mynediad afal hash, 715 00:36:04,460 --> 00:36:07,560 Rwy'n gwybod afal yn dechrau gyda A, ac yr wyf yn gwybod yn union 716 00:36:07,560 --> 00:36:10,860 bod rhaid iddo fod a hash tabl ar fynegai 0 oherwydd 717 00:36:10,860 --> 00:36:13,620 y swyddogaeth a bennwyd yn flaenorol. 718 00:36:13,620 --> 00:36:16,572 >> Felly, nid wyf yn gwybod, yr ydym yn rhaglen defnyddiwr lle 719 00:36:16,572 --> 00:36:18,780 byddwch yn cael eich cyhuddo o arbitrarily-- nid yn fympwyol, 720 00:36:18,780 --> 00:36:22,530 â cheisio feddylgar meddwl o hafaliadau da 721 00:36:22,530 --> 00:36:25,460 i allu lledaenu allan pob un o'ch gwerthoedd 722 00:36:25,460 --> 00:36:29,370 mewn ffordd y gallant gael mynediad hawdd yn nes ymlaen â thebyg hafaliad 723 00:36:29,370 --> 00:36:31,130 eich bod chi, eich hun, yn gwybod. 724 00:36:31,130 --> 00:36:35,210 Felly, yn yr ystyr os wyf eisiau mynd i mango, yr wyf yn gwybod, o, mae'n dechrau gyda m. 725 00:36:35,210 --> 00:36:37,134 Rhaid iddo fod yn y mynegai 12. 726 00:36:37,134 --> 00:36:38,800 Nid oes rhaid i mi chwilio drwy unrhyw beth. 727 00:36:38,800 --> 00:36:42,080 Rwy'n gwybod exactly-- gallwn i jyst yn mynd i y mynegai 12 a thynnu hynny allan. 728 00:36:42,080 --> 00:36:45,520 >> Mae pawb yn glir ynglŷn â sut mae swyddogaeth tabl hash yn gweithio? 729 00:36:45,520 --> 00:36:48,380 Mae'n fath o ychydig amrywiaeth fwy cymhleth. 730 00:36:48,380 --> 00:36:50,010 Dyna i gyd y mae. 731 00:36:50,010 --> 00:36:51,630 IAWN. 732 00:36:51,630 --> 00:36:57,690 >> Felly, yr wyf yn dyfalu rydym yn rhedeg i mewn i rhifyn hwn o beth 733 00:36:57,690 --> 00:37:06,390 fydd yn digwydd os oes gennych bethau lluosog sy'n rhoi yr un mynegai i chi? 734 00:37:06,390 --> 00:37:10,570 Felly, yn dweud ein swyddogaeth, popeth o fewn ei wnaeth oedd cymryd y llythyr cyntaf 735 00:37:10,570 --> 00:37:14,490 a throi i mewn i hynny priod 0 trwy 25 mynegai. 736 00:37:14,490 --> 00:37:17,137 Mae hynny'n hollol iawn os mai dim ond un o bob un. 737 00:37:17,137 --> 00:37:18,970 Ond mae'r ail i chi ddechrau cael mwy, rydych yn 738 00:37:18,970 --> 00:37:20,910 mynd i gael hyn a elwir yn gwrthdrawiad. 739 00:37:20,910 --> 00:37:25,580 >> Felly, os wyf yn ceisio i fewnosod claddu i mewn i hash tabl sydd banana yn barod arno, 740 00:37:25,580 --> 00:37:27,870 beth sy'n mynd i ddigwydd pan byddwch yn ceisio mewnosod hynny? 741 00:37:27,870 --> 00:37:30,930 Pethau drwg oherwydd banana yn bodoli eisoes o fewn y mynegai 742 00:37:30,930 --> 00:37:33,800 eich bod am ei storio mewn. 743 00:37:33,800 --> 00:37:35,560 Berry fath o yn debyg, AH, beth ddylwn i ei wneud? 744 00:37:35,560 --> 00:37:37,080 Nid wyf yn gwybod ble i fynd. 745 00:37:37,080 --> 00:37:38,410 Sut mae datrys hyn? 746 00:37:38,410 --> 00:37:41,150 >> Ac felly byddwch yn guys fath o gweld byddwn yn gwneud hyn beth anodd 747 00:37:41,150 --> 00:37:44,810 lle y gallwn fath o mewn gwirionedd creu rhestr gysylltiedig yn ein arae. 748 00:37:44,810 --> 00:37:46,840 Ac felly y ffordd hawsaf i feddwl am hyn, 749 00:37:46,840 --> 00:37:50,830 pob tabl hash yn amrywiaeth o restrau cysylltiedig. 750 00:37:50,830 --> 00:37:55,670 Ac felly, yn yr ystyr hwnnw, mae gennych mae hyn amrywiaeth hardd o awgrymiadau, 751 00:37:55,670 --> 00:37:58,740 ac yna mae pob pwyntydd yn sy'n gwerthfawrogi, yn y mynegai, 752 00:37:58,740 --> 00:38:00,740 Gall mewn gwirionedd yn cyfeirio at bethau eraill. 753 00:38:00,740 --> 00:38:05,720 Ac er mwyn i chi gael y rhain i gyd ar wahân cadwyni dod oddi ar un amrywiaeth mawr. 754 00:38:05,720 --> 00:38:07,960 >> Ac felly yma, os wyf yn eisiau i fewnosod aeron, 755 00:38:07,960 --> 00:38:11,220 Yr wyf yn gwybod, OK, dw i'n mynd i fewnbynnu drwy fy swyddogaeth hash. 756 00:38:11,220 --> 00:38:15,070 Rydw i'n mynd i roi diwedd ar i fyny gyda y mynegai 1, ac yna dwi'n mynd i fod yn gallu cael 757 00:38:15,070 --> 00:38:20,410 dim ond is-set lai o hyn Geiriadur 140,000 o eiriau mawr. 758 00:38:20,410 --> 00:38:24,220 Ac yna gallaf dim ond yn edrych trwy 1/26 o hynny. 759 00:38:24,220 --> 00:38:27,910 >> Ac felly yna gallaf jyst rhowch aeron naill ai cyn neu ar ôl banana 760 00:38:27,910 --> 00:38:28,820 yn yr achos hwn? 761 00:38:28,820 --> 00:38:29,700 Ar ôl, dde? 762 00:38:29,700 --> 00:38:33,920 Ac felly rydych yn mynd i eisiau mewnosod nod hwn ar ôl banana, 763 00:38:33,920 --> 00:38:36,667 ac felly rydych yn mynd i fewnosod yn y gynffon y rhestr cysylltiedig. 764 00:38:36,667 --> 00:38:38,500 Rydw i'n mynd i fynd yn ôl at y sleid blaenorol, 765 00:38:38,500 --> 00:38:40,680 er mwyn i chi guys weld sut swyddogaeth hash yn gweithio. 766 00:38:40,680 --> 00:38:43,980 >> Felly swyddogaeth hash yw hafaliad hwn eich bod yn rhedeg y math o eich mewnbwn 767 00:38:43,980 --> 00:38:46,940 trwy i gael beth bynnag mynegai rydych am ei aseinio iddo tuag at. 768 00:38:46,940 --> 00:38:51,130 Ac felly, yn yr enghraifft hon, pob oeddem am ei wneud oedd cymryd y llythyr cyntaf, 769 00:38:51,130 --> 00:38:55,890 trowch hynny i mewn i fynegai, yna rydym yn Gall storio hynny yn ein swyddogaeth hash. 770 00:38:55,890 --> 00:39:00,160 Y cyfan yr ydym yn ei wneud yma yw ein bod trosi llythyren gyntaf. 771 00:39:00,160 --> 00:39:04,770 Felly keykey [0] yn unig y llythyr cyntaf o ba bynnag llinyn ein bod yn cael, 772 00:39:04,770 --> 00:39:05,720 rydym yn pasio i mewn. 773 00:39:05,720 --> 00:39:09,740 Rydym yn trosi hynny i'r uchaf, ac rydym yn tynnu yn ôl priflythyren A, 774 00:39:09,740 --> 00:39:11,740 felly bob un sy'n ei wneud yn rhoi nifer ni 775 00:39:11,740 --> 00:39:13,670 y gallwn hash ein gwerthoedd ar. 776 00:39:13,670 --> 00:39:16,550 >> Ac yna rydym yn mynd i dychwelyd MAINT modwlws hash. 777 00:39:16,550 --> 00:39:19,340 Byddwch yn iawn, yn ofalus iawn oherwydd, yn ddamcaniaethol, dyma 778 00:39:19,340 --> 00:39:21,870 Gallai eich gwerth hash yn ddiddiwedd. 779 00:39:21,870 --> 00:39:23,660 Gallai dim ond yn mynd ymlaen ac ymlaen ac ymlaen. 780 00:39:23,660 --> 00:39:26,080 Gallai fod yn rhai gwirioneddol, 'n sylweddol gwerth mawr, 781 00:39:26,080 --> 00:39:29,849 ond oherwydd bod eich bwrdd hash sy'n eich bod wedi creu dim ond ganddi 26 mynegeion, 782 00:39:29,849 --> 00:39:31,890 ydych am wneud yn siŵr bod eich modulusing er mwyn i chi 783 00:39:31,890 --> 00:39:33,848 peidiwch â run-- 'i' yr un fath beth fel eich queue-- 784 00:39:33,848 --> 00:39:36,320 fel nad ydych yn rhedeg oddi ar y waelod eich swyddogaeth hash. 785 00:39:36,320 --> 00:39:39,210 >> Rydych am i lapio yn ôl o gwmpas yr un ffordd yn [Anghlywadwy] pan 786 00:39:39,210 --> 00:39:41,750 oedd gennych fel iawn, llythyr mawr iawn, yr ydych 787 00:39:41,750 --> 00:39:43,740 Nid oedd am i hynny jyst yn rhedeg oddi ar y diwedd. 788 00:39:43,740 --> 00:39:46,948 Yr un peth yma, yr ydych am wneud yn siŵr nid yw'n rhedeg oddi ar y diwedd drwy lapio 789 00:39:46,948 --> 00:39:48,330 o gwmpas i frig y tabl. 790 00:39:48,330 --> 00:39:50,530 Felly, mae hyn yn unig yw iawn swyddogaeth hash syml. 791 00:39:50,530 --> 00:39:56,570 Y cyfan a wnaeth oedd cymryd y cyntaf llythyr o ba bynnag ein mewnbwn yn 792 00:39:56,570 --> 00:40:01,660 a throi i mewn i hynny fynegai sy'n gallem roi yn ein tabl hash. 793 00:40:01,660 --> 00:40:05,450 >> Yeah, ac felly fel y dywedais o'r blaen, y modd yr ydym yn datrys gwrthdrawiadau 794 00:40:05,450 --> 00:40:09,330 yn ein hash tablau yn cael, yr hyn a alwn, gadwyno. 795 00:40:09,330 --> 00:40:13,860 Felly, os ydych yn ceisio i fewnosod lluosog eiriau sy'n dechrau gyda'r un peth, 796 00:40:13,860 --> 00:40:16,145 rydych yn mynd i gael un gwerth hash. 797 00:40:16,145 --> 00:40:18,770 Afocados ac afal, os ydych chi wedi rhedeg trwy ein swyddogaeth hash, 798 00:40:18,770 --> 00:40:21,450 yn mynd i roi i chi y un nifer, mae nifer y 0. 799 00:40:21,450 --> 00:40:24,550 Ac felly y ffordd yr ydym yn datrys hynny yw ein bod yn gallu mewn gwirionedd yn fath o yn eu cysylltu 800 00:40:24,550 --> 00:40:27,010 ynghyd drwy restrau cysylltiedig. 801 00:40:27,010 --> 00:40:29,600 >> Ac felly yn yr ystyr hwn, allwch chi guys weld garedig 802 00:40:29,600 --> 00:40:32,640 o sut mae strwythurau data sy'n rydym wedi bod yn gosod yn flaenorol 803 00:40:32,640 --> 00:40:35,870 fel rhesins cysylltiedig rhestr caredig Gall y dod at ei gilydd i mewn i un. 804 00:40:35,870 --> 00:40:38,860 Ac yna gallwch greu bell strwythurau data yn fwy effeithlon 805 00:40:38,860 --> 00:40:43,350 a all drin symiau mwy o data, hynny ddeinamig newid maint yn dibynnu 806 00:40:43,350 --> 00:40:44,870 ar eich anghenion. 807 00:40:44,870 --> 00:40:45,620 Mae pawb yn glir? 808 00:40:45,620 --> 00:40:47,580 Mae pawb fath o clir ar yr hyn sy'n digwydd yma? 809 00:40:47,580 --> 00:40:52,110 >> Os wyf yn awyddus i insert-- beth 'na ffrwythau sy'n dechrau gyda, nid wyf yn gwybod, 810 00:40:52,110 --> 00:40:54,726 B, ac eithrio aeron, banana. 811 00:40:54,726 --> 00:40:55,710 >> GYNULLEIDFA: Blackberry. 812 00:40:55,710 --> 00:40:57,910 >> Andi Peng: Blackberry, mwyar duon. 813 00:40:57,910 --> 00:41:00,530 Ble mae mwyar duon fynd yma? 814 00:41:00,530 --> 00:41:04,251 Wel, nid ydym mewn gwirionedd wedi datrys mae hyn eto, ond yn ddamcaniaethol 815 00:41:04,251 --> 00:41:06,250 os ydym am gael hyn yn nhrefn yr wyddor, 816 00:41:06,250 --> 00:41:07,944 lle dylai mwyar duon fynd? 817 00:41:07,944 --> 00:41:09,210 >> GYNULLEIDFA: [Anghlywadwy] 818 00:41:09,210 --> 00:41:11,100 >> Andi Peng: Yn union, ar ôl fan hyn, dde? 819 00:41:11,100 --> 00:41:14,950 Ond gan ei fod yn anodd iawn reorder-- Mae'n debyg mae i fyny i chi guys. 820 00:41:14,950 --> 00:41:17,920 Gallwch guys yn llwyr gweithredu beth bynnag y dymunwch. 821 00:41:17,920 --> 00:41:20,730 Y ffordd fwy effeithlon o wneud hyn efallai 822 00:41:20,730 --> 00:41:24,570 fyddai i roi trefn ar eich cysylltiedig Rhestrwch mewn trefn yr wyddor, 823 00:41:24,570 --> 00:41:26,520 ac felly pan fyddwch yn mewnosod pethau, yr ydych am 824 00:41:26,520 --> 00:41:28,632 i fod yn sicr i fewnosod nhw i mewn i nhrefn yr wyddor 825 00:41:28,632 --> 00:41:30,590 fel bod yna pan fyddwch yn ceisio chwilio iddynt, 826 00:41:30,590 --> 00:41:32,410 Nid oes rhaid i chi dramwy popeth. 827 00:41:32,410 --> 00:41:35,290 Rydych yn gwybod yn union lle y mae, ac mae'n haws. 828 00:41:35,290 --> 00:41:39,100 >> Ond os ydych yn fath o gael pethau gymysg ar hap, 829 00:41:39,100 --> 00:41:41,420 ydych yn dal yn mynd i gael i groesi ei anyways. 830 00:41:41,420 --> 00:41:44,990 Ac felly os oeddwn i eisiau i ddim ond mewnosod mwyar duon yma 831 00:41:44,990 --> 00:41:47,470 ac roeddwn i eisiau i chwilio am y peth, yr wyf yn gwybod, o, mwyar duon 832 00:41:47,470 --> 00:41:52,012 Mae'n rhaid i ni ddechrau gyda'r mynegai o 1, felly yr wyf yn gwybod ar unwaith yn unig yn chwilio am 1. 833 00:41:52,012 --> 00:41:53,970 Ac yna gallaf math o croesi y rhestr cysylltiedig 834 00:41:53,970 --> 00:41:56,120 nes i mi ddod i mwyar, a then-- yeah? 835 00:41:56,120 --> 00:41:59,550 >> GYNULLEIDFA: Os ydych yn ceisio create-- Amcana fel hyn yn hash syml iawn 836 00:41:59,550 --> 00:42:00,050 swyddogaeth. 837 00:42:00,050 --> 00:42:02,835 Ac os ydym am ei wneud haenau lluosog o hynny fel, 838 00:42:02,835 --> 00:42:05,870 OK, rydym am i wahanu i mewn fel yr holl lythyrau yn nhrefn yr wyddor 839 00:42:05,870 --> 00:42:09,040 ac yna eto i hoffi set arall o lythyrau yn nhrefn yr wyddor o fewn hynny, 840 00:42:09,040 --> 00:42:11,715 rydym yn rhoi fel hash tabl o fewn tabl hash, 841 00:42:11,715 --> 00:42:13,256 neu fel swyddogaeth o fewn swyddogaeth? 842 00:42:13,256 --> 00:42:14,880 Neu a yw that-- 843 00:42:14,880 --> 00:42:17,510 >> Andi Peng: Felly eich hash function-- eich bwrdd hash 844 00:42:17,510 --> 00:42:19,360 Gall fod mor fawr ag y dymunwch iddo. 845 00:42:19,360 --> 00:42:21,930 Felly, yn yr ystyr hwn, yr wyf yn meddwl roedd yn hawdd iawn, iawn 846 00:42:21,930 --> 00:42:25,320 syml i mi yn seiliedig yn unig fath ar lythyrau y gair cyntaf. 847 00:42:25,320 --> 00:42:28,690 Ac felly does dim ond 26 opsiwn. 848 00:42:28,690 --> 00:42:32,650 Ni allaf ond ei gael 26 opsiwn o 0 i 25 oed oherwydd eu bod dim ond 849 00:42:32,650 --> 00:42:36,510 cychwyn o A i Z. Ond Os ydych eisiau i ychwanegu, efallai, yn fwy cymhleth 850 00:42:36,510 --> 00:42:39,260 neu redeg amser i gyflymach eich tabl hash, yr ydych yn hollol 851 00:42:39,260 --> 00:42:40,760 yn gallu gwneud pob math o bethau. 852 00:42:40,760 --> 00:42:43,330 Gallwch wneud eich hun hafaliad sy'n rhoi i chi 853 00:42:43,330 --> 00:42:48,000 mwy dosbarthu yn eich geiriau, yna pan fyddwch yn chwilio, 854 00:42:48,000 --> 00:42:49,300 mae'n mynd i fod yn gyflymach. 855 00:42:49,300 --> 00:42:52,100 >> Mae'n hollol i fyny i chi guys sut yr ydych am i weithredu'r hynny. 856 00:42:52,100 --> 00:42:55,140 Meddyliwch amdano fel dim ond bwcedi. 857 00:42:55,140 --> 00:42:57,376 Os wyf yn awyddus i gael 26 bwcedi, dw i'n mynd 858 00:42:57,376 --> 00:42:59,420 i ddatrys pethau i mewn i bwcedi hynny. 859 00:42:59,420 --> 00:43:02,980 Ond dw i'n mynd i gael bagad o bethau ym mhob bwced, 860 00:43:02,980 --> 00:43:05,890 felly os ydych am ei gwneud yn gyflymach ac yn fwy effeithlon, 861 00:43:05,890 --> 00:43:07,190 gadewch i mi fod â chant o fwcedi. 862 00:43:07,190 --> 00:43:09,290 >> Ond yna mae'n rhaid i chi chyfrif i maes ffordd i ddatrys pethau fel eu bod yn 863 00:43:09,290 --> 00:43:11,040 yn y bwced priodol dylent fod yn. 864 00:43:11,040 --> 00:43:13,331 Ond yna pan fyddwch mewn gwirionedd am edrych ar y bwced, 865 00:43:13,331 --> 00:43:16,410 mae'n llawer cyflymach oherwydd bod llai o stwff ym mhob bwced. 866 00:43:16,410 --> 00:43:20,250 Ac felly, ie, dyna mewn gwirionedd y tric i chi guys yn pset5 867 00:43:20,250 --> 00:43:22,360 yw y byddwch yn herio i ddim ond creu 868 00:43:22,360 --> 00:43:26,170 beth bynnag yw'r mwyaf effeithlon swyddogaeth y gallwch feddwl i fod yn 869 00:43:26,170 --> 00:43:28,520 gallu i storio a gwirio gwerthoedd hyn. 870 00:43:28,520 --> 00:43:30,840 >> Hollol fyny i chi guys Fodd bynnag, yr ydych am ei wneud, 871 00:43:30,840 --> 00:43:32,229 ond mae hynny'n bwynt da iawn. 872 00:43:32,229 --> 00:43:34,520 Bod y math o rhesymeg chi am ddechrau meddwl am 873 00:43:34,520 --> 00:43:37,236 yn, wel, pam nad ydw i'n gwneud mwy o bwcedi. 874 00:43:37,236 --> 00:43:39,527 Ac yna mae'n rhaid i mi chwilio llai o bethau, ac yna efallai yr wyf yn 875 00:43:39,527 --> 00:43:41,640 â swyddogaeth hash gwahanol. 876 00:43:41,640 --> 00:43:45,500 >> Yeah, mae llawer o ffyrdd o wneud hyn pset, mae rhai yn gyflymach nag eraill. 877 00:43:45,500 --> 00:43:50,630 Rydw i'n llwyr yn mynd i jyst gweld sut cyflym oedd y cyflymaf rydych guys fydd 878 00:43:50,630 --> 00:43:55,170 yn gallu cael eich swyddogaethau i'r gwaith. 879 00:43:55,170 --> 00:43:58,176 OK, mae pawb ar da tablau gadwyno a hash? 880 00:43:58,176 --> 00:44:00,800 Mae'n mewn gwirionedd fel syml iawn cysyniad os ydych yn meddwl am y peth. 881 00:44:00,800 --> 00:44:05,160 Mae'r holl mae'n ei gwahanu beth bynnag eich mewnbwn yn cael i mewn bwcedi, 882 00:44:05,160 --> 00:44:10,670 eu didoli, ac wedyn chwilio yn rhestru bod wedi gysylltiedig â. 883 00:44:10,670 --> 00:44:11,852 >> Cool. 884 00:44:11,852 --> 00:44:18,160 Mae pob hawl, erbyn hyn mae gennym fath gwahanol o strwythur data sy'n cael ei alw coeden. 885 00:44:18,160 --> 00:44:20,850 Gadewch i ni fynd ymlaen ac yn siarad am geisiau sydd yn amlwg yn wahanol, 886 00:44:20,850 --> 00:44:22,330 ond yn yr un categori. 887 00:44:22,330 --> 00:44:29,010 Yn y bôn, pob coeden yn lle hynny o trefnu data yn y ffordd linellol 888 00:44:29,010 --> 00:44:32,560 fod tabl hash does-- chi yn gwybod, 'i' got top a gwaelod 889 00:44:32,560 --> 00:44:37,900 ac yna rydych fath o gysylltu i ffwrdd o iddo-- yn coeden Mae top y byddwch yn ffonio'r gwraidd, 890 00:44:37,900 --> 00:44:40,220 ac yna mae'n ganddo ddail o amgylch iddo. 891 00:44:40,220 --> 00:44:42,390 >> Ac felly yr holl ydych wedi yma Dim ond y nod uchaf 892 00:44:42,390 --> 00:44:45,980 sy'n tynnu sylw at nodau eraill, bod pwyntiau i fwy nodau, ac yn y blaen ac yn y blaen. 893 00:44:45,980 --> 00:44:48,130 Ac felly os oes gen ti canghennau hollti. 894 00:44:48,130 --> 00:44:53,255 'I' jyst ffordd wahanol o drefnu data, ac oherwydd rydym yn galw ei goeden, 895 00:44:53,255 --> 00:44:56,270 'ch guys just-- mai dim ond modelu allan i edrych fel coeden. 896 00:44:56,270 --> 00:44:57,670 Dyna pam rydym yn galw ei goed. 897 00:44:57,670 --> 00:44:59,370 >> Tabl Hash edrych yn debyg i dabl. 898 00:44:59,370 --> 00:45:01,310 Mae coeden unig yn edrych fel coeden. 899 00:45:01,310 --> 00:45:03,300 Mae'r holl mae'n yn ar wahân ffordd o drefnu nodau 900 00:45:03,300 --> 00:45:06,020 yn dibynnu ar beth yw eich anghenion. 901 00:45:06,020 --> 00:45:11,810 >> Felly, mae gennych gwraidd a yna mae gennych dail. 902 00:45:11,810 --> 00:45:15,380 Mae'r ffordd y gallwn arbennig meddwl am y peth yn goeden ddeuaidd, 903 00:45:15,380 --> 00:45:18,150 goeden ddeuaidd yn unig yw math penodol o goeden 904 00:45:18,150 --> 00:45:22,450 lle mai dim ond pwyntiau pob nod i, yn max, dau nodau eraill. 905 00:45:22,450 --> 00:45:25,434 Ac felly dyma oes gennych wahanol cymesuredd yn eich coeden 906 00:45:25,434 --> 00:45:28,600 sy'n ei gwneud yn haws i fath o edrych ar yr hyn gwerthfawrogi eich bod am fod yna rydych 907 00:45:28,600 --> 00:45:30,150 bob amser yn chwith neu i'r dde. 908 00:45:30,150 --> 00:45:33,150 Mae yna byth fel un rhan o dair o chwith y chwith neu bedwerydd o'r chwith. 909 00:45:33,150 --> 00:45:36,358 'I' jyst bod gennych chwith a hawl a gallwch chwilio naill neu'r llall o'r ddau hynny. 910 00:45:36,358 --> 00:45:38,980 Ac felly pam mae hon yn ddefnyddiol? 911 00:45:38,980 --> 00:45:40,980 Mae'r ffordd y mae hyn yn ddefnyddiol yw os ydych yn chwilio 912 00:45:40,980 --> 00:45:42,890 i chwilio drwy werthoedd, dde? 913 00:45:42,890 --> 00:45:45,640 Yn hytrach na gweithredu deuaidd chwilio mewn amrywiaeth camgymeriad, 914 00:45:45,640 --> 00:45:49,260 os ydych chi eisiau gallu i fewnosod nodau ac yn cymryd i ffwrdd nodau yn ewyllys, a hefyd 915 00:45:49,260 --> 00:45:52,185 cadw'r chwiliad galluoedd chwilio deuaidd. 916 00:45:52,185 --> 00:45:54,560 Felly, yn y modd hwn, rydym yn fath o tricking-- cofio pan fyddwn yn 917 00:45:54,560 --> 00:45:56,530 Dywedodd na all rhestrau cysylltiedig chwiliad deuaidd? 918 00:45:56,530 --> 00:46:01,700 Rydym yn fath o greu strwythur data bod driciau hynny i mewn i weithio. 919 00:46:01,700 --> 00:46:05,034 >> A rhestrau hynny oherwydd cysylltiedig yn llinol, eu bod ond yn cysylltu un ar ôl y llall. 920 00:46:05,034 --> 00:46:06,950 Gallwn fath o gael gwahanol fath o awgrymiadau 921 00:46:06,950 --> 00:46:09,408 y pwynt hwnnw i wahanol nodau a all ein helpu i chwilio. 922 00:46:09,408 --> 00:46:12,590 Ac felly yma, os oeddwn i eisiau gennych goeden chwiliad deuaidd, 923 00:46:12,590 --> 00:46:14,090 Gwn fod fy canol, os 55. 924 00:46:14,090 --> 00:46:18,280 Im 'jyst yn mynd i greu'r fel fy canol, fel fy gwraidd, 925 00:46:18,280 --> 00:46:20,770 ac yna dwi'n mynd i gael Gwerthoedd throelli oddi ar hynny. 926 00:46:20,770 --> 00:46:25,610 >> Felly dyma, os ydw i'n mynd i chwilio am werth o 66, gallaf dechrau am 55. 927 00:46:25,610 --> 00:46:27,310 Mae'n fwy na 66 55? 928 00:46:27,310 --> 00:46:30,970 Ydi mae, felly yr wyf yn gwybod fy mod Mus chwilio ff n pwyntydd cywir y goeden hon. 929 00:46:30,970 --> 00:46:32,440 Rwy'n mynd i 77. 930 00:46:32,440 --> 00:46:35,367 OK, yn 66 yn llai na neu'n fwy na 77? 931 00:46:35,367 --> 00:46:37,950 Mae'n llai na, felly eich bod yn gwybod, oh, rhaid i hynny fod y nôd chwith. 932 00:46:37,950 --> 00:46:41,410 >> Ac felly dyma rydym yn fath o gadw pob un o'r pethau gwych am araeau, 933 00:46:41,410 --> 00:46:44,420 felly fel newid maint deinamig o wrthrychau, sef 934 00:46:44,420 --> 00:46:49,530 gallu mewnosod a dileu fel y myn, heb orfod poeni am y sefydlog 935 00:46:49,530 --> 00:46:50,370 faint o le. 936 00:46:50,370 --> 00:46:52,820 Rydym yn dal i gadw pob un pethau gwych y rhai 937 00:46:52,820 --> 00:46:57,140 tra hefyd yn gallu i warchod y log a chwilio adeg chwiliad deuaidd 938 00:46:57,140 --> 00:47:00,450 ein bod dim ond yn flaenorol gallu cael ymadrodd. 939 00:47:00,450 --> 00:47:06,310 >> Strwythur data Cool, math o gymhleth i'w weithredu, y nôd. 940 00:47:06,310 --> 00:47:08,311 Fel y gwelwch, popeth o fewn ei yw struct y nôd 941 00:47:08,311 --> 00:47:10,143 yw bod gennych chwith ac pwyntydd i'r dde. 942 00:47:10,143 --> 00:47:11,044 Dyna i gyd y mae. 943 00:47:11,044 --> 00:47:12,960 Felly yn hytrach na dim ond cael x neu flaenorol. 944 00:47:12,960 --> 00:47:15,920 Mae gennych chwith neu i'r dde, ac yna gallwch fath o eu cysylltu â'i gilydd 945 00:47:15,920 --> 00:47:16,836 Fodd bynnag, byddwch yn dewis gwneud hynny. 946 00:47:16,836 --> 00:47:21,080 947 00:47:21,080 --> 00:47:24,270 >> OK, rydym yn mynd mewn gwirionedd dim ond yn cymryd ychydig funudau. 948 00:47:24,270 --> 00:47:25,790 Felly rydym yn mynd i fynd yn ôl yma. 949 00:47:25,790 --> 00:47:28,270 Fel y dywedais eisoes, Yr wyf yn fath o esboniodd 950 00:47:28,270 --> 00:47:31,520 y rhesymeg y tu ôl i sut yr ydym Byddai chwilio drwy hyn. 951 00:47:31,520 --> 00:47:33,860 Rydym yn mynd i roi cynnig ar pseudocoding allan hwn i weld 952 00:47:33,860 --> 00:47:38,000 os gallwn fath o gymhwyso'r un rhesymeg chwilio deuaidd 953 00:47:38,000 --> 00:47:40,055 i fath gwahanol o strwythur data. 954 00:47:40,055 --> 00:47:45,049 Os ydych chi guys eisiau cymryd fel cwpl munud i jyst yn meddwl am hyn. 955 00:47:45,049 --> 00:48:45,927 956 00:48:45,927 --> 00:48:46,925 IAWN. 957 00:48:46,925 --> 00:48:51,407 Mae pob hawl, dw i'n mynd i mewn gwirionedd dim ond rhoi i chi the-- dim, 958 00:48:51,407 --> 00:48:52,990 byddwn yn siarad am y pseudocode yn gyntaf. 959 00:48:52,990 --> 00:48:56,580 Felly mae unrhyw un am i roi drywanu ar yr hyn 960 00:48:56,580 --> 00:49:02,100 y peth cyntaf rydych am ei wneud pan ydych yn dechrau allan yn chwilio? 961 00:49:02,100 --> 00:49:04,460 Os rydym yn chwilio am werth o 66, beth sydd 962 00:49:04,460 --> 00:49:07,940 y peth cyntaf yr ydym am ei wneud os rydym am deuaidd chwilio goeden hon? 963 00:49:07,940 --> 00:49:10,760 >> GYNULLEIDFA: byddwch am edrych yn iawn ac yn edrych i'r chwith a gweld [Anghlywadwy] 964 00:49:10,760 --> 00:49:11,230 nifer fwyaf. 965 00:49:11,230 --> 00:49:12,271 >> Andi Peng: Yeah, yn union. 966 00:49:12,271 --> 00:49:15,350 Felly, rydych yn mynd i edrych ar eich gwreiddiau. 967 00:49:15,350 --> 00:49:18,180 Mae llawer o ffyrdd y gallwch ffonio y peth, eich rhiant gwgn pobl yn dweud. 968 00:49:18,180 --> 00:49:21,317 Rwy'n hoffi dweud gwraidd oherwydd dyna fel gwraidd y goeden. 969 00:49:21,317 --> 00:49:23,400 Rydych yn mynd i edrych ar eich nod gwraidd, ac rydych yn 970 00:49:23,400 --> 00:49:26,940 mynd i weld yw 66 mwy na neu'n llai na 55. 971 00:49:26,940 --> 00:49:30,360 Ac os yw'n fwy na, wel, mae'n fwy na, ble rydym yn awyddus i edrych? 972 00:49:30,360 --> 00:49:32,000 Ble ydym ni eisiau i chwilio nawr, dde? 973 00:49:32,000 --> 00:49:34,340 Rydym yn awyddus i chwilio'r hanner dde goeden hon. 974 00:49:34,340 --> 00:49:38,390 >> Felly, rydym wedi, yn gyfleus, mae pwyntydd sy'n pwyntio i'r dde. 975 00:49:38,390 --> 00:49:44,325 Ac felly yna gallwn osod ein gwreiddiau newydd fod yn 77. 976 00:49:44,325 --> 00:49:46,450 Gallwn jyst yn mynd i ble bynnag pwyntydd yn pwyntio. 977 00:49:46,450 --> 00:49:49,100 Wel, o, dyma ni yn dechrau yn 77, ac a allwn yn unig 978 00:49:49,100 --> 00:49:51,172 gwneud hyn recursively dro ar ôl tro. 979 00:49:51,172 --> 00:49:52,880 Yn y modd hwn, byddwch yn garedig o fod â swyddogaeth. 980 00:49:52,880 --> 00:49:57,430 Mae gennych ffordd o chwilio eich bod yn gall dim ond ailadrodd drosodd a throsodd a throsodd, 981 00:49:57,430 --> 00:50:02,720 yn dibynnu ar ble rydych am edrych hyd nes y byddwch yn y pen draw gyrraedd y gwerth 982 00:50:02,720 --> 00:50:04,730 eich bod yn chwilio am. 983 00:50:04,730 --> 00:50:05,230 Gwneud synnwyr? 984 00:50:05,230 --> 00:50:07,800 >> Rwy'n am i ddangos i chi y gwir cod, ac mae'n llawer o god. 985 00:50:07,800 --> 00:50:08,674 Nid oes angen i freak allan. 986 00:50:08,674 --> 00:50:09,910 Byddwn yn siarad drwyddo. 987 00:50:09,910 --> 00:50:13,410 988 00:50:13,410 --> 00:50:14,020 >> A dweud y gwir, dim. 989 00:50:14,020 --> 00:50:15,061 Dyna oedd dim ond pseudocode. 990 00:50:15,061 --> 00:50:17,860 OK, dyna oedd dim ond y pseudocode, sydd yn braidd yn gymhleth, 991 00:50:17,860 --> 00:50:19,751 ond mae'n hollol iawn. 992 00:50:19,751 --> 00:50:21,000 Mae pawb yn dilyn ar hyd yma? 993 00:50:21,000 --> 00:50:24,260 Os bydd y gwraidd yn null, yn dychwelyd ffug oherwydd y ffordd 994 00:50:24,260 --> 00:50:26,850 nad ydych yn hyd yn oed gael unrhyw beth yno. 995 00:50:26,850 --> 00:50:31,376 >> Os yw n gwraidd yw gwerth, felly os yw'n digwydd i fod yr un yr ydych yn edrych ar, 996 00:50:31,376 --> 00:50:34,000 yna rydych chi'n mynd i ddychwelyd yn wir oherwydd eich bod yn gwybod eich chael hi'n. 997 00:50:34,000 --> 00:50:36,250 Ond os bydd y gwerth yn llai na gwraidd n, rydych yn 998 00:50:36,250 --> 00:50:38,332 mynd i chwilio'r chwith plentyn neu y ddeilen chwith, 999 00:50:38,332 --> 00:50:39,540 beth bynnag yr ydych am ei alw. 1000 00:50:39,540 --> 00:50:41,750 Ac os yw gwerth yn fwy na gwraidd, ydych yn mynd i chwilio'r goeden gywir, 1001 00:50:41,750 --> 00:50:44,610 yna dim ond yn rhedeg y swyddogaeth drwy chwilio eto. 1002 00:50:44,610 --> 00:50:48,037 >> Ac os gwraidd yn null, bod hynny yn golygu eich bod wedi cyrraedd diwedd? 1003 00:50:48,037 --> 00:50:50,120 Mae hynny'n golygu nad oes gennych unrhyw mwy mwy ddail i chwilio, 1004 00:50:50,120 --> 00:50:52,230 yna rydych yn gwybod, oh, yr wyf yn dyfalu nid yw'n mewn yma 1005 00:50:52,230 --> 00:50:55,063 oherwydd ar ôl i mi edrych drwy yr holl beth ac nid yw'n fan hyn, 1006 00:50:55,063 --> 00:50:56,930 'i jyst Ni allai fod yn fan hyn. 1007 00:50:56,930 --> 00:50:58,350 >> A yw hynny'n gwneud synnwyr i bawb? 1008 00:50:58,350 --> 00:51:03,230 Felly mae fel chwiliad deuaidd cadw galluoedd rhestrau cysylltiedig. 1009 00:51:03,230 --> 00:51:09,200 Cool, ac felly mae'r ail fath o strwythur data chi guys 1010 00:51:09,200 --> 00:51:13,180 Gall roi cynnig gweithredu ar eich pset, Dim ond rhaid i chi ddewis un dull. 1011 00:51:13,180 --> 00:51:19,430 Ond efallai ddull arall i mae'r tabl hash yw'r hyn a alwn yn trie. 1012 00:51:19,430 --> 00:51:24,080 >> Mae'r holl mae trie yn yn math penodol o goed sy'n 1013 00:51:24,080 --> 00:51:28,600 Mae gwerthoedd sy'n mynd i werthoedd eraill. 1014 00:51:28,600 --> 00:51:31,450 Felly, yn lle cael deuaidd coeden yn yr ystyr mai dim ond un 1015 00:51:31,450 --> 00:51:35,940 Gall peth bwyntio at ddau, gallwch gael pwynt un peth i lawer, mae llawer o bethau. 1016 00:51:35,940 --> 00:51:39,450 Yn y bôn yn rhaid i chi araeau tu mewn yr ydych yn storio 1017 00:51:39,450 --> 00:51:41,790 awgrymiadau sy'n cyfeirio at araeau eraill. 1018 00:51:41,790 --> 00:51:45,210 1019 00:51:45,210 --> 00:51:49,460 >> Felly, y nôd o sut yr ydym Byddai diffinio trie 1020 00:51:49,460 --> 00:51:52,590 yn yr ydym am ei gael Boole, c gair, dde? 1021 00:51:52,590 --> 00:51:54,920 Felly 'r nôd yn Boole fel gwir neu gau, 1022 00:51:54,920 --> 00:51:58,490 yn gyntaf oll ar ben hynny array, a yw hyn yn air? 1023 00:51:58,490 --> 00:52:03,620 Yn ail, yr ydych am gael awgrymiadau i ba bynnag gweddill ohonynt. 1024 00:52:03,620 --> 00:52:07,470 Ychydig yn gymhleth, braidd yn haniaethol, ond Byddaf yn egluro beth bod pob modd. 1025 00:52:07,470 --> 00:52:13,800 >> Felly dyma, ar y brig, os ydych yn cael amrywiaeth datgan eisoes, 1026 00:52:13,800 --> 00:52:17,040 cainc lle mae gennych Boolean gwerth ei storio yn y tu blaen 1027 00:52:17,040 --> 00:52:19,490 sy'n dweud wrthych a yw hyn yn air? 1028 00:52:19,490 --> 00:52:20,520 A yw hyn nid gair? 1029 00:52:20,520 --> 00:52:23,240 Ac yna mae gennych yr weddill eich arae sy'n 1030 00:52:23,240 --> 00:52:26,040 storio mewn gwirionedd holl posibiliadau o'r hyn y gallai fod. 1031 00:52:26,040 --> 00:52:28,660 Felly, er enghraifft, fel ar y brig sydd gennych 1032 00:52:28,660 --> 00:52:32,140 y peth cyntaf sy'n dweud wir neu ffug, ie neu ddim, mae hwn yn air. 1033 00:52:32,140 --> 00:52:38,130 >> Ac yna mae gennych 0 trwy 26 o y llythrennau y gallwch storio. 1034 00:52:38,130 --> 00:52:42,790 Os wyf yn awyddus i chwilio yma ar gyfer ystlumod, yr wyf yn mynd i'r top 1035 00:52:42,790 --> 00:52:49,200 ac yr wyf yn edrych am B. gallaf ddod o hyd B yn fy array, ac felly yr wyf yn gwybod, OK, mae B yn air? 1036 00:52:49,200 --> 00:52:53,010 Nid yw B yn air, felly a thrwy hynny Mae'n rhaid i mi gadw chwilio. 1037 00:52:53,010 --> 00:52:56,410 Rwy'n mynd o B, ac edrychaf at y pwyntydd y B pwyntiau tuag at 1038 00:52:56,410 --> 00:53:00,900 ac yr wyf yn gweld amrywiaeth arall o wybodaeth, yr un strwythur a oedd gennym o'r blaen. 1039 00:53:00,900 --> 00:53:05,240 >> Ac yn Yma-- oh, y nesaf llythyr yn [Anghlywadwy] yw A. 1040 00:53:05,240 --> 00:53:07,210 Felly rydym yn edrych yn y rhesi. 1041 00:53:07,210 --> 00:53:10,860 Rydym yn dod o hyd i'r gwerth wythfed, ac yna rydym yn edrych i weld, oh, 1042 00:53:10,860 --> 00:53:12,840 hey, yw bod gair, yn B-A gair? 1043 00:53:12,840 --> 00:53:13,807 Nid yw'n air. 1044 00:53:13,807 --> 00:53:14,890 Mae'n rhaid i ni gadw chwilio. 1045 00:53:14,890 --> 00:53:17,850 >> Ac felly, yna rydym yn edrych i ble pwyntydd y pwyntiau A, 1046 00:53:17,850 --> 00:53:21,130 ac mae'n cyfeirio at ffordd arall mewn yr ydym yn cael mwy o werth ei storio. 1047 00:53:21,130 --> 00:53:24,150 Ac yn y pen draw, rydym yn cael B-A-T, sydd yn air. 1048 00:53:24,150 --> 00:53:25,970 Ac felly y tro nesaf ydych yn edrych, rydych yn mynd 1049 00:53:25,970 --> 00:53:30,850 i gael y gwiriad o'r, ie, y swyddogaeth Boolean yn wir. 1050 00:53:30,850 --> 00:53:35,450 Ac felly yn yr ystyr ein bod garedig o gael coeden gyda arrays. 1051 00:53:35,450 --> 00:53:39,890 >> Felly, yna gallwch chi fath o chwilio i lawr. 1052 00:53:39,890 --> 00:53:43,650 Yn hytrach na stwnsio swyddogaeth a aseinio gwerthoedd rhestr gysylltiedig, 1053 00:53:43,650 --> 00:53:49,190 gallwch weithredu trie sy'n chwiliadau downwords. 1054 00:53:49,190 --> 00:53:50,850 Really, cymhleth pethau mewn gwirionedd. 1055 00:53:50,850 --> 00:53:54,060 Ddim yn hawdd i feddwl am oherwydd fy mod yn hoffi poeri cymaint o strwythurau data allan 1056 00:53:54,060 --> 00:53:58,710 ar chi, ond mae pawb yn fath o deall sut y rhesymeg hyn yn gweithio? 1057 00:53:58,710 --> 00:54:01,920 >> OK, oer. 1058 00:54:01,920 --> 00:54:05,600 Felly B-A-T, ac yna ydych yn mynd i chwilio. 1059 00:54:05,600 --> 00:54:07,940 Y tro nesaf y byddwch chi'n mynd i weld, oh, hey, mae'n wir, 1060 00:54:07,940 --> 00:54:09,273 felly yr wyf yn gwybod rhaid i hyn fod yn air. 1061 00:54:09,273 --> 00:54:12,030 1062 00:54:12,030 --> 00:54:13,770 >> Yr un peth dros sw. 1063 00:54:13,770 --> 00:54:17,960 Felly dyma y peth iawn yn awr, os ydym yn awyddus i chwilio am sw, ar hyn o bryd, 1064 00:54:17,960 --> 00:54:20,780 Ar hyn o bryd nid yw sw yn gair yn ein geiriadur 1065 00:54:20,780 --> 00:54:25,300 oherwydd, fel y gallwch weld guys, yr lle cyntaf bod gennym Boolean 1066 00:54:25,300 --> 00:54:28,590 dychwelyd yn wir yw ar ddiwedd y chwyddo. 1067 00:54:28,590 --> 00:54:30,430 Rydym wedi Z-O-O-M. 1068 00:54:30,430 --> 00:54:33,900 >> Ac felly dyma, nid ydym mewn gwirionedd y gair, sw, yn ein geiriadur 1069 00:54:33,900 --> 00:54:36,070 oherwydd nad yw hyn blwch gwirio yn cael ei wirio. 1070 00:54:36,070 --> 00:54:39,540 Felly nid y cyfrifiadur yn ei wneud gwybod bod sw yn air 1071 00:54:39,540 --> 00:54:42,430 oherwydd bod y ffordd yr ydym i wedi storio iddo, dim ond chwyddo yma 1072 00:54:42,430 --> 00:54:44,920 mewn gwirionedd yn werth Boole sydd wedi bod yn troi yn wir. 1073 00:54:44,920 --> 00:54:49,380 Felly os ydym am mewnosoder y gair, sw, i mewn ein geiriadur, 1074 00:54:49,380 --> 00:54:51,770 sut y byddem yn mynd ati i wneud hynny? 1075 00:54:51,770 --> 00:54:55,960 Beth sy'n rhaid i ni ei wneud i sicrhau bod ein cyfrifiadur yn gwybod bod Z-O-O yn air 1076 00:54:55,960 --> 00:54:58,130 ac nid y gair cyntaf yw Z-O-O-M? 1077 00:54:58,130 --> 00:54:59,360 >> GYNULLEIDFA: [Anghlywadwy] 1078 00:54:59,360 --> 00:55:01,450 >> Andi Peng: Yn union, rydym yn eisiau gwneud yn siŵr bod hyn yn 1079 00:55:01,450 --> 00:55:07,890 yma, y ​​gwerth Boole yn gwirio i ffwrdd ei fod yn wir. 1080 00:55:07,890 --> 00:55:13,297 Z-O-O, yna rydym yn mynd i wirio bod, felly rydym yn gwybod yn union, hey, sw yn air. 1081 00:55:13,297 --> 00:55:15,380 Rydw i'n mynd i ddweud wrth y cyfrifiadur ei fod yn air felly 1082 00:55:15,380 --> 00:55:18,000 pan fydd y gwiriadau cyfrifiadur, mae'n gwybod bod sw yn air. 1083 00:55:18,000 --> 00:55:21,269 >> Gan fod cofiwch holl ddata hyn strwythurau, mae'n hawdd iawn i ni 1084 00:55:21,269 --> 00:55:22,310 i ddweud, oh, ystlum 'na air. 1085 00:55:22,310 --> 00:55:22,851 Sw 'na air. 1086 00:55:22,851 --> 00:55:23,611 Zoom 'na air. 1087 00:55:23,611 --> 00:55:25,860 Ond pan fyddwch yn adeiladu arno, Mae gan y cyfrifiadur ddim syniad. 1088 00:55:25,860 --> 00:55:28,619 >> Felly, rhaid i chi ddweud yn union ar ba bwynt yw hyn yn air? 1089 00:55:28,619 --> 00:55:29,910 Ar ba bwynt nad yw'n air? 1090 00:55:29,910 --> 00:55:31,784 Ac ar ba bwynt yn ei wneud i mi Mae angen i chwilio pethau, 1091 00:55:31,784 --> 00:55:34,000 ac ar ba bwynt sydd angen i mi fynd nesaf? 1092 00:55:34,000 --> 00:55:37,010 Mae pawb yn glir o hynny? 1093 00:55:37,010 --> 00:55:39,540 Cool. 1094 00:55:39,540 --> 00:55:42,530 >> Ac felly, yna daw'r broblem o sut y byddem yn 1095 00:55:42,530 --> 00:55:45,560 mynd ati i fewnosod rhywbeth dyna mewn gwirionedd does? 1096 00:55:45,560 --> 00:55:49,090 Felly gadewch i ni dim ond dweud ein bod am i fewnosod y gair, bath, i mewn i'n trie. 1097 00:55:49,090 --> 00:55:53,589 Fel y gallwch weld guys fel ar hyn o bryd i gyd sydd gennym yn awr yw B-A-T, 1098 00:55:53,589 --> 00:55:55,630 ac mae hyn yn strwythur data newydd bu beint sy'n 1099 00:55:55,630 --> 00:55:59,740 tynnu sylw at null oherwydd ein bod yn cymryd yn ganiataol hynny, oh, does dim geiriau ar ôl B-A-T, 1100 00:55:59,740 --> 00:56:02,530 pam mae angen i ni gadw cael pethau ar ôl y T. 1101 00:56:02,530 --> 00:56:06,581 >> Ond mae'r broblem yn codi os byddwn ydych yn ei wneud am gael gair sy'n dod ar ôl 1102 00:56:06,581 --> 00:56:07,080 y T. 1103 00:56:07,080 --> 00:56:09,500 Os oes gennych bath, rydych yn mynd i eisiau hawl H. 1104 00:56:09,500 --> 00:56:13,290 Ac felly y ffordd yr ydym yn mynd i wneud hynny yw rydym yn mynd i greu nod ar wahân. 1105 00:56:13,290 --> 00:56:16,840 Nid ydym yn allot pa bynnag swm o gof ar gyfer y casgliad newydd, 1106 00:56:16,840 --> 00:56:20,720 ac rydym yn mynd i ail-neilltuo awgrymiadau. 1107 00:56:20,720 --> 00:56:22,947 >> Rydym yn mynd i aseinio'r H, Yn gyntaf oll, null hon, 1108 00:56:22,947 --> 00:56:24,030 rydym yn mynd i gael gwared. 1109 00:56:24,030 --> 00:56:26,590 Rydym yn mynd i gael mae'r tuag i lawr pwynt H. 1110 00:56:26,590 --> 00:56:30,600 Os byddwn yn gweld H, yr ydym am iddo i fynd i rywle arall. 1111 00:56:30,600 --> 00:56:33,910 >> Yn fan hyn, yna gallwn wirio i ffwrdd ie. 1112 00:56:33,910 --> 00:56:38,170 Os byddwn yn taro H ar ôl y T, oh, Yna, rydym yn gwybod bod hwn yn air. 1113 00:56:38,170 --> 00:56:41,110 Mae'r Boolean yn mynd i ddychwelyd wir. 1114 00:56:41,110 --> 00:56:42,950 Mae pawb yn glir ynghylch sut y digwyddodd? 1115 00:56:42,950 --> 00:56:45,110 IAWN. 1116 00:56:45,110 --> 00:56:47,214 >> Felly y bôn, i gyd y strwythurau data 1117 00:56:47,214 --> 00:56:50,130 ein bod wedi mynd dros heddiw, rwyf wedi mynd drostynt iawn, iawn yn gyflym 1118 00:56:50,130 --> 00:56:52,192 ac nid mewn i lawer fanwl, ac mae hynny'n iawn. 1119 00:56:52,192 --> 00:56:53,900 Unwaith y byddwch yn dechrau cyboli ag ef, byddwch yn 1120 00:56:53,900 --> 00:56:55,733 cadw golwg ar ble yr holl awgrymiadau yn cael eu, 1121 00:56:55,733 --> 00:56:58,060 beth sy'n digwydd yn eich strwythurau data, et cetera. 1122 00:56:58,060 --> 00:56:59,810 Byddant yn ddefnyddiol iawn, ac mae i fyny i chi 1123 00:56:59,810 --> 00:57:03,890 guys at chyfrif i maes sut llwyr ydych am weithredu pethau. 1124 00:57:03,890 --> 00:57:07,650 >> Ac felly pset4, o 5-- oh, hynny yw anghywir. 1125 00:57:07,650 --> 00:57:10,140 Pset5 yw gamsillafu. 1126 00:57:10,140 --> 00:57:13,710 Fel y dywedais o'r blaen, rydych chi'n mynd i, unwaith eto, lawrlwytho cod ffynhonnell oddi wrthym. 1127 00:57:13,710 --> 00:57:16,210 Mae mynd i fod yn dri phrif pethau y byddwch yn eu llwytho i lawr. 1128 00:57:16,210 --> 00:57:18,470 Byddwch lawrlwytho geiriaduron, Kers, a thestunau. 1129 00:57:18,470 --> 00:57:21,660 >> Mae'r holl bethau hynny yn cael eu naill ai geiriaduron o eiriau 1130 00:57:21,660 --> 00:57:25,190 ein bod am i chi wirio neu brawf o wybodaeth 1131 00:57:25,190 --> 00:57:26,930 ein bod am i chi cywirydd sillafu. 1132 00:57:26,930 --> 00:57:29,670 Ac felly mae'r geiriaduron rydym yn rhoi eich bod yn mynd 1133 00:57:29,670 --> 00:57:34,870 i roi union eiriau yr ydym am i chi chi storio rhywsut mewn ffordd sy'n 1134 00:57:34,870 --> 00:57:36,530 yn fwy effeithlon na arae. 1135 00:57:36,530 --> 00:57:38,470 Ac yna y testunau yn cael eu mynd i fod yr hyn rydym yn 1136 00:57:38,470 --> 00:57:43,900 gofyn i chi sillafu gwirio i wneud yn siŵr i gyd o'r geiriau mae geiriau go iawn. 1137 00:57:43,900 --> 00:57:47,970 >> Ac felly y tri bloc o rhaglenni y byddwn yn rhoi i chi 1138 00:57:47,970 --> 00:57:51,130 yn cael eu galw'n dictionary.c, dictionary.h, a speller.c. 1139 00:57:51,130 --> 00:57:56,500 Ac felly yr holl dictionary.c yn ei wneud yn cael ei hyn yr ydych yn gofyn am gael rhoi ar waith. 1140 00:57:56,500 --> 00:57:57,880 Mae'n llwythi geiriau. 1141 00:57:57,880 --> 00:58:02,000 Mae'n sillafu sieciau iddynt, ac mae'n gwneud yn siwr bod popeth yn cael ei fewnosod yn iawn. 1142 00:58:02,000 --> 00:58:05,180 >> diction.h yn unig yw ffeil llyfrgell sy'n datgan yr holl swyddogaethau hynny. 1143 00:58:05,180 --> 00:58:07,650 Ac speller.c, rydym yn mynd i roi i chi. 1144 00:58:07,650 --> 00:58:09,290 Nid oes angen i chi addasu unrhyw ohono. 1145 00:58:09,290 --> 00:58:14,290 Mae'r holl speller.c yn ei wneud yw cymryd hynny, llwythi iddo, yn gwirio cyflymder ohono, 1146 00:58:14,290 --> 00:58:19,190 profion y meincnod o fel sut gyflym rydych chi'n gallu gwneud pethau. 1147 00:58:19,190 --> 00:58:20,410 >> Mae'n sillafu. 1148 00:58:20,410 --> 00:58:23,920 Dim ond peidiwch â llanast ag ef, ond gwnewch yn siŵr eich bod yn deall yr hyn y mae'n ei wneud. 1149 00:58:23,920 --> 00:58:28,090 Rydym yn defnyddio swyddogaeth o'r enw getrusage sy'n profion perfformiad eich sillafu 1150 00:58:28,090 --> 00:58:28,590 gwirydd. 1151 00:58:28,590 --> 00:58:32,200 Mae'r holl mae'n ei wneud yn y bôn yn profi'r amser o bopeth yn eich geiriadur, 1152 00:58:32,200 --> 00:58:33,680 felly gwnewch yn siŵr eich bod yn deall hynny. 1153 00:58:33,680 --> 00:58:36,660 Byddwch yn ofalus i beidio llanast ag ef neu Ni fydd arall yn bethau redeg yn briodol. 1154 00:58:36,660 --> 00:58:39,740 1155 00:58:39,740 --> 00:58:44,170 >> Ac mae'r rhan fwyaf o'r her hon yw i chi guys i wir addasu dictionary.c. 1156 00:58:44,170 --> 00:58:48,526 Rydym yn mynd i roi i chi 140,000 o eiriau mewn geiriadur. 1157 00:58:48,526 --> 00:58:50,900 Rydym yn mynd i roi i chi destun ffeil sydd â geiriau hynny, 1158 00:58:50,900 --> 00:58:54,840 ac rydym am i chi fod yn gallu trefnu i mewn i dabl hash neu trie 1159 00:58:54,840 --> 00:58:58,140 oherwydd pan fyddwn yn gofyn i chi i sillafu check-- dychmygwch os ydych yn sillafu 1160 00:58:58,140 --> 00:59:00,690 gwirio fel Odyssey Homer. 1161 00:59:00,690 --> 00:59:03,010 Mae fel y prawf enfawr, enfawr. 1162 00:59:03,010 --> 00:59:05,190 >> Dychmygwch pe byddai pob un gair bu'n rhaid i chi edrych 1163 00:59:05,190 --> 00:59:08,100 drwy amrywiaeth o 140,000 gwerthoedd. 1164 00:59:08,100 --> 00:59:10,350 Byddai hynny'n cymryd am byth ar gyfer eich peiriant i redeg. 1165 00:59:10,350 --> 00:59:14,490 Dyna pam yr ydym yn awyddus i drefnu ein data i mewn i strwythurau data yn fwy effeithlon 1166 00:59:14,490 --> 00:59:17,270 megis tabl hash neu trie. 1167 00:59:17,270 --> 00:59:20,700 Ac yna gallwch chi guys caredig o pan fyddwch yn chwilio mynediad 1168 00:59:20,700 --> 00:59:22,570 pethau yn haws ac yn gyflymach. 1169 00:59:22,570 --> 00:59:24,934 >> Ac felly byddwch yn ofalus i ddatrys gwrthdrawiadau. 1170 00:59:24,934 --> 00:59:27,350 Rydych yn mynd i gael criw y geiriau yn y dechrau gydag A. 1171 00:59:27,350 --> 00:59:29,957 Rydych yn mynd i gael criw o eiriau sy'n dechrau gyda B. Hyd at chi 1172 00:59:29,957 --> 00:59:31,290 guys sut yr ydych am ei datrys. 1173 00:59:31,290 --> 00:59:34,144 Efallai mae mwy swyddogaeth hash effeithlon 1174 00:59:34,144 --> 00:59:36,810 na dim ond y llythyren gyntaf rhywbeth, ac fel eu bod i fyny i chi 1175 00:59:36,810 --> 00:59:38,190 guys i fath o wneud beth bynnag yr ydych ei eisiau. 1176 00:59:38,190 --> 00:59:40,148 >> Efallai eich bod am ychwanegu holl lythyrau at ei gilydd. 1177 00:59:40,148 --> 00:59:43,410 Efallai eich bod am hoffi gwneud pethau rhyfedd i gyfrif y nifer o lythrennau, 1178 00:59:43,410 --> 00:59:43,970 Beth bynnag. 1179 00:59:43,970 --> 00:59:45,386 I fyny i chi guys sut yr ydych am ei wneud. 1180 00:59:45,386 --> 00:59:49,262 Os ydych am wneud tabl hash, os ydych yn am roi cynnig ar trie, yn hollol i fyny i chi. 1181 00:59:49,262 --> 00:59:52,470 Byddaf yn eich rhybuddio o flaen amser y mae'r trie yn nodweddiadol ychydig yn fwy anodd 1182 00:59:52,470 --> 00:59:54,520 dim ond oherwydd mae yna lawer mwy o awgrymiadau i gadw golwg ar. 1183 00:59:54,520 --> 00:59:55,645 Ond hollol i fyny i chi guys. 1184 00:59:55,645 --> 00:59:58,742 Mae'n llawer mwy effeithlon yn y rhan fwyaf o achosion. 1185 00:59:58,742 --> 01:00:01,450 Rydych chi eisiau mewn gwirionedd yn gallu cadw golwg ar eich holl awgrymiadau. 1186 01:00:01,450 --> 01:00:03,850 Fel yn gwneud yr un peth fy mod yn ei wneud yma. 1187 01:00:03,850 --> 01:00:06,871 Pan fyddwch yn ceisio ei fewnosod gwerthoedd mewn tabl hash neu ddileu, 1188 01:00:06,871 --> 01:00:08,620 gwnewch yn siŵr eich bod yn 'n sylweddol cadw golwg 1189 01:00:08,620 --> 01:00:11,860 o lle mae popeth yn oherwydd bod 'i' 'n sylweddol hawdd i os ydw i'n 1190 01:00:11,860 --> 01:00:14,727 ceisio mewnosod fel y gair, andy. 1191 01:00:14,727 --> 01:00:16,810 Gadewch i 'jyst yn dweud bod' na gair go iawn, y gair, andy, 1192 01:00:16,810 --> 01:00:19,640 i mewn i restr enfawr o A eiriau. 1193 01:00:19,640 --> 01:00:22,450 >> Os Fi jyst yn digwydd i ail-neilltuo yn anghywir pwyntydd, wps, 1194 01:00:22,450 --> 01:00:24,940 mae mynd y cyfan o'r weddill fy rhestr cysylltiedig. 1195 01:00:24,940 --> 01:00:26,897 Nawr bod yr unig air i mi wedi yw andy, ac yn awr 1196 01:00:26,897 --> 01:00:29,230 pob un o'r geiriau eraill yn y Geiriadur wedi eu colli. 1197 01:00:29,230 --> 01:00:31,370 Ac felly eich bod eisiau gwneud yn siŵr eich bod cadw golwg ar eich holl awgrymiadau 1198 01:00:31,370 --> 01:00:33,661 neu arall rydych yn mynd i gael problemau anferth yn eich cod. 1199 01:00:33,661 --> 01:00:35,840 Tynnwch pethau allan yn ofalus gam wrth gam. 1200 01:00:35,840 --> 01:00:37,870 Mae'n ei gwneud yn llawer haws i feddwl am. 1201 01:00:37,870 --> 01:00:40,910 >> Ac yn olaf, yr ydych am fod yn gallu brofi eich perfformiad eich rhaglen 1202 01:00:40,910 --> 01:00:41,618 ar y bwrdd mawr. 1203 01:00:41,618 --> 01:00:43,710 Os ydych yn guys yn cymryd edrych ar CS50 ar hyn o bryd, 1204 01:00:43,710 --> 01:00:45,210 yr ydym wedi hyn a elwir y bwrdd mawr. 1205 01:00:45,210 --> 01:00:50,200 Dyma'r daflen sgorio y cyflymaf sillafu amseroedd gwirio ar draws yr holl CS50 1206 01:00:50,200 --> 01:00:55,720 ar hyn o bryd, rwy'n meddwl bod y brig fel 10 gwaith yr wyf yn meddwl wyth ohonynt yn staff. 1207 01:00:55,720 --> 01:00:57,960 Rydyn ni eisiau i chi guys i guro ni. 1208 01:00:57,960 --> 01:01:00,870 >> Mae pob un ohonom yn ceisio gweithredu y cod cyflymaf ag y bo modd. 1209 01:01:00,870 --> 01:01:04,880 Rydym am i chi guys i geisio herio ni a rhoi ar waith yn gyflymach nag pob un ohonom 1210 01:01:04,880 --> 01:01:05,550 yn gallu. 1211 01:01:05,550 --> 01:01:07,970 Ac felly mae hyn yn wir y tro cyntaf ein bod yn 1212 01:01:07,970 --> 01:01:12,680 gofyn i chi guys i wneud hynny pset gallwch chi wir yn ei wneud ym mha bynnag ddull 1213 01:01:12,680 --> 01:01:13,760 ydych ei eisiau. 1214 01:01:13,760 --> 01:01:17,730 >> Rwyf bob amser yn dweud, mae hyn yn debycach i ateb go iawn, dde? 1215 01:01:17,730 --> 01:01:19,550 Yr wyf yn ei ddweud, hey, mae angen i mi i chi wneud hyn. 1216 01:01:19,550 --> 01:01:21,380 Adeiladu rhaglen sy'n gwneud hyn i mi. 1217 01:01:21,380 --> 01:01:22,630 Ei wneud ar y bynnag y dymunwch. 1218 01:01:22,630 --> 01:01:24,271 Fi jyst yn gwybod fy mod am ymprydio. 1219 01:01:24,271 --> 01:01:25,770 Dyna eich her ar gyfer yr wythnos hon. 1220 01:01:25,770 --> 01:01:27,531 Rydych guys, rydym yn mynd i roi tasg i chi. 1221 01:01:27,531 --> 01:01:29,030 Rydym yn mynd i roi her i chi. 1222 01:01:29,030 --> 01:01:31,559 Ac yna mae i fyny i chi guys i yn gyfan gwbl yn unig chyfrif i maes 1223 01:01:31,559 --> 01:01:34,100 beth yw'r cyflymaf a mwyaf ffordd effeithlon i weithredu hyn. 1224 01:01:34,100 --> 01:01:34,600 Yeah? 1225 01:01:34,600 --> 01:01:37,476 >> GYNULLEIDFA: A ydym yn caniatáu i os Yn eisiau i ymchwilio i ffyrdd cyflymach 1226 01:01:37,476 --> 01:01:40,821 i wneud tablau hash ar-lein, gallwn wneud hynny a dyfynnu cod rhywun arall? 1227 01:01:40,821 --> 01:01:42,070 Andi Peng: Yeah, yn hollol iawn. 1228 01:01:42,070 --> 01:01:44,320 Felly, os ydych guys yn darllen y spec, mae 'na linell 1229 01:01:44,320 --> 01:01:48,310 yn y fanyleb sy'n dweud i chi guys yn gwbl rhad ac am ddim i ymchwilio i hash 1230 01:01:48,310 --> 01:01:51,070 swyddogaethau ar beth yw rhai o swyddogaethau hash gyflymach 1231 01:01:51,070 --> 01:01:54,720 i redeg pethau drwodd fel belled ag y byddwch yn nodi bod cod. 1232 01:01:54,720 --> 01:01:57,220 Felly, mae rhai pobl yn barod cyfrifedig allan ffyrdd cyflym 1233 01:01:57,220 --> 01:02:00,250 o wneud gwirwyr sillafu, o cyflym dulliau o storio gwybodaeth. 1234 01:02:00,250 --> 01:02:02,750 Hollol i fyny i chi guys os ydych yn eisiau dim ond yn cymryd hynny, dde? 1235 01:02:02,750 --> 01:02:04,045 Gwnewch yn siŵr eich bod yn nodi. 1236 01:02:04,045 --> 01:02:06,170 Yr her yma 'n sylweddol ein bod yn ceisio ei brofi 1237 01:02:06,170 --> 01:02:09,750 yn gwneud yn siŵr eich bod yn gwybod eich ffordd o gwmpas awgrymiadau. 1238 01:02:09,750 --> 01:02:12,700 Cyn belled ag y byddwch yn gweithredu y swyddogaeth hash gwirioneddol 1239 01:02:12,700 --> 01:02:15,070 ac yn dod i fyny gyda tebyg y math i wneud hynny, 1240 01:02:15,070 --> 01:02:17,570 gallwch chi guys ymchwilio beth bynnag dulliau ar-lein i chi guys eisiau. 1241 01:02:17,570 --> 01:02:17,996 Yeah? 1242 01:02:17,996 --> 01:02:19,700 >> GYNULLEIDFA: Allwn ni sôn am ddim ond trwy ddefnyddio'r [Anghlywadwy]? 1243 01:02:19,700 --> 01:02:20,120 >> Andi Peng: Yeah. 1244 01:02:20,120 --> 01:02:22,328 Gallwch gyfiawn, yn eich sylwadau, gallwch ddyfynnu fel, o, 1245 01:02:22,328 --> 01:02:26,127 a gymerwyd o yada, yada, yada, swyddogaeth hash. 1246 01:02:26,127 --> 01:02:27,210 Dylai unrhyw un gennych unrhyw gwestiynau? 1247 01:02:27,210 --> 01:02:29,694 Rydym breezed mewn gwirionedd drwy adran heddiw. 1248 01:02:29,694 --> 01:02:31,610 Byddaf fod hyd yma i ateb cwestiynau hefyd. 1249 01:02:31,610 --> 01:02:36,570 >> Hefyd, fel y dywedais, swyddfa Oriau heno ac yfory. 1250 01:02:36,570 --> 01:02:40,307 Mae'r spec yr wythnos hon mewn gwirionedd super hawdd ac super byr i ddarllen. 1251 01:02:40,307 --> 01:02:43,140 Byddwn yn awgrymu yn edrych, dim ond ddarllen drwy'r chyfanrwydd ohono. 1252 01:02:43,140 --> 01:02:45,730 >> Ac Zamyla mewn gwirionedd yn cerdded i chi drwy bob un o'r swyddogaethau 1253 01:02:45,730 --> 01:02:49,796 mae angen i chi weithredu, ac felly mae'n iawn, yn glir iawn sut i wneud popeth. 1254 01:02:49,796 --> 01:02:51,920 Dim ond i wneud yn siŵr eich bod yn cadw golwg ar awgrymiadau. 1255 01:02:51,920 --> 01:02:53,650 Mae hwn yn pset heriol iawn. 1256 01:02:53,650 --> 01:02:56,744 >> Dyw hi ddim yn heriol oherwydd fel, oh, mae'r cysyniadau yn llawer mwy 1257 01:02:56,744 --> 01:02:59,160 anodd, neu rhaid i chi ddysgu cymaint o gystrawen newydd y ffordd 1258 01:02:59,160 --> 01:03:00,650 chi a wnaeth gyfer y pset diwethaf. 1259 01:03:00,650 --> 01:03:03,320 Mae'r pset yn anodd oherwydd mae cymaint o awgrymiadau, 1260 01:03:03,320 --> 01:03:06,980 ac yna mae'n iawn, yn hawdd iawn i'w unwaith gennych nam yn eich cod na fyddant yn gallu 1261 01:03:06,980 --> 01:03:08,315 i ddod o hyd lle y byg yn. 1262 01:03:08,315 --> 01:03:13,200 >> Ac felly yn gyflawn a ffydd llwyr ynoch chi guys i allu i guro ein [Anghlywadwy] 1263 01:03:13,200 --> 01:03:13,700 sillafiadau. 1264 01:03:13,700 --> 01:03:16,640 Fi 'n weithredol wedi nid unrhyw mwynglawdd ysgrifenedig eto, ond rwy'n ar fin i ysgrifennu pwll. 1265 01:03:16,640 --> 01:03:19,070 Felly, tra eich bod yn ysgrifennu eich un chi, byddaf yn ysgrifennu pwll. 1266 01:03:19,070 --> 01:03:21,070 Rydw i'n mynd i geisio gwneud mwynglawdd yn gyflymach na chi. 1267 01:03:21,070 --> 01:03:23,940 Cawn weld pwy sydd â'r un cyflymaf. 1268 01:03:23,940 --> 01:03:27,340 >> Ac ie, byddaf yn gweld pob un chi guys yma ar ddydd Mawrth. 1269 01:03:27,340 --> 01:03:29,510 Byddaf yn rhedeg tebyg gweithdy pset. 1270 01:03:29,510 --> 01:03:32,640 Mae pob un o'r adrannau hyn wythnos yn weithdai pset, 1271 01:03:32,640 --> 01:03:36,690 er mwyn i chi guys yn cael llawer o gyfleoedd am gymorth, oriau swyddfa fel bob amser, 1272 01:03:36,690 --> 01:03:41,330 ac Fi 'n sylweddol yn edrych ymlaen at darllen pob un cod eich guys '. 1273 01:03:41,330 --> 01:03:44,160 Mae gen i cwisiau i fyny yma os ydych guys eisiau dod gael hynny. 1274 01:03:44,160 --> 01:03:45,880 Dyna i gyd. 1275 01:03:45,880 --> 01:03:48,180