1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON Hirschhorn: Selamat datang semua orang kepada Seksyen Tujuh. 3 00:00:12,680 --> 00:00:15,040 Kita berada dalam minggu tujuh kursus. 4 00:00:15,040 --> 00:00:18,440 Dan ini Khamis akan datang adalah Halloween jadi saya 5 00:00:18,440 --> 00:00:21,420 berpakaian seperti labu a. 6 00:00:21,420 --> 00:00:23,460 Saya tidak dapat membengkok dan memakai kasut saya, jadi itu sebabnya saya 7 00:00:23,460 --> 00:00:25,660 hanya memakai sarung kaki. 8 00:00:25,660 --> 00:00:29,220 Saya juga tidak memakai apa-apa di bawah ini, jadi saya tidak boleh mengambil ia di luar jika ia 9 00:00:29,220 --> 00:00:29,950 mengganggu kepada anda. 10 00:00:29,950 --> 00:00:31,860 Saya memohon maaf terlebih dahulu untuk itu. 11 00:00:31,860 --> 00:00:33,170 Anda tidak perlu untuk membayangkan apa yang berlaku. 12 00:00:33,170 --> 00:00:34,240 Saya pakai peninju. 13 00:00:34,240 --> 00:00:36,170 Jadi itu semua baik. 14 00:00:36,170 --> 00:00:41,120 >> Saya mempunyai cerita yang lebih panjang tentang mengapa saya berpakaian seperti labu, tetapi saya akan 15 00:00:41,120 --> 00:00:45,110 kecuali bahawa untuk masa lain dalam seksyen ini kerana saya ingin memulakan. 16 00:00:45,110 --> 00:00:47,720 Kami mempunyai banyak perkara yang menarik untuk pergi ke minggu ini. 17 00:00:47,720 --> 00:00:51,810 Kebanyakan mereka adalah berkaitan secara langsung kepada ini set masalah minggu ini, salah ejaan. 18 00:00:51,810 --> 00:00:54,680 Kita akan pergi lebih dikaitkan senarai dan jadual hash 19 00:00:54,680 --> 00:00:57,160 untuk seluruh bahagian itu. 20 00:00:57,160 --> 00:01:02,490 Saya meletakkan senarai ini setiap minggu, satu senarai sumber bagi anda untuk membantu anda dengan 21 00:01:02,490 --> 00:01:04,120 bahan di kursus ini. 22 00:01:04,120 --> 00:01:07,600 Jika rugi atau jika sedang mencari beberapa maklumat lanjut, lihat salah satu 23 00:01:07,600 --> 00:01:09,930 sumber-sumber ini. 24 00:01:09,930 --> 00:01:14,530 >> Sekali lagi, pset6 adalah salah ejaan, Serangga minggu ini. 25 00:01:14,530 --> 00:01:17,690 Dan ia juga menggalakkan anda, dan saya menggalakkan anda, untuk menggunakan beberapa lain 26 00:01:17,690 --> 00:01:20,320 sumber khusus untuk Serangga ini. 27 00:01:20,320 --> 00:01:23,390 Khususnya, tiga saya telah disenaraikan di skrin - 28 00:01:23,390 --> 00:01:27,160 Pra-Pemasangan, yang kita telah biasa dengan dan telah menggunakan untuk seketika kini, adalah 29 00:01:27,160 --> 00:01:29,270 akan sangat membantu minggu ini. 30 00:01:29,270 --> 00:01:30,190 Jadi saya meletakkan bahawa di sini. 31 00:01:30,190 --> 00:01:32,910 Tetapi apabila anda bekerja dengan C, anda perlu sentiasa menggunakan Pra-Pemasangan untuk 32 00:01:32,910 --> 00:01:34,430 debug program anda. 33 00:01:34,430 --> 00:01:36,660 Minggu ini juga valgrind. 34 00:01:36,660 --> 00:01:38,535 Adakah sesiapa tahu apa valgrind tidak? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> PENONTON: Ia memeriksa kebocoran memori? 37 00:01:43,890 --> 00:01:45,950 >> JASON Hirschhorn: Valgrind cek kebocoran memori. 38 00:01:45,950 --> 00:01:49,970 Jadi, jika anda sesuatu malloc dalam anda program, anda meminta untuk ingatan. 39 00:01:49,970 --> 00:01:52,920 Pada akhir program anda, anda perlu untuk menulis percuma pada semua yang anda telah 40 00:01:52,920 --> 00:01:54,800 malloced untuk memberi ingatan belakang. 41 00:01:54,800 --> 00:01:58,420 Jika anda tidak menulis percuma pada akhir dan program anda datang membuat kesimpulan, 42 00:01:58,420 --> 00:02:00,000 segala-galanya akan secara automatik dibebaskan. 43 00:02:00,000 --> 00:02:02,340 Dan bagi program kecil, ia tidak yang besar perjanjian. 44 00:02:02,340 --> 00:02:05,250 Tetapi jika anda menulis berjalan yang lebih lama program yang tidak berhenti, 45 00:02:05,250 --> 00:02:09,180 semestinya, dalam beberapa minit atau beberapa saat, maka memori bocor 46 00:02:09,180 --> 00:02:10,710 boleh menjadi satu perjanjian yang besar. 47 00:02:10,710 --> 00:02:14,940 >> Jadi untuk pset6, jangkaan ialah anda akan mempunyai kebocoran memori sifar dengan 48 00:02:14,940 --> 00:02:15,910 program anda. 49 00:02:15,910 --> 00:02:18,690 Untuk menyemak kebocoran memori, valgrind menjalankan dan ia akan memberikan anda beberapa bagus 50 00:02:18,690 --> 00:02:21,190 output membiarkan anda tahu sama ada atau tidak semuanya percuma. 51 00:02:21,190 --> 00:02:23,940 Kami akan mengamalkan dengannya kemudian hari ini, mudah-mudahan. 52 00:02:23,940 --> 00:02:25,790 >> Akhirnya, arahan beza. 53 00:02:25,790 --> 00:02:28,900 Anda digunakan sesuatu yang serupa dengan ia dalam pset5 dengan alat mengintip itu. 54 00:02:28,900 --> 00:02:30,780 Dibenarkan anda untuk melihat bahagian dalam. 55 00:02:30,780 --> 00:02:33,400 Anda juga digunakan beza juga, bagi setiap masalah yang ditetapkan spec. 56 00:02:33,400 --> 00:02:35,950 Tetapi dalam membolehkan anda untuk membandingkan dua fail. 57 00:02:35,950 --> 00:02:39,180 Anda boleh membandingkan fail bitmap dan header info penyelesaian kakitangan dan 58 00:02:39,180 --> 00:02:42,200 penyelesaian anda di pset5 jika anda memilih untuk menggunakannya. 59 00:02:42,200 --> 00:02:44,030 Beza akan membolehkan anda untuk berbuat demikian, juga. 60 00:02:44,030 --> 00:02:48,620 Anda boleh bandingkan jawapan yang betul bagi masalah minggu ini bersedia untuk jawapan anda 61 00:02:48,620 --> 00:02:52,210 dan lihat jika ia garisan atas atau lihat di mana kesilapan yang. 62 00:02:52,210 --> 00:02:55,870 >> Jadi mereka adalah tiga alat yang baik yang anda perlu menggunakan untuk minggu ini, dan 63 00:02:55,870 --> 00:02:58,130 pasti menyemak program anda dengan ketiga-tiga alat 64 00:02:58,130 --> 00:03:00,520 sebelum membelok ia masuk 65 00:03:00,520 --> 00:03:04,650 Sekali lagi, seperti yang telah saya sebutkan setiap minggu, jika anda mempunyai sebarang maklum balas bagi saya - kedua-dua 66 00:03:04,650 --> 00:03:06,470 positif dan membina - 67 00:03:06,470 --> 00:03:09,930 berasa bebas untuk menuju ke laman web ini di bahagian bawah slaid ini 68 00:03:09,930 --> 00:03:11,270 dan input di sana. 69 00:03:11,270 --> 00:03:13,440 Saya benar-benar menghargai apa-apa dan semua maklum balas. 70 00:03:13,440 --> 00:03:17,360 Dan jika anda memberikan saya perkara-perkara tertentu yang Yang boleh saya lakukan untuk memperbaiki atau bahawa saya 71 00:03:17,360 --> 00:03:21,350 dengan baik yang anda ingin saya untuk meneruskan, saya mengambil bahawa ke jantung dan 72 00:03:21,350 --> 00:03:24,040 benar-benar berusaha untuk mendengar untuk maklum balas anda. 73 00:03:24,040 --> 00:03:27,720 Saya tidak boleh berjanji saya akan lakukan segala-galanya, walaupun, seperti memakai 74 00:03:27,720 --> 00:03:30,700 labu pakaian setiap minggu. 75 00:03:30,700 --> 00:03:34,020 >> Jadi kita akan membelanjakan sebahagian besar daripada seksyen, seperti yang saya katakan, bercakap tentang 76 00:03:34,020 --> 00:03:37,240 senarai dikaitkan dan jadual hash, yang akan secara langsung berkaitan dengan 77 00:03:37,240 --> 00:03:38,780 masalah minggu ini dilaporkan. 78 00:03:38,780 --> 00:03:42,580 Senarai Berkaitan kita akan pergi ke agak cepat kerana kita telah menghabiskan sedikit saksama 79 00:03:42,580 --> 00:03:44,930 masa akan lebih dalam seksyen. 80 00:03:44,930 --> 00:03:48,680 Dan dengan itu kita akan mendapat terus ke pengekodan masalah untuk senarai berkaitan. 81 00:03:48,680 --> 00:03:52,740 Dan kemudian akhirnya kami akan bercakap mengenai hash meja dan bagaimana ia terpakai bagi ini 82 00:03:52,740 --> 00:03:55,280 masalah minggu ini ditetapkan. 83 00:03:55,280 --> 00:03:57,560 >> Anda telah melihat kod ini sebelum ini. 84 00:03:57,560 --> 00:04:02,730 Ini adalah struct, dan ia menentukan sesuatu yang baru yang dikenali sebagai nod. 85 00:04:02,730 --> 00:04:10,660 Dan di dalam nod terdapat integer di sini dan terdapat penunjuk kepada 86 00:04:10,660 --> 00:04:11,830 nod yang lain. 87 00:04:11,830 --> 00:04:12,790 Kami telah melihat ini sebelum ini. 88 00:04:12,790 --> 00:04:14,830 Ini telah datang untuk beberapa minggu sekarang. 89 00:04:14,830 --> 00:04:18,680 Ia menggabungkan petunjuk, yang kita telah bekerja dengan, dan structs, yang membolehkan 90 00:04:18,680 --> 00:04:22,079 kita untuk menggabungkan dua yang berbeza sesuatu ke dalam satu jenis data. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Ada banyak berlaku pada skrin. 93 00:04:26,490 --> 00:04:30,220 Tetapi semua itu sepatutnya menjadi akrab dengan anda. 94 00:04:30,220 --> 00:04:33,810 Pada baris pertama, kami mengisytiharkan nod baru. 95 00:04:33,810 --> 00:04:41,650 Dan kemudian di dalam nod baru, saya menetapkan integer dalam nod yang kepada satu. 96 00:04:41,650 --> 00:04:44,950 Kita lihat pada baris berikutnya saya melakukan printf arahan, tetapi saya telah dikelabukan 97 00:04:44,950 --> 00:04:48,080 arahan printf kerana yang benar-benar bahagian penting adalah baris ini di sini - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Apakah dot min? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> PENONTON: Pergi ke nod dan menilai nilai n untuk itu. 102 00:04:57,240 --> 00:04:58,370 >> JASON Hirschhorn: Itu betul-betul betul. 103 00:04:58,370 --> 00:05:03,300 Dot bermakna mengakses n bahagian nod baru ini. 104 00:05:03,300 --> 00:05:05,690 Ini sejajar seterusnya melakukan apa? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 Michael. 107 00:05:17,050 --> 00:05:21,910 >> PENONTON: Ia mewujudkan nod yang lain yang akan menunjukkan kepada nod baru. 108 00:05:21,910 --> 00:05:24,870 >> JASON Hirschhorn: Jadi ia tidak mewujudkan nod baru. 109 00:05:24,870 --> 00:05:26,120 Ia menciptakan apa yang? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> PENONTON: penunjuk A. 112 00:05:29,300 --> 00:05:33,460 >> JASON Hirschhorn: Satu penunjuk kepada nod, seperti yang ditunjukkan oleh nod * ini di sini. 113 00:05:33,460 --> 00:05:34,800 Jadi ia mewujudkan penunjuk kepada nod. 114 00:05:34,800 --> 00:05:37,490 Dan yang node ia menunjuk kepada, Michael? 115 00:05:37,490 --> 00:05:38,440 >> PENONTON: Nod Baru? 116 00:05:38,440 --> 00:05:39,240 >> JASON Hirschhorn: Nod Baru. 117 00:05:39,240 --> 00:05:43,020 Dan ia menunjuk sana kerana kita telah diberikan ia alamat nod baru. 118 00:05:43,020 --> 00:05:45,820 Dan kini di baris ini kita lihat dua cara yang berbeza 119 00:05:45,820 --> 00:05:46,910 menyatakan perkara yang sama. 120 00:05:46,910 --> 00:05:49,650 Dan saya mahu untuk menunjukkan bagaimana dua perkara yang sama. 121 00:05:49,650 --> 00:05:54,740 Dalam baris pertama, kita dereference penunjuk. 122 00:05:54,740 --> 00:05:55,830 Jadi kita pergi ke nod. 123 00:05:55,830 --> 00:05:56,830 Itulah yang bintang ini bermakna. 124 00:05:56,830 --> 00:05:57,930 Kami telah melihat yang sebelum ini dengan petunjuk. 125 00:05:57,930 --> 00:05:59,280 Pergi dengan node itu. 126 00:05:59,280 --> 00:06:00,370 Itu di dalam kurungan. 127 00:06:00,370 --> 00:06:04,610 Dan kemudian mengakses melalui pengendali titik unsur n nod itu. 128 00:06:04,610 --> 00:06:08,430 >> Jadi yang yang mengambil sintaks kita lihat di sini dan kini 129 00:06:08,430 --> 00:06:09,670 menggunakannya dengan penunjuk. 130 00:06:09,670 --> 00:06:13,730 Sudah tentu, ia mendapat jenis sibuk jika anda menulis mereka kurungan - 131 00:06:13,730 --> 00:06:14,940 bahawa bintang dan dot itu. 132 00:06:14,940 --> 00:06:16,220 Ia mendapat sedikit sibuk. 133 00:06:16,220 --> 00:06:18,500 Oleh itu, kita minta gula sintaktik. 134 00:06:18,500 --> 00:06:19,920 Dan garis ini di sini - 135 00:06:19,920 --> 00:06:21,170 ptr_node-> n. 136 00:06:21,170 --> 00:06:25,400 137 00:06:25,400 --> 00:06:28,000 Yang melakukan perkara yang tepat sama. 138 00:06:28,000 --> 00:06:30,840 Jadi kedua-dua baris kod adalah setaraf dan akan melakukan 139 00:06:30,840 --> 00:06:31,650 perkara sama. 140 00:06:31,650 --> 00:06:34,210 >> Tetapi saya mahu menunjukkan mereka keluar sebelum kita pergi mana-mana lagi supaya anda memahami 141 00:06:34,210 --> 00:06:39,000 yang benar-benar perkara ini di sini adalah hanya gula sintaksis untuk penyahrujukan 142 00:06:39,000 --> 00:06:44,200 penunjuk dan kemudian akan n bahagian daripada struct itu. 143 00:06:44,200 --> 00:06:45,525 Apa-apa soalan mengenai slaid ini? 144 00:06:45,525 --> 00:06:53,020 145 00:06:53,020 --> 00:06:54,390 OK. 146 00:06:54,390 --> 00:06:58,510 >> Jadi, kita akan melalui pasangan operasi yang anda boleh lakukan pada 147 00:06:58,510 --> 00:06:59,730 senarai berkaitan. 148 00:06:59,730 --> 00:07:05,770 Senarai dikaitkan, ingat, adalah satu siri nod yang menunjuk kepada satu sama lain. 149 00:07:05,770 --> 00:07:12,470 Dan kita biasanya bermula dengan penunjuk dipanggil kepala, secara amnya, yang menunjuk kepada 150 00:07:12,470 --> 00:07:14,040 perkara pertama dalam senarai. 151 00:07:14,040 --> 00:07:18,900 Jadi pada baris pertama di sini, kita mempunyai L asal kami pertama. 152 00:07:18,900 --> 00:07:21,370 Jadi perkara yang boleh anda fikirkan - ini teks di sini yang boleh anda fikirkan sebagai 153 00:07:21,370 --> 00:07:23,560 hanya penunjuk yang kami disimpan di suatu tempat yang titik 154 00:07:23,560 --> 00:07:24,670 kepada elemen pertama. 155 00:07:24,670 --> 00:07:27,500 Dan dalam senarai ini dikaitkan kami mempunyai empat nod. 156 00:07:27,500 --> 00:07:29,530 Setiap nod adalah kotak besar. 157 00:07:29,530 --> 00:07:33,430 Kotak yang lebih besar di dalam besar peti adalah bahagian integer. 158 00:07:33,430 --> 00:07:37,400 Dan maka kita mempunyai sebahagian penunjuk. 159 00:07:37,400 --> 00:07:39,630 >> Kotak-kotak tidak dilukis mengikut skala kerana berapa besar adalah 160 00:07:39,630 --> 00:07:42,320 integer dalam bait? 161 00:07:42,320 --> 00:07:43,290 Bagaimana besar sekarang? 162 00:07:43,290 --> 00:07:43,710 Empat. 163 00:07:43,710 --> 00:07:45,470 Dan bagaimana besar adalah penunjuk? 164 00:07:45,470 --> 00:07:45,940 Empat. 165 00:07:45,940 --> 00:07:48,180 Jadi benar-benar, jika kita untuk menarik ini untuk menskalakan kedua kotak 166 00:07:48,180 --> 00:07:49,690 akan menjadi saiz yang sama. 167 00:07:49,690 --> 00:07:52,870 Dalam kes ini, kita mahu untuk memasukkan sesuatu ke dalam senarai yang dipautkan. 168 00:07:52,870 --> 00:07:57,190 Jadi anda boleh melihat ke bawah di sini kita memasukkan lima Kami merentasi melalui 169 00:07:57,190 --> 00:08:01,310 senarai bersambung, mencari di mana lima pergi, dan kemudian memasukkannya. 170 00:08:01,310 --> 00:08:03,560 >> Mari kita memecahkan itu dan pergi sedikit lebih perlahan. 171 00:08:03,560 --> 00:08:05,510 Saya akan menunjukkan kepada lembaga. 172 00:08:05,510 --> 00:08:09,930 Jadi kita mempunyai nod kita lima yang kami telah diwujudkan dalam mallocs. 173 00:08:09,930 --> 00:08:11,190 Mengapa semua orang ketawa? 174 00:08:11,190 --> 00:08:12,130 Hanya bergurau. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Jadi kami malloced lima. 177 00:08:14,820 --> 00:08:16,310 Kami telah mencipta nod ini di tempat lain. 178 00:08:16,310 --> 00:08:17,740 Kita ada bersedia untuk pergi. 179 00:08:17,740 --> 00:08:20,130 Kami bermula di hadapan senarai kami dengan dua. 180 00:08:20,130 --> 00:08:22,380 Dan kita mahu memasukkan dengan cara yang disusun. 181 00:08:22,380 --> 00:08:27,550 >> Jadi, jika kita melihat dua dan kami mahu meletakkan dalam lima, apa yang kita lakukan apabila kita melihat 182 00:08:27,550 --> 00:08:28,800 sesuatu yang kurang daripada kita? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Apa? 185 00:08:33,520 --> 00:08:36,750 Kami mahu memasukkan ke dalam lima ini senarai bersambung, menyimpan ia disusun. 186 00:08:36,750 --> 00:08:37,520 Kita melihat nombor dua. 187 00:08:37,520 --> 00:08:38,769 Jadi apa yang kita lakukan? 188 00:08:38,769 --> 00:08:39,179 Marcus? 189 00:08:39,179 --> 00:08:40,679 >> PENONTON: Hubungi penunjuk ke nod seterusnya. 190 00:08:40,679 --> 00:08:42,530 >> JASON Hirschhorn: Dan mengapa kita pergi ke yang berikutnya? 191 00:08:42,530 --> 00:08:45,970 >> PENONTON: Kerana ia adalah nod seterusnya dalam senarai. 192 00:08:45,970 --> 00:08:48,310 Dan kita hanya tahu lokasi yang lain. 193 00:08:48,310 --> 00:08:50,410 >> JASON Hirschhorn: Dan lima adalah lebih besar dari seorang, khususnya. 194 00:08:50,410 --> 00:08:51,600 Kerana kita mahu untuk memastikan ia disusun. 195 00:08:51,600 --> 00:08:52,730 Jadi lima adalah lebih besar daripada dua. 196 00:08:52,730 --> 00:08:54,460 Oleh itu, kita beralih kepada yang seterusnya. 197 00:08:54,460 --> 00:08:55,240 Dan sekarang kita mencapai empat. 198 00:08:55,240 --> 00:08:56,490 Dan apa yang berlaku apabila kita mencapai empat? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Lima adalah lebih besar daripada empat. 201 00:09:00,310 --> 00:09:01,460 Oleh itu, kita teruskan. 202 00:09:01,460 --> 00:09:03,110 Dan sekarang kita berada di enam. 203 00:09:03,110 --> 00:09:04,360 Dan apa yang kita lihat di enam? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Ya, Carlos? 206 00:09:09,608 --> 00:09:10,544 >> PENONTON: Enam adalah lebih besar daripada lima. 207 00:09:10,544 --> 00:09:11,480 >> JASON Hirschhorn: Enam adalah lebih besar daripada lima. 208 00:09:11,480 --> 00:09:13,660 Supaya di mana kita mahu untuk memasukkan lima. 209 00:09:13,660 --> 00:09:17,320 Walau bagaimanapun, perlu diingat bahawa jika kita hanya mempunyai satu penunjuk di sini - 210 00:09:17,320 --> 00:09:19,840 ini adalah penunjuk tambahan kami itulah menyeberangi melalui senarai. 211 00:09:19,840 --> 00:09:21,860 Dan kita menunjuk kepada enam. 212 00:09:21,860 --> 00:09:25,010 Kita telah kehilangan mengesan apa datang sebelum enam. 213 00:09:25,010 --> 00:09:29,130 Jadi, jika kita mahu untuk memasukkan sesuatu ke dalam senarai ini menyimpan ia disusun, kita 214 00:09:29,130 --> 00:09:31,630 mungkin perlu berapa banyak petunjuk? 215 00:09:31,630 --> 00:09:32,280 >> PENONTON: Dua. 216 00:09:32,280 --> 00:09:32,920 >> JASON HIRSCHORN: Dua. 217 00:09:32,920 --> 00:09:35,720 Satu untuk mengesan arus satu dan satu untuk mengesan 218 00:09:35,720 --> 00:09:37,050 yang sebelumnya. 219 00:09:37,050 --> 00:09:38,450 Ini adalah hanya senarai secara tunggal dikaitkan. 220 00:09:38,450 --> 00:09:39,670 Ia hanya pergi satu arah. 221 00:09:39,670 --> 00:09:43,220 Jika kita mempunyai senarai duanya adalah terpakai dikaitkan, di mana semuanya menunjuk kepada perkara yang 222 00:09:43,220 --> 00:09:46,240 selepas ia dan perkara yang di hadapannya, maka kita tidak perlu untuk berbuat demikian. 223 00:09:46,240 --> 00:09:49,350 Tetapi dalam kes ini kita tidak mahu kehilangan mengesan apa mendahului kami dalam kes 224 00:09:49,350 --> 00:09:53,350 kita perlu memasukkan lima tempat di tengah-tengah. 225 00:09:53,350 --> 00:09:55,610 Katakanlah kita telah memasukkan sembilan. 226 00:09:55,610 --> 00:09:57,260 Apa yang akan berlaku apabila kami mendapat lapan? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> PENONTON: Anda harus mendapatkan mata null. 229 00:10:04,880 --> 00:10:07,820 Sebaliknya mempunyai titik null anda dapati untuk menambah satu elemen dan kemudian mempunyai 230 00:10:07,820 --> 00:10:09,216 ia menunjukkan kepada sembilan. 231 00:10:09,216 --> 00:10:09,700 >> JASON HIRSCHORN: Tepat sekali. 232 00:10:09,700 --> 00:10:10,600 Oleh itu, kita mendapat lapan. 233 00:10:10,600 --> 00:10:13,140 Kami sampai ke akhir senarai kerana ini menunjuk ke nol. 234 00:10:13,140 --> 00:10:16,330 Dan kini, bukannya mempunyai ia menunjukkan null kita ada menunjukkan nod baru kami. 235 00:10:16,330 --> 00:10:19,870 Dan kami menetapkan penunjuk di nod baru kami untuk nol. 236 00:10:19,870 --> 00:10:21,445 Adakah sesiapa mempunyai apa-apa soalan kira-kira memasukkan? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Bagaimana jika saya tidak mengambil berat tentang menjaga senarai disusun? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> PENONTON: Stick ia di bermula atau akhir. 241 00:10:34,350 --> 00:10:35,510 >> JASON HIRSCHORN: Stick ia di permulaan atau akhir. 242 00:10:35,510 --> 00:10:37,276 Yang mana satu patut kita buat? 243 00:10:37,276 --> 00:10:38,770 Bobby? 244 00:10:38,770 --> 00:10:41,020 Mengapa akhir? 245 00:10:41,020 --> 00:10:43,250 >> PENONTON: Kerana awal sudah diisi. 246 00:10:43,250 --> 00:10:43,575 >> JASON HIRSCHORN: OK. 247 00:10:43,575 --> 00:10:44,360 Permulaan sudah diisi. 248 00:10:44,360 --> 00:10:46,090 Siapa yang mahu untuk berhujah terhadap Bobby. 249 00:10:46,090 --> 00:10:47,290 Marcus. 250 00:10:47,290 --> 00:10:48,910 >> PENONTON: Baik anda mungkin mahu melekat pada permulaan kerana 251 00:10:48,910 --> 00:10:50,140 sebaliknya jika anda meletakkan ia di Akhirnya anda akan perlu 252 00:10:50,140 --> 00:10:51,835 merentasi seluruh senarai. 253 00:10:51,835 --> 00:10:52,990 >> JASON HIRSCHORN: Tepat sekali. 254 00:10:52,990 --> 00:10:57,970 Jadi, jika kita berfikir tentang runtime, yang runtime memasukkan di hujung 255 00:10:57,970 --> 00:11:00,110 akan n, saiz ini. 256 00:11:00,110 --> 00:11:03,080 Apakah O runtime besar memasukkan pada permulaan? 257 00:11:03,080 --> 00:11:04,170 Masa yang sama. 258 00:11:04,170 --> 00:11:07,075 Jadi, jika anda tidak mengambil berat tentang menjaga sesuatu yang disusun, lebih baik untuk hanya 259 00:11:07,075 --> 00:11:08,420 memasukkan pada awal senarai ini. 260 00:11:08,420 --> 00:11:10,320 Dan yang boleh dilakukan dalam masa yang sama. 261 00:11:10,320 --> 00:11:13,900 262 00:11:13,900 --> 00:11:14,690 >> OK. 263 00:11:14,690 --> 00:11:18,870 Operasi akan datang mencari, yang lain - kami telah diungkap ini sebagai carian. 264 00:11:18,870 --> 00:11:22,470 Tetapi kita akan melihat melalui senarai bersambung untuk beberapa objek. 265 00:11:22,470 --> 00:11:26,000 Anda semua telah melihat kod untuk mencari sebelum di kuliah. 266 00:11:26,000 --> 00:11:29,490 Tetapi kita semacam hanya ia lakukan dengan memasukkan, atau sekurang-kurangnya memasukkan 267 00:11:29,490 --> 00:11:30,580 sesuatu yang disusun. 268 00:11:30,580 --> 00:11:36,350 Anda melihat melalui, pergi nod dengan nod, sehingga anda boleh mendapatkan nombor yang anda 269 00:11:36,350 --> 00:11:37,780 cari. 270 00:11:37,780 --> 00:11:39,670 Apakah yang akan berlaku jika anda mencapai akhir senarai? 271 00:11:39,670 --> 00:11:43,020 Katakanlah saya mencari sembilan dan saya sampai ke akhir senarai. 272 00:11:43,020 --> 00:11:44,270 Apa yang kami lakukan? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> PENONTON: Kembali palsu? 275 00:11:48,110 --> 00:11:48,690 >> JASON HIRSCHORN: Kembali palsu. 276 00:11:48,690 --> 00:11:49,960 Kami tidak menemuinya. 277 00:11:49,960 --> 00:11:52,010 Jika anda sampai ke akhir senarai dan anda tidak mencari nombor anda 278 00:11:52,010 --> 00:11:54,170 cari, ia bukan di sana. 279 00:11:54,170 --> 00:11:55,420 Apa-apa soalan mengenai mencari? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Jika ini adalah senarai disusun, apa yang akan berbeza untuk mencari kami? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Yeah. 284 00:12:08,103 --> 00:12:10,600 >> PENONTON: Ia akan mencari nilai yang pertama itulah yang lebih besar daripada yang 285 00:12:10,600 --> 00:12:12,390 anda sedang mencari dan kemudian kembali palsu. 286 00:12:12,390 --> 00:12:13,190 >> JASON HIRSCHORN: Tepat sekali. 287 00:12:13,190 --> 00:12:17,310 Jadi, jika ia adalah senarai disusun, jika kita dapat sesuatu yang lebih besar daripada apa yang 288 00:12:17,310 --> 00:12:20,180 kita cari, kita tidak perlu menyimpan pergi ke akhir senarai. 289 00:12:20,180 --> 00:12:24,060 Kami boleh pada ketika itu pulangan palsu kerana kita tidak akan menemuinya. 290 00:12:24,060 --> 00:12:27,340 Persoalannya kini, kita telah berbincang mengenai menjaga senarai dikaitkan disusun, 291 00:12:27,340 --> 00:12:28,180 menjaga mereka Unsorted. 292 00:12:28,180 --> 00:12:30,050 Itu akan menjadi sesuatu yang anda mungkin akan perlu berfikir tentang 293 00:12:30,050 --> 00:12:34,240 apabila masalah pengekodan meletakkan lima jika anda memilih jadual hash dengan berasingan 294 00:12:34,240 --> 00:12:36,360 pendekatan chaining, yang kita akan bercakap tentang kemudian. 295 00:12:36,360 --> 00:12:41,400 >> Tetapi adakah ia berbaloi untuk menyimpan senarai disusun dan kemudian dapat mungkin mempunyai 296 00:12:41,400 --> 00:12:42,310 carian lebih cepat? 297 00:12:42,310 --> 00:12:47,220 Atau adakah ia lebih baik untuk cepat memasukkan sesuatu dalam runtime berterusan tetapi 298 00:12:47,220 --> 00:12:48,430 mempunyai lagi mencari? 299 00:12:48,430 --> 00:12:52,250 Itulah tradeoff hak sana yang anda mendapatkan untuk memutuskan apa yang lebih sesuai 300 00:12:52,250 --> 00:12:53,590 untuk masalah khusus anda. 301 00:12:53,590 --> 00:12:56,680 Dan tidak semestinya satu jawapan-benar betul. 302 00:12:56,680 --> 00:12:59,520 Tetapi ia sudah tentu keputusan anda mendapat untuk membuat, dan mungkin baik untuk mempertahankan 303 00:12:59,520 --> 00:13:05,270 bahawa dalam, katakan, komen atau dua mengapa anda memilih berbanding dengan yang lain. 304 00:13:05,270 --> 00:13:06,490 >> Akhir sekali, memotong. 305 00:13:06,490 --> 00:13:08,100 Kami telah melihat memotong. 306 00:13:08,100 --> 00:13:09,180 Ini serupa dengan mencari. 307 00:13:09,180 --> 00:13:11,020 Kami mencari elemen. 308 00:13:11,020 --> 00:13:12,390 Katakanlah kita sedang cuba untuk memadamkan enam. 309 00:13:12,390 --> 00:13:14,450 Oleh itu, kita mendapati enam di sini. 310 00:13:14,450 --> 00:13:18,860 Perkara yang kita perlu untuk memastikan kita lakukan ialah bahawa apa sahaja yang menunjuk ke 311 00:13:18,860 --> 00:13:21,220 enam - seperti yang kita lihat dalam langkah dua turun di sini - 312 00:13:21,220 --> 00:13:26,500 apa sahaja yang menunjuk kepada enam keperluan untuk skip enam sekarang dan ditukar kepada 313 00:13:26,500 --> 00:13:28,160 apa sahaja enam orang menunjuk ke. 314 00:13:28,160 --> 00:13:31,410 Kita tidak mahu yang pernah anak yatim seluruh senarai kami dengan melupakan untuk menetapkan bahawa 315 00:13:31,410 --> 00:13:32,960 penunjuk sebelumnya. 316 00:13:32,960 --> 00:13:35,960 Dan kemudian kadang-kadang, bergantung tentang program ini, mereka akan hanya 317 00:13:35,960 --> 00:13:37,380 memadam nod ini sepenuhnya. 318 00:13:37,380 --> 00:13:40,135 Kadang-kadang anda akan mahu kembali nilai yang di nod ini. 319 00:13:40,135 --> 00:13:42,490 Jadi itu bagaimana memotong kerja-kerja. 320 00:13:42,490 --> 00:13:44,610 Soalan mengenai memadam? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> PENONTON: Jadi, jika anda akan memadam ia, akan anda hanya menggunakan percuma kerana 323 00:13:53,850 --> 00:13:55,655 mungkin ia malloced? 324 00:13:55,655 --> 00:13:57,976 >> JASON HIRSCHORN: Jika anda mahu untuk membebaskan sesuatu yang betul-betul betul dan anda 325 00:13:57,976 --> 00:13:58,540 malloced ia. 326 00:13:58,540 --> 00:14:00,410 Katakanlah kita mahu kembali nilai ini. 327 00:14:00,410 --> 00:14:04,010 Kita mungkin kembali enam dan kemudian bebas nod ini dan panggilan percuma di atasnya. 328 00:14:04,010 --> 00:14:06,180 Atau kita mungkin akan memanggil percuma pertama dan kemudian kembali enam. 329 00:14:06,180 --> 00:14:11,210 330 00:14:11,210 --> 00:14:11,580 >> OK. 331 00:14:11,580 --> 00:14:14,010 Jadi mari kita beralih kepada amalan pengkodan. 332 00:14:14,010 --> 00:14:16,090 Kami akan memberi kod kepada tiga fungsi. 333 00:14:16,090 --> 00:14:18,260 Yang pertama dipanggil insert_node. 334 00:14:18,260 --> 00:14:22,170 Jadi anda mempunyai kod yang saya melalui e-mel anda, dan jika anda menonton ini kemudian 335 00:14:22,170 --> 00:14:28,020 anda boleh mengakses kod di linked.c di laman web CS50 itu. 336 00:14:28,020 --> 00:14:30,880 Tetapi dalam linked.c, ada beberapa kod rangka yang sudah 337 00:14:30,880 --> 00:14:32,280 telah ditulis untuk anda. 338 00:14:32,280 --> 00:14:34,560 Dan kemudian ada beberapa fungsi anda perlu untuk menulis. 339 00:14:34,560 --> 00:14:36,380 >> Pertama kita akan menulis insert_node. 340 00:14:36,380 --> 00:14:39,800 Dan apa yang tidak insert_node Adakah memasukkan integer. 341 00:14:39,800 --> 00:14:42,440 Dan anda memberikan integer ke dalam senarai berpaut. 342 00:14:42,440 --> 00:14:45,470 Dan khususnya, anda perlu untuk menyimpan senarai disusun 343 00:14:45,470 --> 00:14:47,650 dari kecik hingga besar. 344 00:14:47,650 --> 00:14:51,360 Juga, anda tidak mahu memasukkan apa-apa salinan. 345 00:14:51,360 --> 00:14:54,600 Akhir sekali, seperti yang anda lihat insert_node kembali bool a. 346 00:14:54,600 --> 00:14:57,140 Jadi anda sepatutnya membenarkan pengguna yang tahu sama ada atau tidak memasukkan itu 347 00:14:57,140 --> 00:15:00,800 berjaya dengan mengembalikan benar atau palsu. 348 00:15:00,800 --> 00:15:02,580 Pada akhir program ini - 349 00:15:02,580 --> 00:15:05,750 dan untuk peringkat ini anda tidak perlu bimbang tentang membebaskan apa-apa. 350 00:15:05,750 --> 00:15:11,790 Jadi semua yang anda lakukan adalah mengambil integer dan memasukkan ke dalam senarai. 351 00:15:11,790 --> 00:15:13,890 >> Itulah apa yang saya meminta anda lakukan sekarang. 352 00:15:13,890 --> 00:15:17,620 Sekali lagi, dalam linked.c, yang anda semua ada, adalah kod tulang. 353 00:15:17,620 --> 00:15:20,980 Dan anda akan melihat ke arah bahagian bawah fungsi akuan sampel. 354 00:15:20,980 --> 00:15:27,390 Walau bagaimanapun, sebelum pergi ke pengekodan ia dalam C, saya sangat menggalakkan anda untuk pergi 355 00:15:27,390 --> 00:15:29,330 melalui langkah-langkah kita telah mengamalkan setiap minggu. 356 00:15:29,330 --> 00:15:31,100 Kami telah melalui gambar ini. 357 00:15:31,100 --> 00:15:33,380 Jadi, anda perlu mempunyai sedikit pemahaman bagaimana ini berfungsi. 358 00:15:33,380 --> 00:15:36,590 Tetapi saya akan menggalakkan anda untuk menulis beberapa kod pseudo sebelum menyelam masuk 359 00:15:36,590 --> 00:15:38,640 Dan kita akan pergi ke atas pseudokod sebagai satu kumpulan. 360 00:15:38,640 --> 00:15:41,470 Dan kemudian sekali anda tulis anda kod pseudo, dan sebaik sahaja kami telah menulis kami 361 00:15:41,470 --> 00:15:45,850 pseudokod sebagai satu kumpulan, anda boleh pergi ke pengekodan dalam C. 362 00:15:45,850 --> 00:15:49,980 >> Sebagai ekor, fungsi insert_node mungkin adalah trickiest 363 00:15:49,980 --> 00:15:53,550 tiga kita akan menulis kerana saya menambah beberapa kekangan tambahan untuk 364 00:15:53,550 --> 00:15:57,190 pengaturcaraan anda, khususnya yang anda tidak akan memasukkan apa-apa 365 00:15:57,190 --> 00:15:59,880 salinan dan bahawa senarai harus kekal disusun. 366 00:15:59,880 --> 00:16:02,660 Jadi ini adalah satu program bukan remeh yang perlu anda kod. 367 00:16:02,660 --> 00:16:06,470 Dan mengapa kamu tidak mengambil 5-7 minit hanya untuk bekerja di 368 00:16:06,470 --> 00:16:07,640 kod pseudo dan kod. 369 00:16:07,640 --> 00:16:09,460 Dan kemudian kita akan mula akan sebagai satu kumpulan. 370 00:16:09,460 --> 00:16:11,680 Sekali lagi, jika anda mempunyai sebarang soalan hanya mengangkat tangan anda dan saya akan datang sekitar. 371 00:16:11,680 --> 00:16:15,258 372 00:16:15,258 --> 00:16:16,508 . 373 00:16:16,508 --> 00:18:28,370 374 00:18:28,370 --> 00:18:30,120 >> Kami juga pada amnya melakukan ini - 375 00:18:30,120 --> 00:18:32,070 atau saya tidak tegas mengatakan anda boleh bekerja dengan orang. 376 00:18:32,070 --> 00:18:36,500 Tetapi jelas, saya sangat menggalakkan anda, jika anda mempunyai soalan, untuk meminta 377 00:18:36,500 --> 00:18:39,840 jiran duduk di sebelah anda atau bekerja dengan seseorang 378 00:18:39,840 --> 00:18:40,510 lain jika anda mahu. 379 00:18:40,510 --> 00:18:42,600 Ini tidak perlu menjadi individu aktiviti senyap. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Mari kita mulakan dengan menulis beberapa kod pseudo di papan. 382 00:20:16,330 --> 00:20:19,395 Yang boleh memberikan saya baris pertama kod pseudo untuk program ini? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 Bagi fungsi ini, dan bukan - insert_node. 385 00:20:23,640 --> 00:20:29,960 386 00:20:29,960 --> 00:20:31,830 Alden? 387 00:20:31,830 --> 00:20:36,560 >> PENONTON: Jadi perkara pertama yang saya lakukan ialah mewujudkan penunjuk baru kepada nod dan saya 388 00:20:36,560 --> 00:20:41,320 dimulakan ia menunjuk ke yang sama perkara yang senarai adalah menunjuk ke. 389 00:20:41,320 --> 00:20:41,550 >> JASON HIRSCHORN: OK. 390 00:20:41,550 --> 00:20:45,190 Jadi anda mewujudkan penunjuk baru ke dalam senarai, tidak nod. 391 00:20:45,190 --> 00:20:45,420 >> PENONTON: Betul. 392 00:20:45,420 --> 00:20:46,150 Yeah. 393 00:20:46,150 --> 00:20:46,540 >> JASON HIRSCHORN: OK. 394 00:20:46,540 --> 00:20:48,221 Dan kemudian apa yang kita mahu lakukan? 395 00:20:48,221 --> 00:20:49,163 Apakah selepas itu? 396 00:20:49,163 --> 00:20:50,105 Bagaimana pula nod? 397 00:20:50,105 --> 00:20:51,050 Kami tidak mempunyai satu nod. 398 00:20:51,050 --> 00:20:52,300 Kita hanya perlu nilai. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Jika kita mahu memasukkan nod, apa yang kita perlu lakukan pertama sebelum kita juga boleh 401 00:20:58,890 --> 00:20:59,980 berfikir tentang memasukkan ia? 402 00:20:59,980 --> 00:21:00,820 >> PENONTON: Oh, maaf. 403 00:21:00,820 --> 00:21:02,160 kita perlu malloc ruang untuk satu nod. 404 00:21:02,160 --> 00:21:02,455 >> JASON HIRSCHORN: Cemerlang. 405 00:21:02,455 --> 00:21:03,210 Mari kita lakukan - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Tidak boleh mencapai tinggi itu. 408 00:21:06,065 --> 00:21:08,939 409 00:21:08,939 --> 00:21:09,897 OK. 410 00:21:09,897 --> 00:21:13,236 Kita akan turun ke bawah, dan kemudian kita menggunakan dua tiang. 411 00:21:13,236 --> 00:21:13,732 Saya tidak boleh pergi yang - 412 00:21:13,732 --> 00:21:14,982 OK. 413 00:21:14,982 --> 00:21:23,660 414 00:21:23,660 --> 00:21:25,130 Buat nod baru. 415 00:21:25,130 --> 00:21:29,380 Anda boleh membuat penunjuk lain untuk menyenaraikan atau anda hanya boleh menggunakan senarai yang wujud. 416 00:21:29,380 --> 00:21:30,720 Anda tidak benar-benar perlu untuk berbuat demikian. 417 00:21:30,720 --> 00:21:31,750 >> Oleh itu, kita mewujudkan nod baru. 418 00:21:31,750 --> 00:21:32,010 Besar. 419 00:21:32,010 --> 00:21:32,840 Itulah apa yang kita lakukan pertama. 420 00:21:32,840 --> 00:21:34,870 Apa yang akan datang? 421 00:21:34,870 --> 00:21:35,080 >> PENONTON: Tunggu. 422 00:21:35,080 --> 00:21:38,330 Sekiranya kita mewujudkan nod baru sekarang atau kita perlu menunggu untuk memastikan bahawa 423 00:21:38,330 --> 00:21:42,260 tidak ada salinan nod dalam senarai itu sebelum kita menciptakannya? 424 00:21:42,260 --> 00:21:43,100 >> JASON HIRSCHORN: Soalan yang baik. 425 00:21:43,100 --> 00:21:47,770 Mari kita berpegang bahawa untuk masa lain kerana majoriti masa kita akan mewujudkan 426 00:21:47,770 --> 00:21:48,220 nod baru. 427 00:21:48,220 --> 00:21:49,110 Oleh itu, kita akan memastikan bahawa di sini. 428 00:21:49,110 --> 00:21:51,006 Tetapi itu adalah satu soalan yang baik. 429 00:21:51,006 --> 00:21:53,250 Jika kita menciptakannya dan kita dapati salinan, apa perlu 430 00:21:53,250 --> 00:21:54,490 kita lakukan sebelum kembali? 431 00:21:54,490 --> 00:21:55,190 >> PENONTON: Percuma ia. 432 00:21:55,190 --> 00:21:55,470 >> JASON HIRSCHORN: Yeah. 433 00:21:55,470 --> 00:21:56,500 Mungkin membebaskannya. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Apa yang kami lakukan selepas kami mewujudkan nod baru? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> PENONTON: Kami meletakkan nombor dalam nod? 438 00:22:04,780 --> 00:22:05,140 >> JASON HIRSCHORN: Tepat sekali. 439 00:22:05,140 --> 00:22:07,190 Kami meletakkan nombor - kami malloc ruang. 440 00:22:07,190 --> 00:22:08,160 Saya akan meninggalkan bahawa semua sebagai satu baris. 441 00:22:08,160 --> 00:22:08,720 Tetapi anda betul. 442 00:22:08,720 --> 00:22:10,305 Kami malloc ruang, dan kemudian kita meletakkan nombor masuk 443 00:22:10,305 --> 00:22:12,585 Kami juga boleh menetapkan penunjuk sebahagian daripadanya untuk nol. 444 00:22:12,585 --> 00:22:13,720 Itu betul-betul betul. 445 00:22:13,720 --> 00:22:17,400 Dan kemudian bagaimana pula selepas itu? 446 00:22:17,400 --> 00:22:18,490 Kami menarik gambar ini di atas kapal. 447 00:22:18,490 --> 00:22:21,190 Jadi apa yang kita lakukan? 448 00:22:21,190 --> 00:22:22,680 >> PENONTON: Kita melalui senarai. 449 00:22:22,680 --> 00:22:23,930 >> JASON HIRSCHORN: Pergi melalui senarai. 450 00:22:23,930 --> 00:22:30,620 451 00:22:30,620 --> 00:22:31,100 OK. 452 00:22:31,100 --> 00:22:34,280 Dan apa yang kita periksa di setiap nod. 453 00:22:34,280 --> 00:22:35,955 Kurt, apa yang kita lihat untuk di setiap nod? 454 00:22:35,955 --> 00:22:41,640 >> PENONTON: Lihat sama ada nilai n nod yang lebih besar daripada nilai n 455 00:22:41,640 --> 00:22:43,070 nod kami. 456 00:22:43,070 --> 00:22:43,340 >> JASON HIRSCHORN: OK. 457 00:22:43,340 --> 00:22:44,280 Saya akan lakukan - 458 00:22:44,280 --> 00:22:45,855 yeah, OK. 459 00:22:45,855 --> 00:22:48,160 Jadi ia n - 460 00:22:48,160 --> 00:22:59,040 Saya akan mengatakan jika nilai yang lebih besar daripada nod ini, maka apa yang kita lakukan? 461 00:22:59,040 --> 00:23:07,290 >> PENONTON: Nah, maka kita memasukkan perkara yang betul sebelum itu. 462 00:23:07,290 --> 00:23:07,970 >> JASON HIRSCHORN: OK. 463 00:23:07,970 --> 00:23:09,410 Jadi, jika ia lebih besar daripada ini, maka kita mahu masukkan. 464 00:23:09,410 --> 00:23:14,010 Tetapi kita mahu untuk memasukkan dengan betul sebelum kerana kita juga perlu menjadi 465 00:23:14,010 --> 00:23:16,070 mengesan, maka, daripada apa yang sebelum ini. 466 00:23:16,070 --> 00:23:22,690 Jadi memasukkan sebelum ini. 467 00:23:22,690 --> 00:23:25,120 Oleh itu, kita mungkin terlepas sesuatu sebelum ini. 468 00:23:25,120 --> 00:23:27,770 Kita mungkin perlu menjaga menjejaki apa yang berlaku. 469 00:23:27,770 --> 00:23:28,460 Tetapi kami akan kembali di sana. 470 00:23:28,460 --> 00:23:30,160 Jadi apa nilai kurang daripada? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, apa yang kita lakukan jika nilai adalah kurang daripada? 473 00:23:39,710 --> 00:23:43,000 >> PENONTON: Kemudian anda hanya menyimpan pergi melainkan jika ia yang terakhir. 474 00:23:43,000 --> 00:23:43,550 >> JASON HIRSCHORN: Saya suka itu. 475 00:23:43,550 --> 00:23:44,800 Oleh itu, pergilah ke nod seterusnya. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Melainkan jika ia yang terakhir - 478 00:23:48,930 --> 00:23:51,100 kita mungkin tertanya-memeriksa bahawa dalam terma syarat. 479 00:23:51,100 --> 00:23:54,870 Tetapi yeah, nod akan datang. 480 00:23:54,870 --> 00:23:58,680 Dan itu terlalu rendah, jadi kita akan bergerak di sini. 481 00:23:58,680 --> 00:24:02,030 Tetapi jika - 482 00:24:02,030 --> 00:24:03,280 boleh semua orang melihat perkara ini? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Jika kita sama apa yang kita lakukan? 485 00:24:11,610 --> 00:24:15,740 Jika nilai yang kami cuba untuk memasukkan adalah sama dengan nilai ini nod ini? 486 00:24:15,740 --> 00:24:16,320 Yeah? 487 00:24:16,320 --> 00:24:18,400 >> PENONTON: [didengar]. 488 00:24:18,400 --> 00:24:18,850 >> JASON HIRSCHORN: Yeah. 489 00:24:18,850 --> 00:24:19,290 Memandangkan ini - 490 00:24:19,290 --> 00:24:20,090 Marcus yang tepat. 491 00:24:20,090 --> 00:24:21,330 Kita boleh mungkin dilakukan sesuatu yang berbeza. 492 00:24:21,330 --> 00:24:25,360 Tetapi memandangkan kita telah menciptanya, di sini kita harus membebaskan dan kemudian kembali. 493 00:24:25,360 --> 00:24:26,774 Oh lelaki. 494 00:24:26,774 --> 00:24:30,080 Adakah itu lebih baik? 495 00:24:30,080 --> 00:24:31,850 Bagaimana bahawa? 496 00:24:31,850 --> 00:24:33,100 OK. 497 00:24:33,100 --> 00:24:35,360 498 00:24:35,360 --> 00:24:37,640 Percuma dan kemudian apa yang kita kembali, [didengar]? 499 00:24:37,640 --> 00:24:41,330 500 00:24:41,330 --> 00:24:44,110 OK. 501 00:24:44,110 --> 00:24:45,360 Adakah kita hilang apa-apa? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Jadi di mana kita mengesan nod sebelumnya? 504 00:24:59,650 --> 00:25:02,370 >> PENONTON: Saya fikir ia akan pergi selepas mewujudkan nod baru. 505 00:25:02,370 --> 00:25:02,600 >> JASON HIRSCHORN: OK. 506 00:25:02,600 --> 00:25:03,940 Jadi pada mulanya kita akan mungkin - 507 00:25:03,940 --> 00:25:07,175 yeah, kita boleh membuat penunjuk kepada yang baru nod, seperti penunjuk nod sebelumnya dan 508 00:25:07,175 --> 00:25:09,600 penunjuk nod semasa. 509 00:25:09,600 --> 00:25:12,640 Jadi mari kita memasukkan bahawa di sini. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Membuat semasa dan sebelumnya petunjuk untuk nod. 512 00:25:26,900 --> 00:25:28,955 Tetapi apabila kita menyesuaikan mereka petunjuk? 513 00:25:28,955 --> 00:25:30,205 Di mana kita melakukannya dalam kod? 514 00:25:30,205 --> 00:25:33,830 515 00:25:33,830 --> 00:25:34,160 Jeff? 516 00:25:34,160 --> 00:25:35,170 >> PENONTON: - syarat nilai? 517 00:25:35,170 --> 00:25:36,420 >> JASON HIRSCHORN: Yang satu dalam tertentu? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> PENONTON: Saya hanya keliru. 520 00:25:40,720 --> 00:25:44,200 Jika nilai adalah lebih besar daripada nod ini, tidak bermakna bahawa anda mahu pergi 521 00:25:44,200 --> 00:25:45,320 ke nod seterusnya? 522 00:25:45,320 --> 00:25:49,515 >> JASON Hirschhorn: Jadi jika nilai kami adalah lebih besar daripada nilai nod ini. 523 00:25:49,515 --> 00:25:52,130 >> PENONTON: Ya, maka anda akan mahu pergi lebih jauh ke bawah garisan, bukan? 524 00:25:52,130 --> 00:25:52,590 >> JASON Hirschhorn: Betul. 525 00:25:52,590 --> 00:25:53,840 Maka itu kita tidak memasukkan di sini. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Jika nilai adalah kurang daripada nod ini, maka kita pergi ke nod seterusnya - atau maka kita 528 00:26:03,240 --> 00:26:03,835 memasukkan sebelum ini. 529 00:26:03,835 --> 00:26:05,966 >> PENONTON: Tunggu, yang ini nod dan yang nilai? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON Hirschhorn: Soalan yang baik. 532 00:26:09,280 --> 00:26:13,260 Nilai definisi fungsi ini inilah yang kita diberikan. 533 00:26:13,260 --> 00:26:16,910 Jadi nilai adalah nombor kami diberikan. 534 00:26:16,910 --> 00:26:21,120 Jadi, jika nilainya adalah kurang daripada ini nod, kita memerlukan masa untuk memasukkan. 535 00:26:21,120 --> 00:26:24,575 Jika nilai adalah lebih besar daripada nod ini, kita pergi ke nod seterusnya. 536 00:26:24,575 --> 00:26:26,790 Dan kembali kepada soalan asal, walaupun, di mana - 537 00:26:26,790 --> 00:26:29,060 >> PENONTON: Jika nilai adalah lebih besar daripada nod ini. 538 00:26:29,060 --> 00:26:30,310 >> JASON Hirschhorn: Dan sebagainya apa yang kita lakukan di sini? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Manis. 541 00:26:38,160 --> 00:26:38,860 Itu betul. 542 00:26:38,860 --> 00:26:41,370 Saya hanya akan menulis petunjuk kemas kini. 543 00:26:41,370 --> 00:26:44,010 Tetapi ya, dengan satu semasa anda akan mengemas kini kepada 544 00:26:44,010 --> 00:26:46,080 menunjuk kepada yang seterusnya. 545 00:26:46,080 --> 00:26:47,330 Apa-apa lagi kita hilang? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Jadi saya akan menaip ini kod ke dalam gedit. 548 00:26:54,940 --> 00:26:58,375 Dan semasa saya melakukan ini, anda boleh mempunyai pasangan minit untuk bekerja pada pengekodan 549 00:26:58,375 --> 00:28:19,240 ini di C. 550 00:28:19,240 --> 00:28:20,940 >> Jadi saya mempunyai input kod pseudo yang. 551 00:28:20,940 --> 00:28:22,940 Nota ringkas sebelum kita bermula. 552 00:28:22,940 --> 00:28:25,560 Kita mungkin tidak dapat sepenuhnya selesai ini dalam semua 553 00:28:25,560 --> 00:28:27,300 tiga daripada fungsi-fungsi ini. 554 00:28:27,300 --> 00:28:30,630 Terdapat penyelesaian yang betul kepada mereka bahawa saya akan menghantar e-mel kepada anda semua 555 00:28:30,630 --> 00:28:33,730 selepas seksyen, dan ia akan dipaparkan di CS50.net. 556 00:28:33,730 --> 00:28:35,640 Jadi, saya tidak menggalakkan anda untuk pergi melihat bahagian. 557 00:28:35,640 --> 00:28:40,550 Saya menggalakkan anda untuk mencuba ini pada anda memiliki, dan kemudian menggunakan amalan yang 558 00:28:40,550 --> 00:28:41,760 masalah untuk menyemak jawapan anda. 559 00:28:41,760 --> 00:28:47,070 Kesemua ini telah direka untuk rapat berkaitan dengan dan mematuhi apa 560 00:28:47,070 --> 00:28:48,400 yang anda perlu lakukan pada masalah yang ditetapkan. 561 00:28:48,400 --> 00:28:53,820 Jadi, saya menggalakkan anda untuk amalan ini sendiri dan kemudian gunakan kod untuk 562 00:28:53,820 --> 00:28:54,660 menyemak jawapan anda. 563 00:28:54,660 --> 00:28:57,060 Kerana saya mahu bergerak untuk hash jadual pada satu ketika dalam seksyen itu. 564 00:28:57,060 --> 00:28:58,150 Oleh itu, kita tidak mungkin akan melaluinya semua. 565 00:28:58,150 --> 00:28:59,960 Tetapi kita akan melakukan sebanyak kita boleh sekarang. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Mari kita mulakan. 568 00:29:01,960 --> 00:29:04,770 Asam, bagaimana kita mewujudkan nod baru? 569 00:29:04,770 --> 00:29:06,810 >> PENONTON: Anda struct *. 570 00:29:06,810 --> 00:29:09,640 >> JASON Hirschhorn: Oleh itu, kita ada yang di sini. 571 00:29:09,640 --> 00:29:10,040 Oh, maaf. 572 00:29:10,040 --> 00:29:13,530 Anda telah berkata struct *. 573 00:29:13,530 --> 00:29:17,260 >> PENONTON: Dan kemudian [? jenis?] nod atau c nod. 574 00:29:17,260 --> 00:29:17,780 >> JASON Hirschhorn: OK. 575 00:29:17,780 --> 00:29:19,740 Saya akan memanggilnya new_node jadi kita boleh tinggal konsisten. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> PENONTON: Dan anda mahu menetapkan bahawa untuk mengetuai, nod pertama. 578 00:29:33,180 --> 00:29:33,580 >> JASON Hirschhorn: OK. 579 00:29:33,580 --> 00:29:37,290 Jadi sekarang ini untuk menunjuk - jadi ini tidak mencipta nod baru lagi. 580 00:29:37,290 --> 00:29:41,380 Ini hanya menunjuk ke nod pertama dalam senarai. 581 00:29:41,380 --> 00:29:42,630 Bagaimana untuk saya mencipta nod baru? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Jika saya perlukan ruang untuk mewujudkan nod baru. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 Dan berapa besar? 586 00:29:51,710 --> 00:30:00,390 >> PENONTON: Saiz struct itu. 587 00:30:00,390 --> 00:30:01,150 >> JASON Hirschhorn: The Saiz struct itu. 588 00:30:01,150 --> 00:30:02,400 Dan apa yang struct yang dipanggil? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> PENONTON: Nod? 591 00:30:09,840 --> 00:30:11,640 >> JASON Hirschhorn: Nod. 592 00:30:11,640 --> 00:30:17,640 Jadi malloc (sizeof (nod)); memberikan kita ruang. 593 00:30:17,640 --> 00:30:19,740 Dan adalah baris ini - 594 00:30:19,740 --> 00:30:21,740 satu perkara yang tidak betul pada baris ini. 595 00:30:21,740 --> 00:30:24,430 Adalah new_node penunjuk kepada struct satu? 596 00:30:24,430 --> 00:30:25,650 Itu merupakan nama generik. 597 00:30:25,650 --> 00:30:26,520 Apakah ia - 598 00:30:26,520 --> 00:30:27,450 nod, betul-betul. 599 00:30:27,450 --> 00:30:29,340 Ia nod *. 600 00:30:29,340 --> 00:30:33,010 Dan apa yang kita lakukan selepas kita malloc sesuatu, Asan? 601 00:30:33,010 --> 00:30:34,476 Apakah perkara pertama yang kita buat? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Bagaimana jika ia tidak berfungsi? 604 00:30:40,320 --> 00:30:42,430 >> PENONTON: Oh, memeriksa jika ia menunjuk kepada nod? 605 00:30:42,430 --> 00:30:43,310 >> JASON Hirschhorn: Tepat sekali. 606 00:30:43,310 --> 00:30:46,750 Jadi, jika anda new_node sama setaraf batal, apa yang kita lakukan? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 Ini mengembalikan bool, fungsi ini. 609 00:30:54,820 --> 00:30:57,760 Tepat sekali. 610 00:30:57,760 --> 00:30:58,450 Kelihatan baik. 611 00:30:58,450 --> 00:30:59,680 Apa-apa untuk menambah di sana? 612 00:30:59,680 --> 00:31:00,670 Kami akan menambah perkara-perkara pada akhir. 613 00:31:00,670 --> 00:31:03,160 Tetapi setakat ini kelihatan baik. 614 00:31:03,160 --> 00:31:06,170 Mewujudkan petunjuk semasa dan sebelumnya. 615 00:31:06,170 --> 00:31:08,650 Michael, bagaimana saya melakukan ini? 616 00:31:08,650 --> 00:31:12,810 >> PENONTON: Anda perlu untuk melakukan nod *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 Anda harus membuat satu tidak untuk new_node tetapi untuk 619 00:31:25,502 --> 00:31:26,905 nod kita sudah mempunyai. 620 00:31:26,905 --> 00:31:27,230 >> JASON Hirschhorn: OK. 621 00:31:27,230 --> 00:31:29,255 Jadi nod semasa kita berada di. 622 00:31:29,255 --> 00:31:30,505 Saya akan panggil curr itu. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Baiklah. 625 00:31:39,770 --> 00:31:41,620 Kami telah memutuskan kami mahu mengekalkan dua kerana kita perlu tahu 626 00:31:41,620 --> 00:31:42,870 apa yang di hadapannya. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Apa yang mereka mendapatkan dimulakan untuk? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> PENONTON: nilai mereka dalam senarai kami. 631 00:31:54,180 --> 00:31:58,090 >> JASON Hirschhorn: Jadi apakah Perkara pertama dalam senarai kami? 632 00:31:58,090 --> 00:32:04,050 Atau bagaimana kita tahu di mana permulaan senarai kami adalah? 633 00:32:04,050 --> 00:32:08,015 >> PENONTON: Adakah ia tidak diluluskan ke dalam majlis itu? 634 00:32:08,015 --> 00:32:08,466 >> JASON Hirschhorn: Betul. 635 00:32:08,466 --> 00:32:09,716 Ia telah diluluskan pada di sini. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Jadi, jika ia diluluskan ke dalam majlis itu, yang memulakan senarai, apa yang perlu kita 638 00:32:18,980 --> 00:32:21,270 ditetapkan semasa sama dengan? 639 00:32:21,270 --> 00:32:22,110 >> PENONTON: Senarai. 640 00:32:22,110 --> 00:32:22,900 >> JASON Hirschhorn: Senarai. 641 00:32:22,900 --> 00:32:24,090 Itu betul-betul betul. 642 00:32:24,090 --> 00:32:26,290 Kini ia mempunyai alamat permulaan senarai kami. 643 00:32:26,290 --> 00:32:28,450 Dan apa yang kira-kira yang dahulu? 644 00:32:28,450 --> 00:32:31,920 >> PENONTON: Senarai tolak satu? 645 00:32:31,920 --> 00:32:32,690 >> JASON Hirschhorn: Ada apa-apa di hadapannya. 646 00:32:32,690 --> 00:32:34,580 Jadi apa yang boleh kita lakukan untuk menandakan apa-apa? 647 00:32:34,580 --> 00:32:35,050 >> PENONTON: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON Hirschhorn: Yeah. 649 00:32:35,450 --> 00:32:37,950 Yang berbunyi seperti idea yang baik. 650 00:32:37,950 --> 00:32:38,360 Perfect. 651 00:32:38,360 --> 00:32:39,630 Terima kasih. 652 00:32:39,630 --> 00:32:42,850 Pergi melalui senarai. 653 00:32:42,850 --> 00:32:45,490 Constantine, berapa lama kita akan melalui senarai? 654 00:32:45,490 --> 00:32:49,010 >> PENONTON: Sehingga apabila Kami mencapai null. 655 00:32:49,010 --> 00:32:49,390 >> JASON Hirschhorn: OK. 656 00:32:49,390 --> 00:32:50,430 Jadi, jika, manakala, bagi gelung. 657 00:32:50,430 --> 00:32:52,200 Apa yang kita lakukan? 658 00:32:52,200 --> 00:32:53,320 >> PENONTON: Mungkin untuk gelung? 659 00:32:53,320 --> 00:32:53,910 >> JASON Hirschhorn: Mari kita buat untuk gelung. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> PENONTON: Dan kita katakan untuk - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 sehingga penunjuk semasa tidak sama dengan nol. 664 00:33:13,390 --> 00:33:19,160 >> JASON Hirschhorn: Jadi, jika kita tahu syarat, bagaimana kita boleh menulis gelung 665 00:33:19,160 --> 00:33:21,740 berdasarkan dari keadaan itu. 666 00:33:21,740 --> 00:33:24,380 Apakah jenis gelung kita harus digunakan? 667 00:33:24,380 --> 00:33:25,260 >> PENONTON: Walaupun. 668 00:33:25,260 --> 00:33:25,590 >> JASON Hirschhorn: Yeah. 669 00:33:25,590 --> 00:33:27,130 Yang masuk akal lebih berasaskan kira apa yang anda kata. 670 00:33:27,130 --> 00:33:29,430 Jika kita hanya mahu pergi ke dalam kita ia akan hanya tahu perkara itu, ia akan membuat 671 00:33:29,430 --> 00:33:31,680 akal untuk melakukan gelung sementara. 672 00:33:31,680 --> 00:33:39,880 Walaupun semasa tidak sama batal, jika nilai kurang daripada nod ini. 673 00:33:39,880 --> 00:33:41,650 Akshar, memberikan saya garis ini. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> PENONTON: Jika semasa-> n n kurang daripada nilai. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Atau terbalik itu. 678 00:34:03,260 --> 00:34:06,140 Tukar kurungan itu. 679 00:34:06,140 --> 00:34:06,620 >> JASON Hirschhorn: Maaf. 680 00:34:06,620 --> 00:34:08,760 >> PENONTON: Tukar pendakap. 681 00:34:08,760 --> 00:34:10,914 >> JASON Hirschhorn: Jadi, jika ia lebih besar daripada nilai. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Kerana itulah mengelirukan dengan comment di atas, saya akan berbuat demikian. 684 00:34:22,120 --> 00:34:22,480 Tetapi ya. 685 00:34:22,480 --> 00:34:25,125 Jika nilai kita adalah kurang daripada ini nod, apa yang kita lakukan? 686 00:34:25,125 --> 00:34:25,540 Oh. 687 00:34:25,540 --> 00:34:26,710 Saya ada di sini. 688 00:34:26,710 --> 00:34:27,960 Masukkan sebelum ini. 689 00:34:27,960 --> 00:34:32,080 690 00:34:32,080 --> 00:34:32,370 OK. 691 00:34:32,370 --> 00:34:33,933 Bagaimana kita berbuat demikian? 692 00:34:33,933 --> 00:34:34,900 >> PENONTON: Adakah ia masih saya? 693 00:34:34,900 --> 00:34:36,150 >> JASON Hirschhorn: Yeah. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> PENONTON: Anda - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> seterusnya. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON Hirschhorn: Jadi apa yang yang akan sama? 700 00:34:50,163 --> 00:34:52,070 >> PENONTON: Ia akan semasa sama. 701 00:34:52,070 --> 00:34:53,889 >> JASON Hirschhorn: Tepat sekali. 702 00:34:53,889 --> 00:34:55,730 Dan sebagainya yang lain - 703 00:34:55,730 --> 00:34:56,730 apa lagi yang kita perlu mengemaskini? 704 00:34:56,730 --> 00:34:59,982 >> PENONTON: Semak jika lalu sama null. 705 00:34:59,982 --> 00:35:01,870 >> JASON Hirschhorn: Jika prev - 706 00:35:01,870 --> 00:35:03,730 jadi jika prev sama null. 707 00:35:03,730 --> 00:35:05,990 >> PENONTON: Ini bermakna ia akan untuk menjadi kepala. 708 00:35:05,990 --> 00:35:06,780 >> JASON Hirschhorn: Ini bermakna ia menjadi kepala. 709 00:35:06,780 --> 00:35:07,620 Jadi maka apa yang kita lakukan? 710 00:35:07,620 --> 00:35:12,510 >> PENONTON: Kami kepala sama new_node. 711 00:35:12,510 --> 00:35:16,690 >> JASON Hirschhorn: Ketua sama new_node. 712 00:35:16,690 --> 00:35:20,540 Dan mengapa kepala di sini, tidak menyenaraikan? 713 00:35:20,540 --> 00:35:24,940 >> PENONTON: Kerana kepala adalah global berubah-ubah, yang merupakan tempat permulaan. 714 00:35:24,940 --> 00:35:26,190 >> JASON Hirschhorn: Sweet. 715 00:35:26,190 --> 00:35:33,750 716 00:35:33,750 --> 00:35:34,170 OK. 717 00:35:34,170 --> 00:35:36,150 Dan - 718 00:35:36,150 --> 00:35:53,796 >> PENONTON: Kemudian anda lagi prev-> seterusnya sama new_node. 719 00:35:53,796 --> 00:35:55,080 Dan kemudian anda kembali benar. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON Hirschhorn: Di manakah kita menetapkan akhir new_node? 722 00:36:02,700 --> 00:36:04,850 >> PENONTON: Saya akan - 723 00:36:04,850 --> 00:36:06,180 Saya menetapkan bahawa pada permulaan. 724 00:36:06,180 --> 00:36:07,430 >> JASON Hirschhorn: Jadi apa talian? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> PENONTON: Selepas jika kenyataan memeriksa jika ia diketahui. 727 00:36:12,598 --> 00:36:13,057 >> JASON Hirschhorn: Hak di sini? 728 00:36:13,057 --> 00:36:18,335 >> PENONTON: aku akan melakukannya new_node-> n sama nilai. 729 00:36:18,335 --> 00:36:19,585 >> JASON Hirschhorn: Bunyi yang baik. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Mungkin ia masuk akal - kita tidak perlu tahu apa senarai kami pada 732 00:36:25,090 --> 00:36:26,280 kerana kita hanya berurusan dengan satu senarai. 733 00:36:26,280 --> 00:36:29,560 Jadi fungsi akuan yang lebih baik untuk ini hanya untuk menghilangkan ini 734 00:36:29,560 --> 00:36:34,360 sepenuhnya dan hanya memasukkan nilai ke dalam kepala. 735 00:36:34,360 --> 00:36:35,930 Kita tidak perlu tahu apa yang senarai kita masuk 736 00:36:35,930 --> 00:36:39,140 Tetapi saya akan menyimpannya untuk sekarang dan kemudian mengubahnya setelah mengemaskini 737 00:36:39,140 --> 00:36:42,590 slaid dan kod. 738 00:36:42,590 --> 00:36:44,980 Jadi yang kelihatan baik untuk sekarang. 739 00:36:44,980 --> 00:36:46,560 Jika nilai - yang boleh melakukan talian ini? 740 00:36:46,560 --> 00:36:47,810 Jika - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 apa yang kita lakukan di sini, Nuh. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> PENONTON: Jika nilai adalah lebih besar daripada curr-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON Hirschhorn: Bagaimana kita pergi ke nod seterusnya? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> PENONTON: Curr-> n sama dengan new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON Hirschhorn: Jadi n apa yang sebahagian daripada struct itu? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Integer. 753 00:37:46,020 --> 00:37:50,420 Dan new_node adalah penunjuk kepada nod. 754 00:37:50,420 --> 00:37:51,880 Jadi apa yang sebahagian daripada curr yang patut kita mengemaskini? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 Jika tidak n, maka apa yang sebahagian yang lain? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Nuh, apa yang pihak yang lain. 759 00:38:22,810 --> 00:38:23,570 >> PENONTON: Oh, akan datang. 760 00:38:23,570 --> 00:38:25,645 >> JASON Hirschhorn: Seterusnya, betul-betul. 761 00:38:25,645 --> 00:38:26,410 Tepat sekali. 762 00:38:26,410 --> 00:38:28,770 Seterusnya adalah yang betul. 763 00:38:28,770 --> 00:38:31,540 Dan apa lagi yang kita perlu untuk mengemas kini, Nuh? 764 00:38:31,540 --> 00:38:32,840 >> PENONTON: The petunjuk. 765 00:38:32,840 --> 00:38:34,840 >> JASON Hirschhorn: Jadi kita dikemaskini semasa. 766 00:38:34,840 --> 00:38:36,090 >> PENONTON: Sebelum-> seterusnya. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON Hirschhorn: Yeah. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 OK, kita akan berhenti sejenak. 771 00:38:58,370 --> 00:39:02,200 Siapa yang boleh membantu kita di sini? 772 00:39:02,200 --> 00:39:03,385 Manu, apa yang patut kita buat? 773 00:39:03,385 --> 00:39:05,615 >> PENONTON: Anda perlu untuk menetapkan ia sama dengan curr-> seterusnya. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Tetapi melakukannya sebelum baris sebelumnya. 776 00:39:11,630 --> 00:39:12,880 >> JASON Hirschhorn: OK. 777 00:39:12,880 --> 00:39:16,590 778 00:39:16,590 --> 00:39:18,260 Apa-apa lagi? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> PENONTON: Saya tidak fikir anda bertujuan untuk menukar curr-> seterusnya. 781 00:39:22,680 --> 00:39:29,270 Saya rasa anda bertujuan untuk melakukan setaraf curr curr-> sebelah pergi ke nod seterusnya. 782 00:39:29,270 --> 00:39:30,500 >> JASON Hirschhorn: Jadi maaf, di mana? 783 00:39:30,500 --> 00:39:32,680 Kepada apa talian? 784 00:39:32,680 --> 00:39:33,420 Keturunan ini? 785 00:39:33,420 --> 00:39:33,750 >> PENONTON: Yeah. 786 00:39:33,750 --> 00:39:35,745 Buat curr sama curr-> seterusnya. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON Hirschhorn: Jadi, itu betul kerana semasa adalah 789 00:39:43,360 --> 00:39:45,220 penunjuk kepada nod. 790 00:39:45,220 --> 00:39:48,550 Dan kami mahu ia untuk menunjukkan seterusnya nod apa yang mendapat pada masa ini 791 00:39:48,550 --> 00:39:49,930 menunjuk kepada. 792 00:39:49,930 --> 00:39:54,410 Curr itu sendiri mempunyai depan. 793 00:39:54,410 --> 00:39:58,620 Tetapi jika kita mengemaskini curr.next, kami akan mengemas kini nota sebenar 794 00:39:58,620 --> 00:40:01,430 sendiri, tidak di mana ini penunjuk telah menunjuk. 795 00:40:01,430 --> 00:40:02,680 Apa kira-kira garis ini, walaupun. 796 00:40:02,680 --> 00:40:05,160 797 00:40:05,160 --> 00:40:07,330 Avi? 798 00:40:07,330 --> 00:40:09,590 >> PENONTON: Sebelum-> seterusnya sama curr. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON Hirschhorn: Jadi sekali lagi, jika prev adalah penunjuk kepada nod, prev-> seterusnya adalah 801 00:40:19,440 --> 00:40:23,020 penunjuk sebenar dalam nod. 802 00:40:23,020 --> 00:40:27,190 Jadi ini akan mengemas kini penunjuk dalam nod ke curr. 803 00:40:27,190 --> 00:40:28,570 Kita tidak mahu untuk mengemaskini penunjuk dalam satu nod. 804 00:40:28,570 --> 00:40:30,570 Kami ingin mengemaskini sebelumnya. 805 00:40:30,570 --> 00:40:31,850 Jadi bagaimana kita berbuat demikian? 806 00:40:31,850 --> 00:40:34,250 >> PENONTON: Ia hanya akan prev. 807 00:40:34,250 --> 00:40:34,565 >> JASON Hirschhorn: Betul. 808 00:40:34,565 --> 00:40:35,560 Prev adalah penunjuk kepada nod. 809 00:40:35,560 --> 00:40:38,750 Sekarang kita menukar kepada yang penunjuk baru kepada satu nod. 810 00:40:38,750 --> 00:40:40,830 OK Marilah kita bergerak ke bawah. 811 00:40:40,830 --> 00:40:41,940 Akhir sekali, keadaan terakhir ini. 812 00:40:41,940 --> 00:40:44,896 Jeff, apa yang kita lakukan di sini? 813 00:40:44,896 --> 00:40:47,515 >> PENONTON: Jika nilai adalah sama dengan curr-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON Hirschhorn: Maaf. 816 00:40:51,300 --> 00:40:52,372 Oh kebaikan saya. 817 00:40:52,372 --> 00:40:54,330 Apa? 818 00:40:54,330 --> 00:40:55,580 Nilai == curr-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Apa yang kami lakukan? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> PENONTON: Anda akan membebaskan new_node kami, dan kemudian anda akan pulangan palsu. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON Hirschhorn: Inilah yang kita telah menulis setakat ini. 825 00:41:23,460 --> 00:41:25,710 Adakah sesiapa mempunyai apa-apa untuk menambah sebelum kita membuat? 826 00:41:25,710 --> 00:41:35,460 827 00:41:35,460 --> 00:41:35,710 OK. 828 00:41:35,710 --> 00:41:36,960 Mari kita mencubanya. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Kawalan boleh mencapai akhir daripada fungsi bukan tidak sah. 831 00:41:46,110 --> 00:41:48,310 Avi, apa yang berlaku? 832 00:41:48,310 --> 00:41:51,380 >> PENONTON: Adakah anda sepatutnya meletakkan kembali benar di luar gelung sementara? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON Hirschhorn: Saya tidak tahu. 835 00:41:54,400 --> 00:41:54,780 Adakah anda mahu saya? 836 00:41:54,780 --> 00:41:55,520 >> PENONTON: Jangan sekali-kali fikiran. 837 00:41:55,520 --> 00:41:56,350 No 838 00:41:56,350 --> 00:41:57,180 >> JASON Hirschhorn: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> PENONTON: Saya rasa anda bertujuan untuk meletakkan pulangan palsu di hujung 840 00:41:59,460 --> 00:42:02,230 gelung sementara. 841 00:42:02,230 --> 00:42:03,270 >> JASON Hirschhorn: Jadi di mana adakah anda mahu pergi? 842 00:42:03,270 --> 00:42:05,270 >> PENONTON: Seperti di luar gelung sementara. 843 00:42:05,270 --> 00:42:08,800 Jadi, jika anda keluar gelung manakala yang cara bahawa anda telah sampai akhir dan 844 00:42:08,800 --> 00:42:09,980 apa-apa yang berlaku. 845 00:42:09,980 --> 00:42:10,410 >> JASON Hirschhorn: OK. 846 00:42:10,410 --> 00:42:12,340 Jadi, apa yang kita lakukan di sini? 847 00:42:12,340 --> 00:42:13,702 >> PENONTON: Anda pulangan palsu di sana juga. 848 00:42:13,702 --> 00:42:15,040 >> JASON Hirschhorn: Oh, kami melakukannya dalam kedua-dua tempat? 849 00:42:15,040 --> 00:42:15,650 >> PENONTON: Yeah. 850 00:42:15,650 --> 00:42:16,900 >> JASON Hirschhorn: OK. 851 00:42:16,900 --> 00:42:24,840 852 00:42:24,840 --> 00:42:26,160 Sekiranya kita pergi? 853 00:42:26,160 --> 00:42:26,980 Oh kebaikan saya. 854 00:42:26,980 --> 00:42:27,290 Saya minta maaf. 855 00:42:27,290 --> 00:42:28,480 Saya memohon maaf kerana skrin. 856 00:42:28,480 --> 00:42:30,530 Ia jenis freaking kepada kami. 857 00:42:30,530 --> 00:42:31,520 Jadi, pilih pilihan. 858 00:42:31,520 --> 00:42:35,260 Zero, setiap kod, berhenti program ini. 859 00:42:35,260 --> 00:42:36,700 Satu memasukkan sesuatu. 860 00:42:36,700 --> 00:42:37,990 Mari kita memasukkan tiga. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Sisip tidak berjaya. 863 00:42:45,380 --> 00:42:46,500 Saya akan mencetak. 864 00:42:46,500 --> 00:42:48,050 Saya tidak mempunyai apa-apa. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Mungkin itu hanya suatu penipuan. 867 00:42:50,250 --> 00:42:52,810 Masukkan satu. 868 00:42:52,810 --> 00:42:55,770 Tidak berjaya. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Mari kita berjalan melalui GDB benar-benar cepat untuk menyemak apa yang sedang berlaku. 871 00:43:02,400 --> 00:43:06,055 >> Ingat Pra-Pemasangan. / Nama anda program mendapat kita ke dalam GDB. 872 00:43:06,055 --> 00:43:07,610 Adakah itu banyak untuk mengendalikan? 873 00:43:07,610 --> 00:43:08,560 Berkelip? 874 00:43:08,560 --> 00:43:10,400 Mungkin. 875 00:43:10,400 --> 00:43:12,760 Tutup mata anda dan mengambil beberapa mendalam nafas jika anda bosan 876 00:43:12,760 --> 00:43:13,580 melihat ia. 877 00:43:13,580 --> 00:43:14,200 Saya dalam GDB. 878 00:43:14,200 --> 00:43:15,830 Apakah perkara pertama yang saya lakukan dalam GDB? 879 00:43:15,830 --> 00:43:17,050 Kita mesti memikirkan apa yang berlaku di sini. 880 00:43:17,050 --> 00:43:17,310 Mari kita lihat. 881 00:43:17,310 --> 00:43:21,650 Kami mempunyai enam minit untuk angka apa yang sedang berlaku. 882 00:43:21,650 --> 00:43:22,900 Cuti utama. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 Dan kemudian apa yang saya lakukan? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 Berjalan. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Mari kita memilih pilihan. 889 00:43:34,160 --> 00:43:36,330 Dan apa yang N buat? 890 00:43:36,330 --> 00:43:38,480 Seterusnya. 891 00:43:38,480 --> 00:43:38,950 Yeah. 892 00:43:38,950 --> 00:43:39,740 >> PENONTON: Adakah anda tidak lagi - 893 00:43:39,740 --> 00:43:45,230 adakah anda tidak mengatakan bahawa kepala, ia adalah dimulakan untuk null pada permulaan. 894 00:43:45,230 --> 00:43:47,140 Tetapi saya fikir anda berkata bahawa adalah OK. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON Hirschhorn: Mari kita pergi - mari kita lihat dalam GDB, dan kemudian kami akan kembali. 897 00:43:52,640 --> 00:43:54,910 Tetapi ia kedengaran seperti anda sudah mempunyai beberapa idea tentang apa yang berlaku. 898 00:43:54,910 --> 00:43:58,340 Jadi, kami ingin memasukkan sesuatu. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Kami telah memasukkan. 901 00:44:00,150 --> 00:44:00,770 Sila masukkan int satu. 902 00:44:00,770 --> 00:44:01,990 Kami akan memasukkan tiga. 903 00:44:01,990 --> 00:44:03,000 Dan kemudian saya di baris ini. 904 00:44:03,000 --> 00:44:07,030 Bagaimana saya boleh pergi memulakan debugging sisip dikenali fungsi? 905 00:44:07,030 --> 00:44:08,280 Oh kebaikan saya. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 Itulah banyak. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Adakah itu freaking keluar banyak? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> PENONTON: Oh, ia meninggal dunia. 912 00:44:21,680 --> 00:44:22,930 >> JASON Hirschhorn: Saya hanya ditarik keluar. 913 00:44:22,930 --> 00:44:27,364 914 00:44:27,364 --> 00:44:28,310 OK. 915 00:44:28,310 --> 00:44:29,560 >> PENONTON: Mungkin ia adalah Hujung wayar. 916 00:44:29,560 --> 00:44:37,000 917 00:44:37,000 --> 00:44:39,470 >> JASON Hirschhorn: Wow. 918 00:44:39,470 --> 00:44:42,330 Jadi garis bawah - 919 00:44:42,330 --> 00:44:43,470 apa yang kamu katakan? 920 00:44:43,470 --> 00:44:46,040 >> PENONTON: Saya berkata Ironinya teknikal kesukaran di dalam kelas ini. 921 00:44:46,040 --> 00:44:46,410 >> JASON Hirschhorn: Saya tahu. 922 00:44:46,410 --> 00:44:48,660 Kalaulah saya mempunyai kawalan ke atas bahagian itu. 923 00:44:48,660 --> 00:44:49,910 [Didengar] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Yang berbunyi besar. 926 00:44:55,400 --> 00:44:58,680 Mengapa tidak anda semua mula berfikir tentang apa yang kita boleh lakukan salah, 927 00:44:58,680 --> 00:45:01,140 dan kami akan kembali dalam 90 saat. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, saya akan bertanya kepada anda bagaimana untuk insert_node dalam untuk debug ia. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Jadi ini adalah di mana kita lepas berhenti. 932 00:46:31,460 --> 00:46:35,110 Bagaimana saya masuk ke dalam insert_node, Avica, untuk memeriksa apa yang berlaku? 933 00:46:35,110 --> 00:46:36,360 Apa arahan GDB? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Cuti tidak akan membawa saya di dalam. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Adakah Marquise tahu? 938 00:46:47,130 --> 00:46:48,240 >> PENONTON: Apa? 939 00:46:48,240 --> 00:46:51,780 >> JASON Hirschhorn: Apa arahan GDB Saya gunakan untuk masuk ke dalam fungsi ini? 940 00:46:51,780 --> 00:46:52,070 >> PENONTON: Langkah? 941 00:46:52,070 --> 00:46:55,140 >> JASON Hirschhorn: Langkah melalui S. Yang mengambil saya di dalam. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing sedikit ruang. 944 00:46:58,040 --> 00:46:59,120 Bahawa semua nampaknya jualan. 945 00:46:59,120 --> 00:47:00,370 Mari kita meneliti new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 Ia mendapat beberapa alamat ingatan. 948 00:47:05,410 --> 00:47:07,440 Mari kita semak - 949 00:47:07,440 --> 00:47:08,500 yang semuanya betul. 950 00:47:08,500 --> 00:47:12,220 Jadi semuanya di sini nampaknya akan berfungsi dengan betul. 951 00:47:12,220 --> 00:47:14,530 >> PENONTON: Apakah perbezaan di antara P dan paparan? 952 00:47:14,530 --> 00:47:16,160 >> JASON Hirschhorn: P bermaksud cetak. 953 00:47:16,160 --> 00:47:19,310 Dan supaya anda meminta apa yang Perbezaan di antara itu dan ini? 954 00:47:19,310 --> 00:47:22,330 Dalam kes ini, apa-apa. 955 00:47:22,330 --> 00:47:26,960 Tetapi secara amnya terdapat beberapa perbezaan. 956 00:47:26,960 --> 00:47:28,220 Dan anda perlu mencari di manual GDB itu. 957 00:47:28,220 --> 00:47:29,560 Tetapi dalam kes ini, apa-apa. 958 00:47:29,560 --> 00:47:31,460 Kita cenderung untuk menggunakan cetak, walaupun, kerana kita tidak perlu untuk melakukan lebih daripada 959 00:47:31,460 --> 00:47:33,960 mencetak satu nilai. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 Oleh itu, kita berada di barisan 80 kod kami, menetapkan nod * curr sama dengan senarai. 962 00:47:40,300 --> 00:47:42,500 Marilah kita mencetak curr. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 Ia sama senarai. 965 00:47:46,840 --> 00:47:48,850 Manis. 966 00:47:48,850 --> 00:47:49,340 Tunggu. 967 00:47:49,340 --> 00:47:50,590 Ia sama sesuatu. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 Yang nampaknya tidak betul. 970 00:47:56,190 --> 00:47:56,840 Di sana kami pergi. 971 00:47:56,840 --> 00:47:59,470 Ini kerana dalam GDB, betul, jika ia garis anda di atasnya 972 00:47:59,470 --> 00:48:00,330 telah tidak dilaksanakan lagi. 973 00:48:00,330 --> 00:48:03,100 Jadi, anda perlu benar-benar menaip seterusnya untuk melaksanakan garis 974 00:48:03,100 --> 00:48:05,230 sebelum melihat hasilnya. 975 00:48:05,230 --> 00:48:06,680 Jadi di sini kita. 976 00:48:06,680 --> 00:48:09,490 Kami hanya dilaksanakan baris ini, sebelumnya sama null. 977 00:48:09,490 --> 00:48:13,590 Jadi sekali lagi, jika kita cetak sebelumnya kita tidak akan melihat apa-apa yang pelik. 978 00:48:13,590 --> 00:48:18,680 Tetapi jika kita benar-benar melaksanakan yang line, maka kita akan melihat 979 00:48:18,680 --> 00:48:20,380 bahawa garis yang bekerja. 980 00:48:20,380 --> 00:48:21,060 >> Jadi kita mempunyai curr. 981 00:48:21,060 --> 00:48:23,180 Mereka kedua-duanya baik. 982 00:48:23,180 --> 00:48:24,010 Betul? 983 00:48:24,010 --> 00:48:28,130 Kini kita sudah membuat baris ini di sini. 984 00:48:28,130 --> 00:48:29,310 Walaupun curr tidak sama null. 985 00:48:29,310 --> 00:48:31,110 Nah, apakah curr sama? 986 00:48:31,110 --> 00:48:32,450 Kami hanya melihat ia equaled null. 987 00:48:32,450 --> 00:48:33,210 Kami dicetak keluar. 988 00:48:33,210 --> 00:48:35,110 Saya akan mencetak semula. 989 00:48:35,110 --> 00:48:36,720 Jadi adalah bahawa manakala gelung akan melaksanakan? 990 00:48:36,720 --> 00:48:37,270 >> PENONTON: No 991 00:48:37,270 --> 00:48:39,790 >> JASON Hirschhorn: Oleh itu, apabila saya menaip yang talian, anda melihat kita melompat sepanjang jalan 992 00:48:39,790 --> 00:48:41,390 turun ke bawah, pulangan palsu. 993 00:48:41,390 --> 00:48:44,520 Dan kemudian kita akan pulangan palsu dan kembali ke program kami dan 994 00:48:44,520 --> 00:48:48,020 akhirnya mencetak, seperti yang kita lihat, sisip tidak berjaya. 995 00:48:48,020 --> 00:48:51,010 Jadi, sesiapa mempunyai apa-apa idea mengenai apa yang yang perlu kita lakukan untuk menetapkan ini? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Saya akan menunggu sehingga saya melihat beberapa tangan naik. 998 00:48:57,570 --> 00:48:58,830 Kami tidak melaksanakan ini. 999 00:48:58,830 --> 00:49:01,660 Perlu diingat, ini adalah yang pertama perkara yang kita lakukan. 1000 00:49:01,660 --> 00:49:02,430 Saya tidak akan melakukan pasangan. 1001 00:49:02,430 --> 00:49:03,670 Saya akan melakukan beberapa. 1002 00:49:03,670 --> 00:49:04,830 Kerana pasangan bermakna dua. 1003 00:49:04,830 --> 00:49:07,620 Saya akan menunggu lebih daripada dua orang. 1004 00:49:07,620 --> 00:49:10,690 >> Kemasukan pertama, curr, secara lalai sama null. 1005 00:49:10,690 --> 00:49:14,050 Dan gelung ini hanya melaksanakan jika curr tidak null. 1006 00:49:14,050 --> 00:49:18,740 Jadi bagaimana saya boleh mendapatkan sekitar ini? 1007 00:49:18,740 --> 00:49:19,990 Saya melihat tiga tangan. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Saya akan menunggu lebih daripada tiga. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, apa yang anda berfikir? 1012 00:49:35,940 --> 00:49:37,730 >> PENONTON: Nah, jika anda memerlukannya untuk melaksanakan lebih dari sekali, anda hanya 1013 00:49:37,730 --> 00:49:39,948 mengubahnya dengan gelung do-sementara. 1014 00:49:39,948 --> 00:49:41,250 >> JASON Hirschhorn: OK. 1015 00:49:41,250 --> 00:49:44,240 Yang akan menyelesaikan masalah kita, walaupun? 1016 00:49:44,240 --> 00:49:47,750 >> PENONTON: Dalam kes ini tidak kerana hakikat bahawa senarai adalah kosong. 1017 00:49:47,750 --> 00:49:52,150 Jadi maka anda mungkin hanya perlu menambah kenyataan bahawa jika pintu keluar gelung 1018 00:49:52,150 --> 00:49:55,312 maka anda perlu berada di akhir senarai, di mana titik anda 1019 00:49:55,312 --> 00:49:56,562 hanya boleh memasukkannya. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON Hirschhorn: Saya suka itu. 1022 00:49:59,680 --> 00:50:00,500 Yang masuk akal. 1023 00:50:00,500 --> 00:50:03,390 Jika gelung keluar - 1024 00:50:03,390 --> 00:50:04,800 kerana ia akan pulangan palsu di sini. 1025 00:50:04,800 --> 00:50:08,220 Jadi, jika pintu keluar gelung, maka kita berada di akhir senarai, atau mungkin 1026 00:50:08,220 --> 00:50:10,690 bermula daripada senarai jika tiada apa-apa dalam ia, yang adalah sama seperti akhir. 1027 00:50:10,690 --> 00:50:12,770 Jadi sekarang kita mahu untuk memasukkan sesuatu di sini. 1028 00:50:12,770 --> 00:50:17,380 Jadi bagaimana kod yang kelihatan, Marcus? 1029 00:50:17,380 --> 00:50:21,600 >> PENONTON: Jika anda sudah mendapat nod malloced, anda hanya boleh mengatakan 1030 00:50:21,600 --> 00:50:25,400 new_node-> seterusnya sama null kerana ia perlu pada akhir. 1031 00:50:25,400 --> 00:50:27,510 Atau new_node-> seterusnya sama null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON Hirschhorn: OK. 1033 00:50:27,765 --> 00:50:28,190 Maaf. 1034 00:50:28,190 --> 00:50:35,760 New_node-> seterusnya sama null kerana kita pada akhir. 1035 00:50:35,760 --> 00:50:36,460 Yang tidak meletakkan ia masuk 1036 00:50:36,460 --> 00:50:37,710 Bagaimana kita memasukkannya ke dalam senarai? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Betul. 1039 00:50:46,460 --> 00:50:47,750 Itu hanya menetapkan ia sama dengan. 1040 00:50:47,750 --> 00:50:50,940 Tiada bagaimana kita sebenarnya memasukkannya ke dalam senarai? 1041 00:50:50,940 --> 00:50:54,170 Apa yang menunjuk ke akhir senarai? 1042 00:50:54,170 --> 00:50:56,090 >> PENONTON: Ketua. 1043 00:50:56,090 --> 00:50:57,566 >> JASON Hirschhorn: Maaf? 1044 00:50:57,566 --> 00:50:59,440 >> PENONTON: Ketua menghala ke akhir senarai. 1045 00:50:59,440 --> 00:51:01,480 >> JASON Hirschhorn: Jika tiada apa-apa dalam senarai, kepala menunjuk ke 1046 00:51:01,480 --> 00:51:04,170 akhir senarai. 1047 00:51:04,170 --> 00:51:06,920 Jadi yang akan bekerja untuk kemasukan pertama. 1048 00:51:06,920 --> 00:51:09,810 Bagaimana pula jika ada pasangan perkara dalam senarai? 1049 00:51:09,810 --> 00:51:12,470 Daripada kita tidak mahu untuk menetapkan kepala sama dengan new_node. 1050 00:51:12,470 --> 00:51:13,790 Apa yang kami mahu lakukan di sana? 1051 00:51:13,790 --> 00:51:15,610 Yeah? 1052 00:51:15,610 --> 00:51:16,860 Mungkin sebelumnya. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Yang akan bekerja? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Ingat bahawa sebelum ini hanya penunjuk kepada nod. 1057 00:51:33,050 --> 00:51:34,770 Dan sebelumnya adalah pembolehubah tempatan. 1058 00:51:34,770 --> 00:51:38,080 Jadi baris ini akan menetapkan pembolehubah tempatan, sebelum ini, sama dengan atau 1059 00:51:38,080 --> 00:51:39,380 menunjuk kepada nod baru ini. 1060 00:51:39,380 --> 00:51:41,500 Itu tidak akan benar-benar meletakkan ia dalam senarai kami, walaupun. 1061 00:51:41,500 --> 00:51:44,330 Bagaimana kita memasukkannya ke dalam senarai kami? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> PENONTON: Saya rasa anda lakukan semasa-> seterusnya. 1064 00:51:46,870 --> 00:51:50,186 1065 00:51:50,186 --> 00:51:52,550 >> JASON Hirschhorn: OK. 1066 00:51:52,550 --> 00:51:54,010 curr-> seterusnya. 1067 00:51:54,010 --> 00:51:58,768 Jadi sekali lagi, satu-satunya sebab kita turun di sini ialah, apakah semasa sama? 1068 00:51:58,768 --> 00:51:59,760 >> PENONTON: Sama null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON Hirschhorn: Dan jadi apa berlaku jika kita melakukan null-> akan datang? 1070 00:52:01,790 --> 00:52:02,810 Apa yang kita akan dapat? 1071 00:52:02,810 --> 00:52:04,060 Kami akan mendapat kesalahan segmentasi. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> PENONTON: Do curr sama null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON Hirschhorn: Itu perkara yang sama sebagai prev, walaupun, kerana ada 1075 00:52:10,760 --> 00:52:12,820 pembolehubah tempatan kita menetapkan sama dengan nod baru ini. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Mari kita kembali kepada gambar kami memasukkan sesuatu. 1078 00:52:20,920 --> 00:52:25,500 Katakanlah kita sedang memasukkan di hujung senarai, jadi di sini. 1079 00:52:25,500 --> 00:52:30,010 Kami mempunyai penunjuk semasa itu menunjuk ke nol dan titik sebelumnya 1080 00:52:30,010 --> 00:52:32,800 itu menunjuk ke 8. 1081 00:52:32,800 --> 00:52:35,330 Jadi, apa yang kita perlu untuk mengemas kini, Avi? 1082 00:52:35,330 --> 00:52:36,680 >> PENONTON: Sebelum-> akan datang? 1083 00:52:36,680 --> 00:52:41,980 >> JASON Hirschhorn: Sebelum-> seterusnya adalah apa yang kita mahu untuk mengemaskini kerana itu 1084 00:52:41,980 --> 00:52:44,960 sebenarnya akan memasukkan ia di akhir senarai. 1085 00:52:44,960 --> 00:52:47,220 Kami masih mempunyai satu bug, walaupun, bahawa kita akan menghadapi. 1086 00:52:47,220 --> 00:52:50,090 Apakah pepijat itu? 1087 00:52:50,090 --> 00:52:50,790 Yeah? 1088 00:52:50,790 --> 00:52:53,860 >> PENONTON: Ia akan kembali palsu dalam kes ini? 1089 00:52:53,860 --> 00:52:56,380 >> JASON Hirschhorn: Oh, adalah adalah akan kembali palsu. 1090 00:52:56,380 --> 00:52:57,430 Tetapi ada bug yang lain. 1091 00:52:57,430 --> 00:52:58,930 Oleh itu, kita perlu untuk dimasukkan ke dalam pulangan benar. 1092 00:52:58,930 --> 00:53:01,370 >> PENONTON: Adakah sebelum ini masih sama null di bahagian atas senarai? 1093 00:53:01,370 --> 00:53:03,645 >> JASON Hirschhorn: masih Jadi sebelumnya sama null pada awal-awal. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Jadi bagaimana kita boleh mendapatkan lebih itu? 1096 00:53:10,440 --> 00:53:10,950 Yeah? 1097 00:53:10,950 --> 00:53:15,280 >> PENONTON: Saya rasa anda boleh buat cek sebelum gelung sementara untuk melihat jika ia 1098 00:53:15,280 --> 00:53:16,610 senarai main kosong. 1099 00:53:16,610 --> 00:53:17,000 >> JASON Hirschhorn: OK. 1100 00:53:17,000 --> 00:53:17,710 Jadi mari kita pergi sini. 1101 00:53:17,710 --> 00:53:18,530 Adakah cek. 1102 00:53:18,530 --> 00:53:19,380 Jika - 1103 00:53:19,380 --> 00:53:20,770 >> PENONTON: Jadi, jika kepala sama sama null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON Hirschhorn: Jika kepala sama sama null - 1106 00:53:26,320 --> 00:53:27,790 yang akan memberitahu kita jika ia adalah satu senarai kosong. 1107 00:53:27,790 --> 00:53:31,090 >> PENONTON: Dan kemudian anda melakukan kepala sama baru. 1108 00:53:31,090 --> 00:53:34,740 >> JASON Hirschhorn: Ketua sama new_node? 1109 00:53:34,740 --> 00:53:35,730 Dan apa lagi yang perlu kita lakukan? 1110 00:53:35,730 --> 00:53:37,020 >> PENONTON: Dan kemudian anda kembali benar. 1111 00:53:37,020 --> 00:53:37,535 >> JASON Hirschhorn: Tidak cukup. 1112 00:53:37,535 --> 00:53:38,785 Kami hilang satu langkah. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> PENONTON: New_node seterusnya mempunyai untuk menunjuk kepada nol. 1115 00:53:43,710 --> 00:53:44,570 >> JASON Hirschhorn: Tepat, Alden. 1116 00:53:44,570 --> 00:53:46,600 Dan kemudian kita boleh kembali benar. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Tetapi ia masih idea yang baik untuk melakukan perkara-perkara di akhir senarai, bukan? 1119 00:53:51,630 --> 00:53:51,950 Baiklah. 1120 00:53:51,950 --> 00:53:54,450 Kita masih sebenarnya mungkin mendapatkan ke akhir senarai. 1121 00:53:54,450 --> 00:53:57,870 Jadi adalah baik kod ini jika kita di berakhir senarai dan terdapat beberapa 1122 00:53:57,870 --> 00:53:59,120 perkara dalam senarai? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Betul? 1125 00:54:02,040 --> 00:54:03,540 Kerana kita masih mempunyai idea Marcus ini. 1126 00:54:03,540 --> 00:54:06,870 Kita mungkin keluar gelung ini kerana kami pada akhir senarai. 1127 00:54:06,870 --> 00:54:09,308 Jadi kita masih mahu ini kod turun di sini? 1128 00:54:09,308 --> 00:54:10,520 >> PENONTON: Ya. 1129 00:54:10,520 --> 00:54:11,000 >> JASON Hirschhorn: Yeah. 1130 00:54:11,000 --> 00:54:14,190 Dan apa yang kita perlu menukar ini kepada? 1131 00:54:14,190 --> 00:54:15,440 Benar. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Adakah yang baik bunyi kepada semua orang setakat ini? 1134 00:54:21,640 --> 00:54:22,420 Sesiapa mempunyai apa-apa - 1135 00:54:22,420 --> 00:54:23,480 Avi, adakah anda mempunyai sesuatu untuk menambah? 1136 00:54:23,480 --> 00:54:23,920 >> PENONTON: No 1137 00:54:23,920 --> 00:54:25,276 >> JASON Hirschhorn: OK. 1138 00:54:25,276 --> 00:54:27,010 Oleh itu, kita telah membuat beberapa perubahan. 1139 00:54:27,010 --> 00:54:29,540 Kami telah membuat semak ini sebelum kita masuk untuk senarai main kosong. 1140 00:54:29,540 --> 00:54:31,790 Oleh itu, kita dijaga senarai main kosong. 1141 00:54:31,790 --> 00:54:35,500 Dan di sini kita menjaga memasukkan sesuatu yang pada akhir senarai. 1142 00:54:35,500 --> 00:54:38,930 Jadi ia kelihatan seperti ini pengambilan gelung sementara menjaga perkara-perkara di antara, 1143 00:54:38,930 --> 00:54:41,920 di suatu tempat dalam senarai jika terdapat adalah perkara-perkara dalam senarai. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Marilah kita menjalankan program ini sekali lagi. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Tidak berjaya. 1148 00:54:50,755 --> 00:54:52,190 >> PENONTON: Anda tidak berjaya. 1149 00:54:52,190 --> 00:54:53,940 >> JASON Hirschhorn: Oh, Saya tidak berjaya. 1150 00:54:53,940 --> 00:54:56,250 Titik yang baik, Michael. 1151 00:54:56,250 --> 00:54:57,500 Mari kita menambah make dikaitkan. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Talian 87 ada ralat. 1154 00:55:04,830 --> 00:55:05,420 Talian 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, ini adalah baris yang anda memberikan saya. 1156 00:55:06,600 --> 00:55:08,962 Apa yang salah? 1157 00:55:08,962 --> 00:55:10,710 >> PENONTON: Ia perlu untuk nol. 1158 00:55:10,710 --> 00:55:11,000 >> JASON Hirschhorn: Cemerlang. 1159 00:55:11,000 --> 00:55:11,630 Tepat betul. 1160 00:55:11,630 --> 00:55:13,290 Ia harus null. 1161 00:55:13,290 --> 00:55:15,210 Mari kita membuat semula. 1162 00:55:15,210 --> 00:55:17,220 Menyusun. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Mari kita memasukkan tiga. 1165 00:55:19,400 --> 00:55:20,570 Insert telah berjaya. 1166 00:55:20,570 --> 00:55:21,660 Mari kita mencetak. 1167 00:55:21,660 --> 00:55:23,590 Oh, jika hanya kita boleh cek. 1168 00:55:23,590 --> 00:55:25,500 Tetapi kita telah tidak dilakukan yang mencetak fungsi yet. 1169 00:55:25,500 --> 00:55:27,840 Mari kita memasukkan sesuatu yang lain. 1170 00:55:27,840 --> 00:55:29,090 Apa yang patut kita masukkan? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> PENONTON: Tujuh. 1173 00:55:31,940 --> 00:55:33,340 >> JASON Hirschhorn: Tujuh? 1174 00:55:33,340 --> 00:55:34,590 >> PENONTON: Ya. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON Hirschhorn: Kami mempunyai kesalahan seg. 1177 00:55:39,780 --> 00:55:43,760 Oleh itu, kita mendapat satu, namun jelas tidak boleh mendapatkan dua. 1178 00:55:43,760 --> 00:55:45,690 Ia adalah 05:07. 1179 00:55:45,690 --> 00:55:48,370 Jadi kita boleh debug ini selama tiga minit. 1180 00:55:48,370 --> 00:55:51,240 Tetapi saya akan meninggalkan kita di sini dan bergerak ke hash jadual. 1181 00:55:51,240 --> 00:55:54,290 Tetapi sekali lagi, jawapan untuk kod ini Saya akan email kepada anda dalam sedikit. 1182 00:55:54,290 --> 00:55:55,440 Kami amat hampir dengannya. 1183 00:55:55,440 --> 00:55:58,300 Saya sangat menggalakkan anda untuk memikirkan apa yang berlaku di sini dan membaikinya. 1184 00:55:58,300 --> 00:56:02,400 Jadi saya akan e-mel kepada anda kod ini sebagai juga ditambah penyelesaian - 1185 00:56:02,400 --> 00:56:03,670 mungkin penyelesaian di kemudian hari. 1186 00:56:03,670 --> 00:56:05,110 Pertama kod ini. 1187 00:56:05,110 --> 00:56:08,290 >> Perkara lain yang saya mahu lakukan sebelum kita penamat adalah kami tidak dibebaskan apa-apa. 1188 00:56:08,290 --> 00:56:10,370 Jadi saya mahu menunjukkan kepada anda apa valgrind kelihatan seperti. 1189 00:56:10,370 --> 00:56:14,310 Jika kita menjalankan sempadan valgrind program kami,. / berkaitan. 1190 00:56:14,310 --> 00:56:22,540 Sekali lagi, menurut slaid ini, kita perlu menjalankan valgrind dengan beberapa jenis 1191 00:56:22,540 --> 00:56:26,410 pilihan, dalam kes ini - Kebocoran-cek = penuh. 1192 00:56:26,410 --> 00:56:27,660 Jadi mari kita menulis valgrind - Kebocoran-cek = penuh. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 Jadi ini akan berjalan valgrind pada program kami. 1195 00:56:35,080 --> 00:56:37,000 Dan kini program ini benar-benar berjalan. 1196 00:56:37,000 --> 00:56:40,190 Jadi kita akan menjalankannya seperti sebelum ini, meletakkan sesuatu masuk 1197 00:56:40,190 --> 00:56:40,830 Saya akan dimasukkan ke dalam tiga. 1198 00:56:40,830 --> 00:56:41,790 Bahawa kerja-kerja. 1199 00:56:41,790 --> 00:56:43,202 Saya tidak akan cuba untuk dimasukkan ke dalam sesuatu lain kerana kita akan 1200 00:56:43,202 --> 00:56:44,710 mendapatkan palsu seg dalam kes itu. 1201 00:56:44,710 --> 00:56:46,700 Jadi, saya hanya akan berhenti. 1202 00:56:46,700 --> 00:56:50,160 >> Dan sekarang anda melihat ke bawah di sini bocor dan ringkasan timbunan. 1203 00:56:50,160 --> 00:56:52,310 Ini adalah perkara-perkara yang baik yang anda mahu lihat. 1204 00:56:52,310 --> 00:56:56,780 Jadi ringkasan timbunan - ia berkata, digunakan di pintu keluar - lapan bait dalam satu blok. 1205 00:56:56,780 --> 00:56:58,370 Yang satu blok adalah nod kita malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, anda berkata sebelum nod adalah lapan gigitan kerana ia mempunyai integer 1207 00:57:02,230 --> 00:57:02,680 dan penunjuk. 1208 00:57:02,680 --> 00:57:04,550 Jadi, itu nod kami. 1209 00:57:04,550 --> 00:57:08,170 Dan kemudian ia mengatakan kita digunakan malloc tujuh kali dan kami dibebaskan 1210 00:57:08,170 --> 00:57:08,940 sesuatu enam kali. 1211 00:57:08,940 --> 00:57:13,680 Tapi kami tidak pernah dipanggil percuma, jadi saya tidak mempunyai idea apa ini sedang bercakap tentang. 1212 00:57:13,680 --> 00:57:18,490 >> Tetapi cukuplah untuk mengatakan bahawa apabila anda berjalan program, malloc yang disebut 1213 00:57:18,490 --> 00:57:20,330 di beberapa tempat lain yang kami tidak perlu bimbang. 1214 00:57:20,330 --> 00:57:22,460 Jadi malloc telah mungkin dipanggil di beberapa tempat. 1215 00:57:22,460 --> 00:57:24,480 Kita tidak perlu bimbang di mana. 1216 00:57:24,480 --> 00:57:26,240 Tetapi ini adalah benar-benar kami. 1217 00:57:26,240 --> 00:57:27,380 Ini sejajar pertama adalah kita. 1218 00:57:27,380 --> 00:57:28,320 Kami meninggalkan blok itu. 1219 00:57:28,320 --> 00:57:30,330 Dan anda boleh melihat bahawa di sini dalam ringkasan kebocoran. 1220 00:57:30,330 --> 00:57:31,950 Masih dapat dihubungi - 1221 00:57:31,950 --> 00:57:32,930 lapan bait dalam satu blok. 1222 00:57:32,930 --> 00:57:34,100 Ini bermakna memori yang - 1223 00:57:34,100 --> 00:57:35,730 kami telah bocor memori itu. 1224 00:57:35,730 --> 00:57:37,570 Pasti hilang - 1225 00:57:37,570 --> 00:57:38,770 sesuatu yang hilang selama-lamanya. 1226 00:57:38,770 --> 00:57:40,590 Secara umumnya, anda tidak akan melihat apa-apa di sana. 1227 00:57:40,590 --> 00:57:44,780 Masih dapat dihubungi secara umumnya di mana anda akan melihat perkara-perkara, di mana anda akan mahu 1228 00:57:44,780 --> 00:57:48,900 untuk melihat untuk melihat apa kod sekiranya anda telah dibebaskan tetapi anda terlupa untuk membebaskan. 1229 00:57:48,900 --> 00:57:53,170 >> Dan kemudian jika ini tidak berlaku, jika kita lakukan segala-galanya percuma, 1230 00:57:53,170 --> 00:57:54,360 kita boleh pastikan. 1231 00:57:54,360 --> 00:57:57,330 Mari kita menjalankan program ini tidak meletakkan dalam apa-apa. 1232 00:57:57,330 --> 00:57:59,800 Anda akan melihat ke bawah di sini digunakan di pintu keluar - 1233 00:57:59,800 --> 00:58:01,310 sifar sifar bait dalam blok. 1234 00:58:01,310 --> 00:58:06,310 Ini bermakna kita mempunyai apa yang tinggal apabila program ini keluar. 1235 00:58:06,310 --> 00:58:12,090 Jadi sebelum perubahan dalam pset6, jalankan valgrind dan pastikan anda tidak mempunyai 1236 00:58:12,090 --> 00:58:15,310 apa-apa memori bocor dalam program anda. 1237 00:58:15,310 --> 00:58:17,910 Jika anda mempunyai sebarang soalan dengan valgrind, berasa bebas untuk mendekati. 1238 00:58:17,910 --> 00:58:18,700 Tetapi ini adalah bagaimana anda menggunakannya. 1239 00:58:18,700 --> 00:58:20,890 Sangat mudah - lihat jika anda mempunyai digunakan di pintu keluar - 1240 00:58:20,890 --> 00:58:22,270 apa-apa dalam mana-mana bait blok. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> Oleh itu, kita telah bekerja di nod memasukkan. 1243 00:58:29,580 --> 00:58:33,840 Saya mempunyai dua fungsi lain di sini - mencetak nod nod dan percuma. 1244 00:58:33,840 --> 00:58:37,780 Sekali lagi, ini adalah fungsi yang akan menjadi baik untuk anda berlatih 1245 00:58:37,780 --> 00:58:40,990 kerana mereka akan membantu anda bukan sahaja dengan senaman ini sampel tetapi juga 1246 00:58:40,990 --> 00:58:42,180 kepada masalah yang ditetapkan. 1247 00:58:42,180 --> 00:58:44,230 Mereka map di agak rapat kepada perkara-perkara anda akan perlu lakukan dalam 1248 00:58:44,230 --> 00:58:45,010 masalah ditetapkan. 1249 00:58:45,010 --> 00:58:47,640 Tetapi saya ingin memastikan kita sentuh pada segala-galanya. 1250 00:58:47,640 --> 00:58:50,400 Dan jadual hash juga penting untuk apa yang kita lakukan dalam bahagian ini 1251 00:58:50,400 --> 00:58:51,980 minggu - atau dalam masalah yang ditetapkan. 1252 00:58:51,980 --> 00:58:55,200 >> Jadi, kita akan untuk menyelesaikan bahagian bercakap tentang jadual hash. 1253 00:58:55,200 --> 00:58:58,140 Jika anda perasan saya membuat jadual hash sedikit. 1254 00:58:58,140 --> 00:59:00,020 Itu bukan apa yang kita bercakap kira-kira, namun. 1255 00:59:00,020 --> 00:59:03,540 Kita bercakap tentang yang berbeza jenis jadual hash. 1256 00:59:03,540 --> 00:59:07,300 Dan pada teras, meja hash yang adalah tidak lebih daripada satu 1257 00:59:07,300 --> 00:59:08,860 array ditambah dengan fungsi hash. 1258 00:59:08,860 --> 00:59:11,150 Kami akan bercakap untuk sedikit hanya untuk membuat semua orang pasti memahami apa yang 1259 00:59:11,150 --> 00:59:12,110 fungsi hash adalah. 1260 00:59:12,110 --> 00:59:15,420 Dan saya memberitahu anda sekarang bahawa ia adalah tidak lebih daripada dua perkara - 1261 00:59:15,420 --> 00:59:18,590 pelbagai dan fungsi hash. 1262 00:59:18,590 --> 00:59:20,716 Dan di sini adalah langkah-langkah melalui yang ini beroperasi. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Ada pelbagai kami. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Ada fungsi kami. 1267 00:59:39,460 --> 00:59:43,180 Khususnya, fungsi hash perlu melakukan beberapa perkara dengan ini. 1268 00:59:43,180 --> 00:59:45,040 Saya akan bercakap secara khusus tentang masalah ini ditetapkan. 1269 00:59:45,040 --> 00:59:46,450 Ia mungkin akan mengambil rentetan. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 Dan apa yang ia akan kembali? 1272 00:59:51,770 --> 00:59:52,640 Apakah jenis data? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 Fungsi hash anda kembali? 1275 00:59:55,760 --> 00:59:58,760 Integer. 1276 00:59:58,760 --> 01:00:01,700 Jadi ini adalah apa hash meja terdiri daripada - 1277 01:00:01,700 --> 01:00:05,430 jadual dalam bentuk array dan fungsi hash. 1278 01:00:05,430 --> 01:00:06,010 Bagaimana ia berfungsi? 1279 01:00:06,010 --> 01:00:07,300 Ia berfungsi dalam tiga langkah. 1280 01:00:07,300 --> 01:00:08,740 Kami memberikan kunci. 1281 01:00:08,740 --> 01:00:11,470 Dalam kes ini, kami akan memberikan rentetan. 1282 01:00:11,470 --> 01:00:18,140 Kami menyeru fungsi hash per satu langkah pada kekunci yang dan kita mendapat nilai. 1283 01:00:18,140 --> 01:00:20,310 >> Secara khusus, kami akan mengatakan kita akan mendapat integer. 1284 01:00:20,310 --> 01:00:25,630 Integer itu, terdapat sangat khusus had kepada apa yang integer yang boleh. 1285 01:00:25,630 --> 01:00:28,880 Dalam contoh ini, pelbagai kami adalah saiz tiga. 1286 01:00:28,880 --> 01:00:32,330 Jadi apa nombor boleh integer yang berkenaan. 1287 01:00:32,330 --> 01:00:35,970 Apakah julat nilai yang sah untuk integer yang, jenis pulangan ini 1288 01:00:35,970 --> 01:00:37,220 hash fungsi? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Zero, satu dan dua. 1291 01:00:42,110 --> 01:00:46,060 Titik fungsi hash ini adalah untuk memikirkan tempat dalam array 1292 01:00:46,060 --> 01:00:47,790 di mana utama kami akan. 1293 01:00:47,790 --> 01:00:51,290 Terdapat hanya tiga mungkin tempat-tempat di sini - 1294 01:00:51,290 --> 01:00:52,130 sifar, satu, atau dua. 1295 01:00:52,130 --> 01:00:55,360 Jadi fungsi ini lebih baik pulangan sifar, satu, atau dua. 1296 01:00:55,360 --> 01:00:58,740 Sesetengah indice sah dalam pelbagai ini. 1297 01:00:58,740 --> 01:01:02,770 >> Dan kemudian bergantung di mana ia kembali, anda boleh lihat ada pelbagai terbuka 1298 01:01:02,770 --> 01:01:03,730 braket nilai. 1299 01:01:03,730 --> 01:01:05,800 Itulah di mana kita meletakkan kunci. 1300 01:01:05,800 --> 01:01:11,280 Oleh itu, kita buang dalam labu, kita keluar sifar. 1301 01:01:11,280 --> 01:01:15,540 Pada pelbagai kurungan 0, kita meletakkan labu. 1302 01:01:15,540 --> 01:01:21,070 Kita buang dalam kucing, kita keluar satu. 1303 01:01:21,070 --> 01:01:24,110 Kami meletakkan kucing di satu. 1304 01:01:24,110 --> 01:01:25,480 Kami dimasukkan ke dalam labah-labah. 1305 01:01:25,480 --> 01:01:26,710 Kita keluar dua. 1306 01:01:26,710 --> 01:01:30,200 Kami meletakkan labah-labah di pelbagai kurungan dua. 1307 01:01:30,200 --> 01:01:32,300 Ia akan menjadi begitu baik jika ia bekerja seperti itu. 1308 01:01:32,300 --> 01:01:35,570 Tetapi malangnya, seperti yang kita akan lihat, ia agak lebih rumit. 1309 01:01:35,570 --> 01:01:37,570 >> Sebelum kita sampai ke sana, apa-apa soalan mengenai asas ini 1310 01:01:37,570 --> 01:01:38,820 set-up jadual hash? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 Ini adalah imej betul-betul apa yang kita menarik di papan. 1313 01:01:51,940 --> 01:01:55,420 Tetapi oleh kerana kita menarik ke atas pesawat, saya saya tidak akan pergi ke dalamnya lanjut. 1314 01:01:55,420 --> 01:02:00,430 Pada dasarnya kunci, kotak hitam ajaib - atau dalam kes ini, kotak Teal - daripada 1315 01:02:00,430 --> 01:02:02,410 fungsi hash meletakkan mereka dalam baldi. 1316 01:02:02,410 --> 01:02:04,690 Dan dalam contoh ini kita tidak meletakkan nama. 1317 01:02:04,690 --> 01:02:07,880 Kami meletakkan telefon yang bersekutu beberapa nama dalam baldi. 1318 01:02:07,880 --> 01:02:10,430 Tetapi anda boleh dengan baik hanya meletakkan nama dalam baldi. 1319 01:02:10,430 --> 01:02:12,950 >> Ini hanya gambaran apa kita menarik di papan. 1320 01:02:12,950 --> 01:02:14,460 Kami mempunyai kesulitan yang berpotensi, walaupun. 1321 01:02:14,460 --> 01:02:17,470 Dan terdapat dua khususnya slaid yang saya mahu pergi ke. 1322 01:02:17,470 --> 01:02:20,230 Yang pertama adalah kira-kira fungsi hash. 1323 01:02:20,230 --> 01:02:22,620 Jadi saya bertanya, apa yang membuat fungsi hash yang baik? 1324 01:02:22,620 --> 01:02:24,220 Saya memberi dua jawapan. 1325 01:02:24,220 --> 01:02:26,630 Yang pertama adalah bahawa ia berketentuan. 1326 01:02:26,630 --> 01:02:29,660 Dalam konteks fungsi hash, apakah ini bermakna? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Ya? 1329 01:02:39,282 --> 01:02:42,850 >> PENONTON: Ujian ini dapat mengesan indeks dalam masa berterusan? 1330 01:02:42,850 --> 01:02:43,810 >> JASON Hirschhorn: Itu bukan apa yang dimaksudkan. 1331 01:02:43,810 --> 01:02:44,725 Tetapi itu tekaan yang baik. 1332 01:02:44,725 --> 01:02:46,100 Orang lain mempunyai meneka untuk apa ini bermakna? 1333 01:02:46,100 --> 01:02:47,780 Bahawa fungsi hash yang baik adalah berketentuan? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> PENONTON: Bahawa kunci hanya boleh dipetakan ke satu tempat dalam jadual hash. 1336 01:02:51,680 --> 01:02:53,070 >> JASON Hirschhorn: Itu betul-betul betul. 1337 01:02:53,070 --> 01:02:57,430 Setiap kali anda masukkan ke dalam labu, ia sentiasa kembali sifar. 1338 01:02:57,430 --> 01:03:01,660 Jika anda masukkan ke dalam labu dan hash anda mengembalikan sifar tetapi mempunyai 1339 01:03:01,660 --> 01:03:06,060 kebarangkalian kembali sesuatu lain yang lebih besar daripada sifar - 1340 01:03:06,060 --> 01:03:09,280 jadi mungkin ia boleh kembali satu kadang-kadang atau dua waktu yang lain - 1341 01:03:09,280 --> 01:03:11,100 yang tidak fungsi hash yang baik. 1342 01:03:11,100 --> 01:03:11,800 Anda betul-betul betul. 1343 01:03:11,800 --> 01:03:15,680 Fungsi hash anda perlu mengembalikan integer tepat sama, dalam kes ini, untuk 1344 01:03:15,680 --> 01:03:17,780 rentetan tepat sama. 1345 01:03:17,780 --> 01:03:22,210 >> Mungkin ia mengembalikan integer yang tepat sama rentetan yang sama tepat 1346 01:03:22,210 --> 01:03:24,430 tanpa mengira permodalan. 1347 01:03:24,430 --> 01:03:27,980 Tetapi dalam kes itu ia masih berketentuan kerana pelbagai perkara 1348 01:03:27,980 --> 01:03:29,350 dipetakan ke nilai yang sama. 1349 01:03:29,350 --> 01:03:30,170 Itu denda. 1350 01:03:30,170 --> 01:03:32,615 Selagi hanya ada satu output input yang diberikan. 1351 01:03:32,615 --> 01:03:35,630 1352 01:03:35,630 --> 01:03:36,350 >> OK. 1353 01:03:36,350 --> 01:03:38,340 Perkara kedua ialah ia mengembalikan indeks sah. 1354 01:03:38,340 --> 01:03:40,220 Kami dibesarkan yang lebih awal. 1355 01:03:40,220 --> 01:03:41,860 Fungsi hash - 1356 01:03:41,860 --> 01:03:43,710 oh boy - 1357 01:03:43,710 --> 01:03:46,840 fungsi hash perlu kembali indeks sah. 1358 01:03:46,840 --> 01:03:47,740 Supaya berkata - 1359 01:03:47,740 --> 01:03:48,990 mari kita kembali ke contoh ini. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Fungsi hash saya yang diambil kira sehingga huruf dalam perkataan. 1362 01:03:57,540 --> 01:03:58,380 Itulah fungsi hash. 1363 01:03:58,380 --> 01:03:59,740 Dan mengembalikan integer itu. 1364 01:03:59,740 --> 01:04:04,280 Jadi jika saya mempunyai perkataan A, ia akan kembali satu. 1365 01:04:04,280 --> 01:04:06,900 Dan ia akan meletakkan A di sini. 1366 01:04:06,900 --> 01:04:09,430 Bagaimana jika saya dimasukkan ke dalam kelawar perkataan? 1367 01:04:09,430 --> 01:04:11,310 Ia akan kembali tiga. 1368 01:04:11,310 --> 01:04:12,560 Di manakah kelawar pergi? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> Ia tidak patut. 1371 01:04:19,750 --> 01:04:21,000 Tetapi ia perlu pergi ke suatu tempat. 1372 01:04:21,000 --> 01:04:23,340 Ini adalah jadual hash saya selepas semua, dan semua perlu pergi ke suatu tempat. 1373 01:04:23,340 --> 01:04:24,590 Jadi di mana kelawar harus pergi? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Mana-mana pemikiran? 1376 01:04:28,710 --> 01:04:29,450 Meneka? 1377 01:04:29,450 --> 01:04:30,280 Tekaan yang baik? 1378 01:04:30,280 --> 01:04:31,220 >> PENONTON: Zero. 1379 01:04:31,220 --> 01:04:32,120 >> JASON Hirschhorn: Kenapa sifar? 1380 01:04:32,120 --> 01:04:35,990 >> PENONTON: Kerana tiga modulo tiga adalah sifar? 1381 01:04:35,990 --> 01:04:38,620 >> JASON Hirschhorn: Tiga modulo tiga adalah sifar. 1382 01:04:38,620 --> 01:04:40,810 Itu adalah tekaan yang besar, dan itulah yang betul. 1383 01:04:40,810 --> 01:04:43,870 Jadi dalam kes ini sepatutnya mungkin pergi pada sifar. 1384 01:04:43,870 --> 01:04:51,080 Jadi cara yang baik untuk memastikan bahawa hash ini fungsi hanya mengembalikan indeks sah 1385 01:04:51,080 --> 01:04:54,580 untuk modulo ia oleh saiz meja. 1386 01:04:54,580 --> 01:04:57,360 Jika anda modulo apa pulangan ini dengan tiga, anda sentiasa akan mendapat 1387 01:04:57,360 --> 01:05:00,930 sesuatu antara sifar, satu, dan dua. 1388 01:05:00,930 --> 01:05:05,160 Dan jika ini sentiasa mengembalikan tujuh, dan anda sentiasa modulo oleh tiga, anda 1389 01:05:05,160 --> 01:05:06,030 sentiasa akan mendapat perkara yang sama. 1390 01:05:06,030 --> 01:05:09,270 >> Jadi ia masih berketentuan jika anda modulo. 1391 01:05:09,270 --> 01:05:11,420 Tetapi yang akan memastikan bahawa anda tidak pernah mendapat sesuatu - 1392 01:05:11,420 --> 01:05:12,940 industri tidak sah. 1393 01:05:12,940 --> 01:05:16,840 Secara amnya, modulo yang sepatutnya berlaku dalam fungsi hash anda. 1394 01:05:16,840 --> 01:05:18,240 Jadi anda tidak perlu bimbang tentang perkara ini. 1395 01:05:18,240 --> 01:05:20,555 Anda hanya boleh memastikan bahawa ini adalah indice yang sah. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Sebarang pertanyaan mengenai perkara ini potensi perangkap? 1398 01:05:26,700 --> 01:05:36,590 1399 01:05:36,590 --> 01:05:39,060 >> OK. 1400 01:05:39,060 --> 01:05:40,290 Dan ada kita pergi. 1401 01:05:40,290 --> 01:05:42,890 Seterusnya perangkap yang berpotensi, dan ini adalah salah satu yang besar. 1402 01:05:42,890 --> 01:05:46,880 Bagaimana jika dua kunci peta kepada nilai yang sama? 1403 01:05:46,880 --> 01:05:49,350 Jadi, terdapat dua cara untuk menguruskannya. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Yang pertama dipanggil linear menyelesaikan sesuatu, yang saya 1406 01:05:56,020 --> 01:05:57,300 tidak akan pergi ke atas. 1407 01:05:57,300 --> 01:06:01,120 Tetapi anda perlu biasa dengan bagaimana yang bekerja dan apa yang. 1408 01:06:01,120 --> 01:06:05,610 >> Yang kedua saya akan pergi ke atas kerana itu adalah salah satu yang ramai 1409 01:06:05,610 --> 01:06:08,290 orang mungkin akan berakhir membuat keputusan untuk digunakan dalam set masalah mereka. 1410 01:06:08,290 --> 01:06:09,820 Sudah tentu, anda tidak perlu. 1411 01:06:09,820 --> 01:06:15,280 Tetapi bagi set masalah, ramai orang cenderung untuk memilih untuk membuat jadual hash 1412 01:06:15,280 --> 01:06:17,950 dengan chaining berasingan untuk melaksanakan kamus mereka. 1413 01:06:17,950 --> 01:06:21,390 Jadi, kita akan kembali apa yang ia bermakna untuk membuat jadual hash dengan 1414 01:06:21,390 --> 01:06:23,890 chaining berasingan. 1415 01:06:23,890 --> 01:06:26,260 >> Jadi saya dimasukkan ke dalam labu. 1416 01:06:26,260 --> 01:06:29,560 Ia akan kembali sifar. 1417 01:06:29,560 --> 01:06:31,410 Dan saya meletakkan labu di sini. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Kemudian saya dimasukkan ke dalam - 1420 01:06:37,930 --> 01:06:39,922 apa yang satu lagi perkara Halloween bertemakan? 1421 01:06:39,922 --> 01:06:42,200 >> PENONTON: Gula-gula. 1422 01:06:42,200 --> 01:06:42,770 >> JASON Hirschhorn: Gula-gula! 1423 01:06:42,770 --> 01:06:43,910 Itulah salah satu yang besar. 1424 01:06:43,910 --> 01:06:47,760 Saya dimasukkan ke dalam gula-gula, dan gula-gula juga memberi saya sifar. 1425 01:06:47,760 --> 01:06:49,350 Apa yang saya buat? 1426 01:06:49,350 --> 01:06:51,940 Apa-apa idea? 1427 01:06:51,940 --> 01:06:53,940 Kerana anda semua jenis tahu apa chaining berasingan. 1428 01:06:53,940 --> 01:06:55,190 Jadi apa-apa idea apa yang perlu dilakukan? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Yeah. 1431 01:06:59,110 --> 01:07:03,810 >> PENONTON: Meletakkan tali sebenarnya dalam jadual hash. 1432 01:07:03,810 --> 01:07:08,910 >> JASON Hirschhorn: Jadi kita akan menarik idea yang baik di sini. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> PENONTON: Ada hashtable yang [Didengar] 1435 01:07:12,290 --> 01:07:16,640 penunjuk yang menunjuk ke permulaan senarai. 1436 01:07:16,640 --> 01:07:20,930 Dan kemudian telah menjadi labu nilai pertama dalam senarai dikaitkan dan gula-gula menjadi 1437 01:07:20,930 --> 01:07:22,800 nilai kedua dalam senarai berkaitan. 1438 01:07:22,800 --> 01:07:23,420 >> JASON Hirschhorn: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, yang cemerlang. 1440 01:07:24,670 --> 01:07:26,160 Saya akan memecahkan bahawa ke bawah. 1441 01:07:26,160 --> 01:07:28,890 Marcus berkata tidak menulis ganti labu. 1442 01:07:28,890 --> 01:07:30,660 Itu akan menjadi buruk. 1443 01:07:30,660 --> 01:07:33,640 Jangan letakkan gula-gula di tempat lain. 1444 01:07:33,640 --> 01:07:35,390 Kami akan meletakkan mereka di kedua-dua sifar. 1445 01:07:35,390 --> 01:07:37,770 Tetapi kita akan menangani meletakkan mereka pada sifar oleh 1446 01:07:37,770 --> 01:07:39,395 mewujudkan satu senarai pada sifar. 1447 01:07:39,395 --> 01:07:42,430 Dan kita akan membuat senarai semua yang dipetakan kepada sifar. 1448 01:07:42,430 --> 01:07:47,960 Dan cara terbaik kita belajar untuk mewujudkan senarai yang boleh membesar dan mengecut 1449 01:07:47,960 --> 01:07:49,840 dinamik tidak termasuk dalam pelbagai lain. 1450 01:07:49,840 --> 01:07:51,510 Jadi bukan pelbagai multi-dimensi. 1451 01:07:51,510 --> 01:07:54,080 Tetapi untuk hanya membuat senarai berpaut. 1452 01:07:54,080 --> 01:07:55,330 >> Jadi apa yang dicadangkan - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Saya akan mendapatkan yang baru - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 adalah mewujudkan pelbagai dengan petunjuk, pelbagai petunjuk. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Apa-apa idea atau bayangan apa jenis yang petunjuk ini harus? 1459 01:08:24,180 --> 01:08:26,290 Marcus? 1460 01:08:26,290 --> 01:08:27,250 >> PENONTON: Penunjuk untuk - 1461 01:08:27,250 --> 01:08:28,609 >> JASON Hirschhorn: Kerana anda berkata senarai berpaut, jadi - 1462 01:08:28,609 --> 01:08:29,520 >> PENONTON: petunjuk Node? 1463 01:08:29,520 --> 01:08:30,670 >> JASON Hirschhorn: petunjuk Nod. 1464 01:08:30,670 --> 01:08:32,830 Jika perkara-perkara dalam kita dikaitkan senarai adalah nod maka mereka 1465 01:08:32,830 --> 01:08:34,370 harus petunjuk nod. 1466 01:08:34,370 --> 01:08:35,939 Dan apa yang mereka menyamai mulanya? 1467 01:08:35,939 --> 01:08:36,990 >> PENONTON: Null. 1468 01:08:36,990 --> 01:08:38,240 >> JASON Hirschhorn: Null. 1469 01:08:38,240 --> 01:08:44,540 1470 01:08:44,540 --> 01:08:46,080 Jadi ada perkara kosong kami. 1471 01:08:46,080 --> 01:08:47,170 Pulangan Labu sifar. 1472 01:08:47,170 --> 01:08:48,569 Apa yang kami lakukan? 1473 01:08:48,569 --> 01:08:49,609 Berjalan saya melaluinya? 1474 01:08:49,609 --> 01:08:50,810 Sebenarnya, Marcus telah memberikan saya. 1475 01:08:50,810 --> 01:08:52,439 Orang lain berjalan saya melaluinya. 1476 01:08:52,439 --> 01:08:54,760 Apa yang kita lakukan apabila kita - 1477 01:08:54,760 --> 01:08:56,609 ini kelihatan hampir sama dengan apa yang kita hanya melakukan. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> PENONTON: saya akan mengambil tekaan. 1480 01:08:59,090 --> 01:09:01,250 Oleh itu, apabila anda mendapat gula-gula. 1481 01:09:01,250 --> 01:09:01,640 >> JASON Hirschhorn: Yeah. 1482 01:09:01,640 --> 01:09:03,120 Nah, kita mendapat labu. 1483 01:09:03,120 --> 01:09:03,870 Mari kita mendapat satu pertama kami. 1484 01:09:03,870 --> 01:09:04,324 Kami mendapat labu. 1485 01:09:04,324 --> 01:09:04,779 >> PENONTON: OK. 1486 01:09:04,779 --> 01:09:05,880 Pulangan Labu sifar. 1487 01:09:05,880 --> 01:09:08,770 Jadi anda meletakkannya dalam itu. 1488 01:09:08,770 --> 01:09:10,810 Atau sebenarnya, anda meletakkannya dalam senarai yang dipautkan. 1489 01:09:10,810 --> 01:09:13,550 >> JASON Hirschhorn: Bagaimana kita memasukkannya ke dalam senarai dikaitkan? 1490 01:09:13,550 --> 01:09:15,479 >> PENONTON: Oh, syntax? 1491 01:09:15,479 --> 01:09:16,240 >> JASON Hirschhorn: Hanya berjalan - 1492 01:09:16,240 --> 01:09:16,740 berkata lebih. 1493 01:09:16,740 --> 01:09:19,310 Apa yang kami lakukan? 1494 01:09:19,310 --> 01:09:22,100 >> PENONTON: Anda hanya memasukkan sebagai nod pertama. 1495 01:09:22,100 --> 01:09:22,675 >> JASON Hirschhorn: OK. 1496 01:09:22,675 --> 01:09:29,069 Jadi kita mempunyai nod kami, labu. 1497 01:09:29,069 --> 01:09:31,560 Dan sekarang bagaimana saya memasukkan ia? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> PENONTON: Anda menyerahhakkan kepada penunjuk. 1500 01:09:37,090 --> 01:09:37,970 >> JASON Hirschhorn: Yang pointer? 1501 01:09:37,970 --> 01:09:39,620 >> PENONTON: Penunjuk pada sifar. 1502 01:09:39,620 --> 01:09:41,420 >> JASON Hirschhorn: Jadi di mana tidak ketika ini? 1503 01:09:41,420 --> 01:09:42,810 >> PENONTON: Untuk nol sekarang. 1504 01:09:42,810 --> 01:09:43,529 >> JASON Hirschhorn: Baiklah, ia menunjuk ke nol. 1505 01:09:43,529 --> 01:09:44,499 Tetapi saya meletakkan dalam labu. 1506 01:09:44,499 --> 01:09:46,053 Jadi di mana ia perlu menunjukkan? 1507 01:09:46,053 --> 01:09:46,880 >> PENONTON: Untuk labu. 1508 01:09:46,880 --> 01:09:47,399 >> JASON Hirschhorn: Untuk labu. 1509 01:09:47,399 --> 01:09:48,760 Tepat sekali. 1510 01:09:48,760 --> 01:09:50,010 Jadi ini menunjukkan kepada labu. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 Dan di mana tidak penunjuk ini di titik labu? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Untuk 1515 01:09:58,340 --> 01:09:58,590 >> PENONTON: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON Hirschhorn: Untuk nol. 1517 01:09:59,210 --> 01:10:00,460 Tepat sekali. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Jadi kita hanya dimasukkan sesuatu ke dalam senarai yang dipautkan. 1520 01:10:05,140 --> 01:10:07,210 Kami hanya menulis kod ini untuk melakukan ini. 1521 01:10:07,210 --> 01:10:09,520 Hampir kita hampir mendapat retak sepenuhnya. 1522 01:10:09,520 --> 01:10:10,790 Sekarang kita memasukkan gula-gula. 1523 01:10:10,790 --> 01:10:13,480 Gula-gula kami turut diberikan kepada sifar. 1524 01:10:13,480 --> 01:10:16,100 Jadi apa yang kami lakukan dengan gula-gula? 1525 01:10:16,100 --> 01:10:18,790 >> PENONTON: Ia bergantung kepada sama ada atau tidak kita cuba untuk mengatasinya. 1526 01:10:18,790 --> 01:10:19,640 >> JASON Hirschhorn: Itu betul-betul betul. 1527 01:10:19,640 --> 01:10:21,070 Ia bergantung kepada sama ada atau tidak kita cuba untuk mengatasinya. 1528 01:10:21,070 --> 01:10:22,660 Mari kita andaikan kita tidak akan mengatasinya. 1529 01:10:22,660 --> 01:10:24,880 >> PENONTON: Kalau begitu, seperti yang kita bincangkan sebelum ini, ia paling mudah hanya untuk meletakkannya 1530 01:10:24,880 --> 01:10:28,590 betul-betul di permulaan supaya penunjuk dari sifar mata kepada gula-gula. 1531 01:10:28,590 --> 01:10:29,020 >> JASON Hirschhorn: OK. 1532 01:10:29,020 --> 01:10:29,380 Berpegang. 1533 01:10:29,380 --> 01:10:30,630 Izinkan saya membuat gula-gula di sini. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Jadi penunjuk ini - 1536 01:10:35,150 --> 01:10:37,590 >> PENONTON: Ya, perlu sekarang akan menunjuk ke gula-gula. 1537 01:10:37,590 --> 01:10:40,580 Kemudian mempunyai penunjuk dari titik gula-gula kepada labu. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON Hirschhorn: Seperti yang? 1540 01:10:44,560 --> 01:10:47,380 Dan mengatakan kita mendapat satu lagi perkara untuk peta ke sifar? 1541 01:10:47,380 --> 01:10:48,660 >> PENONTON: Nah, anda hanya melakukan perkara yang sama? 1542 01:10:48,660 --> 01:10:50,290 >> JASON Hirschhorn: Adakah perkara yang sama. 1543 01:10:50,290 --> 01:10:53,700 Jadi dalam kes ini, jika kita tidak hendak simpan ia disusun ia 1544 01:10:53,700 --> 01:10:55,270 bunyi agak mudah. 1545 01:10:55,270 --> 01:10:59,920 Kami mengambil penunjuk di indice yang diberikan oleh fungsi hash kami. 1546 01:10:59,920 --> 01:11:03,830 Kami mempunyai ketika itu untuk nod baru kami. 1547 01:11:03,830 --> 01:11:07,830 Dan kemudian apa sahaja ia menunjuk sebelum ini - 1548 01:11:07,830 --> 01:11:10,620 dalam ini null kes, dalam kes kedua labu - 1549 01:11:10,620 --> 01:11:15,310 bahawa, apa sahaja yang ia menunjuk ke sebelum ini, kami menambah ke dalam seterusnya 1550 01:11:15,310 --> 01:11:17,810 nod baru kami. 1551 01:11:17,810 --> 01:11:19,650 Kami memasukkan sesuatu pada mulanya. 1552 01:11:19,650 --> 01:11:22,900 Sebenarnya ini adalah lebih mudah daripada cuba untuk menjaga senarai disusun. 1553 01:11:22,900 --> 01:11:25,340 Tetapi sekali lagi, pencarian akan menjadi lebih rumit di sini. 1554 01:11:25,340 --> 01:11:28,300 Kami akan sentiasa perlu pergi ke akhirnya. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Apa-apa soalan mengenai chaining berasingan? 1557 01:11:32,750 --> 01:11:34,690 Bagaimana yang bekerja? 1558 01:11:34,690 --> 01:11:35,820 Sila tanya mereka sekarang. 1559 01:11:35,820 --> 01:11:39,260 Saya benar-benar ingin memastikan anda semua memahami perkara ini sebelum kita menuju keluar. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> PENONTON: Kenapa anda meletakkan labu dan gula-gula ke dalam yang sama 1562 01:11:52,060 --> 01:11:54,108 sebahagian daripada jadual hash? 1563 01:11:54,108 --> 01:11:55,860 >> JASON Hirschhorn: Soalan yang baik. 1564 01:11:55,860 --> 01:11:59,140 Mengapa kita memasukkannya ke dalam yang sama sebahagian daripada jadual hash? 1565 01:11:59,140 --> 01:12:03,200 Nah, dalam kes ini fungsi hash kami pulangan sifar untuk kedua-dua mereka. 1566 01:12:03,200 --> 01:12:05,310 Jadi mereka perlu pergi di indice sifar kerana itulah di mana kita akan 1567 01:12:05,310 --> 01:12:07,420 mencari mereka jika kita pernah mahu melihat mereka. 1568 01:12:07,420 --> 01:12:11,750 Sekali lagi, dengan pendekatan linear menyelesaikan sesuatu kita tidak akan meletakkan mereka di kedua-dua sifar. 1569 01:12:11,750 --> 01:12:13,900 Tetapi dalam pendekatan rantaian yang berasingan, kita akan meletakkan mereka di kedua-dua sifar 1570 01:12:13,900 --> 01:12:16,620 dan kemudian buat satu senarai kira sifar. 1571 01:12:16,620 --> 01:12:20,140 >> Dan kita tidak mahu menulis ganti labu semata-mata untuk itu kerana maka kita akan 1572 01:12:20,140 --> 01:12:21,860 menganggap bahawa labu adalah tidak pernah dimasukkan. 1573 01:12:21,860 --> 01:12:25,230 Jika kita hanya menyimpan satu perkara dalam lokasi yang akan menjadi buruk. 1574 01:12:25,230 --> 01:12:28,590 Kemudian tidak akan ada peluang kita pernah - 1575 01:12:28,590 --> 01:12:31,660 jika kita pernah mempunyai salinan, maka kita hanya akan memadam nilai awal kami. 1576 01:12:31,660 --> 01:12:34,090 Jadi itulah sebabnya kami melakukan pendekatan ini. 1577 01:12:34,090 --> 01:12:36,580 Atau itulah sebabnya kami memilih - tetapi sekali lagi, kita memilih pendekatan rantaian yang berasingan, 1578 01:12:36,580 --> 01:12:39,670 mana terdapat banyak pendekatan yang lain salah satu boleh memilih. 1579 01:12:39,670 --> 01:12:41,185 Adakah yang menjawab soalan anda? 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Carlos. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Linear menyelesaikan sesuatu akan melibatkan - 1584 01:12:47,720 --> 01:12:51,913 jika kami mendapati perlanggaran pada sifar, kita akan kelihatan di tempat yang seterusnya untuk melihat jika 1585 01:12:51,913 --> 01:12:54,310 ia terbuka dan meletakkannya di sana. 1586 01:12:54,310 --> 01:12:57,320 Dan kemudian kita lihat dalam sukan akan datang dan melihat jika yang terbuka dan meletakkannya di sana. 1587 01:12:57,320 --> 01:12:59,780 Jadi kita dapati yang ada seterusnya tempat terbuka dan meletakkannya di sana. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Apa-apa soalan lain? 1590 01:13:03,890 --> 01:13:05,370 Ya, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> PENONTON: Sebagai susulan itu, apa yang anda maksudkan dengan tempat akan datang? 1592 01:13:07,490 --> 01:13:10,250 Dalam jadual hash atau dalam senarai berpaut. 1593 01:13:10,250 --> 01:13:12,100 >> JASON Hirschhorn: Untuk linear pengaturcaraan, tiada senarai berkaitan. 1594 01:13:12,100 --> 01:13:13,400 Tempat yang seterusnya di atas meja hash. 1595 01:13:13,400 --> 01:13:13,820 >> PENONTON: OK. 1596 01:13:13,820 --> 01:13:17,570 Jadi jadual hash akan dimulakan dengan saiz - 1597 01:13:17,570 --> 01:13:19,560 seperti bilangan tali bahawa anda telah memasukkan? 1598 01:13:19,560 --> 01:13:22,170 >> JASON Hirschhorn: Anda akan mahu ia menjadi benar-benar besar. 1599 01:13:22,170 --> 01:13:23,910 Ya. 1600 01:13:23,910 --> 01:13:27,900 Di bawah ialah gambar daripada apa yang kita hanya menarik di papan. 1601 01:13:27,900 --> 01:13:29,470 Sekali lagi, kita mempunyai perlanggaran di sini. 1602 01:13:29,470 --> 01:13:30,710 pada 152. 1603 01:13:30,710 --> 01:13:33,570 Dan anda akan melihat kita dicipta senarai berpaut jauh daripada itu. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Sekali lagi, jadual hash chaining berasingan pendekatan bukan yang anda 1606 01:13:41,850 --> 01:13:45,590 perlu mengambil masalah yang dibentuk enam tetapi adalah salah satu yang banyak 1607 01:13:45,590 --> 01:13:47,100 pelajar cenderung untuk mengambil. 1608 01:13:47,100 --> 01:13:51,140 Maka pada nota itu, marilah kita bercakap secara ringkas sebelum kita kepala keluar tentang masalah enam, 1609 01:13:51,140 --> 01:13:52,160 dan kemudian saya akan berkongsi cerita dengan anda. 1610 01:13:52,160 --> 01:13:55,120 Kami mempunyai tiga minit. 1611 01:13:55,120 --> 01:13:55,750 >> Masalah ditetapkan enam. 1612 01:13:55,750 --> 01:13:57,790 Anda mempunyai empat fungsi - 1613 01:13:57,790 --> 01:14:02,430 beban, daftar, saiz, dan memunggah. 1614 01:14:02,430 --> 01:14:03,380 Beban - 1615 01:14:03,380 --> 01:14:07,120 baik, kami telah pergi lebih beban tadi. 1616 01:14:07,120 --> 01:14:09,330 Kami menarik beban di atas kapal. 1617 01:14:09,330 --> 01:14:13,230 Dan kami pun mula pengekodan banyak memasukkan ke dalam senarai berpaut. 1618 01:14:13,230 --> 01:14:18,020 Jadi beban tidak lebih daripada apa yang kita baru sahaja telah lakukan. 1619 01:14:18,020 --> 01:14:21,070 >> Semak sekali anda mempunyai sesuatu yang dimuatkan. 1620 01:14:21,070 --> 01:14:22,580 Ia proses yang sama seperti ini. 1621 01:14:22,580 --> 01:14:26,845 Yang sama dua bahagian pertama di mana anda membuang sesuatu ke dalam fungsi hash 1622 01:14:26,845 --> 01:14:29,190 dan mendapatkan nilainya. 1623 01:14:29,190 --> 01:14:30,700 Tetapi sekarang kita tidak memasukkan ia. 1624 01:14:30,700 --> 01:14:33,350 Sekarang kita sedang mencari untuk itu. 1625 01:14:33,350 --> 01:14:37,130 Saya contoh kod bertulis untuk mencari sesuatu dalam senarai berpaut. 1626 01:14:37,130 --> 01:14:38,250 Saya menggalakkan anda untuk mengamalkan itu. 1627 01:14:38,250 --> 01:14:43,000 Tetapi gerak hati mencari sesuatu yang agak serupa dengan memasukkan sesuatu. 1628 01:14:43,000 --> 01:14:46,540 Malah, kami menarik gambar mencari sesuatu dalam senarai berpaut, bergerak 1629 01:14:46,540 --> 01:14:48,910 melalui sehingga anda sampai ke akhir. 1630 01:14:48,910 --> 01:14:52,430 Dan jika anda mendapat ke akhir dan tidak dapat merasa, maka ia bukan di sana. 1631 01:14:52,430 --> 01:14:55,400 Jadi, itu cek, pada asasnya. 1632 01:14:55,400 --> 01:14:57,030 >> Seterusnya adalah saiz. 1633 01:14:57,030 --> 01:14:57,910 Mari kita skip saiz. 1634 01:14:57,910 --> 01:15:00,040 Akhir sekali, anda telah memunggah. 1635 01:15:00,040 --> 01:15:02,890 Memunggah adalah salah satu kami tidak disediakan di papan atau dikod yet. 1636 01:15:02,890 --> 01:15:05,990 Tetapi saya menggalakkan anda untuk mencuba pengekodan ia dalam sampel dikaitkan contoh senarai kami. 1637 01:15:05,990 --> 01:15:11,440 Tetapi memunggah intuitif adalah sama dengan percuma - 1638 01:15:11,440 --> 01:15:14,010 atau Maksud saya adalah sama dengan cek. 1639 01:15:14,010 --> 01:15:17,350 Kecuali sekarang setiap kali anda akan melalui, anda tidak hanya memeriksa untuk 1640 01:15:17,350 --> 01:15:19,090 melihat jika anda mempunyai nilai anda di sana. 1641 01:15:19,090 --> 01:15:22,490 Tetapi anda mengambil nod itu dan membebaskan ia, pada asasnya. 1642 01:15:22,490 --> 01:15:23,610 Itulah yang memunggah meminta anda melakukan. 1643 01:15:23,610 --> 01:15:24,670 Segala-galanya percuma anda malloced. 1644 01:15:24,670 --> 01:15:27,480 Jadi, anda akan melalui seluruh senarai sekali lagi, melalui seluruh hash 1645 01:15:27,480 --> 01:15:27,760 meja lagi. 1646 01:15:27,760 --> 01:15:29,240 Kali ini tidak menyemak untuk melihat apa yang ada. 1647 01:15:29,240 --> 01:15:31,080 Hanya membebaskan apa yang ada. 1648 01:15:31,080 --> 01:15:33,260 >> Dan akhirnya saiz. 1649 01:15:33,260 --> 01:15:34,350 Saiz perlu dilaksanakan. 1650 01:15:34,350 --> 01:15:35,590 Jika anda tidak melaksanakan saiz - 1651 01:15:35,590 --> 01:15:36,250 Saya akan mengatakan ia seperti ini. 1652 01:15:36,250 --> 01:15:39,740 Jika anda tidak melaksanakan saiz betul-betul satu baris kod termasuk 1653 01:15:39,740 --> 01:15:43,760 kembali pernyataan, anda melakukan saiz dengan tidak betul. 1654 01:15:43,760 --> 01:15:47,170 Oleh itu, saiz pasti, bagi reka bentuk penuh mata, anda melakukannya betul-betul satu 1655 01:15:47,170 --> 01:15:49,970 baris kod, termasuk penyata pulangan. 1656 01:15:49,970 --> 01:15:52,450 >> Dan tidak berkemas lagi, Akchar. 1657 01:15:52,450 --> 01:15:53,700 Memerang bersemangat. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Saya mahu mengucapkan terima kasih guys untuk datang ke bahagian. 1660 01:16:01,300 --> 01:16:02,550 Mempunyai Happy Halloween. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 Ini adalah pakaian saya. 1663 01:16:05,960 --> 01:16:08,850 Saya akan memakai ini pada hari Khamis jika saya melihat anda pada waktu pejabat. 1664 01:16:08,850 --> 01:16:14,640 Dan jika anda ingin tahu tentang beberapa lebih latar belakang untuk pakaian ini, berasa 1665 01:16:14,640 --> 01:16:19,135 bebas untuk menyemak 2011 seksyen untuk cerita mengenai kenapa saya 1666 01:16:19,135 --> 01:16:20,900 memakai pakaian labu. 1667 01:16:20,900 --> 01:16:23,680 Dan ia adalah satu cerita sedih. 1668 01:16:23,680 --> 01:16:27,050 Jadi pastikan anda mempunyai beberapa tisu berdekatan. 1669 01:16:27,050 --> 01:16:28,680 Tetapi pada itu, jika anda mempunyai sebarang soalan saya akan melekat di sekeliling 1670 01:16:28,680 --> 01:16:29,960 di luar selepas seksyen. 1671 01:16:29,960 --> 01:16:31,510 Nasib baik pada masalah set enam. 1672 01:16:31,510 --> 01:16:33,540 Dan seperti biasa, jika anda mempunyai sebarang soalan, beritahu saya. 1673 01:16:33,540 --> 01:16:35,584