1 00:00:07,260 --> 00:00:10,050 [Powered by Google Translate] Ohjelmoinnissa me usein tarve edustamaan luettelot arvoja, 2 00:00:10,050 --> 00:00:12,840 kuten nimiä opiskelijoiden osiossa 3 00:00:12,840 --> 00:00:15,100 tai niiden tulokset viimeisimmistä tietovisa. 4 00:00:15,100 --> 00:00:17,430 >> C-kielellä, julisti matriiseja voidaan käyttää 5 00:00:17,430 --> 00:00:19,160 tallentaa luetteloihin. 6 00:00:19,160 --> 00:00:21,200 On helppo luetella elementtejä luettelon 7 00:00:21,200 --> 00:00:23,390 tallennetaan array, ja jos haluat käyttää 8 00:00:23,390 --> 00:00:25,050 tai muokata nnen listaelementin 9 00:00:25,050 --> 00:00:27,570 joidenkin mielivaltainen indeksi I, 10 00:00:27,570 --> 00:00:29,910 , joka voidaan tehdä jatkuvasti ajan, 11 00:00:29,910 --> 00:00:31,660 mutta taulukot ovat haittoja, too. 12 00:00:31,660 --> 00:00:33,850 >> Kun me julistamme heille, me tarvitaan sanoa 13 00:00:33,850 --> 00:00:35,900 edessä kuinka suuria ne ovat, 14 00:00:35,900 --> 00:00:38,160 eli kuinka monta elementtiä he voivat tallentaa 15 00:00:38,160 --> 00:00:40,780 ja kuinka suuri nämä tekijät ovat, joka määräytyy niiden tyypin mukaan. 16 00:00:40,780 --> 00:00:45,450 Esimerkiksi, int sov. (10) 17 00:00:45,450 --> 00:00:48,220 voidaan tallentaa 10 kohdetta 18 00:00:48,220 --> 00:00:50,200 , jotka ovat koko int. 19 00:00:50,200 --> 00:00:52,590 >> Emme voi muuttaa taulukon kokoa jälkeen ilmoituksen. 20 00:00:52,590 --> 00:00:55,290 Meidän täytyy tehdä uusi array jos haluamme tallentaa enemmän elementtejä. 21 00:00:55,290 --> 00:00:57,410 Syynä tähän rajoitus on olemassa, että 22 00:00:57,410 --> 00:00:59,040 Ohjelma tallentaa koko joukko 23 00:00:59,040 --> 00:01:02,310 koska yhtenäinen kimpale muistia. 24 00:01:02,310 --> 00:01:04,500 Sano tämä on puskuri jossa tallennetaan myös array. 25 00:01:04,500 --> 00:01:06,910 Saattaa olla muita muuttujia 26 00:01:06,910 --> 00:01:08,310 sijaitsee aivan array 27 00:01:08,310 --> 00:01:10,060 muistiin, joten emme voi 28 00:01:10,060 --> 00:01:12,060 vain tehdä array isompi. 29 00:01:12,060 --> 00:01:15,700 >> Joskus haluaisimme vaihtaa array nopean tietojen käytön nopeus 30 00:01:15,700 --> 00:01:17,650 ja hieman enemmän joustavuutta. 31 00:01:17,650 --> 00:01:20,380 Syötä linkitetty lista, toinen perustiedot rakenne 32 00:01:20,380 --> 00:01:22,360 et ehkä niin tuttu. 33 00:01:22,360 --> 00:01:24,200 Korkealla tasolla, 34 00:01:24,200 --> 00:01:26,840 linkitetty lista tallentaa tietoa sekvenssi solmujen 35 00:01:26,840 --> 00:01:29,280 , jotka on liitetty toisiinsa linkkien 36 00:01:29,280 --> 00:01:31,760 tästä nimi "linkitetty lista." 37 00:01:31,760 --> 00:01:33,840 Kuten näemme, tämä ero suunnittelussa 38 00:01:33,840 --> 00:01:35,500 johtaa erilaisia ​​etuja ja haittoja 39 00:01:35,500 --> 00:01:37,000 kuin array. 40 00:01:37,000 --> 00:01:39,840 >> Seuraavassa joitakin C-koodin hyvin yksinkertainen linkitetty kokonaislukujen lista. 41 00:01:39,840 --> 00:01:42,190 Voit nähdä, että olemme edustettuina kussakin solmussa 42 00:01:42,190 --> 00:01:45,520 luettelossa kuin struct joka sisältää 2 asioita, 43 00:01:45,520 --> 00:01:47,280 kokonaisluku tallentaa kutsutaan Val- 44 00:01:47,280 --> 00:01:50,460 ja linkki seuraavalle solmulle luettelossa 45 00:01:50,460 --> 00:01:52,990 jota edustavat niin osoitin kutsutaan seuraavaksi. " 46 00:01:54,120 --> 00:01:56,780 Näin voimme seurata koko lista 47 00:01:56,780 --> 00:01:58,790 vain yksi osoitin ensimmäinen solmu, 48 00:01:58,790 --> 00:02:01,270 ja sitten voimme seurata ensi osoittimet 49 00:02:01,270 --> 00:02:03,130 että toinen solmu, 50 00:02:03,130 --> 00:02:05,280 on 3rd solmuun, 51 00:02:05,280 --> 00:02:07,000 että neljäs solmu, 52 00:02:07,000 --> 00:02:09,889 ja niin edelleen, kunnes saamme luettelon loppuun. 53 00:02:10,520 --> 00:02:12,210 >> Saatat nähdä 1 etu tämä on 54 00:02:12,210 --> 00:02:14,490 yli staattinen matriisirakenne - jossa linkitetty lista, 55 00:02:14,490 --> 00:02:16,450 Emme tarvitse iso kimpale muistin kokonaan. 56 00:02:17,400 --> 00:02:20,530 1. solmu listaa voisi asua tässä paikassa muistiin, 57 00:02:20,530 --> 00:02:23,160 ja toinen solmu voisi aina tänne. 58 00:02:23,160 --> 00:02:25,780 Voimme saada kaikki solmut missä muistissa ne ovat, 59 00:02:25,780 --> 00:02:28,890 koska alkaen ensimmäinen solmu, kukin solmu seuraava osoitin 60 00:02:28,890 --> 00:02:31,700 kertoo meille täsmälleen, minne mennä seuraavaksi. 61 00:02:31,700 --> 00:02:33,670 >> Lisäksi meillä ei ole sanottavaa edessä 62 00:02:33,670 --> 00:02:36,740 kuinka suuri linkitetty lista on tapamme tehdä staattinen taulukot, 63 00:02:36,740 --> 00:02:39,060 koska voimme pitää lisätä solmuja lista 64 00:02:39,060 --> 00:02:42,600 niin kauan kuin on tilaa jossain muistia uusia solmuja. 65 00:02:42,600 --> 00:02:45,370 Siksi linkitettyjen listojen helppo muuttaa dynaamisesti. 66 00:02:45,370 --> 00:02:47,950 Sano, myöhemmin ohjelmassa meidän täytyy lisätä enemmän solmuja 67 00:02:47,950 --> 00:02:49,350 meidän luetteloon. 68 00:02:49,350 --> 00:02:51,480 Jos haluat lisätä uuden solmun lista lennossa, 69 00:02:51,480 --> 00:02:53,740 kaikki mitä on tehtävä, on varata muistia että solmu, 70 00:02:53,740 --> 00:02:55,630 plop tiedon arvolle, 71 00:02:55,630 --> 00:02:59,070 ja aseta se missä haluamme säätämällä asianmukaisia ​​viitteitä. 72 00:02:59,070 --> 00:03:02,310 >> Esimerkiksi, jos haluamme sijoittaa solmun välillä 73 00:03:02,310 --> 00:03:04,020 2. ja 3. solmujen luettelon, 74 00:03:04,020 --> 00:03:06,800  meillä ei olisi siirtää 2. tai 3. solmuja ollenkaan. 75 00:03:06,800 --> 00:03:09,190 Sano olemme Sijoittamalla tämä punainen solmu. 76 00:03:09,190 --> 00:03:12,890 Meidän täytyisi tehdä asetetaan uusi solmu seuraava osoitin 77 00:03:12,890 --> 00:03:14,870 viitata 3rd solmuun 78 00:03:14,870 --> 00:03:18,580 ja sitten ReWire 2. solmun seuraava osoitin 79 00:03:18,580 --> 00:03:20,980 osoittamaan uuden solmun. 80 00:03:22,340 --> 00:03:24,370 Joten voimme muuttaa meidän luetteloita lennossa 81 00:03:24,370 --> 00:03:26,090 koska meidän tietokone ei luottaa indeksointi, 82 00:03:26,090 --> 00:03:28,990 vaan yhdistää käyttäen osoittimia tallentaa ne. 83 00:03:29,120 --> 00:03:31,600 >> Kuitenkin haittana linkitettyjä listoja 84 00:03:31,600 --> 00:03:33,370 on, että toisin kuin staattinen array, 85 00:03:33,370 --> 00:03:36,690 tietokone voi vain hypätä keskelle luettelon. 86 00:03:38,040 --> 00:03:40,780 Koska tietokone on käydä jokaisen solmuun linkitetyn listan 87 00:03:40,780 --> 00:03:42,330 päästä seuraavaan, 88 00:03:42,330 --> 00:03:44,770 se tulee kestää kauemmin löytää tietty solmu 89 00:03:44,770 --> 00:03:46,400 kuin ne olisivat array. 90 00:03:46,400 --> 00:03:48,660 Kulkemaan koko luettelon vie aikaa verrannollinen 91 00:03:48,660 --> 00:03:50,580 on listan pituus, 92 00:03:50,580 --> 00:03:54,630 tai O (n) asymptoottinen merkintä. 93 00:03:54,630 --> 00:03:56,510 Keskimäärin päästä mihin tahansa solmuun 94 00:03:56,510 --> 00:03:58,800 vie myös aikaa verrannollinen n. 95 00:03:58,800 --> 00:04:00,700 >> Nyt, oikeastaan ​​kirjoittaa joitakin koodi 96 00:04:00,700 --> 00:04:02,000 joka toimii linkitettyjä listoja. 97 00:04:02,000 --> 00:04:04,220 Sanotaan haluamme liittyy kokonaislukujen lista. 98 00:04:04,220 --> 00:04:06,140 Voimme edustaa solmun listalta uudelleen 99 00:04:06,140 --> 00:04:08,340 kuten struct 2 aloilla, 100 00:04:08,340 --> 00:04:10,750 kokonaislukuarvo nimeltään "Val" 101 00:04:10,750 --> 00:04:13,490 ja seuraavan osoittimen seuraavalle solmulle luettelon. 102 00:04:13,490 --> 00:04:15,660 No, näyttää helpolta. 103 00:04:15,660 --> 00:04:17,220 >> Sanotaan haluamme kirjoittaa funktion 104 00:04:17,220 --> 00:04:19,329 joka kulkee listan ja tulostaa 105 00:04:19,329 --> 00:04:22,150 tallennettua arvoa viimeinen solmu luettelon. 106 00:04:22,150 --> 00:04:24,850 No, se tarkoittaa, että meidän täytyy kulkea kaikkien solmujen luettelon 107 00:04:24,850 --> 00:04:27,310 löytää viimeinen, mutta koska emme lisää 108 00:04:27,310 --> 00:04:29,250 tai poistamatta mitään, emme halua muuttaa 109 00:04:29,250 --> 00:04:32,210 sisäistä rakennetta seuraavan viitteitä luettelosta. 110 00:04:32,210 --> 00:04:34,790 >> Joten, me tarvitsemme osoittimen erityisesti läpikäyminen 111 00:04:34,790 --> 00:04:36,940 jonka me kutsumme "crawler." 112 00:04:36,940 --> 00:04:38,870 Se ryömiä läpi kaikki osat luettelon 113 00:04:38,870 --> 00:04:41,190 seuraamalla ketjun seuraavan osoittimia. 114 00:04:41,190 --> 00:04:43,750 Kaikki olemme tallennettu on osoitin 1. solmuun, 115 00:04:43,750 --> 00:04:45,730 tai "johtaja" luettelon. 116 00:04:45,730 --> 00:04:47,370 Head pistettä 1. solmuun. 117 00:04:47,370 --> 00:04:49,120 Se on tyypin osoitin-solmuun. 118 00:04:49,120 --> 00:04:51,280 >> Saadaksesi todelliset ensimmäinen solmu listassa, 119 00:04:51,280 --> 00:04:53,250 meidän on dereference tätä osoitin, 120 00:04:53,250 --> 00:04:55,100 mutta ennen kuin voimme dereference sen, meidän täytyy tarkistaa 121 00:04:55,100 --> 00:04:57,180 Jos osoitin on nolla ensimmäinen. 122 00:04:57,180 --> 00:04:59,190 Jos se on nolla, luettelo on tyhjä, 123 00:04:59,190 --> 00:05:01,320 ja meidän pitäisi tulostaa viestin, että koska lista on tyhjä, 124 00:05:01,320 --> 00:05:03,250 ei ole viimeinen solmu. 125 00:05:03,250 --> 00:05:05,190 Mutta sanokaamme luettelo ei ole tyhjä. 126 00:05:05,190 --> 00:05:08,340 Jos se ei ole, niin meidän pitäisi ryömiä läpi koko luettelon 127 00:05:08,340 --> 00:05:10,440 kunnes pääsemme viimeiseen solmuun luettelon, 128 00:05:10,440 --> 00:05:13,030 ja miten voimme kertoa, jos me tarkastelemme viime solmu luettelossa? 129 00:05:13,670 --> 00:05:16,660 >> No, jos solmu seuraava osoitin on nolla, 130 00:05:16,660 --> 00:05:18,320 tiedämme, että olemme lopussa 131 00:05:18,320 --> 00:05:22,390 koska viimeinen seuraava osoitin ei olisi ensi solmun luettelossa osoittamaan. 132 00:05:22,390 --> 00:05:26,590 On hyvä käytäntö aina pitää viimeisen solmun vieressä osoitin alustetaan null 133 00:05:26,590 --> 00:05:30,800 on standardoitu ominaisuus, joka varoittaa meitä, kun olemme saavuttaneet luettelon loppuun. 134 00:05:30,800 --> 00:05:33,510 >> Joten, jos crawler → seuraava on nolla, 135 00:05:34,120 --> 00:05:38,270 Muista, että nuoli syntaksi on oikotie dereferencing 136 00:05:38,270 --> 00:05:40,010 osoittimen struct, sitten päästä 137 00:05:40,010 --> 00:05:42,510 sen seuraavaan kenttään vastaava kiusallinen: 138 00:05:42,510 --> 00:05:48,750 (* Crawler). Seuraavaksi. 139 00:05:49,820 --> 00:05:51,260 Kun olemme löytäneet viimeisen solmun, 140 00:05:51,260 --> 00:05:53,830 haluamme tulostaa crawler → val- 141 00:05:53,830 --> 00:05:55,000 arvo nykyinen solmu 142 00:05:55,000 --> 00:05:57,130 jonka tiedämme olevan viimeinen. 143 00:05:57,130 --> 00:05:59,740 Muuten, jos emme ole vielä viime solmun luettelossa, 144 00:05:59,740 --> 00:06:02,340 meidän täytyy siirtyä seuraavalle solmulle luettelossa 145 00:06:02,340 --> 00:06:04,750 ja tarkista, jos se on viimeinen. 146 00:06:04,750 --> 00:06:07,010 Voit tehdä tämän, me vain asettaa roboteillemme osoitin 147 00:06:07,010 --> 00:06:09,840 osoittamaan nykyisen solmun seuraavaan arvoon, 148 00:06:09,840 --> 00:06:11,680 joka on, seuraava solmu listassa. 149 00:06:11,680 --> 00:06:13,030 Tämä tehdään asettamalla 150 00:06:13,030 --> 00:06:15,280 crawler = crawler → Seuraava. 151 00:06:16,050 --> 00:06:18,960 Sitten me toistaa tätä prosessia, jossa on silmukka esimerkiksi 152 00:06:18,960 --> 00:06:20,960 kunnes löydämme viimeinen solmu. 153 00:06:20,960 --> 00:06:23,150 Niinpä esimerkiksi, jos crawler oli osoittaen päätä, 154 00:06:24,050 --> 00:06:27,710 asetimme crawler osoittamaan crawler → seuraavaksi 155 00:06:27,710 --> 00:06:30,960 joka on sama kuin seuraavan kentän ensimmäinen solmu. 156 00:06:30,960 --> 00:06:33,620 Joten, nyt meidän crawler osoittaa 2. solmuun, 157 00:06:33,620 --> 00:06:35,480 ja, jälleen kerran me toista, jossa on silmukka, 158 00:06:37,220 --> 00:06:40,610 kunnes olemme löytäneet viimeinen solmu, joka on, 159 00:06:40,610 --> 00:06:43,640 jos solmun seuraava osoitin osoittaa null. 160 00:06:43,640 --> 00:06:45,070 Ja meillä on, 161 00:06:45,070 --> 00:06:47,620 olemme löytäneet viimeisen solmun luettelossa, ja tulostaa sen arvo, 162 00:06:47,620 --> 00:06:50,800 me vain käyttää crawler → Val. 163 00:06:50,800 --> 00:06:53,130 >> Piste ei ole niin paha, mutta entä lisäämällä? 164 00:06:53,130 --> 00:06:56,290 Sanotaan haluamme lisätä kokonaisluvun 4. asemassa 165 00:06:56,290 --> 00:06:58,040 on kokonaisluku luettelossa. 166 00:06:58,040 --> 00:07:01,280 , Joka on välillä nykyisen 3. ja 4. solmut. 167 00:07:01,280 --> 00:07:03,760 Jälleen olemme kulkemaan luetteloon vain 168 00:07:03,760 --> 00:07:06,520 saada kolmas elementti, jota me olemme asetat jälkeen. 169 00:07:06,520 --> 00:07:09,300 Joten luomme crawler osoitin jälleen kulkemaan luetteloon, 170 00:07:09,300 --> 00:07:11,400 tarkista päämme osoitin on nolla, 171 00:07:11,400 --> 00:07:14,810 ja jos se ei ole, osoittaa indeksointirobottimme osoitin pääsolmussa. 172 00:07:16,880 --> 00:07:18,060 Joten me olemme ensimmäinen elementti. 173 00:07:18,060 --> 00:07:21,020 Meidän täytyy mennä eteenpäin 2 enemmän elementtejä ennen kuin voimme lisätä, 174 00:07:21,020 --> 00:07:23,390 joten voimme käyttää varten silmukka 175 00:07:23,390 --> 00:07:26,430 int i = 1; i <3; i + + 176 00:07:26,430 --> 00:07:28,590 ja kunkin iteroinnin silmukan, 177 00:07:28,590 --> 00:07:31,540 etukäteen indeksoijan osoitin eteenpäin 1 solmu 178 00:07:31,540 --> 00:07:34,570 tarkistamalla, jos nykyinen solmu seuraava kenttä on nolla, 179 00:07:34,570 --> 00:07:37,550 ja jos se ei ole, siirrä indeksointirobottimme osoitin seuraavaan solmuun 180 00:07:37,550 --> 00:07:41,810 asettamalla se yhtä kuin sen hetkisen solmun seuraava osoitin. 181 00:07:41,810 --> 00:07:45,210 Joten, koska meidän on silmukka sanoo tehdä, että 182 00:07:45,210 --> 00:07:47,550 kahdesti, 183 00:07:49,610 --> 00:07:51,190 olemme saavuttaneet 3. solmu, 184 00:07:51,190 --> 00:07:53,110 ja kun indeksointirobottimme osoitin on saavuttanut solmun jälkeen 185 00:07:53,110 --> 00:07:55,270 jonka haluamme lisätä uuden kokonaisluku, 186 00:07:55,270 --> 00:07:57,050 miten me oikeastaan ​​tehdä työntämällä? 187 00:07:57,050 --> 00:07:59,440 >> No, uusi kokonaisluku on lisätty luetteloon 188 00:07:59,440 --> 00:08:01,250 osana omaa solmun struct, 189 00:08:01,250 --> 00:08:03,140 koska tämä on todella sekvenssi solmuja. 190 00:08:03,140 --> 00:08:05,690 Joten, tehkäämme uusi osoittimen solmuun 191 00:08:05,690 --> 00:08:08,910 nimeltään "new_node, ' 192 00:08:08,910 --> 00:08:11,800 ja aseta se osoittamaan muistin että nyt jakaa 193 00:08:11,800 --> 00:08:14,270 kasaan ja solmu itse, 194 00:08:14,270 --> 00:08:16,000 ja kuinka paljon muistia meidän tarvitse varata? 195 00:08:16,000 --> 00:08:18,250 Hyvin, koko solmun, 196 00:08:20,450 --> 00:08:23,410 ja haluamme asettaa sen Val kenttä kokonaisluku, että haluamme lisätä. 197 00:08:23,410 --> 00:08:25,590 Sanotaan, 6. 198 00:08:25,590 --> 00:08:27,710 Nyt solmu sisältää myös kokonaisluku. 199 00:08:27,710 --> 00:08:30,650 On myös hyvä käytäntö alustaa uuden solmun seuraavaan kenttään 200 00:08:30,650 --> 00:08:33,690 viitata null, 201 00:08:33,690 --> 00:08:35,080 mutta mitä nyt? 202 00:08:35,080 --> 00:08:37,179 >> Meidän täytyy muuttaa sisäistä rakennetta luettelon 203 00:08:37,179 --> 00:08:40,409 ja seuraava osoittimet sisältyvät luetteloon nykyisen 204 00:08:40,409 --> 00:08:42,950 3. ja 4. solmuja. 205 00:08:42,950 --> 00:08:46,560 Koska seuraava osoittimet määrittää luettelon järjestystä, 206 00:08:46,560 --> 00:08:48,650 ja koska olemme laittamalla uuden solmun 207 00:08:48,650 --> 00:08:50,510 oikealle keskelle luettelon 208 00:08:50,510 --> 00:08:52,010 Se voi olla vähän hankala. 209 00:08:52,010 --> 00:08:54,250 Tämä johtuu siitä, muistan, meidän tietokone 210 00:08:54,250 --> 00:08:56,250 tuntee vain sijainti solmujen luetteloon 211 00:08:56,250 --> 00:09:00,400 koska seuraavan osoittimien tallennettu aiempien solmujen. 212 00:09:00,400 --> 00:09:03,940 Joten, jos me joskus kadottaa kaikista näistä paikoista, 213 00:09:03,940 --> 00:09:06,860 sanovat muuttamalla yhden seuraavan viitteitä listallamme, 214 00:09:06,860 --> 00:09:09,880 esimerkiksi sanoa muutimme 215 00:09:09,880 --> 00:09:12,920 3. solmun seuraavaan kenttään 216 00:09:12,920 --> 00:09:15,610 osoittamaan joitakin solmuun tänne. 217 00:09:15,610 --> 00:09:17,920 Olisimme epäonninen, koska ei olisi 218 00:09:17,920 --> 00:09:20,940 mitään käsitystä mistä loput luettelon 219 00:09:20,940 --> 00:09:23,070 ja se on tietysti todella huono. 220 00:09:23,070 --> 00:09:25,080 Joten meidän on oltava todella varovainen, jotta 221 00:09:25,080 --> 00:09:28,360 jossa me manipuloida meidän seuraava viitteitä asettamisen aikana. 222 00:09:28,360 --> 00:09:30,540 >> Joten, yksinkertaistaa tätä, sanotaanko, että 223 00:09:30,540 --> 00:09:32,220 ensimmäinen 4 solmua 224 00:09:32,220 --> 00:09:36,200 kutsutaan A, B, C ja D, joissa nuolet edustavat ketjun osoittimia 225 00:09:36,200 --> 00:09:38,070 joka yhdistää solmut. 226 00:09:38,070 --> 00:09:40,050 Joten meidän täytyy lisätä uusi solmu 227 00:09:40,050 --> 00:09:42,070 välillä solmujen C ja D. 228 00:09:42,070 --> 00:09:45,060 On tärkeää tehdä se oikeassa järjestyksessä, ja minä näytän sinulle miksi. 229 00:09:45,060 --> 00:09:47,500 >> Katsokaamme väärä tapa tehdä se ensin. 230 00:09:47,500 --> 00:09:49,490 Hei, me tiedämme uusi solmu on tultava heti C, 231 00:09:49,490 --> 00:09:51,910 joten katsotaanpa asettaa C: n seuraava osoitin 232 00:09:51,910 --> 00:09:54,700 osoittamaan new_node. 233 00:09:56,530 --> 00:09:59,180 Okei, näyttää okei, meidän täytyy vain viimeistellä nyt by 234 00:09:59,180 --> 00:10:01,580 jolloin uusi solmu seuraava osoitin pisteen D, 235 00:10:01,580 --> 00:10:03,250 Mutta hetkinen, miten voimme tehdä sen? 236 00:10:03,250 --> 00:10:05,170 Ainoa asia, joka voisi kertoa meille, missä D oli, 237 00:10:05,170 --> 00:10:07,630 oli seuraava osoitin aiemmin tallennettu C, 238 00:10:07,630 --> 00:10:09,870 mutta me vain rewrote että osoitin 239 00:10:09,870 --> 00:10:11,170 osoittamaan uusi solmu, 240 00:10:11,170 --> 00:10:14,230 joten meillä ei ole enää hajuakaan missä D on muistissa, 241 00:10:14,230 --> 00:10:17,020 ja olemme menettäneet loput luettelosta. 242 00:10:17,020 --> 00:10:19,000 Ei hyvä ollenkaan. 243 00:10:19,000 --> 00:10:21,090 >> Joten, miten teemme tätä oikeutta? 244 00:10:22,360 --> 00:10:25,090 Ensinnäkin, kohta uuden solmun seuraava osoitin D. 245 00:10:26,170 --> 00:10:28,990 Nyt sekä uuden solmun n ja C: n seuraavan osoittimia 246 00:10:28,990 --> 00:10:30,660 osoittavat samaan solmuun, D, 247 00:10:30,660 --> 00:10:32,290 mutta se on hieno. 248 00:10:32,290 --> 00:10:35,680 Nyt voimme osoittaa C: n vieressä osoitin uuteen solmuun. 249 00:10:37,450 --> 00:10:39,670 Niin, olemme tehneet tämän menettämättä mitään tietoja. 250 00:10:39,670 --> 00:10:42,280 Koodin, C on nykyinen solmu 251 00:10:42,280 --> 00:10:45,540 että läpikäynti osoitin crawler osoittaa, 252 00:10:45,540 --> 00:10:50,400 ja D edustaa solmun osoittamat senhetkisen solmun seuraavaan kenttään 253 00:10:50,400 --> 00:10:52,600 tai telaketjuilla → Seuraava. 254 00:10:52,600 --> 00:10:55,460 Joten me ensin uuden solmun seuraava osoitin 255 00:10:55,460 --> 00:10:57,370 viitata crawler → seuraavaksi 256 00:10:57,370 --> 00:11:00,880 samoin sanoimme new_node seuraava osoitin tulisi 257 00:11:00,880 --> 00:11:02,780 viittaavat D kuvassa. 258 00:11:02,780 --> 00:11:04,540 Sitten voimme asettaa nykyisen solmun seuraava osoitin 259 00:11:04,540 --> 00:11:06,330 meidän uusi solmu, 260 00:11:06,330 --> 00:11:10,980 aivan kuten jouduimme odottamaan pisteeseen C new_node piirustuksessa. 261 00:11:10,980 --> 00:11:12,250 Nyt kaikki on kunnossa, ja emme menetä 262 00:11:12,250 --> 00:11:14,490 Seuraa mitään tietoja, ja pystyimme vain 263 00:11:14,490 --> 00:11:16,200 kiinni meidän uusi solmu keskellä luettelon 264 00:11:16,200 --> 00:11:19,330 ilman uudelleenrakentaminen koko juttu tai jopa siirtää kaikki elementit 265 00:11:19,330 --> 00:11:22,490 miten meidän olisi pitänyt kanssa samanpituisia array. 266 00:11:22,490 --> 00:11:26,020 >> Joten linkitettyjen listojen ovat perus, mutta tärkeä, dynaaminen tietorakenne 267 00:11:26,020 --> 00:11:29,080 joka on sekä etuja että haittoja 268 00:11:29,080 --> 00:11:31,260 verrattuna paneelit ja muiden tietorakenteiden, 269 00:11:31,260 --> 00:11:33,350 ja kuten usein tietotekniikassa, 270 00:11:33,350 --> 00:11:35,640 on tärkeää tietää, milloin kutakin työkalua, 271 00:11:35,640 --> 00:11:37,960 joten voit valita oikea väline oikeaan työhön. 272 00:11:37,960 --> 00:11:40,060 >> Lisätietoja Käytännössä yrittää kirjoittaa toimintoja 273 00:11:40,060 --> 00:11:42,080 Poista solmut linkitetty lista - 274 00:11:42,080 --> 00:11:44,050 Muista olla varovainen missä järjestyksessä voit järjestää 275 00:11:44,050 --> 00:11:47,430 seuraava osoittimia, jotta et menetä kimpale listasi - 276 00:11:47,430 --> 00:11:50,200 tai toiminto laskea solmut linkitetty lista, 277 00:11:50,200 --> 00:11:53,280 tai hauska yksi, kääntää järjestyksessä kaikki solmut on linkitetty lista. 278 00:11:53,280 --> 00:11:56,090 >> Nimeni on Jackson Steinkamp, ​​tämä on CS50.