1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> SIARADWR 1: Gadewch i ni roi yr ateb hwn cais. 3 00:00:03,070 --> 00:00:07,130 Felly, gadewch i ni edrych ar yr hyn y mae ein Bydd nod strwythur yn edrych fel. 4 00:00:07,130 --> 00:00:11,040 Yma, rydym yn gweld ein bod yn mynd i gael Bool Word a seren nod strwythur 5 00:00:11,040 --> 00:00:12,990 Mae plant braced wyddor. 6 00:00:12,990 --> 00:00:18,720 Felly peth cyntaf efallai y byddwch yn meddwl, pam fod hash wyddor a ddiffinnir fel 27? 7 00:00:18,720 --> 00:00:22,540 Wel, cofiwch ein bod yn mynd i angen i gael ei drin y collnod, felly 8 00:00:22,540 --> 00:00:25,610 sy'n mynd i fod yn dipyn o arbennig achos drwy gydol y rhaglen hon. 9 00:00:25,610 --> 00:00:28,780 >> OK, yn awr, yn cofio sut y mae Trie yn gweithio mewn gwirionedd. 10 00:00:28,780 --> 00:00:33,420 Gadewch i ni ddweud ein bod yn mynegeio y gair cathod, yna o wraidd ein Trie, 11 00:00:33,420 --> 00:00:36,670 rydym yn mynd i edrych ar y Plant amrywiaeth, ac rydym yn mynd i edrych ar y 12 00:00:36,670 --> 00:00:42,250 mynegai sy'n cyfateb i'r llythyr C. Felly byddai hynny'n mynegai dau. 13 00:00:42,250 --> 00:00:46,400 Felly o ystyried, a fydd yn rhoi i ni yn nod newydd, ac yna byddwn ni 14 00:00:46,400 --> 00:00:47,880 gweithio o'r nod. 15 00:00:47,880 --> 00:00:51,830 >> Felly, o ystyried bod nod, rydym yn unwaith eto mynd i edrych ar yr amrywiaeth Plant, 16 00:00:51,830 --> 00:00:56,170 ac rydym yn mynd i edrych ar y mynegai sero i gyfateb i'r A mewn cath. 17 00:00:56,170 --> 00:01:01,240 Felly, yna rydym yn mynd i fynd i'r nod, ac o gofio bod nod, rydym yn mynd 18 00:01:01,240 --> 00:01:05,170 i edrych ar y mynegai sy'n cyfateb i T. Ac yn symud ymlaen i'r nod, 19 00:01:05,170 --> 00:01:09,590 yn olaf, rydym wedi edrych yn gyfan gwbl drwy ein Cat gair, ac yn awr Bool 20 00:01:09,590 --> 00:01:15,020 Gair i fod i nodi a y gair a roddir mewn gwirionedd gair. 21 00:01:15,020 --> 00:01:17,530 >> Felly, pam mae angen yr achos arbennig? 22 00:01:17,530 --> 00:01:21,680 Wel, beth os bydd y gair trychineb yn ein geiriadur, ond 23 00:01:21,680 --> 00:01:24,120 nid y gair gath yn? 24 00:01:24,120 --> 00:01:29,030 Felly, yn edrych i weld a yw'r gair gath yn yn ein geiriadur, rydym yn mynd i 25 00:01:29,030 --> 00:01:34,880 edrych yn llwyddiannus trwy'r mynegeion C-A-T a dod i nod, ond mae hynny'n 26 00:01:34,880 --> 00:01:39,760 yn unig oherwydd trychineb yn digwydd i creu nodau ar y ffordd o C-A-T i gyd 27 00:01:39,760 --> 00:01:41,250 y ffordd i ddiwedd y gair. 28 00:01:41,250 --> 00:01:46,520 Felly Bool Word yn cael ei ddefnyddio nodwch p'un a y lleoliad penodol hwn mewn gwirionedd yn 29 00:01:46,520 --> 00:01:48,370 yn dangos gair. 30 00:01:48,370 --> 00:01:52,920 >> Mae pob hawl, felly nawr ein bod yn gwybod beth yw Trie yn mynd i edrych fel, gadewch i ni edrych 31 00:01:52,920 --> 00:01:54,800 yn y swyddogaeth Llwyth. 32 00:01:54,800 --> 00:01:58,670 Felly Llwyth yn mynd i ddychwelyd Bool am a ydym yn llwyddiannus neu 33 00:01:58,670 --> 00:02:03,020 geiriadur a'u llwytho aflwyddiannus mae hyn yn mynd i fod yn y geiriadur 34 00:02:03,020 --> 00:02:04,520 yr ydym am i lwytho. 35 00:02:04,520 --> 00:02:08,310 Beth felly yn gyntaf rydym yn mynd i'w wneud yn agored i fyny y geiriadur hwnnw ar gyfer darllen. 36 00:02:08,310 --> 00:02:12,060 Mae'n rhaid i ni wneud yn siŵr nad ydym yn methu, felly os nad y geiriadur oedd 37 00:02:12,060 --> 00:02:15,280 agor yn llwyddiannus, bydd yn dychwelyd Na, ac os felly rydym yn mynd i 38 00:02:15,280 --> 00:02:16,340 dychwelyd Anghywir. 39 00:02:16,340 --> 00:02:21,290 Ond gan dybio ei fod yn llwyddo i agor, yna gallwn mewn gwirionedd yn darllen 40 00:02:21,290 --> 00:02:22,310 trwy y geiriadur. 41 00:02:22,310 --> 00:02:24,940 >> Beth felly yn gyntaf rydym yn mynd i eisiau ei wneud yw gennym y 42 00:02:24,940 --> 00:02:26,560 gwraidd amrywiol byd-eang. 43 00:02:26,560 --> 00:02:30,250 Yn awr, gwraidd yn mynd i fod yn seren nod. 44 00:02:30,250 --> 00:02:33,830 Mae'n frig ein Trie ein bod ni'n mynd i gael ei bwysleisio'r drwy. 45 00:02:33,830 --> 00:02:38,200 Beth felly yn gyntaf rydym yn mynd i fod eisiau wneud yw dyrannu cof ar gyfer ein gwreiddiau. 46 00:02:38,200 --> 00:02:42,040 >> Sylwch ein bod yn defnyddio'r Calloc swyddogaeth, sydd yn y bôn yr un fath 47 00:02:42,040 --> 00:02:45,560 gan fod y swyddogaeth Malloc, ac eithrio ei fod yn sicr o ddychwelyd rhywbeth sy'n 48 00:02:45,560 --> 00:02:47,240 zeroed allan yn gyfan gwbl. 49 00:02:47,240 --> 00:02:51,350 Felly, os ydym yn defnyddio Malloc, byddai angen i ni mynd drwy bob un o'r awgrymiadau yn ein 50 00:02:51,350 --> 00:02:54,220 nod a gwneud yn siŵr bod maen nhw i gyd null. 51 00:02:54,220 --> 00:02:56,780 Felly bydd Calloc wneud hynny i ni. 52 00:02:56,780 --> 00:03:00,390 >> Yn awr, yn union fel Malloc, mae angen i ni wneud siwr bod y dyraniad mewn gwirionedd 53 00:03:00,390 --> 00:03:01,580 llwyddiannus. 54 00:03:01,580 --> 00:03:04,060 Os bydd hyn yn dychwelyd null, yna rydym yn angen i ni gau ein geiriadur 55 00:03:04,060 --> 00:03:06,170 ffeilio a dychwelyd Ffug. 56 00:03:06,170 --> 00:03:11,040 Felly, gan dybio y dyraniad llwyddiannus, rydym yn mynd i ddefnyddio nod 57 00:03:11,040 --> 00:03:14,340 seren cyrchwr i ailadrodd drwy ein Trie. 58 00:03:14,340 --> 00:03:17,950 Felly, byth yn ein gwreiddiau yn mynd i newid, ond rydym yn mynd i ddefnyddio cyrchwr i 59 00:03:17,950 --> 00:03:20,770 mewn gwirionedd yn mynd o nod i nod. 60 00:03:20,770 --> 00:03:25,000 >> Mae pob hawl, felly yn yr Ar gyfer dolen, rydym yn darllen trwy'r ffeil geiriadur, 61 00:03:25,000 --> 00:03:26,965 ac rydym yn defnyddio o fgetc. 62 00:03:26,965 --> 00:03:30,360 Felly fgetc yn mynd i fachu un cymeriad o'r ffeil. 63 00:03:30,360 --> 00:03:33,430 Rydym yn mynd i barhau grabbing cymeriadau er nad ydym yn cyrraedd y 64 00:03:33,430 --> 00:03:37,540 ddiwedd y ffeil, felly mae dau achos mae angen i ni drin. 65 00:03:37,540 --> 00:03:41,640 Y cyntaf, os nad oedd y cymeriad yn llinell newydd, felly rydym yn gwybod os oedd yn newydd 66 00:03:41,640 --> 00:03:44,480 llinell, yna rydym chi ar fin i symud ymlaen i gair newydd. 67 00:03:44,480 --> 00:03:49,300 Ond gan dybio nad oedd yn llinell newydd, yna yma, rydym am i chyfrif i maes y 68 00:03:49,300 --> 00:03:52,440 mynegai rydyn ni'n mynd i mynegai i yn yr arae plant eu bod 69 00:03:52,440 --> 00:03:53,890 buom yn edrych ar blaen. 70 00:03:53,890 --> 00:03:57,950 >> Felly, fel y dywedais o'r blaen, mae angen i ni achos arbennig y collnod. 71 00:03:57,950 --> 00:04:01,040 Sylwi ein bod yn defnyddio'r gweithredwr deiran yma, felly rydym yn mynd i ddarllen 72 00:04:01,040 --> 00:04:05,500 hyn fel pe cymeriad ydym yn darllen yn ei collnod, yna rydym yn mynd i 73 00:04:05,500 --> 00:04:11,740 gosod mynegai cyfartal i minws wyddor 1, a fydd y mynegai 26. 74 00:04:11,740 --> 00:04:15,190 Else, os nad oedd collnod, yna rydym yn mynd i osod y mynegai 75 00:04:15,190 --> 00:04:17,820 cyfartal i c minws a. 76 00:04:17,820 --> 00:04:23,090 Felly cofiwch ôl o setiau p blaenorol, c minws mae yn mynd i roi i ni y 77 00:04:23,090 --> 00:04:27,470 sefyllfa yn nhrefn yr wyddor o c, felly os c yw llythyren A, bydd hyn yn 78 00:04:27,470 --> 00:04:28,770 rhoi mynegai sero ni. 79 00:04:28,770 --> 00:04:32,180 Am y llythyr B, byddai'n rhoi i ni y mynegai 1, ac yn y blaen. 80 00:04:32,180 --> 00:04:37,070 >> Felly, mae hyn yn rhoi mynegai yn y ni Plant amrywiaeth yr ydym am. 81 00:04:37,070 --> 00:04:42,540 Yn awr, os mynegai hwn yn null hyn o bryd yn yr amrywiaeth Plant, mae hynny'n golygu bod 82 00:04:42,540 --> 00:04:47,470 nad yw nod yn bodoli ar hyn o bryd o y llwybr hwnnw, felly mae angen i ddyrannu 83 00:04:47,470 --> 00:04:49,220 nod ar gyfer y llwybr hwnnw. 84 00:04:49,220 --> 00:04:50,610 Dyna beth rydym yn ei wneud yma. 85 00:04:50,610 --> 00:04:54,650 Felly, rydym yn mynd i, unwaith eto, defnyddiwch y Calloc swyddogaeth fel nad oes gennym 86 00:04:54,650 --> 00:05:00,130 i sero allan bob un o'r awgrymiadau, ac rydym ni, unwaith eto, mae angen i sicrhau bod Calloc 87 00:05:00,130 --> 00:05:01,300 Nid oedd yn methu. 88 00:05:01,300 --> 00:05:04,760 Os Calloc oedd yn methu, yna mae angen i ddadlwytho popeth, cau ein 89 00:05:04,760 --> 00:05:06,880 geiriadur, a dychwelyd Ffug. 90 00:05:06,880 --> 00:05:14,110 >> Felly gan dybio nad oedd yn methu, yna Bydd hyn yn creu plentyn newydd i ni, 91 00:05:14,110 --> 00:05:16,000 ac yna byddwn yn mynd i'r plentyn hwnnw. 92 00:05:16,000 --> 00:05:19,030 Bydd ein cyrchwr ailadrodd i lawr i'r plentyn hwnnw. 93 00:05:19,030 --> 00:05:23,390 Yn awr, os nad oedd hyn yn null i ddechrau, yna gall y cyrchwr yn unig ailadrodd 94 00:05:23,390 --> 00:05:26,650 i lawr i'r plentyn hwnnw heb holi i gorfod i ddyrannu unrhyw beth. 95 00:05:26,650 --> 00:05:30,790 Mae hyn yn wir lle'r ydym digwydd gyntaf i ddyrannu'r gair gath, a 96 00:05:30,790 --> 00:05:34,390 mae hynny'n golygu pan fyddwn yn mynd i ddyrannu trychineb, nid oes angen i ni greu 97 00:05:34,390 --> 00:05:35,720 nodau ar gyfer C-A-T eto. 98 00:05:35,720 --> 00:05:37,620 Maent eisoes yn bodoli. 99 00:05:37,620 --> 00:05:40,140 >> Iawn, felly beth yw Else hwn? 100 00:05:40,140 --> 00:05:44,600 Mae hyn yn y cyflwr lle c yn slaes n, lle mae c yn llinell newydd. 101 00:05:44,600 --> 00:05:47,780 Mae hyn yn golygu ein bod wedi llwyddo i cwblhau gair. 102 00:05:47,780 --> 00:05:51,020 Nawr, beth ydym ni eisiau ei wneud pan fyddwn yn cwblhau gair yn llwyddiannus? 103 00:05:51,020 --> 00:05:55,250 Rydym yn mynd i ddefnyddio y maes hwn gair tu mewn ein nod strwythur. 104 00:05:55,250 --> 00:06:00,570 >> Rydym yn awyddus i sefydlu hynny i Gwir, fel y yn dangos bod nod hyn yn dangos 105 00:06:00,570 --> 00:06:03,320 gair llwyddiannus air go iawn. 106 00:06:03,320 --> 00:06:05,050 Yn awr, pennu hynny i Gwir. 107 00:06:05,050 --> 00:06:09,210 Rydym am i ailosod ein cyrchwr i bwynt i ddechrau'r Trie eto. 108 00:06:09,210 --> 00:06:13,510 Ac yn olaf, cynyddiad ein geiriadur maint ers i ni ganfod air arall. 109 00:06:13,510 --> 00:06:16,450 >> Mae pob hawl, felly rydym yn mynd i barhau i wneud hynny, darllen mewn cymeriad gan 110 00:06:16,450 --> 00:06:21,960 cymeriad, adeiladu nodau newydd yn ein Trie ac ar gyfer pob gair yn y 111 00:06:21,960 --> 00:06:26,810 geiriadur, nes i ni o'r diwedd yn cyrraedd c yn hafal i EOF, ac os felly, ydym yn ei dorri 112 00:06:26,810 --> 00:06:28,100 allan o'r ffeil. 113 00:06:28,100 --> 00:06:31,110 Erbyn hyn, mae dau achos o dan y gallem fod wedi taro EOF. 114 00:06:31,110 --> 00:06:35,680 Y cyntaf yw os bu camgymeriad darllen o'r ffeil, felly os nad oedd 115 00:06:35,680 --> 00:06:39,280 camgymeriad, mae angen i ni wneud y nodweddiadol dadlwytho popeth, caewch y ffeil, 116 00:06:39,280 --> 00:06:40,520 dychwelyd Anghywir. 117 00:06:40,520 --> 00:06:43,870 Gan dybio nad oedd camgymeriad, bod yn unig yn golygu ein bod mewn gwirionedd yn cyrraedd y diwedd 118 00:06:43,870 --> 00:06:47,820 y ffeil, ac os felly, yr ydym yn cau'r ffeilio a dychwelyd Gwir ers i ni 119 00:06:47,820 --> 00:06:51,010 llwytho y geiriadur yn llwyddiannus yn ein Trie. 120 00:06:51,010 --> 00:06:54,240 >> Mae pob hawl, felly nawr gadewch i ni atalfa i maes Gwirio. 121 00:06:54,240 --> 00:06:58,780 O edrych ar y swyddogaeth Gwirio, gwelwn bod Archwiliad yn mynd i ddychwelyd Bool. 122 00:06:58,780 --> 00:07:03,740 Mae'n dychwelyd Gwir os y gair hwn ei fod yn yn cael eu trosglwyddo yn ein Trie. 123 00:07:03,740 --> 00:07:06,170 Mae'n dychwelyd Ffug fel arall. 124 00:07:06,170 --> 00:07:10,110 >> Felly, sut yr ydym yn mynd i benderfynu a gair hwn yn ein Trie? 125 00:07:10,110 --> 00:07:14,270 Rydym yn gweld yma fod, yn union fel o'r blaen, rydym yn mynd i ddefnyddio cyrchwr i ailadrodd 126 00:07:14,270 --> 00:07:16,010 drwy ein Trie. 127 00:07:16,010 --> 00:07:20,650 Yn awr, dyma, rydym yn mynd i ailadrodd dros ein gair cyfan. 128 00:07:20,650 --> 00:07:24,680 Felly bwysleisio'r dros y gair yr ydym yn pasio, rydyn ni'n mynd i benderfynu ar y 129 00:07:24,680 --> 00:07:29,280 mynegai i'r amrywiaeth Plant sy'n cyfateb i fi braced geiriau. 130 00:07:29,280 --> 00:07:34,150 Felly, mae hyn yn mynd i edrych yn union fel Llwytho, lle os fi braced gair yn 131 00:07:34,150 --> 00:07:38,110 collnod, yna rydym am ddefnyddio mynegai wyddor minws 1 oherwydd ein bod yn benderfynol 132 00:07:38,110 --> 00:07:41,160 dyna lle'r ydym yn mynd i storio collnodau. 133 00:07:41,160 --> 00:07:44,440 >> Arall rydym yn mynd i ddefnyddio tolower braced gair i. 134 00:07:44,440 --> 00:07:48,270 Felly cofiwch y gair hwnnw yn gallu cael mympwyol cyfalafu, ac felly rydym 135 00:07:48,270 --> 00:07:51,590 eisiau gwneud yn siŵr ein bod yn defnyddio fersiwn lythrennau bach o bethau. 136 00:07:51,590 --> 00:07:55,300 Ac yna tynnu o'r llythrennau bach a i, unwaith eto, yn rhoi i ni y 137 00:07:55,300 --> 00:07:57,940 sefyllfa yn nhrefn yr wyddor y cymeriad. 138 00:07:57,940 --> 00:08:01,740 Felly, mae hynny'n mynd i fod yn ein mynegai i mewn i'r amrywiaeth Plant. 139 00:08:01,740 --> 00:08:06,480 >> Ac yn awr, os yw'r mynegai yn y Cynllun Plant amrywiaeth yn null, sy'n golygu ein bod 140 00:08:06,480 --> 00:08:09,050 yn gallu parhau bwysleisio'r mwyach i lawr ein Trie. 141 00:08:09,050 --> 00:08:13,320 Os yw hynny'n wir, ni all y gair hwn o bosibl fod yn ein Trie, oherwydd os yw'n 142 00:08:13,320 --> 00:08:18,000 yn, byddai hynny'n golygu y byddai llwybr i lawr i'r gair, ac y byddech yn 143 00:08:18,000 --> 00:08:19,350 byth yn dod ar draws null. 144 00:08:19,350 --> 00:08:21,910 Felly dod ar draws null, byddwn yn dychwelyd Ffug. 145 00:08:21,910 --> 00:08:23,810 Nid yw'r gair yn y geiriadur. 146 00:08:23,810 --> 00:08:28,200 Os nad yw'n yn null, yna rydym yn mynd i parhau i bwysleisio'r, felly rydym yn mynd 147 00:08:28,200 --> 00:08:33,150 i ddiweddaru ein cyrchwr i dynnu sylw at y nod arbennig ar y mynegai. 148 00:08:33,150 --> 00:08:36,659 >> Felly rydym yn cadw gwneud hynny drwy gydol y gair cyfan. 149 00:08:36,659 --> 00:08:40,630 Gan dybio y byddwn byth yn taro null, mae hynny'n ei olygu roeddem yn gallu i fynd drwy'r holl 150 00:08:40,630 --> 00:08:44,840 byd ac yn dod o hyd i nod yn ein Trie, ond nid ydym yn hollol wneud eto. 151 00:08:44,840 --> 00:08:46,350 Nid ydym am i ddim ond yn dychwelyd Gwir. 152 00:08:46,350 --> 00:08:51,400 Rydym yn awyddus i ddychwelyd cyrchwr geiriau gwall ers hynny, cofiwch unwaith eto, os nad gath yn 153 00:08:51,400 --> 00:08:55,140 yn ein geiriadur a trychineb yw, yna byddwn yn cael llwyddiannus drwy 154 00:08:55,140 --> 00:08:59,810 y gair gath, ond gair cyrchwr Bydd yn Anghywir ac nid Gwir. 155 00:08:59,810 --> 00:09:04,990 Felly, byddwn yn dychwelyd gair cyrchwr i nodi boed nod hwn mewn gwirionedd gair, 156 00:09:04,990 --> 00:09:06,530 a dyna ni ar gyfer siec. 157 00:09:06,530 --> 00:09:08,310 >> Felly, gadewch i ni edrych ar Maint. 158 00:09:08,310 --> 00:09:11,410 Felly Maint yn mynd i fod yn eithaf hawdd ers hynny, cofio yn Llwytho, rydym yn 159 00:09:11,410 --> 00:09:15,480 incrementing maint y geiriadur ar gyfer pob gair yr ydym yn dod ar eu traws. 160 00:09:15,480 --> 00:09:20,820 Felly Maint yn unig yn mynd i ddychwelyd maint geiriadur, a dyna ni. 161 00:09:20,820 --> 00:09:24,650 >> Mae pob hawl, felly yn olaf, rydym wedi Dadlwytho. 162 00:09:24,650 --> 00:09:29,050 Felly Dadlwytho, rydym yn mynd i ddefnyddio swyddogaeth ailadroddus i wneud mewn gwirionedd yn yr holl 163 00:09:29,050 --> 00:09:33,390 o waith i ni, felly mae ein swyddogaeth yn mynd i gael ei alw Unloader. 164 00:09:33,390 --> 00:09:35,830 Beth yw Unloader mynd i'w wneud? 165 00:09:35,830 --> 00:09:40,640 Rydym yn gweld yma fod Unloader yn mynd i ailadrodd dros bob un o'r plant yn 166 00:09:40,640 --> 00:09:45,810 y nod penodol, ac os yw'r plentyn Nid nod yn null, yna rydym yn mynd i 167 00:09:45,810 --> 00:09:47,760 dadlwytho'r nôd plentyn. 168 00:09:47,760 --> 00:09:52,070 >> Felly, mae hyn yn mynd i recursively dadlwytho bob un o'n plant. 169 00:09:52,070 --> 00:09:55,140 Unwaith y byddwn yn sicr bod pob un o'n plant wedi cael eu dadlwytho, yna rydym yn 170 00:09:55,140 --> 00:09:58,830 Gall rhad ac am ddim ni ein hunain, felly dadlwytho ni ein hunain. 171 00:09:58,830 --> 00:10:04,550 Felly, bydd hyn yn recursively dadlwytho'r Trie cyfan, ac yna unwaith dyna 172 00:10:04,550 --> 00:10:06,910 wneud, gallwn fynd yn ôl Gwir. 173 00:10:06,910 --> 00:10:09,770 Ni all dadlwytho yn methu, rydym yn dim ond rhyddhau pethau. 174 00:10:09,770 --> 00:10:12,985 Felly, ar ôl i ni yn ei wneud rhyddhau popeth, yn dychwelyd Gwir. 175 00:10:12,985 --> 00:10:14,380 A dyna ni. 176 00:10:14,380 --> 00:10:16,792 Fy enw i yw Rob, ac mae hyn yn Roedd [Anghlywadwy]. 177 00:10:16,792 --> 00:10:21,888