1 00:00:00,000 --> 00:00:04,074 2 00:00:04,074 --> 00:00:05,990 DOUG Lloyd: Të gjithë të drejtë, kështu që me këtë pikë ju jeni 3 00:00:05,990 --> 00:00:09,020 ndoshta goxha i njohur me vargjeve dhe listat lidhura 4 00:00:09,020 --> 00:00:10,950 që është dy primar strukturat e të dhënave ne kemi 5 00:00:10,950 --> 00:00:16,810 foli për për mbajtjen grupe të të dhënat e llojeve të ngjashme të të dhënave të organizuar. 6 00:00:16,810 --> 00:00:19,080 >> Tani ne jemi duke shkuar për të folur në lidhje me një çift të variacioneve 7 00:00:19,080 --> 00:00:20,330 në vargjeve dhe listat e lidhura. 8 00:00:20,330 --> 00:00:22,362 Në këtë video ne jemi duke shkuar për të folur për oxhaqet. 9 00:00:22,362 --> 00:00:25,320 Në mënyrë të veçantë ne do të flasim rreth një strukturë e të dhënave të quajtur një pirg. 10 00:00:25,320 --> 00:00:28,510 Kujtoni nga diskutimet e mëparshme për pointers dhe kujtesës, 11 00:00:28,510 --> 00:00:32,060 se rafte është edhe të përmendur për një segment të kujtesës 12 00:00:32,060 --> 00:00:34,980 ku deklaroi statike kujtim memory-- që ju 13 00:00:34,980 --> 00:00:38,730 emrin, variablat që emri, et cetera dhe funksion korniza të cilat ne gjithashtu 14 00:00:38,730 --> 00:00:41,000 korniza thirrje rafte ekzistojnë. 15 00:00:41,000 --> 00:00:45,421 Pra, kjo është një strukturë e të dhënave pirg jo një segment rafte e kujtesës. 16 00:00:45,421 --> 00:00:45,920 NE RREGULL. 17 00:00:45,920 --> 00:00:46,890 >> Por çfarë është një pirg? 18 00:00:46,890 --> 00:00:49,220 Pra, kjo është shumë e shumë vetëm një lloj të veçantë të strukturës së 19 00:00:49,220 --> 00:00:51,190 që ruan të dhënat në mënyrë të organizuar. 20 00:00:51,190 --> 00:00:53,760 Dhe nuk ka dy shumë Mënyra e zakonshme për të zbatuar 21 00:00:53,760 --> 00:00:57,380 oxhaqet duke përdorur dy strukturat e të dhënave se ne jemi tashmë të njohur me, 22 00:00:57,380 --> 00:01:00,340 vargjeve dhe listat lidhura. 23 00:01:00,340 --> 00:01:04,430 Çfarë e bën një të veçantë pirg është Mënyra në të cilën ne kemi vënë informacion 24 00:01:04,430 --> 00:01:08,200 në rafte, dhe mënyrën se si ne hiqni informacion nga rafte. 25 00:01:08,200 --> 00:01:11,600 Në mënyrë të veçantë me oxhaqet rregulli është vetëm më 26 00:01:11,600 --> 00:01:15,830 Kohët e fundit shtuar element mund të hiqet. 27 00:01:15,830 --> 00:01:17,660 >> Pra, mendoni për atë si në qoftë se kjo është një pirg. 28 00:01:17,660 --> 00:01:21,170 Ne jemi grumbullonin informacion në krye të vetë, 29 00:01:21,170 --> 00:01:24,271 dhe vetëm gjëja në krye i grumbullit mund të hiqet. 30 00:01:24,271 --> 00:01:27,020 Ne nuk mund të hiqni gjë nën sepse çdo gjë tjetër do të 31 00:01:27,020 --> 00:01:28,020 shembet dhe bien mbi. 32 00:01:28,020 --> 00:01:32,580 Pra, ne me të vërtetë jemi duke ndërtuar një pirg që ne pastaj kemi për të hequr copë me copë. 33 00:01:32,580 --> 00:01:36,590 Për shkak të kësaj, ne zakonisht i referohemi në një pirg, si një strukturë LIFO, 34 00:01:36,590 --> 00:01:38,940 zgjasë në, nga e para. 35 00:01:38,940 --> 00:01:42,290 LIFO, të zgjasë në, së pari jashtë. 36 00:01:42,290 --> 00:01:45,635 >> Pra, për shkak të këtij kufizimi në si informacion mund të shtohet në 37 00:01:45,635 --> 00:01:49,080 dhe të hiqen nga një pirg, nuk ka të vërtetë vetëm dy gjëra që mund të bëjmë me një pirg. 38 00:01:49,080 --> 00:01:52,010 Ne mund shtytje, i cili është Termi ne përdorim për të shtuar 39 00:01:52,010 --> 00:01:55,130 një element i ri në majën e rafte, ose në qoftë se rafte nuk ekziston 40 00:01:55,130 --> 00:01:58,550 dhe ne jemi duke krijuar atë nga e para, duke krijuar rafte në vendin e parë 41 00:01:58,550 --> 00:02:00,110 do të jetë e shtyrë. 42 00:02:00,110 --> 00:02:04,990 Dhe pastaj pop, kjo është lloj i CS Termi ne i përdorim për të hequr më të fundit 43 00:02:04,990 --> 00:02:08,330 shtimit element nga maja e pirg. 44 00:02:08,330 --> 00:02:11,130 >> Pra, ne do të shikojmë në të dyja Implementimi, si grup i bazuar 45 00:02:11,130 --> 00:02:13,120 dhe listë e lidhur në bazë. 46 00:02:13,120 --> 00:02:14,870 Dhe ne jemi duke shkuar për të fillojë me grup bazë. 47 00:02:14,870 --> 00:02:19,990 Kështu që këtu është ideja themelore e asaj që Struktura e të dhënave rafte grup i bazuar 48 00:02:19,990 --> 00:02:21,140 do të duken si. 49 00:02:21,140 --> 00:02:23,740 Ne kemi një përkufizim e shtypur këtu. 50 00:02:23,740 --> 00:02:27,790 Brenda se ne kemi dy anëtarë apo fusha të strukturës. 51 00:02:27,790 --> 00:02:29,880 Ne kemi një rrjet. 52 00:02:29,880 --> 00:02:32,400 Dhe përsëri unë jam duke përdorur arbitrar Vlera e tipit të të dhënave. 53 00:02:32,400 --> 00:02:35,180 >> Pra, kjo mund të jetë çdo lloj të dhënave, Char int ose disa të dhëna të tjera 54 00:02:35,180 --> 00:02:37,080 shkruani ju krijuar më parë. 55 00:02:37,080 --> 00:02:39,861 Pra, ne kemi një rrjet të kapaciteteve të madhësisë. 56 00:02:39,861 --> 00:02:44,010 Kapaciteti qenë një kile përcaktuar konstante, ndoshta diku tjetër në dosjen tonë. 57 00:02:44,010 --> 00:02:47,550 Pra, vini re tashmë me këtë të veçantë Zbatimi ne jemi bounding 58 00:02:47,550 --> 00:02:49,800 veten si ishte tipike rasti me vargjeve, 59 00:02:49,800 --> 00:02:53,170 të cilat ne nuk mund dinamike resize, ku ka një numër të caktuar 60 00:02:53,170 --> 00:02:55,450 e elementeve maksimale që ne mund të vënë në rafte tonë. 61 00:02:55,450 --> 00:02:57,930 Në këtë rast është e elementet e kapaciteteve. 62 00:02:57,930 --> 00:03:00,310 >> Ne gjithashtu mbajnë gjurmët e në krye të rafte. 63 00:03:00,310 --> 00:03:04,350 Çfarë element është më e shtuar kohët e fundit në rafte? 64 00:03:04,350 --> 00:03:07,470 Dhe kështu që ne mbajnë gjurmët e që në një ndryshore të quajtur top. 65 00:03:07,470 --> 00:03:11,692 Dhe e gjithë kjo merr përfundoi së bashku në një lloj të ri të dhënave të quajtur një pirg. 66 00:03:11,692 --> 00:03:13,400 Dhe një herë ne jemi krijuar ky lloj i ri të dhëna 67 00:03:13,400 --> 00:03:15,410 ne mund ta trajtojmë atë si çdo lloj tjetër të të dhënave. 68 00:03:15,410 --> 00:03:20,970 Ne mund të deklarojë rafte s, ashtu si ne mund të bëjmë int x, apo y char. 69 00:03:20,970 --> 00:03:22,990 Dhe kur themi rafte s, dhe çfarë ndodh 70 00:03:22,990 --> 00:03:26,420 po ne kemi marrë një sërë kujtesës vendosur mënjanë për ne. 71 00:03:26,420 --> 00:03:28,770 >> Në këtë kapacitet rast Unë kam vendosur me sa duket 72 00:03:28,770 --> 00:03:33,470 është 10 sepse unë kam marrë një variable të vetme të tipit rafte 73 00:03:33,470 --> 00:03:35,320 e cila përmban dy fusha kujtojnë. 74 00:03:35,320 --> 00:03:38,330 Një grup, në këtë rast po ndodh të jetë një grup i numrave të plotë 75 00:03:38,330 --> 00:03:40,440 siç është rasti në shumicën e shembujve të mia. 76 00:03:40,440 --> 00:03:43,996 Dhe një tjetër variabël integer i aftë për ruajtjen në krye, 77 00:03:43,996 --> 00:03:45,870 shtoi më të fundit element të pirg. 78 00:03:45,870 --> 00:03:50,290 Pra, një turrë e vetme e asaj që ne përkufizohet vetëm duket si ky. 79 00:03:50,290 --> 00:03:53,190 Kjo është një kuti që përmban një grup i 10 çfarë 80 00:03:53,190 --> 00:03:57,280 do të jetë e integers në këtë rast dhe një tjetër variabël integer atje në gjelbër 81 00:03:57,280 --> 00:04:00,010 për të treguar në krye të rafte. 82 00:04:00,010 --> 00:04:02,600 >> Për të vendosur në krye të rafte ne vetëm themi s.top. 83 00:04:02,600 --> 00:04:04,890 Kjo është se si ne të hyrë në një Fusha e një strukture kujtojnë. 84 00:04:04,890 --> 00:04:10,460 s.top barabartë 0 efektivisht e bën këtë për të rafte tonë. 85 00:04:10,460 --> 00:04:12,960 Pra, përsëri ne kemi dy operacione që ne mund të kryejnë tani. 86 00:04:12,960 --> 00:04:14,270 Ne mund të shtyjë dhe ne mund të pop. 87 00:04:14,270 --> 00:04:15,635 Le të fillojmë me shtytje. 88 00:04:15,635 --> 00:04:18,260 Përsëri, duke i shtyre është shtuar një të ri element në majë të pirg. 89 00:04:18,260 --> 00:04:21,460 >> Pra, çfarë ne duhet të bëjmë në ky grup zbatimi i bazuar? 90 00:04:21,460 --> 00:04:23,210 E pra në përgjithësi Funksioni shtytje po shkon 91 00:04:23,210 --> 00:04:26,160 të duhet të pranojë një treguesin në rafte. 92 00:04:26,160 --> 00:04:28,610 Tani ndalo një sekondë dhe mendoni për atë. 93 00:04:28,610 --> 00:04:32,840 Pse do të duam të pranojmë një tregues për rafte? 94 00:04:32,840 --> 00:04:36,830 Kujtoni nga e kaluara videos në Shtrirja ndryshueshme dhe pointers, 95 00:04:36,830 --> 00:04:42,350 çfarë do të ndodhte nëse ne vetëm të dërguar rafte, s dhe jo në si një parametër? 96 00:04:42,350 --> 00:04:45,770 Çfarë në të vërtetë do të kalojë në atje? 97 00:04:45,770 --> 00:04:49,430 Mos harroni ne jemi duke krijuar një kopje kur ne të kalojë atë në një funksion 98 00:04:49,430 --> 00:04:51,160 nëse ne përdorim pointers. 99 00:04:51,160 --> 00:04:55,380 Dhe kështu që ky funksion të shtyjë nevojat të pranojë një tregues për rafte 100 00:04:55,380 --> 00:04:59,160 kështu që ne jemi të vërtetë ndryshuar rafte ne synojmë për të ndryshuar. 101 00:04:59,160 --> 00:05:03,060 >> Gjëja Push tjetër ndoshta dëshiron të të pranojë është një element i të dhënave të vlerës së tipit. 102 00:05:03,060 --> 00:05:06,970 Në këtë rast, një herë, një numër i plotë që ne jemi duke shkuar për të shtuar në krye të rafte. 103 00:05:06,970 --> 00:05:08,680 Pra, ne kemi marrë dy parametra tona. 104 00:05:08,680 --> 00:05:11,310 Çfarë do të shkojmë për tani bëjë brenda shtytje? 105 00:05:11,310 --> 00:05:14,860 E pra, thjesht, ne jemi vetëm duke shkuar për të shtuar që element në majë të pirg 106 00:05:14,860 --> 00:05:22,860 dhe pastaj të ndryshojë ku në krye të rafte është, që s dot vlerë të lartë. 107 00:05:22,860 --> 00:05:25,639 Pra, kjo është ajo që një funksion Deklarata për shtytje 108 00:05:25,639 --> 00:05:27,680 mund të duket si në një array-bazuar zbatimi. 109 00:05:27,680 --> 00:05:30,967 >> Përsëri kjo nuk është një rregull e vështirë dhe të shpejtë që ju mund të ndryshojë këtë dhe të ketë 110 00:05:30,967 --> 00:05:32,050 ajo ndryshojnë në mënyra të ndryshme. 111 00:05:32,050 --> 00:05:33,840 S Ndoshta është deklaruar në nivel global. 112 00:05:33,840 --> 00:05:36,180 Dhe kështu që ju nuk duhet edhe për të kaluar ajo është si një parametër. 113 00:05:36,180 --> 00:05:39,125 Kjo është përsëri vetëm një Rasti i përgjithshëm për shtytje. 114 00:05:39,125 --> 00:05:41,000 Dhe atje janë të ndryshme mënyra për ta zbatuar atë. 115 00:05:41,000 --> 00:05:42,810 Por në këtë rast tonë shtytje do të marrë 116 00:05:42,810 --> 00:05:48,540 dy argumente, një tregues për një pirg dhe një element të dhëna me vlerë të tipit, integer 117 00:05:48,540 --> 00:05:49,840 në këtë rast. 118 00:05:49,840 --> 00:05:52,100 >> Pra, ne shpallëm s, ne tha s.top barabartë me 0. 119 00:05:52,100 --> 00:05:55,969 Tani le të shtyjë numrin 28 mbi rafte. 120 00:05:55,969 --> 00:05:57,010 E pra çfarë do të thotë? 121 00:05:57,010 --> 00:05:59,600 Well aktualisht krye të rafte është 0. 122 00:05:59,600 --> 00:06:01,350 Dhe kështu që ajo që është në thelb do të ndodhë është 123 00:06:01,350 --> 00:06:05,820 ne jemi duke shkuar për të rrinë numrin 28 në array lokacion 0. 124 00:06:05,820 --> 00:06:09,540 Shumë i thjeshtë, i drejtë, që ishte e lartë dhe tani ne jemi të mirë për të shkuar. 125 00:06:09,540 --> 00:06:12,910 Dhe pastaj ne kemi nevojë për të ndryshuar çfarë në krye të rafte do të jetë. 126 00:06:12,910 --> 00:06:15,130 Kështu që herën tjetër ne shtytje një element në, 127 00:06:15,130 --> 00:06:18,017 ne jemi duke shkuar për të ruajtur atë në Vendndodhja grup, ndoshta jo 0. 128 00:06:18,017 --> 00:06:20,100 Ne nuk duam të prishësh atë që ne vetëm vënë atje. 129 00:06:20,100 --> 00:06:23,510 Dhe kështu që ne do të lëvizin vetëm maja deri 1. 130 00:06:23,510 --> 00:06:24,890 Kjo ndoshta ka kuptim. 131 00:06:24,890 --> 00:06:28,940 >> Tani në qoftë se ne duam të vënë një tjetër element mbi rafte, thonë se ne duam të shtyjë 33, 132 00:06:28,940 --> 00:06:33,190 edhe tani ne jemi vetëm duke shkuar për të marrë 33 dhe e vënë atë në array numrin e lokacionit 133 00:06:33,190 --> 00:06:37,580 1, dhe pastaj të ndryshojë në krye të tonë rafte të jetë array vend numri dy. 134 00:06:37,580 --> 00:06:40,650 Pra, nëse herën tjetër ne duam të të shtyjë një element mbi rafte, 135 00:06:40,650 --> 00:06:43,087 ajo do të vihet në vend array 2. 136 00:06:43,087 --> 00:06:44,420 Dhe le ta bëjmë atë një më shumë kohë. 137 00:06:44,420 --> 00:06:45,753 Ne do të shtyjë 19 off e oxhaqet. 138 00:06:45,753 --> 00:06:48,940 Ne do të vënë 19 në array vend 2 dhe për të ndryshuar në krye të rafte tonë 139 00:06:48,940 --> 00:06:51,220 të jetë array vend 3 kështu që në qoftë se kohë kemi ardhshëm 140 00:06:51,220 --> 00:06:54,780 nevojë për të bërë një shtytje ne jemi të mirë për të shkuar. 141 00:06:54,780 --> 00:06:56,980 >> OK, kështu që është shtyrë në një fjalë. 142 00:06:56,980 --> 00:06:57,830 Po në lidhje me popping? 143 00:06:57,830 --> 00:07:00,240 Pra Popping është lloj i Homologu të shtyrë. 144 00:07:00,240 --> 00:07:02,720 Kjo është se si ne të hequr të dhënat nga rafte. 145 00:07:02,720 --> 00:07:04,610 Dhe në nevojat e përgjithshme pop të bëjë të mëposhtme. 146 00:07:04,610 --> 00:07:07,600 Ajo duhet të pranojë një tregues për rafte, përsëri në rastin e përgjithshëm. 147 00:07:07,600 --> 00:07:10,480 Në disa raste tjera që ju mund kanë deklaruar rafte globalisht, 148 00:07:10,480 --> 00:07:13,910 në të cilin rast ju nuk keni nevojë për të kaluar atë në sepse ajo tashmë ka qasje në të 149 00:07:13,910 --> 00:07:15,541 si një ndryshore globale. 150 00:07:15,541 --> 00:07:17,040 Por atëherë çfarë tjetër nuk kemi nevojë të bëjmë? 151 00:07:17,040 --> 00:07:21,000 E pra ne u bën rritjen në krye të rafte në shtytje, 152 00:07:21,000 --> 00:07:24,050 kështu që ne jemi me siguri do të duan për pakësim në krye të rafte 153 00:07:24,050 --> 00:07:25,009 në pop, e drejtë? 154 00:07:25,009 --> 00:07:26,800 Dhe pastaj sigurisht ne jemi gjithashtu do të duan 155 00:07:26,800 --> 00:07:29,240 për t'u kthyer vlerën që kemi hequr. 156 00:07:29,240 --> 00:07:32,125 Nëse ne jemi duke shtuar elemente, ne duam për të marrë elemente nga më vonë, 157 00:07:32,125 --> 00:07:34,000 ne ndoshta në fakt duan për të ruajtur ato në mënyrë që ne 158 00:07:34,000 --> 00:07:36,490 nuk i vetëm fshini ato nga rafte dhe pastaj të bëjë asgjë me ta. 159 00:07:36,490 --> 00:07:38,500 Në përgjithësi në qoftë se ne jemi duke i shtyre dhe popping këtu 160 00:07:38,500 --> 00:07:41,250 ne duam të ruajtur këtë informacion në një mënyrë kuptimplote 161 00:07:41,250 --> 00:07:43,250 dhe kështu që nuk ka të bëjë kuptim të vetëm hidhni atë. 162 00:07:43,250 --> 00:07:46,380 Pra, ky funksion duhet të ndoshta kthehen një vlerë për ne. 163 00:07:46,380 --> 00:07:51,040 >> Pra, kjo është ajo që një deklaratë për pop mund të duket si atje në të majtë të lartë. 164 00:07:51,040 --> 00:07:53,870 Ky funksion të kthimit të dhënat e vlerës së tipit. 165 00:07:53,870 --> 00:07:56,320 Përsëri ne kemi qenë duke përdorur integers të gjithë. 166 00:07:56,320 --> 00:08:01,916 Dhe ajo pranon një tregues për një pirg si Argumenti i saj i vetëm apo parametër i vetëm. 167 00:08:01,916 --> 00:08:03,040 Pra, çfarë po pop do të bëni? 168 00:08:03,040 --> 00:08:07,990 Le të themi se duam të tani pop një element jashtë e s. 169 00:08:07,990 --> 00:08:14,000 Pra, mos harroni kam thënë se oxhaqet janë të fundit në, e parë jashtë, LIFO dhënave strukturave. 170 00:08:14,000 --> 00:08:17,855 Cili element do të të hiqet nga pirg? 171 00:08:17,855 --> 00:08:21,780 172 00:08:21,780 --> 00:08:24,150 A ju me mend 19? 173 00:08:24,150 --> 00:08:25,290 Sepse ju do të jetë e drejtë. 174 00:08:25,290 --> 00:08:28,836 19 ishte elementi i fundit kemi shtuar të rafte kur ishim shtyjnë elemente në, 175 00:08:28,836 --> 00:08:31,210 dhe kështu ajo do të të parë element që merr hequr. 176 00:08:31,210 --> 00:08:34,780 Është sikur tha ne 28, dhe pastaj ne kemi vënë 33 në krye të saj, 177 00:08:34,780 --> 00:08:36,659 dhe ne kemi vënë 19 në krye të kësaj. 178 00:08:36,659 --> 00:08:40,650 I vetmi element që ne mund të marrë jashtë është 19. 179 00:08:40,650 --> 00:08:45,019 >> Tani në diagramin këtu atë që kam bërë është lloj i fshirë 19 nga array. 180 00:08:45,019 --> 00:08:46,810 Kjo nuk është në fakt ajo që ne jemi duke shkuar për të bërë. 181 00:08:46,810 --> 00:08:48,934 Ne jemi vetëm duke shkuar për të llojit të pretendojë se nuk është atje. 182 00:08:48,934 --> 00:08:51,441 Është ende atje në se vendndodhja e kujtesës, 183 00:08:51,441 --> 00:08:54,190 por ne jemi vetëm duke shkuar për të injorojë atë duke ndryshuar në krye të rafte tonë 184 00:08:54,190 --> 00:08:56,080 nga të qenit 3 në 2. 185 00:08:56,080 --> 00:08:58,720 Pra, nëse ne do të shtyjë tani Një tjetër element mbi rafte, 186 00:08:58,720 --> 00:09:00,720 kjo do të shkruaj mbi 19. 187 00:09:00,720 --> 00:09:03,990 >> Por le të mos shkojnë nëpër telashe e fshirjes 19 nga rafte. 188 00:09:03,990 --> 00:09:05,830 Ne vetëm mund të pretendojë se nuk është atje. 189 00:09:05,830 --> 00:09:11,107 Për qëllime të rafte ato zhduken nëse ne ndryshojë lartë të jetë 2 në vend të 3. 190 00:09:11,107 --> 00:09:12,690 Të gjithë të drejtë, kështu që ishte shumë e shumë atë. 191 00:09:12,690 --> 00:09:15,080 Kjo është e gjitha ne duhet të bëjmë të pop një element off. 192 00:09:15,080 --> 00:09:16,090 Le ta bëjmë atë përsëri. 193 00:09:16,090 --> 00:09:18,610 Kështu që unë e kam theksuar atë në të kuqe këtu për tregojnë ne jemi duke e bërë një telefonatë tjetër. 194 00:09:18,610 --> 00:09:19,720 Ne jemi duke shkuar për të bërë të njëjtën gjë. 195 00:09:19,720 --> 00:09:20,803 >> Pra, çfarë do të ndodhë? 196 00:09:20,803 --> 00:09:23,670 E pra, ne jemi duke shkuar për të ruajtur 33 në x dhe ne jemi duke shkuar 197 00:09:23,670 --> 00:09:26,217 për të ndryshuar në krye të rafte në 1. 198 00:09:26,217 --> 00:09:29,050 Kështu që në qoftë se ne ishim tani për të nxitur një Elementi në rafte që ne jemi 199 00:09:29,050 --> 00:09:31,610 do të bëjë të drejtë tani, çfarë do të ndodhë 200 00:09:31,610 --> 00:09:36,367 po ne jemi duke shkuar prishësh Grup vend numri 1. 201 00:09:36,367 --> 00:09:38,950 Kështu që 33 që u la lloj prapa se ne vetëm pretenduar 202 00:09:38,950 --> 00:09:44,390 nuk është më aty, ne jemi vetëm duke shkuar për plaçkë dhe vënë 40 atje në vend. 203 00:09:44,390 --> 00:09:46,290 Dhe pastaj sigurisht, pasi kemi bërë një shtytje, 204 00:09:46,290 --> 00:09:48,780 ne jemi duke shkuar për të rrisim maja e pirg nga 1 deri 2 205 00:09:48,780 --> 00:09:50,950 kështu që në qoftë se ne tani shtoni një element tjetër ajo do të 206 00:09:50,950 --> 00:09:54,700 shkoni në array lokacionit numrin dy. 207 00:09:54,700 --> 00:09:57,590 >> Tani Listat e lidhura janë një tjetër mënyrë për të zbatuar oxhaqet. 208 00:09:57,590 --> 00:10:01,210 Dhe në qoftë se ky përkufizim për Ekran këtu duket të njohura për ju, 209 00:10:01,210 --> 00:10:04,260 kjo është për shkak se ajo duket pothuajse saktësisht të njëjtë, në fakt, 210 00:10:04,260 --> 00:10:07,790 kjo shumë e shumë është pikërisht njëjtë si një listë e lidhur në formë individuale, 211 00:10:07,790 --> 00:10:11,990 nëse ju kujtohet nga diskutimit tonë të lidhur veçmas listat në një tjetër video. 212 00:10:11,990 --> 00:10:15,510 I vetmi kufizim këtu është për ne si programuesit, 213 00:10:15,510 --> 00:10:17,900 ne nuk jemi të lejuar të futur apo fshij rastësisht 214 00:10:17,900 --> 00:10:20,620 nga lista e lidhur veçmas që ne mund të bëjmë më parë. 215 00:10:20,620 --> 00:10:25,820 Ne vetëm tani mund të futni dhe të fshini nga front apo në krye të lidhur 216 00:10:25,820 --> 00:10:26,320 lista. 217 00:10:26,320 --> 00:10:28,028 Kjo është me të vërtetë e vetmja Dallimi pse. 218 00:10:28,028 --> 00:10:29,700 Kjo është ndryshe një listë e lidhur në formë individuale. 219 00:10:29,700 --> 00:10:32,060 Është vetëm kufizimi duke zëvendësuar në veten tonë 220 00:10:32,060 --> 00:10:35,770 si programuesit që ndryshon atë në një pirg. 221 00:10:35,770 --> 00:10:39,280 >> Rregulli këtu është që gjithmonë të mbajë një treguesin në krye të listës lidhur. 222 00:10:39,280 --> 00:10:41,520 Kjo është sigurisht një përgjithësi Rregulli i parë i rëndësishëm. 223 00:10:41,520 --> 00:10:44,260 Për lidhur veçmas listë gjithsesi ju duhet vetëm një tregues për kokë 224 00:10:44,260 --> 00:10:46,160 në mënyrë të ketë se zinxhir të jetë në gjendje për t'iu referuar 225 00:10:46,160 --> 00:10:48,596 për çdo element tjetër në lista e lidhur. 226 00:10:48,596 --> 00:10:50,470 Por kjo është veçanërisht e i rëndësishëm me një pirg. 227 00:10:50,470 --> 00:10:52,386 Dhe kështu në përgjithësi ju jeni duke shkuar për të vërtetë duan 228 00:10:52,386 --> 00:10:54,090 ky tregues të jetë një ndryshore globale. 229 00:10:54,090 --> 00:10:56,574 Kjo ndoshta do të të jetë edhe më e lehtë në këtë mënyrë. 230 00:10:56,574 --> 00:10:58,240 Pra cilat janë analoge e shtytje dhe pop? 231 00:10:58,240 --> 00:10:58,740 E drejtë. 232 00:10:58,740 --> 00:11:01,812 Pra, duke i shtyre përsëri është shtuar një element i ri në rafte. 233 00:11:01,812 --> 00:11:03,770 Në një listë të lidhura që do të thotë që ne do të kemi 234 00:11:03,770 --> 00:11:07,770 për të krijuar një nyje të re që ne jemi duke shkuar për të shtuar në listën e lidhur, 235 00:11:07,770 --> 00:11:10,500 dhe pastaj ndiqni hapat të kujdesshëm që ne i kemi përshkruar më parë 236 00:11:10,500 --> 00:11:16,050 në listat e lidhura veçmas për të shtuar se zinxhiri pa thyer zinxhirin 237 00:11:16,050 --> 00:11:18,900 dhe humbjes ose orphaning ndonjë elementet e listës lidhura. 238 00:11:18,900 --> 00:11:21,820 Dhe kjo është në thelb ajo që pak pikë e tekstit atje përmbledh. 239 00:11:21,820 --> 00:11:23,740 Dhe le të marrin një vështrim në atë si një diagram. 240 00:11:23,740 --> 00:11:24,823 >> Kështu që këtu është lista jonë e lidhur. 241 00:11:24,823 --> 00:11:26,620 Ai njëkohësisht përmban katër elemente. 242 00:11:26,620 --> 00:11:30,420 Dhe më të përsosur këtu është tonë rafte përmban katër elemente. 243 00:11:30,420 --> 00:11:36,030 Dhe le të thonë se ne tani duam të të shtyjë një artikull të ri mbi këtë rafte. 244 00:11:36,030 --> 00:11:39,792 Dhe ne duam që të shtyjë një të ri Pika dhënat e të cilit vlerë është 12. 245 00:11:39,792 --> 00:11:41,000 Mirë se çfarë do të shkojmë të bëjmë? 246 00:11:41,000 --> 00:11:43,420 E pra së pari ne jemi duke shkuar për hapësirë ​​malloc, dinamike 247 00:11:43,420 --> 00:11:45,411 ndajë hapësirë ​​për një nyje të re. 248 00:11:45,411 --> 00:11:48,160 Dhe sigurisht menjëherë pas kemi bërë një thirrje për malloc ne gjithmonë 249 00:11:48,160 --> 00:11:52,989 sigurohuni që të kontrolloni për null, sepse në qoftë se ne u null përsëri 250 00:11:52,989 --> 00:11:54,280 ka pasur një lloj të problemit. 251 00:11:54,280 --> 00:11:57,570 Ne nuk duam të dereference atë null pointer ose ju do të vuajnë një defekt seg. 252 00:11:57,570 --> 00:11:58,510 Kjo nuk është e mirë. 253 00:11:58,510 --> 00:11:59,760 Pra, ne kemi malloced e nyjeve. 254 00:11:59,760 --> 00:12:01,260 Ne do të supozojmë që kemi pasur sukses këtu. 255 00:12:01,260 --> 00:12:06,090 Ne jemi duke shkuar për të vënë 12 në fusha e të dhënave të kësaj nyje. 256 00:12:06,090 --> 00:12:11,570 Tani ju kujtojnë se cili prej pointers tona lëviz tjetër kështu që ne nuk e thyejnë zinxhirin? 257 00:12:11,570 --> 00:12:15,100 Ne kemi disa opcione këtu, por i vetmi që do të jetë i sigurt 258 00:12:15,100 --> 00:12:19,330 është për të vendosur lajme akrep ardhshëm të Pika në kokë e vjetër të listës 259 00:12:19,330 --> 00:12:21,360 apo atë që së shpejti do të jetë kreu i vjetër i listës. 260 00:12:21,360 --> 00:12:23,610 Dhe tani që të gjithë e tona elemente janë të lidhur me zinxhirë së bashku, 261 00:12:23,610 --> 00:12:27,370 ne vetëm mund të lëvizin listën në pikën në të njëjtin vend që bën të reja. 262 00:12:27,370 --> 00:12:33,550 Dhe ne tani kemi shtyrë në mënyrë efektive një element i ri në pjesën e përparme të rafte. 263 00:12:33,550 --> 00:12:36,420 >> Të pop ne vetëm duam të fshini se elementi i parë. 264 00:12:36,420 --> 00:12:38,150 Dhe kështu në thelb ajo ne duhet të bëjmë këtu, 265 00:12:38,150 --> 00:12:40,050 edhe ne duhet të gjejmë elementin e dytë. 266 00:12:40,050 --> 00:12:43,540 Përfundimisht se do të bëhet i ri kokë pasi ne fshini një të parë. 267 00:12:43,540 --> 00:12:47,300 Pra, ne vetëm duhet të fillojë nga fillimi, të lëvizë një sulmues. 268 00:12:47,300 --> 00:12:50,340 Pasi ne kemi marrë një të mbajë në një përpara e ku ne aktualisht 269 00:12:50,340 --> 00:12:53,850 janë ne mund të fshini një të parë në mënyrë të sigurtë dhe pastaj ne vetëm mund të lëvizin kokën 270 00:12:53,850 --> 00:12:57,150 të tregojnë për çfarë ishte Termi i dytë dhe pastaj tani 271 00:12:57,150 --> 00:12:59,170 është e para pas që Nyja është fshirë. 272 00:12:59,170 --> 00:13:01,160 >> Pra, përsëri, duke marrë një vështrim atë si një diagram ne 273 00:13:01,160 --> 00:13:05,022 duan të tani pop një Elementi off e këtij rafte. 274 00:13:05,022 --> 00:13:05,730 Pra, çfarë bëjmë ne? 275 00:13:05,730 --> 00:13:08,188 E pra ne jemi së pari do të krijojmë një tregues i ri që po ndodh 276 00:13:08,188 --> 00:13:10,940 për pikë në të njëjtin vend si kokës. 277 00:13:10,940 --> 00:13:13,790 Ne jemi duke shkuar për të lëvizur atë një pozicion përpara duke thënë është e barabartë Trav 278 00:13:13,790 --> 00:13:17,510 Trav tjetër për shembull, të cilat do të avancojë atë trav akrep 279 00:13:17,510 --> 00:13:19,324 pozicion përpara. 280 00:13:19,324 --> 00:13:21,240 Tani që ne kemi marrë një mbajtur në elementin e parë 281 00:13:21,240 --> 00:13:24,573 përmes treguesin e quajtur listë, dhe Elementi i dytë përmes një tregues të quajtur 282 00:13:24,573 --> 00:13:28,692 Trav, ne mund të sigurtë të fshini atë Elementi i parë nga rafte 283 00:13:28,692 --> 00:13:30,650 pa humbur pjesën tjetër e zinxhirit sepse ne 284 00:13:30,650 --> 00:13:32,358 kanë një mënyrë për të referuar me elementin e dytë 285 00:13:32,358 --> 00:13:34,780 përpara me anë të të akrep quajtur trav. 286 00:13:34,780 --> 00:13:37,100 >> Deri tani ne mund të lirë atë nyje. 287 00:13:37,100 --> 00:13:38,404 Ne mund të lirë listë. 288 00:13:38,404 --> 00:13:41,320 Dhe pastaj të gjithë ne duhet të bëjmë tani është lëvizin listën e pikës në të njëjtin vend 289 00:13:41,320 --> 00:13:44,482 që Trav bën, dhe ne jemi lloj prapa ku kemi filluar para se të shtyrë 12 290 00:13:44,482 --> 00:13:45,690 në në radhë të parë, e drejtë. 291 00:13:45,690 --> 00:13:46,940 Kjo është saktësisht ku ishim. 292 00:13:46,940 --> 00:13:48,840 Ne kishim këtë katër element rafte. 293 00:13:48,840 --> 00:13:49,690 Ne kemi shtuar një të pestën. 294 00:13:49,690 --> 00:13:51,910 Ne shtyrë një të pestën element në, dhe pastaj ne 295 00:13:51,910 --> 00:13:55,980 popped që më të fundit shtoi element mbrapa off. 296 00:13:55,980 --> 00:13:58,816 >> Kjo është me të vërtetë shumë e shumë gjitha nuk është për oxhaqet. 297 00:13:58,816 --> 00:14:00,190 Ju mund të zbatojë ato si vargjeve. 298 00:14:00,190 --> 00:14:01,815 Ju mund të zbatojë ato si listat e lidhura. 299 00:14:01,815 --> 00:14:04,810 Ka, natyrisht, të tjera mënyra për zbatimin e tyre si edhe. 300 00:14:04,810 --> 00:14:09,060 Në thelb arsyeja që ne do të përdorim oxhaqet është për të ruajtur të dhënat në një mënyrë të tillë 301 00:14:09,060 --> 00:14:12,090 që shtoi më të fundit element është gjëja e parë që ne jemi 302 00:14:12,090 --> 00:14:14,980 do të dëshironi të merrni përsëri. 303 00:14:14,980 --> 00:14:17,900 Unë jam Doug Lloyd, kjo është CS50. 304 00:14:17,900 --> 00:14:19,926