1 00:00:00,000 --> 00:00:02,832 >> [MÜZİK OYUN] 2 00:00:02,832 --> 00:00:05,670 3 00:00:05,670 --> 00:00:08,560 >> Doug LLOYD: Tamam, bu kadar Elbette bu husus, 4 00:00:08,560 --> 00:00:15,300 Biz C. temelleri çok kapalı var Biz, değişkenler, diziler hakkında çok şey biliyorum 5 00:00:15,300 --> 00:00:17,610 işaretçileri, bütün bu iyi şeyler. 6 00:00:17,610 --> 00:00:21,610 Bunlar her çeşit inşa edilmiştir de, temel olarak görmek 7 00:00:21,610 --> 00:00:23,880 ama biz doğru, daha yapabilirim? 8 00:00:23,880 --> 00:00:27,930 Bazı şeyleri birleştirebilirsiniz Birlikte ilginç şekillerde. 9 00:00:27,930 --> 00:00:31,010 >> Ve o yüzden başlayalım, öyle yapalım C bizi ne verir dışarı şube, 10 00:00:31,010 --> 00:00:35,270 ve kendi veri oluşturmaya başlayabilirsiniz Bu binayı kullanan yapılar 11 00:00:35,270 --> 00:00:40,590 Birlikte bir şeyler yapmak blokları kullanışlı, gerçekten değerli. 12 00:00:40,590 --> 00:00:43,420 Bunu yapabiliriz bir yoludur koleksiyonları hakkında konuşmak için. 13 00:00:43,420 --> 00:00:48,360 Yani bugüne kadar verinin bir tür yaşadım koleksiyonları temsil yapı 14 00:00:48,360 --> 00:00:51,030 değerlerini, benzer değerlere seviyorum. 15 00:00:51,030 --> 00:00:52,350 Bu bir dizi olurdu. 16 00:00:52,350 --> 00:00:57,020 Biz tamsayılar koleksiyonları var ya böylece karakterler ve koleksiyonları. 17 00:00:57,020 --> 00:01:00,890 >> Yapılar da veri sıralama vardır bilgi toplamak için yapı, 18 00:01:00,890 --> 00:01:03,220 ancak değerler gibi toplamak için değil. 19 00:01:03,220 --> 00:01:08,090 Genellikle farklı veri türleri karışımları Birlikte tek bir kutu içinde. 20 00:01:08,090 --> 00:01:10,750 Ama kendisi değil Birlikte zincir için kullanılan 21 00:01:10,750 --> 00:01:16,920 ya da birlikte benzer bağlamak Bir dizi gibi öğeler. 22 00:01:16,920 --> 00:01:20,960 Diziler için büyük eleman aramak, ancak geri çağırma 23 00:01:20,960 --> 00:01:24,262 çok zor olduğunu bir diziye eklemek için, 24 00:01:24,262 --> 00:01:26,470 biz ekleyerek sürece Bu dizinin çok uç. 25 00:01:26,470 --> 00:01:29,730 >> Ve en iyi örnek ben Bunun için ekleme türüdür. 26 00:01:29,730 --> 00:01:31,650 Eğer videomuzu hatırlayacak olursak Ekleme tür üzerinde, 27 00:01:31,650 --> 00:01:34,110 bir sürü orada oldu gider sahip yer 28 00:01:34,110 --> 00:01:37,970 elemanları pick up ve bunları kaydırmaya bir şey sığdırmak için yolumdan 29 00:01:37,970 --> 00:01:41,290 senin dizinin ortasına. 30 00:01:41,290 --> 00:01:44,690 Diziler ayrıca başka muzdarip Sorun, hangi inflexibility olduğunu. 31 00:01:44,690 --> 00:01:47,150 Biz bir diziyi bildirmek zaman biz ona bir tane vurulmaz. 32 00:01:47,150 --> 00:01:49,790 Biz istiyoruz, demek olsun Bu birçok unsurlar. 33 00:01:49,790 --> 00:01:51,940 100 olabilir, bu olabilir 1000 olmak, bu olabilir 34 00:01:51,940 --> 00:01:55,930 x kullanıcının bir sayıdır x, Bir isteminde veya komut bize verdi 35 00:01:55,930 --> 00:01:56,630 çizgi. 36 00:01:56,630 --> 00:01:59,905 >> Ama biz sadece bu az bir vurulmaz, biz Aslında, daha sonra ah demek alamadım 37 00:01:59,905 --> 00:02:04,360 101 ihtiyaç ya da ben x artı 20 gerekiyordu. 38 00:02:04,360 --> 00:02:07,910 Çok geç, biz zaten ilan ettik Dizi ve biz 101 veya almak istiyorsanız x 39 00:02:07,910 --> 00:02:12,050 artı 20, biz bildirmek zorunda tamamen farklı bir dizi, 40 00:02:12,050 --> 00:02:15,540 dizinin bütün elemanları kopyalamak üzerinde, ve sonra biz yeterli. 41 00:02:15,540 --> 00:02:19,880 Ve biz yine yanlış ise ne, ne biz aslında 102 veya x artı 40 gerekirse, 42 00:02:19,880 --> 00:02:21,970 Biz yine bunu yapmak zorunda. 43 00:02:21,970 --> 00:02:26,250 Yani çok katı olduğunu verilerimizi yeniden boyutlandırma, 44 00:02:26,250 --> 00:02:29,360 ama birlikte bazı birleştirince biz zaten ettik temelleri 45 00:02:29,360 --> 00:02:33,230 işaretçiler ve yapıları hakkında öğrendim, Özellikle dinamik bellek kullanarak 46 00:02:33,230 --> 00:02:36,180 malloc ile tahsis, biz Birlikte bu parçaları koyabilirsiniz 47 00:02:36,180 --> 00:02:40,960 Yeni verilerin structure-- a oluşturmak için tek başına biz ifade edebileceği üzere- listesi bağlantılı 48 00:02:40,960 --> 00:02:45,400 bu bizi büyümeye olanak ve değerlerin bir koleksiyon küçültmek 49 00:02:45,400 --> 00:02:48,800 ve biz herhangi bir israf alanı olmayacaktır. 50 00:02:48,800 --> 00:02:53,320 >> Yani yine, biz bu fikri diyoruz, Bu kavram, bir bağlantılı liste. 51 00:02:53,320 --> 00:02:56,320 Özel olarak, bu video we ' tek başına bağlantılı liste hakkında konuşurken, 52 00:02:56,320 --> 00:02:59,185 ve daha sonra başka bir video biz konuşacağız yaklaşık iki kat bağlantılı listeler, hangi 53 00:02:59,185 --> 00:03:01,560 Burada tema sadece bir çeşididir. 54 00:03:01,560 --> 00:03:05,200 Ancak tek tek bağlantılı liste düğüm oluşur, 55 00:03:05,200 --> 00:03:08,559 düğümleri sadece soyut bir varlık term-- ben arıyorum bir şey var 56 00:03:08,559 --> 00:03:10,350 Bu bir çeşit yapısı, temelde, ben? 57 00:03:10,350 --> 00:03:16,190 Sadece bunu bir node-- ve bu arayacağım düğüm iki üyesi, ya da iki alan vardır. 58 00:03:16,190 --> 00:03:20,300 Genellikle, bir veri vardır tamsayı, bir karakter şamandıra, 59 00:03:20,300 --> 00:03:23,790 ya da başka bir veri türü olabilir Bir tür def ile tanımlanır ettik. 60 00:03:23,790 --> 00:03:29,290 Ve bir gösterici içerir aynı türden başka bir düğüm. 61 00:03:29,290 --> 00:03:34,710 >> Bu yüzden içinde iki şey var Bu düğüm, veri ve bir işaretçi 62 00:03:34,710 --> 00:03:36,380 başka bir düğüme. 63 00:03:36,380 --> 00:03:39,370 Ve görselleştirmek başlatırsanız Bu, bunu düşünmek olabilir 64 00:03:39,370 --> 00:03:42,280 düğümlerin bir zincir gibi olduğunu birbirine bağlanır. 65 00:03:42,280 --> 00:03:45,070 Biz ilk düğüm var, o verilerinizi ve bir işaretçi içerir 66 00:03:45,070 --> 00:03:49,110 içeren ikinci düğüme için Veri ve üçüncü düğüme bir işaretçi. 67 00:03:49,110 --> 00:03:52,940 Ve böylece biz onu diyoruz yüzden bağlantılı liste, onlar birbirine bağlı ediyoruz. 68 00:03:52,940 --> 00:03:56,070 >> Bu özel ne yapar? düğüm yapısı benziyor? 69 00:03:56,070 --> 00:04:01,120 Peki, sen bizim video hatırlayacak olursak tipi def ile özel türleri tanımlayarak, 70 00:04:01,120 --> 00:04:05,400 Biz structure-- tanımlayabilir ve Böyle bir yapıyı tanımlamak yazın. 71 00:04:05,400 --> 00:04:11,240 yapı sllist tyepdef ve ben keyfi burada kelime değerini kullanarak 72 00:04:11,240 --> 00:04:13,891 Gerçekten herhangi bir veri türünü gösterir. 73 00:04:13,891 --> 00:04:16,890 Sen, bir tamsayı veya şamandıra üzerinde geçebileceği Eğer istersen olabilir. 74 00:04:16,890 --> 00:04:19,389 Sadece sınırlı değil tamsayı, ya da böyle bir şey. 75 00:04:19,389 --> 00:04:22,790 Yani değeri sadece keyfi Daha sonra veri türü ve bir işaretçi 76 00:04:22,790 --> 00:04:26,310 aynı türden başka bir düğüme. 77 00:04:26,310 --> 00:04:29,690 >> Şimdi, küçük bir sorun var Burada bir yapıya tanımlama ile 78 00:04:29,690 --> 00:04:33,030 ne zaman kendi kendine referanslı yapısıdır. 79 00:04:33,030 --> 00:04:35,340 Ben geçici olması Benim yapısı için isim. 80 00:04:35,340 --> 00:04:37,640 Gün I sonunda bunu açıkça aramak istediğiniz 81 00:04:37,640 --> 00:04:43,030 sll düğümü, sonuçta yeni benim tipim tanımının parçası isim, 82 00:04:43,030 --> 00:04:47,450 ama sll düğümünü kullanamazsınız Bu ortasında. 83 00:04:47,450 --> 00:04:51,430 Sebebi, ben değil Bir tür olarak adlandırılan sll düğümü oluşturdu 84 00:04:51,430 --> 00:04:55,200 Burada bu son noktayı girene kadar. 85 00:04:55,200 --> 00:04:59,720 Bu noktaya kadar, ben olmak zorunda Başka bir yolu, bu veri türü başvurmak için. 86 00:04:59,720 --> 00:05:02,440 >> Ve bu bir kendini başvuru veri türü. 87 00:05:02,440 --> 00:05:06,314 Bu, bir veri türü s Bir veri içeren bir yapı, 88 00:05:06,314 --> 00:05:08,480 ve başka bir işaretçi Aynı tip yapısı. 89 00:05:08,480 --> 00:05:11,750 Yani başvurmak gerekiyor Bu veri türü, en azından geçici olarak, 90 00:05:11,750 --> 00:05:14,910 bu yüzden bir geçici vererek yapı sllist adı 91 00:05:14,910 --> 00:05:18,540 Beni sonra bir istediğini söylüyorsun sağlar Başka bir yapı sllist için işaretçisi, 92 00:05:18,540 --> 00:05:24,690 bir yapı sllist yıldızı ve daha sonra Ben tanımını tamamladıktan sonra, 93 00:05:24,690 --> 00:05:27,220 Ben şimdi bu tür bir sll düğüm çağırabilirsiniz. 94 00:05:27,220 --> 00:05:30,520 >> Orada olduğunu görmek yüzden de bu Burada geçici bir isim, 95 00:05:30,520 --> 00:05:31,879 ama burada kalıcı bir isim. 96 00:05:31,879 --> 00:05:33,920 Bazen görebilirsiniz yapısının tanımlar, 97 00:05:33,920 --> 00:05:36,570 örneğin, söz konusu değildir Kendi kendine tutarlılığına, bu 98 00:05:36,570 --> 00:05:39,390 Burada belirleyici isim yok. 99 00:05:39,390 --> 00:05:43,040 Sadece, typedef struct söyleyebilirim küme ayracı açın ve bunu tanımlamak. 100 00:05:43,040 --> 00:05:45,620 Sen Ama eğer yapı kendini tutarlılığına, bu biri olarak, 101 00:05:45,620 --> 00:05:49,010 Bir belirtmeniz gerekir Geçici türü adı. 102 00:05:49,010 --> 00:05:51,310 Ama sonuçta, şimdi Bunu yaptık, 103 00:05:51,310 --> 00:05:53,620 biz sadece başvurabilirsiniz Bu düğümler, bu birimler, 104 00:05:53,620 --> 00:05:57,900 amaçlar için sll düğümleri olarak Bu videonun geri kalanı. 105 00:05:57,900 --> 00:06:00,900 >> Pekala, biz nasıl biliyoruz Bağlantılı bir liste düğümü oluşturmak. 106 00:06:00,900 --> 00:06:03,240 Biz tanımlamak için biliyorum Bağlantılı liste düğümü. 107 00:06:03,240 --> 00:06:06,670 Şimdi, biz başlatmak için gidiyoruz eğer bilgi toplamak için bunları kullanarak, 108 00:06:06,670 --> 00:06:10,360 operasyonların bir çift var, biz anlamak ve çalışmak gerekiyor. 109 00:06:10,360 --> 00:06:12,860 Biz nasıl oluşturulacağını bilmek gerekir ince hava dışarı bağlantılı liste. 110 00:06:12,860 --> 00:06:14,901 Hiçbir liste zaten var ise, biz bir başlamak istiyorum. 111 00:06:14,901 --> 00:06:16,960 Bu yüzden gerekiyor Bağlantılı bir liste oluşturmak için, 112 00:06:16,960 --> 00:06:19,130 Biz muhtemelen aramanıza gerek Bağlantı listesi üzerinden 113 00:06:19,130 --> 00:06:21,830 Aradığımız bir unsur bulmak için. 114 00:06:21,830 --> 00:06:24,430 Biz eklemek gerekiyor listeye yeni şeyler, 115 00:06:24,430 --> 00:06:25,930 Bizim liste büyümek mümkün olmak istiyorum. 116 00:06:25,930 --> 00:06:28,638 Ve aynı şekilde, biz mümkün istiyorum Bizim listeden şeyleri silmek için, 117 00:06:28,638 --> 00:06:30,250 Bizim liste küçültmek için mümkün olmak istiyorum. 118 00:06:30,250 --> 00:06:32,160 Ve sonunda bizim programları, özellikle 119 00:06:32,160 --> 00:06:34,550 biz olduğumuzu hatırlayacak olursak dinamik bellek ayırma 120 00:06:34,550 --> 00:06:38,337 genellikle bu listeleri oluşturmak için, biz bu belleğin tüm serbest istiyorum 121 00:06:38,337 --> 00:06:39,670 biz onunla çalışıyoruz bittiğinde. 122 00:06:39,670 --> 00:06:44,627 Ve böylece biz silmek gerekiyor birinde bütün bağlantılı liste baskın başarısız. 123 00:06:44,627 --> 00:06:46,460 Öyleyse üzerinden gidelim Bu operasyonların bazıları 124 00:06:46,460 --> 00:06:51,192 ve biz onları görselleştirmek nasıl, Özellikle pseudocode kodunu konuşuyor. 125 00:06:51,192 --> 00:06:53,150 Yani biz bir oluşturmak istiyorum Listeyi bağlantılı, bu yüzden belki biz 126 00:06:53,150 --> 00:06:56,480 bir fonksiyon tanımlamak istediğiniz Bu prototip ile. 127 00:06:56,480 --> 00:07:01,690 sll düğüm yıldızı, oluşturmak ve ben geçiyorum tek argüman, bazı keyfi veri 128 00:07:01,690 --> 00:07:05,530 Bazı keyfi veri türünün yeniden yazın. 129 00:07:05,530 --> 00:07:10,482 Ama bu fonksiyonu gerektiğini returning-- ediyorum Bir tek başlarına kadar, bana bir işaretçi döndürür 130 00:07:10,482 --> 00:07:11,190 bağlantılı liste düğümü. 131 00:07:11,190 --> 00:07:14,050 Yine, oluşturmak için çalışıyoruz ince hava dışarı bağlantılı liste, 132 00:07:14,050 --> 00:07:17,900 bu yüzden bir işaretçi gerek Ben bittim bu liste. 133 00:07:17,900 --> 00:07:19,420 >> Yani burada yer alan adımlar nelerdir? 134 00:07:19,420 --> 00:07:20,960 Eh, ben ilk şey değilim yapacak dinamik olduğunu 135 00:07:20,960 --> 00:07:22,550 yeni bir düğüm için yer tahsis eder. 136 00:07:22,550 --> 00:07:26,689 Yine, biz ince dışına yaratıyorsunuz hava, bu yüzden biz bunun için malloc alana ihtiyacımız var. 137 00:07:26,689 --> 00:07:28,480 Ve tabii ki, hemen Biz malloc sonra, 138 00:07:28,480 --> 00:07:31,692 biz her zaman emin olmak için kontrol edin bizim pointer-- geri boş alamadım. 139 00:07:31,692 --> 00:07:33,650 Biz denemek Çünkü eğer ve Bir null işaretçi deferense, 140 00:07:33,650 --> 00:07:36,190 Biz acı gidiyoruz segfault ve bunu istemiyoruz. 141 00:07:36,190 --> 00:07:39,510 >> Sonra alanı doldurmak istiyoruz, Biz değer alanını başlatmak istiyor 142 00:07:39,510 --> 00:07:41,690 ve bir sonraki alana başlatılamadı. 143 00:07:41,690 --> 00:07:45,450 Ve sonra biz sonunda kadar aşağıdaki amaçlara istiyorum İstediğimiz indicates-- fonksiyon prototipi 144 00:07:45,450 --> 00:07:49,940 Bir sll düğüme bir işaretçi dönmek için. 145 00:07:49,940 --> 00:07:51,710 Peki bu görsel gibi görünmesi? 146 00:07:51,710 --> 00:07:55,230 Peki, ilk biz dinamik gidiyoruz Yeni sll düğümü için yer tahsis 147 00:07:55,230 --> 00:07:58,320 bu yüzden de bu malloc-- görsel bir temsili 148 00:07:58,320 --> 00:08:00,020 düğümün sadece oluşturdu. 149 00:08:00,020 --> 00:08:02,757 Ve biz emin olmak için kontrol edin Bu, bu durumda null-- değil 150 00:08:02,757 --> 00:08:04,840 resim olmazdı o boş olsaydı çoktan, 151 00:08:04,840 --> 00:08:07,298 biz bellek tükendi olurdu bu yüzden oraya gitmek için iyi bir konum. 152 00:08:07,298 --> 00:08:10,200 Yani şimdi biz C adıma konum, düğümleri değer alanını başlatmak. 153 00:08:10,200 --> 00:08:12,280 Peki, bu fonksiyon dayalı Ben burada kullanıyorum çağrı 154 00:08:12,280 --> 00:08:16,700 Ben 6'da geçmek istiyorum gibi görünüyor bu yüzden değer alanında 6 olacak. 155 00:08:16,700 --> 00:08:18,865 Şimdi, bir sonraki alan başlatılamadı. 156 00:08:18,865 --> 00:08:21,640 Peki orada yapacağım, hiçbir şey doğru, yanındaki var, 157 00:08:21,640 --> 00:08:23,600 Bu listede tek şeydir. 158 00:08:23,600 --> 00:08:27,206 Yani listedeki bir sonraki şey ne? 159 00:08:27,206 --> 00:08:29,660 >> Bu doğru bir şey, işaret olmamalıdır. 160 00:08:29,660 --> 00:08:33,600 Hiçbir şey bu kadar ne başka orada var biz bildiğimiz kavramı nothing-- var 161 00:08:33,600 --> 00:08:35,638 hiçbir şey göstericiler? 162 00:08:35,638 --> 00:08:37,929 Belki istediğimiz olmalı Orada bir null işaretçi koymak, 163 00:08:37,929 --> 00:08:40,178 ve ben null adlı temsil edeceğiz , tıpkı kırmızı bir kutu işaretçisi 164 00:08:40,178 --> 00:08:41,559 daha ileri gidemem. 165 00:08:41,559 --> 00:08:44,430 Daha sonra biraz göreceğiniz gibi, biz sonunda zincirleri olacak 166 00:08:44,430 --> 00:08:46,330 okların bağlanan Birlikte bu düğümler, 167 00:08:46,330 --> 00:08:48,480 ama sen vurduğunuzda Kırmızı kutu, yani boş değil 168 00:08:48,480 --> 00:08:51,150 biz herhangi bir daha gidemez Bu listenin sonu. 169 00:08:51,150 --> 00:08:53,960 >> Ve son olarak, biz sadece istiyoruz Bu düğüme bir işaretçi döndürür. 170 00:08:53,960 --> 00:08:56,160 Bu yüzden yeni arayacağım, ve yeni döndürür 171 00:08:56,160 --> 00:08:59,370 bu nedenle de kullanılabilir ne olursa olsun işlevi yarattı. 172 00:08:59,370 --> 00:09:03,100 Yani oraya gidiyoruz, biz bir tek başına oluşturduk havadan bağlantılı liste düğümü, 173 00:09:03,100 --> 00:09:05,920 ve şimdi biz birlikte çalışabilir bir listesi var. 174 00:09:05,920 --> 00:09:08,260 >> Şimdi, zaten biz diyelim Büyük bir zincir var, 175 00:09:08,260 --> 00:09:09,800 ve biz de bir şeyler bulmak istiyorum. 176 00:09:09,800 --> 00:09:12,716 Ve biz gidiyor bir işlev istiyorum , doğru ya da yanlış dönüş bağlı olarak 177 00:09:12,716 --> 00:09:15,840 Bir değer bu listede olup olmadığını gör. 178 00:09:15,840 --> 00:09:18,160 Bir fonksiyon prototipi, ya da Bu fonksiyon için beyanname, 179 00:09:18,160 --> 00:09:23,320 bu-- bulmak bool gibi görünebilir, ve belki o zaman iki argüman geçmek istiyorum. 180 00:09:23,320 --> 00:09:26,996 >> İlk, bir göstericidir Bağlantılı listenin ilk elemanı. 181 00:09:26,996 --> 00:09:29,620 Bu olacak bir şey aslında Her zaman takip etmek istiyorsanız, 182 00:09:29,620 --> 00:09:33,110 ve aslında bir şey olabileceğini Hatta genel değişken koymak. 183 00:09:33,110 --> 00:09:35,360 Bir liste oluşturmak sonra, her zaman sen, 184 00:09:35,360 --> 00:09:38,990 Çok takip etmek istiyorum listenin ilk elemanı. 185 00:09:38,990 --> 00:09:43,690 Tüm diğer başvurabilirsiniz Bu şekilde Sadece zincir takip ederek elemanları, 186 00:09:43,690 --> 00:09:47,300 işaretçiler tutmak zorunda kalmadan her elemana bozulmamış. 187 00:09:47,300 --> 00:09:50,920 Sadece ilk kaydını tutmak gerekir tek hepsi bir arada zincirleme eğer. 188 00:09:50,920 --> 00:09:52,460 >> Ve sonra ikinci şey Biz yine de geçiyoruz 189 00:09:52,460 --> 00:09:54,376 keyfi some-- olduğunu ne olursa olsun veri türü we ' 190 00:09:54,376 --> 00:09:59,640 Orada arıyor içindedir Umarım listedeki düğümlerden biri. 191 00:09:59,640 --> 00:10:00,980 Peki adımlar nelerdir? 192 00:10:00,980 --> 00:10:04,250 Peki, bunu ilk şey Biz enine işaretçi oluşturmak 193 00:10:04,250 --> 00:10:06,015 Listeler kafasına işaret. 194 00:10:06,015 --> 00:10:08,890 Peki, neden, biz zaten yapacağız Listeler başında bir işaretçi, 195 00:10:08,890 --> 00:10:10,974 Neden biz sadece etrafında o bir hareket etmiyor? 196 00:10:10,974 --> 00:10:13,140 Eh, ben sadece dediğim gibi, Bizim için gerçekten çok önemli 197 00:10:13,140 --> 00:10:17,580 Her zaman takip etmek Listede ilk unsur. 198 00:10:17,580 --> 00:10:21,270 Ve böylece aslında iyi Bunun bir kopyasını oluşturmak için, 199 00:10:21,270 --> 00:10:25,350 ve böylece biz asla hareket etmek kullanan Yanlışlıkla uzaklaşın, ya da her zaman biz 200 00:10:25,350 --> 00:10:30,430 bazı noktada bir işaretçi Sağ listesinin ilk öğe üzerinde. 201 00:10:30,430 --> 00:10:33,290 Yani bir oluşturmak için iyidir biz taşımak için kullanabilirsiniz ikincisi. 202 00:10:33,290 --> 00:10:35,877 >> Sonra biz sadece olmadığını karşılaştırmak bu düğüm at değer alanı 203 00:10:35,877 --> 00:10:38,960 o ise biz arıyoruz ve konum budur değil, biz sadece bir sonraki düğüme hareket. 204 00:10:38,960 --> 00:10:41,040 Ve biz bunu yapmaya devam aşırı ve aşırı ve aşırı, 205 00:10:41,040 --> 00:10:44,811 biz ya bulana kadar eleman, ya da biz vurmak 206 00:10:44,811 --> 00:10:47,310 null-- biz sonuna ulaştınız ve listenin orada değildir. 207 00:10:47,310 --> 00:10:50,540 Bu umarım bir zili gerekir Size tıpkı doğrusal arama, 208 00:10:50,540 --> 00:10:54,430 Biz sadece bunu kopyalayan konum Bir tek başına bağlantılı liste yapısı 209 00:10:54,430 --> 00:10:56,280 Bunun yerine bunu yapmak için bir dizi kullanarak. 210 00:10:56,280 --> 00:10:58,210 >> Yani burada bir örnek Bir tek başına bağlantılı liste. 211 00:10:58,210 --> 00:11:00,043 Bu, bir oluşmaktadır Beş düğümleri ve biz var 212 00:11:00,043 --> 00:11:04,330 başkanına bir işaretçi Liste denir listesi. 213 00:11:04,330 --> 00:11:07,385 Yapmak istediğimiz ilk şey Yine, bu kastetmek işaretçisi oluşturun. 214 00:11:07,385 --> 00:11:09,760 Bu yüzden şimdi iki işaretçiler var Aynı şey bu nokta. 215 00:11:09,760 --> 00:11:15,025 >> Şimdi, burada da fark ben yapmadım trav için herhangi bir yer malloc gerekiyor. 216 00:11:15,025 --> 00:11:18,970 Ben trav malloc eşittir söylemedi bir şey, o düğüm zaten var 217 00:11:18,970 --> 00:11:21,160 bellekte bu alan zaten var. 218 00:11:21,160 --> 00:11:24,290 Yani aslında yapıyorum hepsi Bunun için başka bir işaretçi yaratıyor. 219 00:11:24,290 --> 00:11:28,210 Ben ek mallocing değilim uzay, şimdi iki işaretçiler var 220 00:11:28,210 --> 00:11:31,370 aynı şey işaret. 221 00:11:31,370 --> 00:11:33,710 >> Yani 2 Ben arıyorum nedir? 222 00:11:33,710 --> 00:11:37,220 Şey, hayır, bunun yerine ben bir sonrakine geçmek için gidiyor. 223 00:11:37,220 --> 00:11:41,740 Böylece temelde söyleyebilirim trav yanındaki trav eşittir. 224 00:11:41,740 --> 00:11:43,630 Ben hayır, aradığım şey 3 olduğunu. 225 00:11:43,630 --> 00:11:45,780 Yani gitmeye devam yoluyla, sonunda kadar 226 00:11:45,780 --> 00:11:48,690 Ben ne arıyorum olan 6 olsun işlev çağrısı dayalı için 227 00:11:48,690 --> 00:11:51,600 Ben de var üstünde Orada, ve bu yüzden bitti. 228 00:11:51,600 --> 00:11:54,150 >> Şimdi, eleman ne olmadığımı arıyorum, listede yok 229 00:11:54,150 --> 00:11:55,510 Hala işe gidiyor? 230 00:11:55,510 --> 00:11:57,120 Eh, liste fark Burada, ustaca farklı 231 00:11:57,120 --> 00:11:59,410 ve bu var başka bir şey Bağlantılı listeleri önemli, 232 00:11:59,410 --> 00:12:01,780 Eğer korumak zorunda değilsiniz Onları belirli bir sırayla. 233 00:12:01,780 --> 00:12:05,390 İstersen, can ama Zaten fark etmiş olabilir 234 00:12:05,390 --> 00:12:09,310 Biz takip değiliz Biz ne sayıda elemanı altındadır. 235 00:12:09,310 --> 00:12:13,150 >> Ve bu bir ticaret tür olduğunu biz diziler ayetleri bağlantılı liste ile sahip 236 00:12:13,150 --> 00:12:15,300 biz yok edilir Artık rasgele erişim. 237 00:12:15,300 --> 00:12:18,150 Biz sadece ben istiyorum diyemem 0 öğeye gitmek için, 238 00:12:18,150 --> 00:12:21,410 ya da benim dizi 6 elemanı, ki ben bir dizide yapabilirsiniz. 239 00:12:21,410 --> 00:12:25,080 Ben gitmek istiyorum diyemem 0 unsur, ya da 6 eleman, 240 00:12:25,080 --> 00:12:30,360 ya da benim bağlantılı liste 25 element, onlarla ilgili hiçbir indeks var. 241 00:12:30,360 --> 00:12:33,660 Ve bu yüzden gerçekten önemli değil Biz sipariş listemize korumak durumunda. 242 00:12:33,660 --> 00:12:36,080 Size isterseniz Kesinlikle olabilir ama orada 243 00:12:36,080 --> 00:12:38,567 onlar gerek hiçbir neden herhangi bir sırayla korunmuş. 244 00:12:38,567 --> 00:12:40,400 Yani yine deneyelim ve Bu listede 6 bulabilirsiniz. 245 00:12:40,400 --> 00:12:43,200 Peki, biz başlayacak başlayarak biz, 6 bulmuyorum 246 00:12:43,200 --> 00:12:47,690 ve sonra biz bulma devam 6, biz sonunda burada elde edene kadar. 247 00:12:47,690 --> 00:12:52,790 Düğüme Yani şu anda trav noktaları 8 ihtiva eden, ve altı tane değildir. 248 00:12:52,790 --> 00:12:55,250 >> Yani bir sonraki adım olacaktır Bir sonraki işaretçi gitmek için, 249 00:12:55,250 --> 00:12:57,440 böylece trav yanındaki trav eşittir söylüyorlar. 250 00:12:57,440 --> 00:13:00,750 Peki, trav sonraki belirtilir Orada kırmızı kutu, null. 251 00:13:00,750 --> 00:13:03,020 Yani başka hiçbir yerde yok bu yüzden bu noktada gidin ve 252 00:13:03,020 --> 00:13:06,120 biz ulaştık sonucuna varabiliriz bağlantılı liste sonu, 253 00:13:06,120 --> 00:13:07,190 ve 6 orada değil. 254 00:13:07,190 --> 00:13:10,980 Ve bu iade edileceği Bu durumda yanlış. 255 00:13:10,980 --> 00:13:14,540 >> Tamam, nasıl bir yeni ekleyebilirim Bağlantılı liste halinde düğüm? 256 00:13:14,540 --> 00:13:17,310 Yani biz oluşturmak mümkün oldum hiçbir yerden bir bağlantılı liste, 257 00:13:17,310 --> 00:13:19,370 ama muhtemelen istiyoruz bir zincir oluşturmak olup 258 00:13:19,370 --> 00:13:22,620 farklı listelerin bir demet oluşturmak. 259 00:13:22,620 --> 00:13:25,700 Biz bir listesi var istiyorum bunun düğüm bir grup var 260 00:13:25,700 --> 00:13:28,040 Tek bir düğüm ile listelerin bir demet. 261 00:13:28,040 --> 00:13:31,260 Yani biz sadece Create kullanmaya devam edemez işlevi şimdi, daha önce tanımlanmış biz 262 00:13:31,260 --> 00:13:33,860 Bir eklemek istiyorum zaten var listesi. 263 00:13:33,860 --> 00:13:36,499 >> Bu durumda Yani, biz gidiyoruz iki argüman geçmek, 264 00:13:36,499 --> 00:13:39,290 Bu başkanına işaretçi Biz eklemek istediğiniz listeyi bağlantılı. 265 00:13:39,290 --> 00:13:40,910 Bu kadar neden Yine, işte Önemli hep biz o 266 00:13:40,910 --> 00:13:43,400 Çünkü, bunun takip Gerçekten tek yolu var 267 00:13:43,400 --> 00:13:46,690 Bütün liste başvurmak zorunda İlk elemana bir işaretçi tarafından. 268 00:13:46,690 --> 00:13:49,360 Yani biz bir geçmek istiyorum Bu ilk elemana işaretçisi, 269 00:13:49,360 --> 00:13:52,226 ve ne olursa olsun değer biz listeye eklemek istiyorum. 270 00:13:52,226 --> 00:13:54,600 Ve sonunda bu işlev bir işaretçi geri gidiyor 271 00:13:54,600 --> 00:13:57,980 Bağlantılı bir listenin yeni başkanı. 272 00:13:57,980 --> 00:13:59,700 >> Burada yer alan adımlar nelerdir? 273 00:13:59,700 --> 00:14:02,249 Peki, sadece oluşturmak olduğu gibi, Biz dinamik tahsis gerekir 274 00:14:02,249 --> 00:14:05,540 yeni bir düğüm için yer ve olmak için kontrol emin olun biz bellek tüketmemek, yine 275 00:14:05,540 --> 00:14:07,150 Biz malloc kullanarak çünkü. 276 00:14:07,150 --> 00:14:09,080 Sonra doldurmak istiyoruz ve düğüm eklemek 277 00:14:09,080 --> 00:14:12,730 yani numara koymak, ne olursa olsun val düğümün içine vardır. 278 00:14:12,730 --> 00:14:17,310 Biz düğüm eklemek istediğiniz bağlantılı liste başında. 279 00:14:17,310 --> 00:14:19,619 >> Bir sebebi var ben Bunu yapmak istiyorum ve bu 280 00:14:19,619 --> 00:14:21,910 bir saniye alarak değer olabilir Burada videoyu duraklatmak için, 281 00:14:21,910 --> 00:14:25,860 ve ben neden isteyeyim düşünmek Bağlantılı başında eklemek 282 00:14:25,860 --> 00:14:26,589 listesi. 283 00:14:26,589 --> 00:14:28,630 Yine, daha önce bahsettiğim Gerçekten değil bu 284 00:14:28,630 --> 00:14:33,020 biz herhangi bunu korumak matter eğer Sipariş, belki bir ipucu. 285 00:14:33,020 --> 00:14:36,040 Ve biz ne olacağını gördüm wanted aşağıdaki amaçlara ya da sadece bir saniyeden 286 00:14:36,040 --> 00:14:37,360 önce biz ne zaman gittiğini arama yoluyla size 287 00:14:37,360 --> 00:14:39,235 ne olabilir görebiliyordu Biz çalışıyoruz eğer olur 288 00:14:39,235 --> 00:14:41,330 listenin sonunda eklemek için. 289 00:14:41,330 --> 00:14:44,750 Biz yok çünkü Listenin sonuna işaretçisi. 290 00:14:44,750 --> 00:14:47,490 >> Yani nedeni isteyeyim başında eklemek için, 291 00:14:47,490 --> 00:14:49,380 Ben hemen yapabilirim çünkü. 292 00:14:49,380 --> 00:14:52,730 Ben başında bir işaretçi var ve Biz ikinci bir görsel Bu görürsünüz. 293 00:14:52,730 --> 00:14:55,605 Ama sonunda eklemek istiyorsanız, Ben, başında başlatmak zorunda 294 00:14:55,605 --> 00:14:58,760 tüm yol travers son ve sonra tack. 295 00:14:58,760 --> 00:15:01,420 Yani demek istiyorum listenin sonunda ekleyerek 296 00:15:01,420 --> 00:15:04,140 n bir o olacak işletme, geri dönüyor 297 00:15:04,140 --> 00:15:06,720 Bizim tartışma hesaplama karmaşıklığı. 298 00:15:06,720 --> 00:15:10,140 Bu n operasyon, bir o olmak istiyorum Liste daha büyük ve daha büyük var gibi 299 00:15:10,140 --> 00:15:13,310 ve daha büyük, daha olacaksın ve bir şey çakmak daha zor 300 00:15:13,310 --> 00:15:14,661 sonunda üzerinde. 301 00:15:14,661 --> 00:15:17,410 Ama her zaman gerçekten çok kolay başında bir şey tack, 302 00:15:17,410 --> 00:15:19,060 Eğer başında hep sensin. 303 00:15:19,060 --> 00:15:21,620 >> Ve biz yine bu görsel görürsünüz. 304 00:15:21,620 --> 00:15:24,100 Ve sonra biz bir kez, bitti kez Biz yeni bir düğüm eklenir ettik 305 00:15:24,100 --> 00:15:26,880 Biz bizim işaretçi dönmek istiyorum Bağlantılı bir listenin yeni başkanı, hangi 306 00:15:26,880 --> 00:15:29,213 biz ekliyorsanız beri başlayarak aslında olacak 307 00:15:29,213 --> 00:15:31,060 biz sadece oluşturduğunuz düğüme bir işaretçi. 308 00:15:31,060 --> 00:15:33,280 Hadi bu görselleştirmek edelim Çünkü o yardım edeceğiz düşünüyorum. 309 00:15:33,280 --> 00:15:36,661 >> Yani burada bizim liste, bu oluşur Dört element, bir düğüm, 15 içeren 310 00:15:36,661 --> 00:15:38,410 hangi bir düğüme işaret , 9 ihtiva eder 311 00:15:38,410 --> 00:15:41,370 13 içeren bir düğüme işaret, hangi içeren bir düğüme işaret 312 00:15:41,370 --> 00:15:44,840 Null adlı vardır 10, sonraki işaretçi olarak işaretçi 313 00:15:44,840 --> 00:15:47,010 böylece listenin sonuna geldik. 314 00:15:47,010 --> 00:15:50,200 Yani biz bir eklemek istediğiniz değeri 12 ile yeni bir düğüm 315 00:15:50,200 --> 00:15:52,720 Bu başında Liste, biz ne yapacağız? 316 00:15:52,720 --> 00:15:58,770 Peki, ilk biz uzay malloc düğüm, ve sonra biz orada 12 koyun. 317 00:15:58,770 --> 00:16:02,211 >> Yani şimdi biz ulaştık bir Karar noktası, değil mi? 318 00:16:02,211 --> 00:16:03,960 Biz bir çift var göstericiler biz-ebil 319 00:16:03,960 --> 00:16:06,770 biz ilk hangisinin hareket etmelidir hareket? 320 00:16:06,770 --> 00:16:09,250 Biz 12 noktaya yapmalıyım list-- yeni başkanı 321 00:16:09,250 --> 00:16:13,020 ya afedersiniz, biz 12 yapmak gerekir Listenin eski başkanı işaret? 322 00:16:13,020 --> 00:16:15,319 Ya da söylemek gerekir Listede 12 de başlar. 323 00:16:15,319 --> 00:16:17,110 Bir ayrım var Orada, ve biz bakacağız 324 00:16:17,110 --> 00:16:19,870 hem bir saniye içinde ne de. 325 00:16:19,870 --> 00:16:23,350 >> Ama bu yol açar kenar çubuğu için büyük bir konu, 326 00:16:23,350 --> 00:16:26,280 ki bu biridir bağlantılı listeler ile trickiest şeyler 327 00:16:26,280 --> 00:16:30,980 işaretçiler düzenlemek için bir Doğru sırayla. 328 00:16:30,980 --> 00:16:34,520 Eğer sıra dışı şeyler taşırsanız, Yanlışlıkla sona erebilir 329 00:16:34,520 --> 00:16:36,050 Listenin kalan orphaning. 330 00:16:36,050 --> 00:16:37,300 Ve burada bir örnek. 331 00:16:37,300 --> 00:16:40,540 Öyleyse fikri ile gidelim of-- Evet, biz sadece 12 yarattık. 332 00:16:40,540 --> 00:16:43,180 Biz 12 olacak biliyorum Listenin yeni başkanı, 333 00:16:43,180 --> 00:16:47,660 ve bu yüzden neden biz sadece hareket etmiyor Liste işaretçi orada işaret etmek. 334 00:16:47,660 --> 00:16:49,070 >> Tamam, bu yüzden iyi. 335 00:16:49,070 --> 00:16:51,560 Peki şimdi nereye 12 sonraki noktayı nedir? 336 00:16:51,560 --> 00:16:54,580 Ben görsel olarak görebiliriz demek o 15'e işaret edeceğini, 337 00:16:54,580 --> 00:16:57,250 İnsanlarda olduğu gibi bu bizim için gerçekten açıktır. 338 00:16:57,250 --> 00:17:00,300 Nasıl bilgisayar biliyor? 339 00:17:00,300 --> 00:17:02,720 Biz bir şey yok Artık 15 işaret, değil mi? 340 00:17:02,720 --> 00:17:05,869 >> Biz 15 başvurmak için herhangi bir yeteneği kaybettik. 341 00:17:05,869 --> 00:17:11,460 Yeni ok sonraki eşittir diyemeyiz bir şey, orada hiçbir şey yok. 342 00:17:11,460 --> 00:17:13,510 Aslında, artık ettik Listenin geri kalanı 343 00:17:13,510 --> 00:17:16,465 Bunu yaparken, biz ettik Yanlışlıkla zinciri kırıldı. 344 00:17:16,465 --> 00:17:18,089 Ve biz kesinlikle bunu yapmak istemiyorum. 345 00:17:18,089 --> 00:17:20,000 >> O yüzden geri dönüp tekrar deneyelim. 346 00:17:20,000 --> 00:17:24,060 Belki doğru olanı yapmak için 12'nin bir sonraki işaretçi ayarlamak için 347 00:17:24,060 --> 00:17:28,290 İlk listenin eski başkanı, o zaman listeyi üzerinde taşıyabilirsiniz. 348 00:17:28,290 --> 00:17:30,420 Ve aslında, yani Doğru sipariş biz o 349 00:17:30,420 --> 00:17:32,836 Biz olduğunuzda izlemeniz gerekir tek başına bağlantılı liste ile çalışıyor. 350 00:17:32,836 --> 00:17:36,460 Biz her zaman bağlanmak istediğiniz listeye yeni bir unsur, 351 00:17:36,460 --> 00:17:41,010 Biz bu tür çekmeden önce değişen önemli bir adım 352 00:17:41,010 --> 00:17:43,360 nerede bağlantılı liste başıdır. 353 00:17:43,360 --> 00:17:46,740 Yine, böyle bir temel şey, biz bunun izini kaybetmek istemiyorum. 354 00:17:46,740 --> 00:17:49,310 >> Yani biz emin olmak istiyorum Her şey, bir arada zincirleme 355 00:17:49,310 --> 00:17:52,040 biz bu işaretçiyi taşımak önce. 356 00:17:52,040 --> 00:17:55,300 Ve böylece bu doğru bir düzen olacaktı, hangi listeye 12 bağlayacak, 357 00:17:55,300 --> 00:17:57,630 Daha sonra liste 12 başladığını söylüyorlar. 358 00:17:57,630 --> 00:18:00,860 Biz liste 12 başlar sözü ise ve Daha sonra, listeye 12 bağlanmaya çalıştı 359 00:18:00,860 --> 00:18:02,193 biz zaten ne gördüm. 360 00:18:02,193 --> 00:18:04,920 Biz yanlışlıkla listesini kaybedersiniz. 361 00:18:04,920 --> 00:18:06,740 >> Tamam, bir şey daha hakkında konuşmak için. 362 00:18:06,740 --> 00:18:09,750 Ne kurtulmak istiyorsanız Bütün bir defada listeyi bağlantılı? 363 00:18:09,750 --> 00:18:11,750 Yine, mallocing konum Bütün bu alan, ve bu yüzden 364 00:18:11,750 --> 00:18:13,351 İşimiz bitince onu serbest gerekir. 365 00:18:13,351 --> 00:18:15,350 Yani şimdi silmek istiyor Tüm bağlantılı liste. 366 00:18:15,350 --> 00:18:16,850 Peki, ne yapmak istiyorsun? 367 00:18:16,850 --> 00:18:20,460 >> Biz boş gösterici ulaştınız, biz Aksi takdirde, sadece silin durdurmak istiyorum 368 00:18:20,460 --> 00:18:23,420 ardından listenin geri kalanı ve beni serbest. 369 00:18:23,420 --> 00:18:28,890 Listenin geri kalanını Sil ve sonra geçerli düğümü ücretsiz. 370 00:18:28,890 --> 00:18:32,850 Gibi geliyor ne yapar, Ne tekniği konuştuk var 371 00:18:32,850 --> 00:18:35,440 yaklaşık önceden gibi o ses nedir? 372 00:18:35,440 --> 00:18:39,560 Daha sonra, herkesi Sil geri gelip beni silin. 373 00:18:39,560 --> 00:18:42,380 >> Bu yineleme, biz yaptık Biraz daha küçük bir sorun, 374 00:18:42,380 --> 00:18:46,910 Biz herkesi silmek söylüyorsun Başka, daha sonra beni silebilirsiniz. 375 00:18:46,910 --> 00:18:50,940 Ve daha yolda, o düğüm herkesi silmek, diyecekler. 376 00:18:50,940 --> 00:18:53,940 Ama sonunda biz alırsınız Liste boşsa nokta, 377 00:18:53,940 --> 00:18:55,310 ve bu bizim temel durum var. 378 00:18:55,310 --> 00:18:57,010 >> Yani bu bir göz atalım, ve bu işe nasıl. 379 00:18:57,010 --> 00:18:59,759 Yani burada bizim liste, bu aynı şey biz sadece konuşuyorduk listesi 380 00:18:59,759 --> 00:19:00,980 ve adımlar var. 381 00:19:00,980 --> 00:19:04,200 Metnin bir sürü burada var ama umarım görselleştirme yardımcı olacaktır. 382 00:19:04,200 --> 00:19:08,557 >> Yani biz have-- ve ben de çekti Bizim yığın kare resimde yukarı 383 00:19:08,557 --> 00:19:10,890 Çağrı yığınları bizim video, ve umarım tüm bu 384 00:19:10,890 --> 00:19:13,260 Birlikte neler gösterecek. 385 00:19:13,260 --> 00:19:14,510 Yani burada bizim pseudocode kodu. 386 00:19:14,510 --> 00:19:17,830 Biz bir null ulaşırsanız pointer, aksi halde, dur 387 00:19:17,830 --> 00:19:21,320 Listenin geri kalanını silin Daha sonra şimdiki düğümü ücretsiz. 388 00:19:21,320 --> 00:19:25,700 Yani şimdi, list-- Biz konum gösterici 389 00:19:25,700 --> 00:19:28,410 geçen 12 puan yok. 390 00:19:28,410 --> 00:19:33,340 12 bir boş gösterici değil, bu yüzden sen Listenin geri kalanını silmek için gidiyoruz. 391 00:19:33,340 --> 00:19:35,450 >> Ne siliyor Bizi geri kalanı katılan? 392 00:19:35,450 --> 00:19:37,950 Peki, bu yapmak anlamına gelir diyerek, yok etmeye çağrı 393 00:19:37,950 --> 00:19:42,060 15 O başlangıcıdır Biz yok etmek isteyen listenin geri kalanı. 394 00:19:42,060 --> 00:19:47,480 Ve böylece arama yok 12 beklemeye tür olduğunu. 395 00:19:47,480 --> 00:19:52,690 O bekliyor, orada donmuş işini bitirmek için, 15 yok etmek diyoruz. 396 00:19:52,690 --> 00:19:56,280 >> Peki, 15 bir boş gösterici değildir ve bu yüzden söylemek için gidiyor, tamam, 397 00:19:56,280 --> 00:19:58,450 Evet, listenin geri kalanını silin. 398 00:19:58,450 --> 00:20:00,760 Listenin geri kalanı başlar 9'da ve böylece biz sadece edeceğiz 399 00:20:00,760 --> 00:20:04,514 Tüm silene kadar beklemeniz şeyler, sonra geri gelip beni silin. 400 00:20:04,514 --> 00:20:06,680 Peki 9 iyi demek oluyor, Ben, bir boş gösterici değilim 401 00:20:06,680 --> 00:20:09,020 yani buradan geri kalanını listesini silin. 402 00:20:09,020 --> 00:20:11,805 Ve böylece denemek ve 13 yok. 403 00:20:11,805 --> 00:20:15,550 13, ben boş gösterici değilim diyor Aynı şey, kova geçer. 404 00:20:15,550 --> 00:20:17,930 10, 10 boş gösterici değil bir null işaretçi içerir, 405 00:20:17,930 --> 00:20:20,200 ama 10 değil kendisi olduğunu boş hemen işaretçisi, 406 00:20:20,200 --> 00:20:22,470 ve bu yüzden çok kova geçer. 407 00:20:22,470 --> 00:20:25,560 >> Ve şimdi, orada puan listesi Gerçekten some-- işaret eder 408 00:20:25,560 --> 00:20:28,710 Ben görüntüde daha fazla yer olsaydı, bazı rasgele alana işaret eder 409 00:20:28,710 --> 00:20:29,960 Ne olduğunu bilmiyorum. 410 00:20:29,960 --> 00:20:34,680 Gerçi boş gösterici var, liste kelimenin tam anlamıyla şimdi boş değerler var ayarlanır. 411 00:20:34,680 --> 00:20:36,820 Bu doğru kırmızı kutu içinde işaret ediyor. 412 00:20:36,820 --> 00:20:39,960 Biz bu yüzden, bir null işaretçi ulaştı biz durdurmak, ve biz bitirdik. 413 00:20:39,960 --> 00:20:46,230 >> Ve böylece mor çerçeve de şimdi-- olduğunu Aktif çerçeve var stack-- üst, 414 00:20:46,230 --> 00:20:47,017 ama bitti. 415 00:20:47,017 --> 00:20:48,600 Biz boş gösterici ulaştınız, durun. 416 00:20:48,600 --> 00:20:51,290 Biz bir şey yapmıyoruz biz Bir null işaretçi özgür olamaz, 417 00:20:51,290 --> 00:20:55,070 biz herhangi malloc vermedi Uzay ve bu yüzden bitirdiniz. 418 00:20:55,070 --> 00:20:57,590 Bu işlev çerçeve Yani tahrip ve biz bir 419 00:20:57,590 --> 00:21:00,930 Biz kaldığımız yerden resume-- biz pick up Bir sonraki en yüksek biri ile kapalı olan 420 00:21:00,930 --> 00:21:02,807 Burada bu koyu mavi çerçevedir. 421 00:21:02,807 --> 00:21:04,390 Yani biz bıraktığı yerden devam. 422 00:21:04,390 --> 00:21:06,598 Biz geri kalanı silindi liste zaten, şimdi biz konum 423 00:21:06,598 --> 00:21:08,000 Geçerli düğüm serbest olacak. 424 00:21:08,000 --> 00:21:12,920 Yani şimdi biz şimdi bu düğüm ücretsiz ve olabilir fonksiyonun sonuna ulaştınız. 425 00:21:12,920 --> 00:21:16,810 Ve böylece fonksiyon çerçeve, tahrip ve biz açık mavi bir pick up. 426 00:21:16,810 --> 00:21:20,650 >> Yani ben zaten done-- ettik dedi ki-- Listenin geri kalanını silme yani 427 00:21:20,650 --> 00:21:23,140 Geçerli düğüm ücretsiz. 428 00:21:23,140 --> 00:21:26,520 Ve şimdi sarı çerçeve geri yığının en üstüne. 429 00:21:26,520 --> 00:21:29,655 Gördüğünüz gibi Ve böylece, biz şimdi sen Sağ taraftan Listeyi yok sola. 430 00:21:29,655 --> 00:21:33,710 431 00:21:33,710 --> 00:21:37,280 >> Ne olsa da, ne olurdu Biz şeyleri yanlış bir şekilde yapmış olsaydı? 432 00:21:37,280 --> 00:21:39,410 Sadece biz çalıştığımızda gibi bir öğe eklemek için. 433 00:21:39,410 --> 00:21:41,909 Biz eğer zincir, berbat eğer biz işaretçileri bağlamak vermedi 434 00:21:41,909 --> 00:21:44,690 doğru sırayla, biz ise Sadece ilk elemanını serbest, 435 00:21:44,690 --> 00:21:47,420 biz sadece serbest eğer Listenin başkanı, şimdi biz 436 00:21:47,420 --> 00:21:49,642 başvurmak için hiçbir yolu yoktur Listenin geri kalanı. 437 00:21:49,642 --> 00:21:51,350 Ve böylece biz olurdu yetim herşey, 438 00:21:51,350 --> 00:21:53,880 Biz ne olurdu Bir bellek sızıntısı denir. 439 00:21:53,880 --> 00:21:56,800 Bizim video hatırlayacak olursak dinamik bellek tahsisi, 440 00:21:56,800 --> 00:21:58,650 Bu çok iyi bir şey değil. 441 00:21:58,650 --> 00:22:00,810 >> Yani orada, dedi Birkaç işlemler şunlardır 442 00:22:00,810 --> 00:22:04,010 biz çalışmaya kullanmanız gerekir etkili listeyi bağlantılı. 443 00:22:04,010 --> 00:22:08,430 Ve sen, ben bir ihmal fark etmişsinizdir Bağlantılı tek bir eleman silme 444 00:22:08,430 --> 00:22:09,064 listesi. 445 00:22:09,064 --> 00:22:10,980 Ben yaptım sebebi Aslında bir tür olmasıdır 446 00:22:10,980 --> 00:22:14,360 silme hakkında düşünmek zor Bir tek başına tek bir eleman 447 00:22:14,360 --> 00:22:15,600 bağlantılı liste. 448 00:22:15,600 --> 00:22:19,950 Biz üzerine atlamak gerekiyor listede, bir şey hangi 449 00:22:19,950 --> 00:22:22,975 Biz point-- biz almak anlamına gelir Bu node-- silmek istiyor 450 00:22:22,975 --> 00:22:25,350 ama sipariş biz öylesine yapmak herhangi bir bilgi kaybetmek yok, 451 00:22:25,350 --> 00:22:30,530 Bu bağlamanız gerekir Buraya buraya düğüm. 452 00:22:30,530 --> 00:22:33,390 >> Bu yüzden muhtemelen yanlış yaptım görsel açıdan. 453 00:22:33,390 --> 00:22:36,830 Yani biz başında konum bizim Liste, biz ile işlem konum 454 00:22:36,830 --> 00:22:40,510 Bu düğüm silmek istiyorum. 455 00:22:40,510 --> 00:22:43,440 Biz sadece silerseniz Biz zinciri kırdım. 456 00:22:43,440 --> 00:22:45,950 Burada bu düğüm her şey anlamına gelir, 457 00:22:45,950 --> 00:22:48,260 o burada üzerinde zincirini içerir. 458 00:22:48,260 --> 00:22:51,190 >> Yani biz aslında yapmamız gereken Bu noktaya aldıktan sonra, 459 00:22:51,190 --> 00:22:56,670 biz bir geri adım gerekiyor ve bir Bu düğümün bu düğümü üzerinde bağlantı, 460 00:22:56,670 --> 00:22:58,590 bu yüzden o silebilirsiniz Ortadaki. 461 00:22:58,590 --> 00:23:02,120 Ama tek başına bağlantılı listeler yok Bize geriye doğru gitmek için bir yol sağlar. 462 00:23:02,120 --> 00:23:05,160 Yani biz ya tutmak gerekir İki işaretçiler ve bunları taşımak 463 00:23:05,160 --> 00:23:09,527 kapalı adımın tür arkasında biri Diğer gidiyoruz, ya da bir noktaya olsun 464 00:23:09,527 --> 00:23:11,110 ve daha sonra başka bir işaretçi aracılığıyla gönderebilirsiniz. 465 00:23:11,110 --> 00:23:13,150 Ve sen, bunu gördüğünüz gibi biraz dağınık alabilirsiniz. 466 00:23:13,150 --> 00:23:15,360 Neyse ki, biz var başka bir yolu olduğunu çözmek için, 467 00:23:15,360 --> 00:23:17,810 biz iki kat bağlantılı listeleri hakkında konuşmak. 468 00:23:17,810 --> 00:23:20,720 >> Ben Doug Lloyd değilim, bu CS50 olduğunu. 469 00:23:20,720 --> 00:23:22,298