1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON HIRSCHHORN: მოგესალმებით ყველას სექცია შვიდი. 3 00:00:12,680 --> 00:00:15,040 ჩვენ კვირაში შვიდი კურსი. 4 00:00:15,040 --> 00:00:18,440 და ეს მომავალი ხუთშაბათი არის ჰელოუინი ასე ვარ 5 00:00:18,440 --> 00:00:21,420 ჩაცმული up მსგავსი გოგრა. 6 00:00:21,420 --> 00:00:23,460 მე ვერ წარმართონ მეტი და დააყენა ჩემი ფეხსაცმელი, ასე რომ რატომ ვარ 7 00:00:23,460 --> 00:00:25,660 უბრალოდ ტარება წინდები. 8 00:00:25,660 --> 00:00:29,220 მე ასევე არ აცვია არაფერს ქვეშ ამ, ასე რომ მე ვერ მიიღოს ეს off, თუ ეს 9 00:00:29,220 --> 00:00:29,950 გადატანის თქვენ. 10 00:00:29,950 --> 00:00:31,860 მე ბოდიშს წინასწარ რომ. 11 00:00:31,860 --> 00:00:33,170 თქვენ არ უნდა წარმოვიდგინოთ რა ხდება. 12 00:00:33,170 --> 00:00:34,240 მე ტარება მოკრივე. 13 00:00:34,240 --> 00:00:36,170 ასე რომ, ეს ყველაფერი კარგი. 14 00:00:36,170 --> 00:00:41,120 >> მაქვს აღარ ამბავი რატომ ვარ ჩაცმული, როგორც გოგრა, მაგრამ მე ვაპირებ 15 00:00:41,120 --> 00:00:45,110 გადარჩენა, რომ მოგვიანებით ამ სექციაში იმიტომ, რომ მე მინდა დავიწყოთ. 16 00:00:45,110 --> 00:00:47,720 ჩვენ ბევრი საინტერესო რამ წავიდეთ ამ კვირაში. 17 00:00:47,720 --> 00:00:51,810 მათი უმეტესობა დაკავშირებულია უშუალოდ ამ კვირის პრობლემა კომპლექტი, misspellings. 18 00:00:51,810 --> 00:00:54,680 ჩვენ ვაპირებთ იყოს აპირებს მეტი უკავშირდება სიები და hash მაგიდები 19 00:00:54,680 --> 00:00:57,160 მთელი განყოფილება. 20 00:00:57,160 --> 00:01:02,490 მე ზუსტად ამ სიაში ყოველ კვირას, სიაში რესურსების თქვენთვის, რათა დაგეხმაროთ 21 00:01:02,490 --> 00:01:04,120 მასალა ამ კურსს. 22 00:01:04,120 --> 00:01:07,600 იმ შემთხვევაში, თუ დაკარგვა თუ ეძებს ზოგიერთი დამატებითი ინფორმაციისთვის, შეამოწმეთ ერთი 23 00:01:07,600 --> 00:01:09,930 ამ რესურსების. 24 00:01:09,930 --> 00:01:14,530 >> ერთხელ, pset6 არის misspellings, ამ კვირის pset. 25 00:01:14,530 --> 00:01:17,690 და ეს ასევე ხელს უწყობს თქვენ, და მე გარწმუნებთ, გამოიყენოს რაიმე სხვა 26 00:01:17,690 --> 00:01:20,320 რესურსები სპეციალურად ამ pset. 27 00:01:20,320 --> 00:01:23,390 კერძოდ, სამი მე ჩამოთვლილი up ეკრანზე - 28 00:01:23,390 --> 00:01:27,160 GDB, რომელიც ჩვენ უკვე იცნობს და გამოყენებით, ხოლო ახლა, 29 00:01:27,160 --> 00:01:29,270 იქნება ძალიან გამოსადეგი ამ კვირაში. 30 00:01:29,270 --> 00:01:30,190 ასე რომ, მე დააყენა, რომ აქ. 31 00:01:30,190 --> 00:01:32,910 მაგრამ როდესაც თქვენ მუშაობის C, თქვენ ყოველთვის უნდა იყოს გამოყენებით GDB to 32 00:01:32,910 --> 00:01:34,430 გამართვის თქვენი პროგრამებს. 33 00:01:34,430 --> 00:01:36,660 ამ კვირაში ასევე Valgrind. 34 00:01:36,660 --> 00:01:38,535 ვინმემ იცის, რა Valgrind აკეთებს? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> აუდიტორია: ეს ამოწმებს მეხსიერების ტბები? 37 00:01:43,890 --> 00:01:45,950 >> JASON HIRSCHHORN: Valgrind ამოწმებს მეხსიერების გაჟონვის. 38 00:01:45,950 --> 00:01:49,970 ასე რომ, თუ თქვენ malloc რაღაც თქვენს პროგრამა, თქვენ გეკითხებით მეხსიერება. 39 00:01:49,970 --> 00:01:52,920 დასასრულს თქვენი პროგრამა, თქვენ უნდა დაწერა უფასოდ ყველაფერი თქვენ 40 00:01:52,920 --> 00:01:54,800 malloced მისცეს მეხსიერების უკან. 41 00:01:54,800 --> 00:01:58,420 თუ თქვენ არ წერენ უფასო დასასრულს და თქვენი პროგრამა მოდის იმ დასკვნამდე, 42 00:01:58,420 --> 00:02:00,000 ყველაფერი ავტომატურად გათავისუფლდებიან. 43 00:02:00,000 --> 00:02:02,340 და პატარა პროგრამებს, ეს არ არის, რომ დიდი გარიგება. 44 00:02:02,340 --> 00:02:05,250 მაგრამ თუ თქვენ წერა აღარ გაშვებული პროგრამა, რომელიც არ დატოვა, 45 00:02:05,250 --> 00:02:09,180 აუცილებლად, რამდენიმე წუთის ან რამდენიმე წამში, მაშინ მეხსიერების ტბები 46 00:02:09,180 --> 00:02:10,710 შეიძლება გახდეს დიდი გარიგება. 47 00:02:10,710 --> 00:02:14,940 >> ასე pset6, მოლოდინი არის ის, რომ თქვენ უნდა ნულოვანი მეხსიერების გაჟონვის ერთად 48 00:02:14,940 --> 00:02:15,910 თქვენი პროგრამა. 49 00:02:15,910 --> 00:02:18,690 შევამოწმოთ მეხსიერების გაჟონვის, აწარმოებს Valgrind და ეს მოგცემთ ზოგიერთი ლამაზი 50 00:02:18,690 --> 00:02:21,190 გამომავალი გაქირავების იცით თუ არა თუ არა ყველაფერი უფასოდ. 51 00:02:21,190 --> 00:02:23,940 ჩვენ პრაქტიკაში მას შემდეგ დღეს, იმედია. 52 00:02:23,940 --> 00:02:25,790 >> საბოლოოდ, diff ბრძანება. 53 00:02:25,790 --> 00:02:28,900 გამოიყენება რამე მსგავსი, რომ in pset5 ერთად peek ინსტრუმენტი. 54 00:02:28,900 --> 00:02:30,780 დაშვებულია თქვენ შიგნიდან. 55 00:02:30,780 --> 00:02:33,400 თქვენ ასევე გამოიყენება diff, ძალიან, პოსტი პრობლემა კომპლექტი სპეც. 56 00:02:33,400 --> 00:02:35,950 მაგრამ საშუალებას გაძლევთ შედარება ორი ფაილი. 57 00:02:35,950 --> 00:02:39,180 თქვენ ვერ შევადარებთ bitmap ფაილი და ინფორმაცია headers რომელიც პერსონალის გადაწყვეტა და 58 00:02:39,180 --> 00:02:42,200 თქვენი გადაწყვეტა pset5 თუ თქვენ აირჩია გამოიყენოს იგი. 59 00:02:42,200 --> 00:02:44,030 Diff საშუალებას მოგცემთ ამისათვის, ისევე. 60 00:02:44,030 --> 00:02:48,620 შეგიძლიათ შეადაროთ სწორი პასუხი ამ კვირაში პრობლემა მითითებული თქვენი პასუხი 61 00:02:48,620 --> 00:02:52,210 და თუ ეს ხაზები და ვხედავთ სადაც შეცდომები. 62 00:02:52,210 --> 00:02:55,870 >> ასე რომ იმ სამი კარგი ინსტრუმენტი, რომელიც თქვენ უნდა გამოიყენოთ ამ კვირაში, და 63 00:02:55,870 --> 00:02:58,130 აუცილებლად შეამოწმეთ თქვენი პროგრამა ამ სამი ინსტრუმენტები 64 00:02:58,130 --> 00:03:00,520 ადრე გარდამტეხი ის სისტემაში 65 00:03:00,520 --> 00:03:04,650 კვლავ, როგორც მე აღვნიშნე, ყოველ კვირას, თუ თქვენ გაქვთ რაიმე კავშირი ჩემთვის - როგორც 66 00:03:04,650 --> 00:03:06,470 პოზიტიური და კონსტრუქციული - 67 00:03:06,470 --> 00:03:09,930 მოგერიდებათ ხელმძღვანელს ნახვა ბოლოში ამ slide 68 00:03:09,930 --> 00:03:11,270 და შეყვანის მას იქ. 69 00:03:11,270 --> 00:03:13,440 მე ნამდვილად ვაფასებ ნებისმიერი და ყველა კავშირი. 70 00:03:13,440 --> 00:03:17,360 და თუ თქვენ მომეცი კონკრეტული რამ, რომ მე შეუძლია გააუმჯობესოს ან რომ მე ვარ 71 00:03:17,360 --> 00:03:21,350 აკეთებს კარგად, რომ გსურთ ჩემთვის გაგრძელდება, მე რომ გული და 72 00:03:21,350 --> 00:03:24,040 ნამდვილად ცდილობენ მოუსმინოს თქვენი კავშირი. 73 00:03:24,040 --> 00:03:27,720 ვერ დაგპირდებით, მე ვაპირებ ამის გაკეთებას ყველაფერი, თუმცა, როგორც ტარება 74 00:03:27,720 --> 00:03:30,700 გოგრა კოსტუმი, ყოველ კვირას. 75 00:03:30,700 --> 00:03:34,020 >> ამიტომ, ჩვენ ვაპირებთ გაატაროთ ნაყარი განყოფილებიანი, როგორც აღვნიშნე, ვსაუბრობთ 76 00:03:34,020 --> 00:03:37,240 დაკავშირებული სიები და hash მაგიდები, რომელიც იქნება უშუალოდ გამოიყენება 77 00:03:37,240 --> 00:03:38,780 პრობლემა მითითებული ამ კვირაში. 78 00:03:38,780 --> 00:03:42,580 დაკავშირებული სიები ჩვენ წავიდეთ მეტი შედარებით სწრაფად, რადგან ჩვენ გაატარა სამართლიანი ცოტა 79 00:03:42,580 --> 00:03:44,930 დრო დასრულდა ეს განყოფილება. 80 00:03:44,930 --> 00:03:48,680 და ასე მივიღებთ სწორი შევიდა კოდირების პრობლემები დაკავშირებული სიები. 81 00:03:48,680 --> 00:03:52,740 და შემდეგ დასასრულს ჩვენ ვსაუბრობთ hash მაგიდები და როგორ ვრცელდება ამ 82 00:03:52,740 --> 00:03:55,280 კვირის პრობლემა კომპლექტი. 83 00:03:55,280 --> 00:03:57,560 >> ვნახე ეს კოდი ადრე. 84 00:03:57,560 --> 00:04:02,730 ეს არის struct, და ეს განსაზღვრავს რაღაც ახალი ჰქვია კვანძში. 85 00:04:02,730 --> 00:04:10,660 და შიგნით კვანძის არსებობს მთელი რიცხვი აქ და იქ არის მომცეთ 86 00:04:10,660 --> 00:04:11,830 სხვა კვანძის. 87 00:04:11,830 --> 00:04:12,790 ჩვენ ვნახეთ ადრე. 88 00:04:12,790 --> 00:04:14,830 ეს უკვე ახლოვდება რამდენიმე კვირაა. 89 00:04:14,830 --> 00:04:18,680 იგი აერთიანებს მითითებას, რომელიც ჩვენ მუშაობა და structs, რომელიც საშუალებას 90 00:04:18,680 --> 00:04:22,079 us დააკავშიროთ ორი სხვადასხვა ყველაფერი ერთ მონაცემები ტიპის. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> არსებობს უამრავი ხდება ეკრანზე. 93 00:04:26,490 --> 00:04:30,220 მაგრამ ყველა ეს უნდა იყოს შედარებით იცნობს თქვენ. 94 00:04:30,220 --> 00:04:33,810 პირველი ხაზი, ჩვენ განაცხადოს ახალი კვანძში. 95 00:04:33,810 --> 00:04:41,650 და შემდეგ შიგნით რომ ახალი კვანძის, მე მითითებული მთელი ამ კვანძის ერთი. 96 00:04:41,650 --> 00:04:44,950 ჩვენ ვხედავთ მომდევნო ხაზი მე ვაკეთებ printf ბრძანება, მაგრამ მე grayed out 97 00:04:44,950 --> 00:04:48,080 printf ბრძანება იმის გამო, რომ მართლაც მნიშვნელოვანი ნაწილი არის ამ ხაზის აქ - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 რას dot ნიშნავს? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> აუდიტორია: გადადით კვანძის და შეაფასოს n ღირებულება მას. 102 00:04:57,240 --> 00:04:58,370 >> JASON HIRSCHHORN: ეს სწორედ. 103 00:04:58,370 --> 00:05:03,300 Dot ნიშნავს შედიხართ n ნაწილი ამ ახალი კვანძში. 104 00:05:03,300 --> 00:05:05,690 ამ შემდეგი ხაზი იმას, თუ რა? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 მაიკლ. 107 00:05:17,050 --> 00:05:21,910 >> აუდიტორია: იგი ქმნის სხვა კვანძის რომ იქნება აღვნიშნო, რომ ახალი კვანძში. 108 00:05:21,910 --> 00:05:24,870 >> JASON HIRSCHHORN: ასე რომ, ეს არ შექმნა ახალი კვანძში. 109 00:05:24,870 --> 00:05:26,120 იგი ქმნის რა? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> აუდიტორია: A მაჩვენებელი. 112 00:05:29,300 --> 00:05:33,460 >> JASON HIRSCHHORN: A მომცეთ კვანძის, როგორც მიერ მითითებულ ამ კვანძის * აქ. 113 00:05:33,460 --> 00:05:34,800 ასე რომ, ეს ქმნის მომცეთ კვანძში. 114 00:05:34,800 --> 00:05:37,490 და რომელიც კვანძის ეს მიუთითებს to მაიკლ? 115 00:05:37,490 --> 00:05:38,440 >> აუდიტორია: New კვანძის? 116 00:05:38,440 --> 00:05:39,240 >> JASON HIRSCHHORN: New კვანძში. 117 00:05:39,240 --> 00:05:43,020 და ეს მიუთითებს არსებობს, რადგან ჩვენ მოცემული ეს მისამართი ახალი კვანძში. 118 00:05:43,020 --> 00:05:45,820 და ახლა ამ ხაზის ჩვენ ვხედავთ ორ სხვადასხვა გზები 119 00:05:45,820 --> 00:05:46,910 გამოხატავს იგივე. 120 00:05:46,910 --> 00:05:49,650 და მინდოდა აღვნიშნო, თუ როგორ შეიძლება ამ ორი რამ არის იგივე. 121 00:05:49,650 --> 00:05:54,740 პირველი ხაზი, ჩვენ dereference მაჩვენებელი. 122 00:05:54,740 --> 00:05:55,830 ასე რომ, ჩვენ წასვლა კვანძში. 123 00:05:55,830 --> 00:05:56,830 სწორედ ამ star ნიშნავს. 124 00:05:56,830 --> 00:05:57,930 ჩვენ ვნახეთ, რომ სანამ პოინტერები. 125 00:05:57,930 --> 00:05:59,280 წასვლა რომ კვანძის. 126 00:05:59,280 --> 00:06:00,370 ეს არის ის, ფრჩხილებში. 127 00:06:00,370 --> 00:06:04,610 და შემდეგ გავლით dot ოპერატორი n ელემენტს რომ კვანძის. 128 00:06:04,610 --> 00:06:08,430 >> ასე რომ აღების სინტაქსი ჩვენ ვნახეთ უფლება აქ და ახლა 129 00:06:08,430 --> 00:06:09,670 გამოყენებით იგი მაჩვენებელი. 130 00:06:09,670 --> 00:06:13,730 რა თქმა უნდა, იგი იღებს სახის დაკავებული თუ თქვენ წერა იმ ფრჩხილებში - 131 00:06:13,730 --> 00:06:14,940 რომ ვარსკვლავი და რომ dot. 132 00:06:14,940 --> 00:06:16,220 იგი იღებს პატარა დაკავებულია. 133 00:06:16,220 --> 00:06:18,500 ასე რომ, ჩვენ გვაქვს გარკვეული სინტაქსური შაქარი. 134 00:06:18,500 --> 00:06:19,920 და ეს ხაზი სწორედ აქ - 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 რომ აკეთებს იგივე ზუსტი რამ. 138 00:06:28,000 --> 00:06:30,840 ასე რომ, ეს ორი ხაზი კოდი არის ექვივალენტს და ყველაფერს გავაკეთებთ 139 00:06:30,840 --> 00:06:31,650 ზუსტად იგივე რამ. 140 00:06:31,650 --> 00:06:34,210 >> მაგრამ მინდოდა აღვნიშნო იმ წინაშე ჩვენ წავიდეთ რაიმე ისე გესმით 141 00:06:34,210 --> 00:06:39,000 რომ ნამდვილად ეს რამ სწორედ აქ არის მხოლოდ სინტაქსური შაქარი განთავსების dereferencing 142 00:06:39,000 --> 00:06:44,200 მაჩვენებელი და შემდეგ აპირებს n ნაწილი რომ struct. 143 00:06:44,200 --> 00:06:45,525 რაიმე შეკითხვები ამ slide? 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 >> ამიტომ, ჩვენ ვაპირებთ გავლა რამდენიმე ოპერაციების, რომ შეგიძლიათ გააკეთოთ 147 00:06:58,510 --> 00:06:59,730 დაკავშირებული სიები. 148 00:06:59,730 --> 00:07:05,770 დაკავშირებული სიაში, გაწვევას, არის მთელი რიგი კვანძების, რომ აღვნიშნო, რომ ერთმანეთს. 149 00:07:05,770 --> 00:07:12,470 და ჩვენ ზოგადად იწყება მომცეთ მოუწოდა ხელმძღვანელი, ზოგადად, რომელიც მიუთითებს 150 00:07:12,470 --> 00:07:14,040 პირველი, რაც სიაში. 151 00:07:14,040 --> 00:07:18,900 ასე რომ, პირველი ხაზი, ჩვენ ჩვენი ორიგინალური L პირველი. 152 00:07:18,900 --> 00:07:21,370 ასე რომ, რაც შეგიძლიათ ვფიქრობ - ეს ტექსტის აქ თქვენ შეგიძლიათ ვფიქრობ, როგორც 153 00:07:21,370 --> 00:07:23,560 მხოლოდ კურსორი ჩვენ ინახება სადღაც, რომ რაოდენობა 154 00:07:23,560 --> 00:07:24,670 პირველი ელემენტს. 155 00:07:24,670 --> 00:07:27,500 და ამ უკავშირდება სიაში ჩვენ გვაქვს ოთხი კვანძების. 156 00:07:27,500 --> 00:07:29,530 თითოეული კვანძის დიდი ყუთი. 157 00:07:29,530 --> 00:07:33,430 დიდი ყუთი შიგნით დიდი ყუთი არის მთელი ნაწილი. 158 00:07:33,430 --> 00:07:37,400 და მაშინ ჩვენ გვაქვს მომცეთ ნაწილი. 159 00:07:37,400 --> 00:07:39,630 >> ამ ყუთები არ შედგენილი მასშტაბი, რადგან, თუ როგორ დიდი არის 160 00:07:39,630 --> 00:07:42,320 მთელი ბაიტებში? 161 00:07:42,320 --> 00:07:43,290 როგორ დიდი არის? 162 00:07:43,290 --> 00:07:43,710 ოთხი. 163 00:07:43,710 --> 00:07:45,470 და რამდენად დიდი მაჩვენებელი? 164 00:07:45,470 --> 00:07:45,940 ოთხი. 165 00:07:45,940 --> 00:07:48,180 ასე რომ, რეალურად, თუ ჩვენ მიაპყროს ამ მასშტაბის ორივე ყუთები 166 00:07:48,180 --> 00:07:49,690 იქნება იგივე ზომა. 167 00:07:49,690 --> 00:07:52,870 ამ შემთხვევაში, ჩვენ გვინდა ჩადეთ რაღაც შევიდა უკავშირდება სიაში. 168 00:07:52,870 --> 00:07:57,190 ასე რომ თქვენ ხედავთ ქვემოთ აქ ჩვენ ჩასმა ხუთ ჩვენ traverse მეშვეობით 169 00:07:57,190 --> 00:08:01,310 დაკავშირებული სიაში, იპოვოს, სადაც ხუთ მიდის, და შემდეგ ჩადეთ იგი. 170 00:08:01,310 --> 00:08:03,560 >> მოდით დაარღვიოს, რომ ქვემოთ და წავიდეთ ცოტა უფრო ნელა. 171 00:08:03,560 --> 00:08:05,510 მე ვაპირებ აღვნიშნო ფორუმში. 172 00:08:05,510 --> 00:08:09,930 ასე რომ, ჩვენ გვაქვს ჩვენი კვანძის ხუთ, რომ ჩვენ შექმნილი mallocs. 173 00:08:09,930 --> 00:08:11,190 რატომ ყველას იცინის? 174 00:08:11,190 --> 00:08:12,130 Just kidding. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 ამიტომ ჩვენ malloced ხუთ. 177 00:08:14,820 --> 00:08:16,310 ჩვენ შევქმენით ამ კვანძის სხვაგან. 178 00:08:16,310 --> 00:08:17,740 ჩვენ მას მზად ვართ წავიდეთ. 179 00:08:17,740 --> 00:08:20,130 ჩვენ ვიწყებთ წინაშე ჩვენს სიაში ორი. 180 00:08:20,130 --> 00:08:22,380 და ჩვენ გვინდა ჩადეთ in დახარისხებული მოდის. 181 00:08:22,380 --> 00:08:27,550 >> ასე რომ, თუ ჩვენ ვხედავთ, ორი და ჩვენ გვინდა, რომ დააყენა ხუთ, რას ვაკეთებთ, როცა ვხედავთ 182 00:08:27,550 --> 00:08:28,800 რაღაც ნაკლებად, ვიდრე ჩვენ? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 რა? 185 00:08:33,520 --> 00:08:36,750 გვინდა ჩადეთ five ამ დაკავშირებული სიაში, შენახვა ეს დახარისხებული. 186 00:08:36,750 --> 00:08:37,520 ჩვენ ვხედავთ ნომერი ორი. 187 00:08:37,520 --> 00:08:38,769 მერე რა ვქნათ? 188 00:08:38,769 --> 00:08:39,179 Marcus? 189 00:08:39,179 --> 00:08:40,679 >> აუდიტორია: ზარის მაჩვენებელი მომდევნო კვანძის. 190 00:08:40,679 --> 00:08:42,530 >> JASON HIRSCHHORN: და რატომ ჩვენ წასვლა მომდევნო ერთი? 191 00:08:42,530 --> 00:08:45,970 >> აუდიტორია: იმიტომ, რომ ის შემდეგი კვანძის სიაში. 192 00:08:45,970 --> 00:08:48,310 და ჩვენ მხოლოდ ვიცით, რომ სხვა ადგილას. 193 00:08:48,310 --> 00:08:50,410 >> JASON HIRSCHHORN: და ხუთ დიდია გარდა ორი, კერძოდ. 194 00:08:50,410 --> 00:08:51,600 რადგან ჩვენ გვინდა, რომ შევინარჩუნოთ ის დახარისხებული. 195 00:08:51,600 --> 00:08:52,730 ასე რომ, ხუთ მეტია ორი. 196 00:08:52,730 --> 00:08:54,460 ასე რომ, ჩვენ გადაადგილება, რათა მომდევნო ერთი. 197 00:08:54,460 --> 00:08:55,240 და ახლა ჩვენ მივაღწევთ ოთხ. 198 00:08:55,240 --> 00:08:56,490 და რა ხდება, როდესაც ჩვენ მივაღწევთ ოთხი? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> ხუთი მეტია ოთხ. 201 00:09:00,310 --> 00:09:01,460 ასე რომ, ჩვენ შენარჩუნებას აპირებს. 202 00:09:01,460 --> 00:09:03,110 და ახლა ჩვენ ექვსი. 203 00:09:03,110 --> 00:09:04,360 და რას ვხედავთ, ექვსი? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 დიახ, Carlos? 206 00:09:09,608 --> 00:09:10,544 >> აუდიტორია: ექვსი მეტია ხუთ. 207 00:09:10,544 --> 00:09:11,480 >> JASON HIRSCHHORN ექვსი არის აღემატება ხუთ. 208 00:09:11,480 --> 00:09:13,660 ასე რომ, სადაც ჩვენ გვინდა, ჩადეთ ხუთ. 209 00:09:13,660 --> 00:09:17,320 თუმცა, გახსოვდეთ, რომ თუ ჩვენ მხოლოდ ერთი მაჩვენებელი აქ - 210 00:09:17,320 --> 00:09:19,840 ეს არის ჩვენი დამატებითი მაჩვენებელი, გადიოდა მეშვეობით სიაში. 211 00:09:19,840 --> 00:09:21,860 და ჩვენ მიუთითებს ექვსი. 212 00:09:21,860 --> 00:09:25,010 ჩვენ დავკარგეთ სიმღერა რა მოდის ადრე ექვსი. 213 00:09:25,010 --> 00:09:29,130 ასე რომ, თუ გვინდა ჩადეთ რაღაც შევიდა ამ სიაში შენახვა ეს დახარისხებული, ჩვენ 214 00:09:29,130 --> 00:09:31,630 ალბათ უნდა რამდენი მითითებას? 215 00:09:31,630 --> 00:09:32,280 >> აუდიტორია: ორი. 216 00:09:32,280 --> 00:09:32,920 >> JASON HIRSCHORN: ორი. 217 00:09:32,920 --> 00:09:35,720 ერთ ტრეკზე მიმდინარე ერთი და ტრეკზე 218 00:09:35,720 --> 00:09:37,050 წინა. 219 00:09:37,050 --> 00:09:38,450 ეს არის მხოლოდ საგნით უკავშირდება სიაში. 220 00:09:38,450 --> 00:09:39,670 ეს მხოლოდ მიდის ერთი მიმართულებით. 221 00:09:39,670 --> 00:09:43,220 თუ ჩვენ გვქონდა ორმაგად უკავშირდება სიაში, სადაც ყველაფერი იმაზე მიუთითებს, რომ ის 222 00:09:43,220 --> 00:09:46,240 მას შემდეგ და რამ ადრე, მაშინ ჩვენ არ უნდა გავაკეთოთ, რომ. 223 00:09:46,240 --> 00:09:49,350 მაგრამ ამ შემთხვევაში ჩვენ არ სურს დაკარგოს სიმღერა რა ადრე მოვიდა us შემთხვევაში 224 00:09:49,350 --> 00:09:53,350 ჩვენ უნდა ჩაწეროთ ხუთ სადღაც ცენტრიდან. 225 00:09:53,350 --> 00:09:55,610 ამბობენ, რომ ჩვენ ჩასმა ცხრა. 226 00:09:55,610 --> 00:09:57,260 რა მოხდებოდა, როცა მივიღეთ რვა? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> აუდიტორია: ნეტავ უნდა მიიღოს, რომ null წერტილი. 229 00:10:04,880 --> 00:10:07,820 იმის მაგივრად null წერტილი ნეტავ დაამატოთ ელემენტს და შემდეგ უნდა 230 00:10:07,820 --> 00:10:09,216 ეს აღვნიშნო, რომ ცხრა. 231 00:10:09,216 --> 00:10:09,700 >> JASON HIRSCHORN: ზუსტად. 232 00:10:09,700 --> 00:10:10,600 ამიტომ ჩვენ კიდევ რვა. 233 00:10:10,600 --> 00:10:13,140 მივაღწევთ სიის ბოლოში იმის გამო, ეს მიუთითებს null. 234 00:10:13,140 --> 00:10:16,330 და ახლა, ნაცვლად, რომელმაც ის აღვნიშნო, რომ null ჩვენ ეს აღვნიშნო, რომ ჩვენი ახალი კვანძში. 235 00:10:16,330 --> 00:10:19,870 და ჩვენ დავსახეთ მაჩვენებელი ჩვენი ახალი კვანძის null. 236 00:10:19,870 --> 00:10:21,445 ვინმეს გაქვთ რაიმე შეკითხვები დაახლოებით ჩასმა? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 რა მოხდება, თუ არ აინტერესებს შენახვა სია დალაგებულია? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> აუდიტორია: Stick იგი დასაწყისში ან ბოლოს. 241 00:10:34,350 --> 00:10:35,510 >> JASON HIRSCHORN: Stick იგი დასაწყისში ან ბოლოს. 242 00:10:35,510 --> 00:10:37,276 რომელი უნდა ვქნათ? 243 00:10:37,276 --> 00:10:38,770 Bobby? 244 00:10:38,770 --> 00:10:41,020 რატომ ბოლოს? 245 00:10:41,020 --> 00:10:43,250 >> აუდიტორია: იმიტომ, რომ დასაწყისში უკვე შევსებული. 246 00:10:43,250 --> 00:10:43,575 >> JASON HIRSCHORN: OK. 247 00:10:43,575 --> 00:10:44,360 დასაწყისში უკვე შევსებული. 248 00:10:44,360 --> 00:10:46,090 ვისაც სურს ამტკიცებენ, წინააღმდეგ Bobby. 249 00:10:46,090 --> 00:10:47,290 Marcus. 250 00:10:47,290 --> 00:10:48,910 >> აუდიტორია: Well თქვენ ალბათ მინდა გამყარებაში მას დასაწყისში, რადგან 251 00:10:48,910 --> 00:10:50,140 წინააღმდეგ შემთხვევაში, თუ დააყენა ეს ბოლოს ნეტავ უნდა 252 00:10:50,140 --> 00:10:51,835 traverse მთელი სია. 253 00:10:51,835 --> 00:10:52,990 >> JASON HIRSCHORN: ზუსტად. 254 00:10:52,990 --> 00:10:57,970 ასე რომ, თუ ჩვენ ფიქრი runtime, runtime ჩასმა დასასრულს 255 00:10:57,970 --> 00:11:00,110 იქნება n, ზომა. 256 00:11:00,110 --> 00:11:03,080 რა არის დიდი O runtime ჩასმა დასაწყისში? 257 00:11:03,080 --> 00:11:04,170 მუდმივი დრო. 258 00:11:04,170 --> 00:11:07,075 ასე რომ, თუ არ აინტერესებს შენახვა რაღაც დახარისხებული, ბევრად უკეთესი, უბრალოდ 259 00:11:07,075 --> 00:11:08,420 ჩადეთ დასაწყისში ამ სიაში. 260 00:11:08,420 --> 00:11:10,320 და რომ შეიძლება გაკეთდეს მუდმივი დრო. 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 შემდეგი ოპერაცია იპოვოს, რომელიც მეორე - ჩვენ ფორმულირებული ეს ძიება. 264 00:11:18,870 --> 00:11:22,470 მაგრამ ჩვენ ვაპირებთ გადახედეთ დაკავშირებული სიაში ზოგიერთი ობიექტი. 265 00:11:22,470 --> 00:11:26,000 თქვენ ბიჭები არ ჩანს კოდი ძებნის ადრე ლექცია. 266 00:11:26,000 --> 00:11:29,490 მაგრამ ჩვენ ერთგვარი უბრალოდ გააკეთეს ეს ჩადეთ, ან თუნდაც ჩასმა 267 00:11:29,490 --> 00:11:30,580 რაღაც დახარისხებული. 268 00:11:30,580 --> 00:11:36,350 გადავხედავთ, აპირებს კვანძის მიერ კვანძის, სანამ თქვენთვის ნომერი, რომელიც თქვენ 269 00:11:36,350 --> 00:11:37,780 ეძებს. 270 00:11:37,780 --> 00:11:39,670 რა მოხდება, თუ თქვენ მიღწევა ბოლოს სიაში? 271 00:11:39,670 --> 00:11:43,020 ამბობენ, ვეძებ ცხრა და მე მიაღწიონ ბოლომდე სიაში. 272 00:11:43,020 --> 00:11:44,270 რა ვქნათ? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> აუდიტორია: დაბრუნება ყალბი? 275 00:11:48,110 --> 00:11:48,690 >> JASON HIRSCHORN: დაბრუნება ყალბი. 276 00:11:48,690 --> 00:11:49,960 ჩვენ არ საპოვნელად. 277 00:11:49,960 --> 00:11:52,010 თუ თქვენ მივაღწიოთ ბოლოს სიაში და თქვენ არ იპოვოს ნომერი თქვენ 278 00:11:52,010 --> 00:11:54,170 ეძებს, ის არ არსებობს. 279 00:11:54,170 --> 00:11:55,420 რაიმე შეკითხვები მოვძებნოთ? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 თუ ეს იყო დახარისხებული სია, რა განსხვავებული უნდა იყოს ჩვენი ძებნას? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 ჰო. 284 00:12:08,103 --> 00:12:10,600 >> აუდიტორია: ეს რომ იპოვოს პირველ ღირებულება რომ ის უფრო მეტია, ვიდრე ერთი 285 00:12:10,600 --> 00:12:12,390 თქვენ ეძებთ შემდეგ დაბრუნების ცრუ. 286 00:12:12,390 --> 00:12:13,190 >> JASON HIRSCHORN: ზუსტად. 287 00:12:13,190 --> 00:12:17,310 ასე რომ, თუ ეს დახარისხებული სია, თუ მივიღებთ რაღაც რომ მეტი რა 288 00:12:17,310 --> 00:12:20,180 ჩვენ ვეძებთ, ჩვენ არ უნდა შეინახოს აპირებს ბოლომდე სიაში. 289 00:12:20,180 --> 00:12:24,060 ჩვენ შეგვიძლია იმ ეტაპზე დაბრუნების ცრუ იმიტომ, რომ ჩვენ არ ვაპირებთ მის საპოვნელად. 290 00:12:24,060 --> 00:12:27,340 კითხვა ახლა, ჩვენ ვისაუბრეთ შენახვა დაკავშირებული სიები დახარისხებული, 291 00:12:27,340 --> 00:12:28,180 შენახვა მათ დაუხარისხებელი. 292 00:12:28,180 --> 00:12:30,050 ეს იქნება რაღაც თქვენ ალბათ აპირებს უნდა ვიფიქროთ 293 00:12:30,050 --> 00:12:34,240 როდესაც კოდირების პრობლემა კომპლექტი ხუთ თუ აირჩიეთ hash table ცალკე 294 00:12:34,240 --> 00:12:36,360 chaining მიდგომა, რომელიც ჩვენ ვსაუბრობთ შემდეგ. 295 00:12:36,360 --> 00:12:41,400 >> მაგრამ ღირს ეს შენარჩუნება სია დახარისხებული და შემდეგ შეძლებთ იქნებ აქვს 296 00:12:41,400 --> 00:12:42,310 სწრაფად ეძებს? 297 00:12:42,310 --> 00:12:47,220 თუ უკეთესი სწრაფად ჩადეთ რაღაც მუდმივი runtime მაგრამ შემდეგ 298 00:12:47,220 --> 00:12:48,430 აღარ ეძებს? 299 00:12:48,430 --> 00:12:52,250 ეს tradeoff უფლება არსებობს, რომ კიდევ გადასაწყვეტია, რა უფრო შესაბამისი 300 00:12:52,250 --> 00:12:53,590 თქვენი კონკრეტული პრობლემა. 301 00:12:53,590 --> 00:12:56,680 და იქ არ არის აუცილებელი ერთი აბსოლუტურად სწორი პასუხი. 302 00:12:56,680 --> 00:12:59,520 მაგრამ ეს, რა თქმა გადაწყვეტილება თქვენ მიიღებთ რათა და ალბათ კარგი დასაცავად 303 00:12:59,520 --> 00:13:05,270 რომ, ვთქვათ, კომენტარი ან ორი, თუ რატომ თქვენ აირჩია ერთი მეტი სხვა. 304 00:13:05,270 --> 00:13:06,490 >> და ბოლოს, წაშლის. 305 00:13:06,490 --> 00:13:08,100 ჩვენ ვნახეთ წაშლის. 306 00:13:08,100 --> 00:13:09,180 ეს მსგავსი ძებნას. 307 00:13:09,180 --> 00:13:11,020 ჩვენ ვეძებთ ელემენტს. 308 00:13:11,020 --> 00:13:12,390 ამბობენ, რომ ჩვენ ვცდილობთ წაშლა ექვსი. 309 00:13:12,390 --> 00:13:14,450 ასე რომ, ჩვენ ვხედავთ, ექვსი უფლება აქ. 310 00:13:14,450 --> 00:13:18,860 საქმე იმაშია, რომ ჩვენ უნდა დავრწმუნდეთ, რომ ჩვენ გავაკეთოთ არის ის, რომ რაც მიუთითებს 311 00:13:18,860 --> 00:13:21,220 ექვსი - როგორც ვხედავთ ნაბიჯი ორი ქვემოთ აქ - 312 00:13:21,220 --> 00:13:26,500 რასაც მიუთითებს ექვსი საჭიროებების გაფართოებული ექვსი ახლა და უნდა შეიცვალოს 313 00:13:26,500 --> 00:13:28,160 რასაც ექვსი მიუთითებს. 314 00:13:28,160 --> 00:13:31,410 ჩვენ არ გვინდა, რომ ოდესმე ობოლი დანარჩენი ჩვენი სია ავიწყდება მითითებული, რომ 315 00:13:31,410 --> 00:13:32,960 წინა მაჩვენებელი. 316 00:13:32,960 --> 00:13:35,960 და შემდეგ, ზოგჯერ, დამოკიდებულია პროგრამა, ისინი მხოლოდ 317 00:13:35,960 --> 00:13:37,380 წაშლა ამ კვანძის მთლიანად. 318 00:13:37,380 --> 00:13:40,135 ზოგჯერ თქვენ გსურთ დაბრუნდეს ღირებულება, რომელიც ამ კვანძში. 319 00:13:40,135 --> 00:13:42,490 ასე რომ, თუ წაშლის სამუშაოები. 320 00:13:42,490 --> 00:13:44,610 ნებისმიერი კითხვები წაშლა? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> აუდიტორია: ასე რომ, თუ თქვენ აპირებს წაშლა ის, რომ თქვენ უბრალოდ გამოიყენოს თავისუფალი, რადგან 323 00:13:53,850 --> 00:13:55,655 სავარაუდოდ, ეს იყო malloced? 324 00:13:55,655 --> 00:13:57,976 >> JASON HIRSCHORN თუ გსურთ გასათავისუფლებლად რაღაც რომ სწორედ და თქვენ 325 00:13:57,976 --> 00:13:58,540 malloced იგი. 326 00:13:58,540 --> 00:14:00,410 Say გვინდოდა დაბრუნებას ამ ღირებულება. 327 00:14:00,410 --> 00:14:04,010 ჩვენ შეიძლება დაბრუნდეს ექვსი და შემდეგ უფასოდ ამ კვანძის და call უფასო მასზე. 328 00:14:04,010 --> 00:14:06,180 ან ჩვენ მინდა ალბათ call უფასო პირველი და შემდეგ დაბრუნდება ექვსი. 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 მოდით გადაადგილება, რათა პრაქტიკაში კოდირების. 332 00:14:14,010 --> 00:14:16,090 ჩვენ ვაპირებთ კოდექსის სამი ფუნქციები. 333 00:14:16,090 --> 00:14:18,260 პირველი ჰქვია insert_node. 334 00:14:18,260 --> 00:14:22,170 ასე რომ თქვენ უნდა კოდი, რომელიც მე ელექტრონული ფოსტით თქვენ, და თუ თქვენ თვალს ამ მოგვიანებით 335 00:14:22,170 --> 00:14:28,020 თქვენ შეგიძლიათ თქვათ კოდის linked.c on CS50 ნახვა. 336 00:14:28,020 --> 00:14:30,880 მაგრამ linked.c, არსებობს გარკვეული ჩონჩხი კოდი, რომელიც უკვე 337 00:14:30,880 --> 00:14:32,280 დაიწერა თქვენთვის. 338 00:14:32,280 --> 00:14:34,560 და შემდეგ იქ რამდენიმე ფუნქციები თქვენ უნდა დაწეროთ. 339 00:14:34,560 --> 00:14:36,380 >> პირველი, ჩვენ ვაპირებთ დაწერა insert_node. 340 00:14:36,380 --> 00:14:39,800 და რა insert_node აკეთებს არის ჩანართები რიცხვი. 341 00:14:39,800 --> 00:14:42,440 და თქვენ რაც მთელი რიცხვი შევიდა უკავშირდება სიაში. 342 00:14:42,440 --> 00:14:45,470 კერძოდ, თქვენ უნდა შენარჩუნება სია დალაგებულია 343 00:14:45,470 --> 00:14:47,650 საწყისი პატარა რომ უდიდესი. 344 00:14:47,650 --> 00:14:51,360 ასევე, თქვენ არ მინდა ჩადეთ ნებისმიერი ეგზ. 345 00:14:51,360 --> 00:14:54,600 საბოლოოდ, როგორც ხედავთ insert_node დააბრუნებს bool. 346 00:14:54,600 --> 00:14:57,140 ასე რომ თქვენ უნდა ნება შესახებ ვიცით თუ არა ჩანართით იყო 347 00:14:57,140 --> 00:15:00,800 წარმატებული დაბრუნების ჭეშმარიტი ან ცრუ. 348 00:15:00,800 --> 00:15:02,580 დასასრულს ამ პროგრამის - 349 00:15:02,580 --> 00:15:05,750 და ამ ეტაპზე, თქვენ არ გჭირდებათ ფიქრი ათავისუფლებს არაფერი. 350 00:15:05,750 --> 00:15:11,790 ასე რომ ყველა თქვენ აკეთებთ არის აღების რიცხვი და ჩასმა იგი სიაში. 351 00:15:11,790 --> 00:15:13,890 >> ეს არის ის, რაც მე გეკითხებით ახლა. 352 00:15:13,890 --> 00:15:17,620 ერთხელ, იმ linked.c, რომელიც თქვენ ყველას გვაქვს, არის ჩონჩხი კოდი. 353 00:15:17,620 --> 00:15:20,980 და თქვენ უნდა ნახოთ ბოლოსკენ ნიმუში ფუნქცია დეკლარაცია. 354 00:15:20,980 --> 00:15:27,390 თუმცა, სანამ შესვლის კოდირების ის C, უაღრესად გარწმუნებთ, რომ წავიდეს 355 00:15:27,390 --> 00:15:29,330 მეშვეობით ნაბიჯები ჩვენ პრაქტიკოსი ყოველ კვირას. 356 00:15:29,330 --> 00:15:31,100 ჩვენ უკვე გავიარეთ სურათს ამ. 357 00:15:31,100 --> 00:15:33,380 ასე, რომ თქვენ უნდა ჰქონდეს გარკვეული გაგება თუ როგორ ეს სამუშაოები. 358 00:15:33,380 --> 00:15:36,590 მაგრამ მე გარწმუნებთ, რომ წერენ ზოგიერთი pseudocode ადრე diving შემოსული 359 00:15:36,590 --> 00:15:38,640 და ჩვენ ვაპირებთ წასვლა მეტი pseudocode როგორც ჯგუფი. 360 00:15:38,640 --> 00:15:41,470 და მერე კიდევ თქვენ წერილობითი თქვენი pseudocode, და კიდევ ჩვენ წერილობითი ჩვენი 361 00:15:41,470 --> 00:15:45,850 pseudocode როგორც ჯგუფი, თქვენ შეგიძლიათ წასვლას კოდირების ის C. 362 00:15:45,850 --> 00:15:49,980 >> როგორც ხელმძღვანელები up, insert_node ფუნქცია ალბათ trickiest of 363 00:15:49,980 --> 00:15:53,550 სამ ჩვენ ვაპირებთ დავწეროთ, რადგან მე დამატება ზოგიერთი დამატებითი შეზღუდვების 364 00:15:53,550 --> 00:15:57,190 თქვენი პროგრამირების, კერძოდ, თქვენ არ აპირებს ჩადეთ ნებისმიერი 365 00:15:57,190 --> 00:15:59,880 ეგზემპლარი და რომ სიაში უნდა დარჩეს დახარისხებული. 366 00:15:59,880 --> 00:16:02,660 ასე რომ ეს არის არასამთავრობო ტრივიალური პროგრამა რომ თქვენ უნდა Code. 367 00:16:02,660 --> 00:16:06,470 და რატომ არ მიიღოს ხუთიდან შვიდ ე მხოლოდ მისაღებად მუშაობა 368 00:16:06,470 --> 00:16:07,640 pseudocode და კოდი. 369 00:16:07,640 --> 00:16:09,460 და მაშინ ჩვენ დაიწყება ვაპირებ, როგორც ჯგუფი. 370 00:16:09,460 --> 00:16:11,680 ისევ და ისევ, თუ თქვენ გაქვთ რაიმე შეკითხვები მხოლოდ გაზარდოთ თქვენი მხრივ, და მე მოდის გარშემო. 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 >> ჩვენ ასევე ზოგადად გავაკეთოთ ეს - 375 00:18:30,120 --> 00:18:32,070 ან მე არ მკაფიოდ ამბობენ, რომ თქვენ შეუძლია მუშაობა ადამიანი. 376 00:18:32,070 --> 00:18:36,500 მაგრამ ცხადია, უაღრესად გარწმუნებთ, თუ თქვენ გაქვთ შეკითხვები, ვთხოვო 377 00:18:36,500 --> 00:18:39,840 მეზობელი სხდომაზე შემდეგ თქვენ ან თუნდაც მუშაობა ვინმეს 378 00:18:39,840 --> 00:18:40,510 სხვაგან, თუ გსურთ. 379 00:18:40,510 --> 00:18:42,600 ეს არ უნდა იყოს ინდივიდუალური ჩუმად საქმიანობაში. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> დავიწყოთ წერა რამდენიმე pseudocode ფორუმში. 382 00:20:16,330 --> 00:20:19,395 ვის შეუძლია მომეცი პირველი ხაზი pseudocode ამ პროგრამის? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 ამ ფუნქციას, არამედ - 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 >> აუდიტორია: ასე რომ პირველი რაც გავაკეთე იყო შექმნა ახალი მომცეთ კვანძის და მე 388 00:20:36,560 --> 00:20:41,320 ინიციალიზაცია მიუთითებს ურთიერთობა ის, რომ სიაში მიუთითებს. 389 00:20:41,320 --> 00:20:41,550 >> JASON HIRSCHORN: OK. 390 00:20:41,550 --> 00:20:45,190 ასე რომ თქვენ შექმნით ახალ მაჩვენებელი სიას, არა კვანძში. 391 00:20:45,190 --> 00:20:45,420 >> აუდიტორია: Right. 392 00:20:45,420 --> 00:20:46,150 ჰო. 393 00:20:46,150 --> 00:20:46,540 >> JASON HIRSCHORN: OK. 394 00:20:46,540 --> 00:20:48,221 და მერე რა გვინდა გავაკეთოთ? 395 00:20:48,221 --> 00:20:49,163 რა ამის შემდეგ? 396 00:20:49,163 --> 00:20:50,105 რაც შეეხება კვანძის? 397 00:20:50,105 --> 00:20:51,050 ჩვენ არ გვაქვს კვანძში. 398 00:20:51,050 --> 00:20:52,300 ჩვენ უბრალოდ ღირებულება. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 თუ გვინდა ჩადეთ კვანძის, რას უნდა გავაკეთოთ სანამ ჩვენ კი 401 00:20:58,890 --> 00:20:59,980 ვიფიქროთ ჩასმა იგი? 402 00:20:59,980 --> 00:21:00,820 >> აუდიტორია: ოჰ, უკაცრავად. 403 00:21:00,820 --> 00:21:02,160 ჩვენ უნდა malloc ფართი კვანძში. 404 00:21:02,160 --> 00:21:02,455 >> JASON HIRSCHORN: Excellent. 405 00:21:02,455 --> 00:21:03,210 მოდით - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 ვერ აღწევს, რომ მაღალი. 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 ჩვენ ვაპირებთ დაცემას, შემდეგ კი ჩვენ გამოყენებით ორი სვეტით. 411 00:21:13,236 --> 00:21:13,732 მე ვერ, რომ - 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 შექმნა ახალი კვანძში. 415 00:21:25,130 --> 00:21:29,380 თქვენ შეგიძლიათ შექმნათ კიდევ ერთი მაჩვენებელი სიაში ან შეგიძლიათ უბრალოდ გამოიყენოთ სიაში, როგორც ის არსებობს. 416 00:21:29,380 --> 00:21:30,720 თქვენ ნამდვილად არ უნდა გავაკეთოთ, რომ. 417 00:21:30,720 --> 00:21:31,750 >> ასე რომ, ჩვენ შევქმნით ახალ კვანძში. 418 00:21:31,750 --> 00:21:32,010 დიდი. 419 00:21:32,010 --> 00:21:32,840 ეს არის ის, რასაც ჩვენ ვაკეთებთ პირველი. 420 00:21:32,840 --> 00:21:34,870 რა არის შემდეგი? 421 00:21:34,870 --> 00:21:35,080 >> აუდიტორია: Wait. 422 00:21:35,080 --> 00:21:38,330 უნდა შეიქმნას ახალი კვანძის ახლა ან უნდა დაველოდოთ, რათა დავრწმუნდეთ, რომ 423 00:21:38,330 --> 00:21:42,260 არ არსებობს ეგზემპლარი კვანძის სიაში სანამ ჩვენ შექმნა? 424 00:21:42,260 --> 00:21:43,100 >> JASON HIRSCHORN: კარგი კითხვაა. 425 00:21:43,100 --> 00:21:47,770 მოდით გამართავს, რომ მოგვიანებით, რადგან უმრავლესობა დროს ჩვენ უნდა შექმნაში 426 00:21:47,770 --> 00:21:48,220 ახალი კვანძში. 427 00:21:48,220 --> 00:21:49,110 ასე რომ, ჩვენ გავაგრძელებთ რომ აქ. 428 00:21:49,110 --> 00:21:51,006 მაგრამ ეს კარგი კითხვაა. 429 00:21:51,006 --> 00:21:53,250 თუ ჩვენ შევქმნით და ჩვენ დუბლიკატი, რა უნდა 430 00:21:53,250 --> 00:21:54,490 ჩვენ გავაკეთებთ სანამ? 431 00:21:54,490 --> 00:21:55,190 >> აუდიტორია: უფასო იგი. 432 00:21:55,190 --> 00:21:55,470 >> JASON HIRSCHORN: ჰო. 433 00:21:55,470 --> 00:21:56,500 ალბათ გასათავისუფლებლად იგი. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 რას ვაკეთებთ შემდეგ ჩვენ შექმნა ახალი კვანძის? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> აუდიტორია: ჩვენ დააყენა ნომერი კვანძის? 438 00:22:04,780 --> 00:22:05,140 >> JASON HIRSCHORN: ზუსტად. 439 00:22:05,140 --> 00:22:07,190 ჩვენ დააყენა ნომერი - ჩვენ malloc სივრცეში. 440 00:22:07,190 --> 00:22:08,160 მე ვაპირებ რომ დატოვოთ რომ ყველა, როგორც ერთი ხაზი. 441 00:22:08,160 --> 00:22:08,720 მაგრამ თქვენ უფლება. 442 00:22:08,720 --> 00:22:10,305 ჩვენ malloc სივრცეში, და შემდეგ ჩვენ დააყენა ნომერი შემოსული 443 00:22:10,305 --> 00:22:12,585 ჩვენ შეგიძლიათ კიდევ მითითებული მომცეთ ნაწილს null. 444 00:22:12,585 --> 00:22:13,720 ეს არის ზუსტად ის უფლება. 445 00:22:13,720 --> 00:22:17,400 და მერე რა შეიძლება ითქვას ამის შემდეგ? 446 00:22:17,400 --> 00:22:18,490 ჩვენ მიიპყრო ამ სურათს დაფაზე. 447 00:22:18,490 --> 00:22:21,190 მერე რა ვქნათ? 448 00:22:21,190 --> 00:22:22,680 >> აუდიტორია: ჩვენ გავლა სიაში. 449 00:22:22,680 --> 00:22:23,930 >> JASON HIRSCHORN: გავლა სიაში. 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 და რას შემოწმება ყოველ კვანძში. 453 00:22:34,280 --> 00:22:35,955 Kurt, რას შემოწმება განთავსების ყოველ კვანძის? 454 00:22:35,955 --> 00:22:41,640 >> აუდიტორია: თუ არა n ღირებულება რომ კვანძის მეტია n ღირებულება 455 00:22:41,640 --> 00:22:43,070 ჩვენი კვანძში. 456 00:22:43,070 --> 00:22:43,340 >> JASON HIRSCHORN: OK. 457 00:22:43,340 --> 00:22:44,280 მე ვაპირებ ამის გაკეთებას - 458 00:22:44,280 --> 00:22:45,855 yeah, OK. 459 00:22:45,855 --> 00:22:48,160 ასე რომ, ეს n - 460 00:22:48,160 --> 00:22:59,040 მე ვაპირებ ვთქვა, თუ ღირებულება არის დიდი გარდა ამ კვანძის, მაშინ რა ვქნათ? 461 00:22:59,040 --> 00:23:07,290 >> აუდიტორია: Well, მაშინ ჩვენ ჩადეთ რამ უფლება, რომ. 462 00:23:07,290 --> 00:23:07,970 >> JASON HIRSCHORN: OK. 463 00:23:07,970 --> 00:23:09,410 ასე რომ, თუ ეს უფრო მეტია, ვიდრე ამ, მაშინ ჩვენ გვინდა ჩადეთ. 464 00:23:09,410 --> 00:23:14,010 მაგრამ ჩვენ გვინდა, ჩადეთ ეს უფლება ადრე იმის გამო, რომ ჩვენ ასევე უნდა იყოს 465 00:23:14,010 --> 00:23:16,070 შენახვა ტრეკზე, მაშინ, რა იყო ადრე. 466 00:23:16,070 --> 00:23:22,690 ასე რომ ჩადეთ ადრე. 467 00:23:22,690 --> 00:23:25,120 ამიტომ, ჩვენ, ალბათ გაშვებული რაღაც ადრე. 468 00:23:25,120 --> 00:23:27,770 ჩვენ ალბათ უნდა შენახვა სიმღერა რა ხდება. 469 00:23:27,770 --> 00:23:28,460 მაგრამ ჩვენ დავუბრუნდეთ არსებობს. 470 00:23:28,460 --> 00:23:30,160 ასე რომ, რა მნიშვნელობა ნაკლებია? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, რა გავაკეთოთ, თუ მნიშვნელობა ნაკლებია? 473 00:23:39,710 --> 00:23:43,000 >> აუდიტორია: მაშინ თქვენ უბრალოდ შეინახოს აპირებს თუ იგი ბოლო ერთი. 474 00:23:43,000 --> 00:23:43,550 >> JASON HIRSCHORN: მომწონს, რომ. 475 00:23:43,550 --> 00:23:44,800 ასე რომ, გადადით მომდევნო კვანძის. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 თუ ეს უკანასკნელი - 478 00:23:48,930 --> 00:23:51,100 ჩვენ, ალბათ, შემოწმების, რომ ამ თვალსაზრისით მდგომარეობა. 479 00:23:51,100 --> 00:23:54,870 მაგრამ ჰო, მომდევნო კვანძის. 480 00:23:54,870 --> 00:23:58,680 და რომ არც ძალიან დაბალია, ასე რომ, ჩვენ გადაადგილება აქ. 481 00:23:58,680 --> 00:24:02,030 მაგრამ თუ - 482 00:24:02,030 --> 00:24:03,280 შეგიძლიათ ყველამ ნახოთ ეს? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 თუ ჩვენ ტოლია რას ვაკეთებთ? 485 00:24:11,610 --> 00:24:15,740 თუ ღირებულება ჩვენ ვცდილობთ ჩასასმელად უდრის ამ კვანძის მნიშვნელობა? 486 00:24:15,740 --> 00:24:16,320 ჰო? 487 00:24:16,320 --> 00:24:18,400 >> აუდიტორია: [INAUDIBLE]. 488 00:24:18,400 --> 00:24:18,850 >> JASON HIRSCHORN: ჰო. 489 00:24:18,850 --> 00:24:19,290 აქედან გამომდინარე - 490 00:24:19,290 --> 00:24:20,090 Marcus არის სწორი. 491 00:24:20,090 --> 00:24:21,330 ჩვენ შეგვეძლო იქნებ გაკეთდეს რაღაც განსხვავებული. 492 00:24:21,330 --> 00:24:25,360 მაგრამ იმის გათვალისწინებით, რომ ჩვენ შევქმენით, აქ ჩვენ უნდა გასათავისუფლებლად და შემდეგ დაბრუნდნენ. 493 00:24:25,360 --> 00:24:26,774 Oh boy. 494 00:24:26,774 --> 00:24:30,080 ის არის, რომ უკეთესი? 495 00:24:30,080 --> 00:24:31,850 როგორ არის, რომ? 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 უფასო და მერე რა ჩვენ დაბრუნდნენ, [INAUDIBLE]? 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 ჩვენ აკლია რამე? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 ასე რომ, სად ვართ ჩვენ, შენახვა ტრეკზე ადრე კვანძის? 504 00:24:59,650 --> 00:25:02,370 >> აუდიტორია: მე ვფიქრობ, რომ წავიდოდა მას შემდეგ, რაც შექმნის ახალ კვანძში. 505 00:25:02,370 --> 00:25:02,600 >> JASON HIRSCHORN: OK. 506 00:25:02,600 --> 00:25:03,940 ასე რომ, წლის დასაწყისში ჩვენ, ალბათ - 507 00:25:03,940 --> 00:25:07,175 ჰო, ჩვენ შეგვიძლია შევქმნათ მომცეთ new კვანძის, ისევე როგორც წინა კვანძის მაჩვენებელი და 508 00:25:07,175 --> 00:25:09,600 მიმდინარე კვანძის მაჩვენებელი. 509 00:25:09,600 --> 00:25:12,640 მოდით ჩადეთ, რომ აქ. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 შექმნა მიმდინარე და წინა მითითებას კვანძების. 512 00:25:26,900 --> 00:25:28,955 მაგრამ როდესაც ჩვენ შეცვალოს იმ მითითებას? 513 00:25:28,955 --> 00:25:30,205 სად გავაკეთოთ, რომ კოდი? 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 >> აუდიტორია: - ღირებულება პირობებში? 517 00:25:35,170 --> 00:25:36,420 >> JASON HIRSCHORN: რომელი ერთი კერძოდ? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> აუდიტორია: მე უბრალოდ დაბნეული. 520 00:25:40,720 --> 00:25:44,200 თუ ღირებულება აღემატება ამ კვანძის, არ ნიშნავს ეს იმას, რომ გსურთ წავიდეთ 521 00:25:44,200 --> 00:25:45,320 მომდევნო კვანძის? 522 00:25:45,320 --> 00:25:49,515 >> JASON HIRSCHHORN: ასე რომ, თუ ჩვენი ღირებულება მეტი ღირებულება ამ კვანძში. 523 00:25:49,515 --> 00:25:52,130 >> აუდიტორია: Yeah, მაშინ ნეტავ მინდა წასვლა შემდგომი ქვემოთ ხაზის, არა? 524 00:25:52,130 --> 00:25:52,590 >> JASON HIRSCHHORN: Right. 525 00:25:52,590 --> 00:25:53,840 ამიტომ, ჩვენ არ ჩადეთ აქ. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 თუ მნიშვნელობა ნაკლებია ამ კვანძის, მაშინ ჩვენ წასვლა მომდევნო კვანძის - ან მაშინ ჩვენ 528 00:26:03,240 --> 00:26:03,835 ჩადეთ ადრე. 529 00:26:03,835 --> 00:26:05,966 >> აუდიტორია: Wait, რომელიც ამ კვანძის და რაც მნიშვნელობა? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON HIRSCHHORN: კარგი კითხვაა. 532 00:26:09,280 --> 00:26:13,260 ფასის პოსტი ამ ფუნქციის განმარტება არის ის, რაც ჩვენ მოცემული. 533 00:26:13,260 --> 00:26:16,910 ასე რომ ღირებულება არის ნომერ ჩვენ მოცემული. 534 00:26:16,910 --> 00:26:21,120 ასე რომ, თუ მნიშვნელობა ნაკლებია ამ კვანძის, ჩვენ გვჭირდება დრო, რათა ჩადეთ. 535 00:26:21,120 --> 00:26:24,575 თუ ღირებულება აღემატება ამ კვანძის, ჩვენ წასვლა მომდევნო კვანძის. 536 00:26:24,575 --> 00:26:26,790 და თავში ორიგინალური კითხვა, თუმცა, სადაც - 537 00:26:26,790 --> 00:26:29,060 >> აუდიტორია: თუ ღირებულება არის დიდი ვიდრე ამ კვანძში. 538 00:26:29,060 --> 00:26:30,310 >> JASON HIRSCHHORN: და ა.შ. რას ვაკეთებთ აქ? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 ტკბილი. 541 00:26:38,160 --> 00:26:38,860 ეს არის სწორი. 542 00:26:38,860 --> 00:26:41,370 მე უბრალოდ აპირებს დაწერა განახლება პოინტერები. 543 00:26:41,370 --> 00:26:44,010 მაგრამ დიახ, მიმდინარე ერთი თქვენ უნდა განაახლოთ იგი და 544 00:26:44,010 --> 00:26:46,080 აღვნიშნო, რომ მომდევნო ერთი. 545 00:26:46,080 --> 00:26:47,330 არაფერი ჩვენ აკლია? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 ამიტომ მე ვაპირებ აკრიფოთ ამ კოდი შევიდა gedit. 548 00:26:54,940 --> 00:26:58,375 ხოლო მე ამის გაკეთება, შეგიძლიათ აქვს რამდენიმე წუთის მუშაობა კოდირების 549 00:26:58,375 --> 00:28:19,240 ამ C. 550 00:28:19,240 --> 00:28:20,940 >> ამიტომ უნდა შეყვანის pseudocode. 551 00:28:20,940 --> 00:28:22,940 სწრაფი შენიშვნა, სანამ ჩვენ უნდა დავიწყოთ. 552 00:28:22,940 --> 00:28:25,560 ჩვენ შეიძლება ვერ შეძლებს მთლიანად დასრულდება ეს ყველა 553 00:28:25,560 --> 00:28:27,300 სამი ფუნქციები. 554 00:28:27,300 --> 00:28:30,630 არ არის სწორი გადაწყვეტილებები მათ რომ მე მქონ out თქვენ ბიჭები 555 00:28:30,630 --> 00:28:33,730 შემდეგ სექციაში, და იგი გამოქვეყნდება CS50.net. 556 00:28:33,730 --> 00:28:35,640 ასე რომ მე არ მოგიწოდებთ თქვენ წასვლა შევხედოთ სექციები. 557 00:28:35,640 --> 00:28:40,550 მე მოგიწოდებთ თქვენ ცდილობენ ამ თქვენს ფლობს, და შემდეგ გამოიყენოს პრაქტიკა 558 00:28:40,550 --> 00:28:41,760 პრობლემები სანახავად პასუხი. 559 00:28:41,760 --> 00:28:47,070 ეს არ ყველა შემუშავებულია მჭიდროდ ეხება და ვიცავთ იმას, რაც 560 00:28:47,070 --> 00:28:48,400 თქვენ უნდა გავაკეთოთ პრობლემა კომპლექტი. 561 00:28:48,400 --> 00:28:53,820 ასე რომ, მე გარწმუნებთ, რომ პრაქტიკაში ეს საკუთარი და შემდეგ გამოიყენოს კოდი 562 00:28:53,820 --> 00:28:54,660 შეამოწმეთ თქვენი პასუხი. 563 00:28:54,660 --> 00:28:57,060 იმიტომ, რომ მე მინდა გადაადგილება hash მაგიდები რაღაც მომენტში მონაკვეთზე. 564 00:28:57,060 --> 00:28:58,150 ასე რომ, ჩვენ შეიძლება არ მიიღოთ მეშვეობით ეს ყველაფერი. 565 00:28:58,150 --> 00:28:59,960 მაგრამ ჩვენ ყველაფერს გავაკეთებთ, რამდენიც ჩვენ შეგვიძლია ახლა. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 დავიწყოთ. 568 00:29:01,960 --> 00:29:04,770 ASAM, როგორ უნდა შეიქმნას ახალი კვანძის? 569 00:29:04,770 --> 00:29:06,810 >> აუდიტორია: თქვენ struct *. 570 00:29:06,810 --> 00:29:09,640 >> JASON HIRSCHHORN: ასე რომ, აქვს, რომ აქ. 571 00:29:09,640 --> 00:29:10,040 ოჰ, უკაცრავად. 572 00:29:10,040 --> 00:29:13,530 თქვენ ამბობდნენ struct *. 573 00:29:13,530 --> 00:29:17,260 >> აუდიტორია: და მერე [? სახის?] კვანძის ან გ კვანძში. 574 00:29:17,260 --> 00:29:17,780 >> JASON HIRSCHHORN: OK. 575 00:29:17,780 --> 00:29:19,740 მე ვაპირებ მოვუწოდო მას new_node ასე რომ ჩვენ შეგვიძლია დარჩენა თანმიმდევრული. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> აუდიტორია: და გსურთ, რომ უხელმძღვანელებს, პირველ კვანძში. 578 00:29:33,180 --> 00:29:33,580 >> JASON HIRSCHHORN: OK. 579 00:29:33,580 --> 00:29:37,290 ასე რომ, ახლა ეს მიუთითებს - ეს არ იქმნება ახალი კვანძის არავის გაუკეთებია. 580 00:29:37,290 --> 00:29:41,380 ეს მხოლოდ მიუთითებს პირველი კვანძის სიაში. 581 00:29:41,380 --> 00:29:42,630 როგორ შევქმნა ახალი კვანძის? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 თუ მე უნდა სივრცის შექმნა ახალი კვანძში. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 და რამდენად დიდი? 586 00:29:51,710 --> 00:30:00,390 >> აუდიტორია: ზომა struct. 587 00:30:00,390 --> 00:30:01,150 >> JASON HIRSCHHORN: ზომა struct. 588 00:30:01,150 --> 00:30:02,400 და რა struct მოუწოდა? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> აუდიტორია: Node? 591 00:30:09,840 --> 00:30:11,640 >> JASON HIRSCHHORN: Node. 592 00:30:11,640 --> 00:30:17,640 ასე malloc (sizeof (კვანძის)); გვაძლევს სივრცეში. 593 00:30:17,640 --> 00:30:19,740 და ეს ხაზი - 594 00:30:19,740 --> 00:30:21,740 ერთი რამ არის არასწორი ამ ხაზის. 595 00:30:21,740 --> 00:30:24,430 არის new_node მომცეთ struct? 596 00:30:24,430 --> 00:30:25,650 ეს არის generic სახელი. 597 00:30:25,650 --> 00:30:26,520 რა არის ეს - 598 00:30:26,520 --> 00:30:27,450 კვანძის, ზუსტად. 599 00:30:27,450 --> 00:30:29,340 ის კვანძის *. 600 00:30:29,340 --> 00:30:33,010 და რა ვქნათ შემდეგ ჩვენ malloc რაღაც, Asan? 601 00:30:33,010 --> 00:30:34,476 რა არის პირველი რამ გავაკეთოთ? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 რა მოხდება, თუ ის არ მუშაობს? 604 00:30:40,320 --> 00:30:42,430 >> აუდიტორია: Oh, შეამოწმოთ, თუ იგი მიუთითებს კვანძის? 605 00:30:42,430 --> 00:30:43,310 >> JASON HIRSCHHORN: ზუსტად. 606 00:30:43,310 --> 00:30:46,750 ასე რომ, თუ new_node შეადგენს შეადგენს null, რა ვქნათ? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 ეს დააბრუნებს bool, ამ ფუნქციას. 609 00:30:54,820 --> 00:30:57,760 ზუსტად. 610 00:30:57,760 --> 00:30:58,450 კარგად გამოიყურება. 611 00:30:58,450 --> 00:30:59,680 არაფერს დაამატოთ იქ? 612 00:30:59,680 --> 00:31:00,670 ჩვენ დაამატოთ რამ დასასრულს. 613 00:31:00,670 --> 00:31:03,160 მაგრამ ეს ჯერჯერობით კარგად გამოიყურება. 614 00:31:03,160 --> 00:31:06,170 შექმნა მიმდინარე და წინა პოინტერები. 615 00:31:06,170 --> 00:31:08,650 მიხეილი, როგორ გავაკეთო ეს? 616 00:31:08,650 --> 00:31:12,810 >> აუდიტორია: თქვენ უნდა გავაკეთოთ კვანძის *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 ნეტავ უნდა გააკეთოთ ერთი არ განთავსების new_node არამედ 619 00:31:25,502 --> 00:31:26,905 კვანძების ჩვენ უკვე გვაქვს. 620 00:31:26,905 --> 00:31:27,230 >> JASON HIRSCHHORN: OK. 621 00:31:27,230 --> 00:31:29,255 ასე რომ, მიმდინარე კვანძის ჩვენ შესახებ. 622 00:31:29,255 --> 00:31:30,505 მე მოვუწოდებ, რომ Curr. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 ყველა უფლება. 625 00:31:39,770 --> 00:31:41,620 ჩვენ გადავწყვიტეთ, რომ ჩვენ გვინდა, რომ შევინარჩუნოთ ორი იმიტომ, რომ ჩვენ უნდა ვიცოდეთ 626 00:31:41,620 --> 00:31:42,870 რა სანამ. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 რას უნდა ინიციალიზაცია to? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> აუდიტორია: მათი ღირებულება ჩვენს სიაში. 631 00:31:54,180 --> 00:31:58,090 >> JASON HIRSCHHORN: რა არის პირველი, რაც ჩვენს სიაში? 632 00:31:58,090 --> 00:32:04,050 ან ვიცით, სადაც დასაწყისში ჩვენს სიაში არის? 633 00:32:04,050 --> 00:32:08,015 >> აუდიტორია: არის თუ არა ეს გავიდა შევიდა ფუნქცია? 634 00:32:08,015 --> 00:32:08,466 >> JASON HIRSCHHORN: Right. 635 00:32:08,466 --> 00:32:09,716 იგი გავიდა უფლება აქ. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 ასე რომ, თუ ის შევიდა ფუნქცია, დაიწყოს სია, რა უნდა 638 00:32:18,980 --> 00:32:21,270 მითითებული მიმდინარე ტოლია? 639 00:32:21,270 --> 00:32:22,110 >> აუდიტორია: სია. 640 00:32:22,110 --> 00:32:22,900 >> JASON HIRSCHHORN: სია. 641 00:32:22,900 --> 00:32:24,090 ეს არის ზუსტად ის უფლება. 642 00:32:24,090 --> 00:32:26,290 ახლა მას აქვს მისამართი დაწყების ჩვენს სიაში. 643 00:32:26,290 --> 00:32:28,450 რაც შეეხება წინა? 644 00:32:28,450 --> 00:32:31,920 >> აუდიტორია: სია მინუს ერთი? 645 00:32:31,920 --> 00:32:32,690 >> JASON HIRSCHHORN: არსებობს არაფერი სანამ. 646 00:32:32,690 --> 00:32:34,580 რა უნდა გავაკეთოთ, რომ ნიშნავდეს არაფერი? 647 00:32:34,580 --> 00:32:35,050 >> აუდიტორია: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON HIRSCHHORN: ჰო. 649 00:32:35,450 --> 00:32:37,950 რომ ჟღერს კარგი იდეა. 650 00:32:37,950 --> 00:32:38,360 სრულყოფილი. 651 00:32:38,360 --> 00:32:39,630 დიდი მადლობა. 652 00:32:39,630 --> 00:32:42,850 გავლა სიაში. 653 00:32:42,850 --> 00:32:45,490 კონსტანტინე, რამდენ ხანს მივდივართ გავლა სიაში? 654 00:32:45,490 --> 00:32:49,010 >> აუდიტორია: სანამ მივაღწევთ null. 655 00:32:49,010 --> 00:32:49,390 >> JASON HIRSCHHORN: OK. 656 00:32:49,390 --> 00:32:50,430 ასე რომ, თუ, ხოლო ამისთვის loop. 657 00:32:50,430 --> 00:32:52,200 რას ვაკეთებთ? 658 00:32:52,200 --> 00:32:53,320 >> აუდიტორია: იქნებ for loop? 659 00:32:53,320 --> 00:32:53,910 >> JASON HIRSCHHORN: მოდით for loop. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> აუდიტორია: და ჩვენ ვთქვათ - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 სანამ მაჩვენებელი არ არის ტოლი null. 664 00:33:13,390 --> 00:33:19,160 >> JASON HIRSCHHORN: ასე რომ, თუ ჩვენ ვიცით, მდგომარეობაში, როგორ შეგვიძლია დავწეროთ loop 665 00:33:19,160 --> 00:33:21,740 საფუძველზე off რომ მდგომარეობა. 666 00:33:21,740 --> 00:33:24,380 როგორი loop უნდა გამოვიყენოთ? 667 00:33:24,380 --> 00:33:25,260 >> აუდიტორია: მიუხედავად იმისა. 668 00:33:25,260 --> 00:33:25,590 >> JASON HIRSCHHORN: ჰო. 669 00:33:25,590 --> 00:33:27,130 რომ ხდის უფრო გრძნობა საფუძველზე off რას განაცხადა. 670 00:33:27,130 --> 00:33:29,430 იმ შემთხვევაში, თუ ჩვენ გვსურს მხოლოდ წასვლას, ჩვენ ეს საკითხი უბრალოდ ვიცი, რომ რამ, ეს იქნებოდა 671 00:33:29,430 --> 00:33:31,680 გრძნობა უნდა გააკეთოს ხოლო loop. 672 00:33:31,680 --> 00:33:39,880 მიუხედავად იმისა, რომ მიმდინარე არ თანაბარი null, თუ მნიშვნელობა ნაკლებია ამ კვანძში. 673 00:33:39,880 --> 00:33:41,650 Akshar, მომეცი ამ ხაზის. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> აუდიტორია: თუ მიმდინარე> n n ნაკლები ღირებულება. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 ან საპირისპირო რომ. 678 00:34:03,260 --> 00:34:06,140 გადართვის რომ bracket. 679 00:34:06,140 --> 00:34:06,620 >> JASON HIRSCHHORN: უკაცრავად. 680 00:34:06,620 --> 00:34:08,760 >> აუდიტორია: შეცვლა bracket. 681 00:34:08,760 --> 00:34:10,914 >> JASON HIRSCHHORN: ასე რომ, თუ ის აღემატება ღირებულება. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 იმიტომ, რომ გაუგებარია ერთად კომენტარის ზემოთ, მე ვაპირებ ამის გაკეთებას. 684 00:34:22,120 --> 00:34:22,480 მაგრამ დიახ. 685 00:34:22,480 --> 00:34:25,125 თუ ჩვენი მნიშვნელობა ნაკლებია ამ კვანძის, რა ვქნათ? 686 00:34:25,125 --> 00:34:25,540 Oh. 687 00:34:25,540 --> 00:34:26,710 მე მას უფლება აქ. 688 00:34:26,710 --> 00:34:27,960 ჩადეთ ადრე. 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 როგორ გავაკეთოთ ეს? 692 00:34:33,933 --> 00:34:34,900 >> აუდიტორია: ეს ჯერ კიდევ მე? 693 00:34:34,900 --> 00:34:36,150 >> JASON HIRSCHHORN: ჰო. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> აუდიტორია: თქვენ - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> მომავალი. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON HIRSCHHORN: რა არის რომ აპირებს გაუტოლდება? 700 00:34:50,163 --> 00:34:52,070 >> აუდიტორია: იგი აპირებს ტოლია მიმდინარე. 701 00:34:52,070 --> 00:34:53,889 >> JASON HIRSCHHORN: ზუსტად. 702 00:34:53,889 --> 00:34:55,730 და ა.შ. მეორე - 703 00:34:55,730 --> 00:34:56,730 რა გვჭირდება განაახლოთ? 704 00:34:56,730 --> 00:34:59,982 >> აუდიტორია: შეამოწმეთ თუ წარსულში შეადგენს null. 705 00:34:59,982 --> 00:35:01,870 >> JASON HIRSCHHORN თუ prev - 706 00:35:01,870 --> 00:35:03,730 ასე რომ, თუ prev შეადგენს null. 707 00:35:03,730 --> 00:35:05,990 >> აუდიტორია: ეს ნიშნავს, რომ ის აპირებს გახდეს ხელმძღვანელი. 708 00:35:05,990 --> 00:35:06,780 >> JASON HIRSCHHORN: ე.ი. ის გახდა ხელმძღვანელი. 709 00:35:06,780 --> 00:35:07,620 ასეა, მაშინ რა ვქნათ? 710 00:35:07,620 --> 00:35:12,510 >> აუდიტორია: ჩვენ გავაკეთოთ ხელმძღვანელი შეადგენს new_node. 711 00:35:12,510 --> 00:35:16,690 >> JASON HIRSCHHORN: Head შეადგენს new_node. 712 00:35:16,690 --> 00:35:20,540 და რატომ უხელმძღვანელებს აქ, არ ჩამოვთვალოთ? 713 00:35:20,540 --> 00:35:24,940 >> აუდიტორია: იმიტომ, რომ თავი გლობალურ ცვლადი, რომელიც არის დაწყებული ადგილას. 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 და - 718 00:35:36,150 --> 00:35:53,796 >> აუდიტორია: მაშინ თქვენ სხვას prev> შემდეგი ტოლია new_node. 719 00:35:53,796 --> 00:35:55,080 და მაშინ იქნება TRUE. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON HIRSCHHORN: სად ჩვენ დავსახეთ new_node ბოლოს? 722 00:36:02,700 --> 00:36:04,850 >> აუდიტორია: მე - 723 00:36:04,850 --> 00:36:06,180 I მითითებული, რომ სტარტზე. 724 00:36:06,180 --> 00:36:07,430 >> JASON HIRSCHHORN: რა ხაზი? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> აუდიტორია: მას შემდეგ, თუ განაცხადი შემოწმების, თუ ის ცნობილია. 727 00:36:12,598 --> 00:36:13,057 >> JASON HIRSCHHORN: Right აქ? 728 00:36:13,057 --> 00:36:18,335 >> აუდიტორია: მინდა გავაკეთოთ new_node-> n უდრის ღირებულება. 729 00:36:18,335 --> 00:36:19,585 >> JASON HIRSCHHORN: ხმები კარგი. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 ალბათ ეს აზრი - ჩვენ არ უნდა ვიცოდეთ რა სიაში ჩვენ შესახებ 732 00:36:25,090 --> 00:36:26,280 რადგან ჩვენ მხოლოდ საქმე ერთი სია. 733 00:36:26,280 --> 00:36:29,560 ასე რომ, უკეთესი ფუნქცია დეკლარაციის ეს არის უბრალოდ მოშორება ამ 734 00:36:29,560 --> 00:36:34,360 მთლიანად და უბრალოდ ჩადეთ ღირებულება თარგმნეს ხელმძღვანელი. 735 00:36:34,360 --> 00:36:35,930 ჩვენ კი არ უნდა იცოდეს, რა სიაში ჩვენ შემოსული 736 00:36:35,930 --> 00:36:39,140 მაგრამ მე დაიცავს მას ახლა და შემდეგ შეცვალოთ ის საფუძველზე განახლებაზე 737 00:36:39,140 --> 00:36:42,590 სლაიდები და კოდი. 738 00:36:42,590 --> 00:36:44,980 ასე რომ გამოიყურება კარგი ახლა. 739 00:36:44,980 --> 00:36:46,560 თუ ღირებულება - ვის შეუძლია ამის გაკეთება ხაზი? 740 00:36:46,560 --> 00:36:47,810 იმ შემთხვევაში, თუ - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 რას ვაკეთებთ აქ, ნოე. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> აუდიტორია: თუ ღირებულება არის დიდი გარდა Curr> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON HIRSCHHORN: როგორ ჩვენ წასვლა მომდევნო კვანძის? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> აუდიტორია: Curr> n არის ტოლი new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON HIRSCHHORN: So n არის რა ნაწილი struct? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 რიცხვი. 753 00:37:46,020 --> 00:37:50,420 და new_node არის მომცეთ კვანძში. 754 00:37:50,420 --> 00:37:51,880 ასე რომ, თუ რა ნაწილი Curr უნდა განახლება? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 თუ არ n, მაშინ რა არის მეორე ნაწილი? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 ნოეს რა არის მეორე ნაწილი. 759 00:38:22,810 --> 00:38:23,570 >> აუდიტორია: Oh, მომავალი. 760 00:38:23,570 --> 00:38:25,645 >> JASON HIRSCHHORN შემდეგი, ზუსტად. 761 00:38:25,645 --> 00:38:26,410 ზუსტად. 762 00:38:26,410 --> 00:38:28,770 შემდეგი არის სწორი ერთი. 763 00:38:28,770 --> 00:38:31,540 და რა გვჭირდება განახლება, ნოეს? 764 00:38:31,540 --> 00:38:32,840 >> აუდიტორია: პოინტერები. 765 00:38:32,840 --> 00:38:34,840 >> JASON HIRSCHHORN: So ჩვენ განახლება მიმდინარე. 766 00:38:34,840 --> 00:38:36,090 >> აუდიტორია: წინა> მომავალი. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON HIRSCHHORN: ჰო. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 OK, ჩვენ პაუზის. 771 00:38:58,370 --> 00:39:02,200 ვინ დაგვეხმარება აქ? 772 00:39:02,200 --> 00:39:03,385 Manu, რა უნდა გავაკეთოთ? 773 00:39:03,385 --> 00:39:05,615 >> აუდიტორია: თქვენ მოხვდით მითითებული მას ტოლი Curr> მომავალი. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 მაგრამ, რომ სანამ წინა ხაზი. 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 არაფერი? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> აუდიტორია: მე არ ვფიქრობ, თქვენ ნიშნავდა, რომ შეიცვალოს Curr> მომავალი. 781 00:39:22,680 --> 00:39:29,270 მე ვფიქრობ, თქვენ ნიშნავდა გავაკეთოთ Curr შეადგენს Curr> შემდეგი წასვლა მომდევნო კვანძის. 782 00:39:29,270 --> 00:39:30,500 >> JASON HIRSCHHORN: ასე რომ, ბოდიში, სადაც? 783 00:39:30,500 --> 00:39:32,680 რა ხაზი? 784 00:39:32,680 --> 00:39:33,420 ეს ხაზი? 785 00:39:33,420 --> 00:39:33,750 >> აუდიტორია: Yeah. 786 00:39:33,750 --> 00:39:35,745 რათა Curr შეადგენს Curr> მომავალი. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON HIRSCHHORN: ასე რომ სწორი იმის გამო, რომ მიმდინარე 789 00:39:43,360 --> 00:39:45,220 მომცეთ კვანძში. 790 00:39:45,220 --> 00:39:48,550 და ჩვენ გვინდა, რომ აღვნიშნო, რომ მომავალ კვანძის რა მისაღებად გაკეთებული 791 00:39:48,550 --> 00:39:49,930 მიუთითა. 792 00:39:49,930 --> 00:39:54,410 Curr თავად აქვს მომავალი. 793 00:39:54,410 --> 00:39:58,620 მაგრამ თუ ჩვენ განახლება curr.next, ჩვენ იქნება განახლება ფაქტობრივი შენიშვნა 794 00:39:58,620 --> 00:40:01,430 თავისთავად, არ არის, სადაც ეს მაჩვენებელი მიუთითებს. 795 00:40:01,430 --> 00:40:02,680 რაც შეეხება ამ მიმართულებით, თუმცა. 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 >> აუდიტორია: წინა> შემდეგი ტოლია Curr. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON HIRSCHHORN: ასე რომ, კიდევ ერთხელ, თუ prev არის მომცეთ კვანძის, prev-> მომავალი არის 801 00:40:19,440 --> 00:40:23,020 ფაქტობრივი მაჩვენებელი ამ კვანძში. 802 00:40:23,020 --> 00:40:27,190 ასე რომ, ეს იქნება განახლებაზე მაჩვენებელი კვანძის Curr. 803 00:40:27,190 --> 00:40:28,570 ჩვენ არ გვინდა განახლება მაჩვენებელი კვანძში. 804 00:40:28,570 --> 00:40:30,570 ჩვენ გვინდა განაახლოთ წინა. 805 00:40:30,570 --> 00:40:31,850 ასე როგორ უნდა ამის გაკეთება? 806 00:40:31,850 --> 00:40:34,250 >> აუდიტორია: ეს იქნებოდა მხოლოდ prev. 807 00:40:34,250 --> 00:40:34,565 >> JASON HIRSCHHORN: Right. 808 00:40:34,565 --> 00:40:35,560 წინა მომცეთ კვანძში. 809 00:40:35,560 --> 00:40:38,750 ახლა ჩვენ იცვლება მას ახალი მომცეთ კვანძში. 810 00:40:38,750 --> 00:40:40,830 OK მოდი ქვევით. 811 00:40:40,830 --> 00:40:41,940 და ბოლოს, ამ ბოლო მდგომარეობაში. 812 00:40:41,940 --> 00:40:44,896 Jeff, რას ვაკეთებთ აქ? 813 00:40:44,896 --> 00:40:47,515 >> აუდიტორია: თუ ღირებულება არის ტოლი Curr> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON HIRSCHHORN: უკაცრავად. 816 00:40:51,300 --> 00:40:52,372 Oh ჩემი სიკეთე. 817 00:40:52,372 --> 00:40:54,330 რა? 818 00:40:54,330 --> 00:40:55,580 ღირებულება == Curr> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 რა ვქნათ? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> აუდიტორია: ნეტავ გასათავისუფლებლად ჩვენი new_node, და მერე ნეტავ დაბრუნების ცრუ. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON HIRSCHHORN: ეს არის ის, რაც ჩვენ წერილობით ჯერჯერობით. 825 00:41:23,460 --> 00:41:25,710 ვინმეს აქვს რამე დაამატოთ სანამ ჩვენ? 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 მოდით ცდილობენ. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 კონტროლის მიღწევა ბოლომდე არასამთავრობო ბათილად ფუნქცია. 831 00:41:46,110 --> 00:41:48,310 Avi, რა ხდება? 832 00:41:48,310 --> 00:41:51,380 >> აუდიტორია: თქვენ უნდა დააყენოს დაბრუნება მართალია გარეთ ხოლო loop? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON HIRSCHHORN: მე არ ვიცი. 835 00:41:54,400 --> 00:41:54,780 გსურთ ჩემთვის? 836 00:41:54,780 --> 00:41:55,520 >> აუდიტორია: არასოდეს იბადება. 837 00:41:55,520 --> 00:41:56,350 პოსტები 838 00:41:56,350 --> 00:41:57,180 >> JASON HIRSCHHORN: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> აუდიტორია: მე ვფიქრობ, თქვენ ნიშნავდა დააყენა დაბრუნების ცრუ დასასრულს 840 00:41:59,460 --> 00:42:02,230 საქართველოს ხოლო loop. 841 00:42:02,230 --> 00:42:03,270 >> JASON HIRSCHHORN: ასე რომ, სადაც გინდა წასვლა? 842 00:42:03,270 --> 00:42:05,270 >> აუდიტორია: Like გარეთ ხოლო loop. 843 00:42:05,270 --> 00:42:08,800 ასე რომ, თუ გასასვლელად ხოლო loop ნიშნავს რომ თქვენ მიაღწია ბოლოს და 844 00:42:08,800 --> 00:42:09,980 არაფერი მოხდა. 845 00:42:09,980 --> 00:42:10,410 >> JASON HIRSCHHORN: OK. 846 00:42:10,410 --> 00:42:12,340 ასე რომ, რას ვაკეთებთ აქ? 847 00:42:12,340 --> 00:42:13,702 >> აუდიტორია: თქვენ დაბრუნების ცრუ იქ. 848 00:42:13,702 --> 00:42:15,040 >> JASON HIRSCHHORN: Oh, ჩვენ ამის გაკეთება ორივეგან? 849 00:42:15,040 --> 00:42:15,650 >> აუდიტორია: 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 უნდა წავიდეთ? 853 00:42:26,160 --> 00:42:26,980 Oh ჩემი სიკეთე. 854 00:42:26,980 --> 00:42:27,290 მე ბოდიში. 855 00:42:27,290 --> 00:42:28,480 მე ბოდიშს ეკრანზე. 856 00:42:28,480 --> 00:42:30,530 ეს არის სახის freaking გარეთ ჩვენზე. 857 00:42:30,530 --> 00:42:31,520 ასე რომ, აირჩიეთ ვარიანტი. 858 00:42:31,520 --> 00:42:35,260 Zero, თითო კოდი, ტოვებს პროგრამა. 859 00:42:35,260 --> 00:42:36,700 ერთი ჩანართები რაღაც. 860 00:42:36,700 --> 00:42:37,990 მოდით ჩადეთ სამი. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 ჩანართით არ იყო წარმატებული. 863 00:42:45,380 --> 00:42:46,500 მე ვაპირებ ამობეჭდოთ. 864 00:42:46,500 --> 00:42:48,050 მე არ მაქვს არაფერი. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 იქნებ ეს იყო მხოლოდ fluke. 867 00:42:50,250 --> 00:42:52,810 ჩადეთ ერთი. 868 00:42:52,810 --> 00:42:55,770 არ არის წარმატებული. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 მოდით აწარმოებს მეშვეობით GDB მართლაც სწრაფად შეამოწმეთ, თუ რა ხდება. 871 00:43:02,400 --> 00:43:06,055 >> დამახსოვრება GDB. / სახელი თქვენი პროგრამა იღებს us შევიდა GDB. 872 00:43:06,055 --> 00:43:07,610 არის, რომ ბევრი გაუმკლავდეს? 873 00:43:07,610 --> 00:43:08,560 Flashing? 874 00:43:08,560 --> 00:43:10,400 ალბათ. 875 00:43:10,400 --> 00:43:12,760 თვალები დახუჭე და რამდენიმე ღრმა breaths თუ თქვენ დაიღალა 876 00:43:12,760 --> 00:43:13,580 ეძებს მას. 877 00:43:13,580 --> 00:43:14,200 მე GDB. 878 00:43:14,200 --> 00:43:15,830 რა არის პირველი რამ გავაკეთო GDB? 879 00:43:15,830 --> 00:43:17,050 ჩვენ მივიღეთ გაერკვნენ რა ხდება აქ. 880 00:43:17,050 --> 00:43:17,310 ვნახოთ. 881 00:43:17,310 --> 00:43:21,650 ჩვენ ექვსი წუთი ფიგურა თუ რა ხდება. 882 00:43:21,650 --> 00:43:22,900 დაარღვიე მთავარი. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 და მერე რა გავაკეთო? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 აწარმოებს. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 მოდით ავირჩიოთ ვარიანტი. 889 00:43:34,160 --> 00:43:36,330 და რას N გავაკეთოთ? 890 00:43:36,330 --> 00:43:38,480 შემდეგი. 891 00:43:38,480 --> 00:43:38,950 ჰო. 892 00:43:38,950 --> 00:43:39,740 >> აუდიტორია: ჯერ არ თქვენ აღვნიშნო - 893 00:43:39,740 --> 00:43:45,230 არ ამბობთ, რომ ხელმძღვანელი, ეს იყო ინიციალიზაცია to null დასაწყისში. 894 00:43:45,230 --> 00:43:47,140 მაგრამ ვფიქრობდი, თქვენ განაცხადეთ, რომ OK. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON HIRSCHHORN: წამო - მოდით შევხედოთ in GDB, და მაშინ ჩვენ დავბრუნდებით. 897 00:43:52,640 --> 00:43:54,910 მაგრამ ეს ჟღერს თქვენ უკვე გაქვთ გარკვეული იდეები, თუ რა ხდება. 898 00:43:54,910 --> 00:43:58,340 ასე რომ ჩვენ გვინდა ჩადეთ რამე. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 ჩვენ ჩადეთ. 901 00:44:00,150 --> 00:44:00,770 გთხოვთ შეიყვანოთ int. 902 00:44:00,770 --> 00:44:01,990 ჩვენ ჩადეთ სამი. 903 00:44:01,990 --> 00:44:03,000 და შემდეგ მე ამ ხაზის. 904 00:44:03,000 --> 00:44:07,030 როგორ შემიძლია წასვლა დაიწყება გამართვის ჩანართით ცნობილი ფუნქცია? 905 00:44:07,030 --> 00:44:08,280 Oh ჩემი სიკეთე. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 რომ ბევრი. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 ის არის, რომ freaking გარეთ ბევრი? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> აუდიტორია: Oh, ის გარდაიცვალა. 912 00:44:21,680 --> 00:44:22,930 >> JASON HIRSCHHORN: I just გამოყვანილია იგი out. 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 >> აუდიტორია: შესაძლოა ის ჩაეგდო მავთული. 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 ასე რომ, დედააზრი - 919 00:44:42,330 --> 00:44:43,470 რა ვთქვა? 920 00:44:43,470 --> 00:44:46,040 >> აუდიტორია: მე ვთქვი, ირონია ტექნიკური სირთულეები ამ კლასში. 921 00:44:46,040 --> 00:44:46,410 >> JASON HIRSCHHORN: ვიცი. 922 00:44:46,410 --> 00:44:48,660 თუ მხოლოდ მე მქონდა კონტროლი, რომ ნაწილი. 923 00:44:48,660 --> 00:44:49,910 [INAUDIBLE] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 რომ ჟღერს დიდი. 926 00:44:55,400 --> 00:44:58,680 რატომ არ ბიჭები დაიწყოს ფიქრი რა ვქნათ, რა დავაშავეთ, 927 00:44:58,680 --> 00:45:01,140 და ჩვენ დავბრუნდებით 90 წამში. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, მე ვაპირებ გთხოვოთ, თუ როგორ უნდა წავიდეს შიგნით insert_node გამართვის იგი. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 ასე რომ, ეს არის, სადაც ჩვენ ბოლო შეჩერდით. 932 00:46:31,460 --> 00:46:35,110 როგორ შემიძლია წასვლა შიგნით insert_node, Avica, შეისწავლოს, თუ რა ხდება? 933 00:46:35,110 --> 00:46:36,360 რა GDB ბრძანება? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Break არ მიიღებს me შიგნით. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 ჯერ Marquise იცით? 938 00:46:47,130 --> 00:46:48,240 >> აუდიტორია: What? 939 00:46:48,240 --> 00:46:51,780 >> JASON HIRSCHHORN: რა GDB ბრძანება გამოვიყენო წავიდეთ შიგნით ამ ფუნქციას? 940 00:46:51,780 --> 00:46:52,070 >> აუდიტორია: ნაბიჯი? 941 00:46:52,070 --> 00:46:55,140 >> JASON HIRSCHHORN: Step via S. რომ იღებს me შიგნით. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing გარკვეული ფართი. 944 00:46:58,040 --> 00:46:59,120 რომ ყველა გამოიყურება მისი აპირებს. 945 00:46:59,120 --> 00:47:00,370 მოდით, შევხედოთ new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 მას გარკვეული მეხსიერება მისამართზე. 948 00:47:05,410 --> 00:47:07,440 შევამოწმოთ - 949 00:47:07,440 --> 00:47:08,500 რომ არის სწორი. 950 00:47:08,500 --> 00:47:12,220 ასე რომ, ყველაფერი აქ, როგორც ჩანს, სამუშაო სწორად. 951 00:47:12,220 --> 00:47:14,530 >> აუდიტორია: რა არის განსხვავება შორის P და ჩვენება? 952 00:47:14,530 --> 00:47:16,160 >> JASON HIRSCHHORN: P დგას ბეჭდვითი. 953 00:47:16,160 --> 00:47:19,310 და ა.შ. თქვენ გეკითხებით რა განსხვავება და ეს? 954 00:47:19,310 --> 00:47:22,330 ამ შემთხვევაში, არაფერი. 955 00:47:22,330 --> 00:47:26,960 მაგრამ ზოგადად არსებობს გარკვეული განსხვავებები. 956 00:47:26,960 --> 00:47:28,220 და თქვენ უნდა გამოიყურებოდეს GDB სახელმძღვანელო. 957 00:47:28,220 --> 00:47:29,560 მაგრამ ამ შემთხვევაში, არაფერი. 958 00:47:29,560 --> 00:47:31,460 ჩვენ ტენდენცია გამოიყენოს ბეჭდვითი, თუმცა იმის გამო, ჩვენ არ უნდა გავაკეთოთ ბევრად მეტი, ვიდრე 959 00:47:31,460 --> 00:47:33,960 ბეჭდვა ერთი ღირებულება. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 ასე რომ, ჩვენ on line 80 ჩვენი კოდი შექმნის კვანძის * Curr ტოლია სიაში. 962 00:47:40,300 --> 00:47:42,500 მოდით ამობეჭდოთ Curr. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 ის ტოლია სიაში. 965 00:47:46,840 --> 00:47:48,850 ტკბილი. 966 00:47:48,850 --> 00:47:49,340 დაველოდოთ. 967 00:47:49,340 --> 00:47:50,590 ეს უდრის რაღაც. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 რომ არ ჩანს უფლება. 970 00:47:56,190 --> 00:47:56,840 იქ ჩვენ წავიდეთ. 971 00:47:56,840 --> 00:47:59,470 ეს იმიტომ, რომ ამ GDB, უფლება, თუ ეს ხაზი თქვენ ეს 972 00:47:59,470 --> 00:48:00,330 არ აღსრულებულა. 973 00:48:00,330 --> 00:48:03,100 ასე რომ თქვენ უნდა რეალურად აკრიფოთ შემდეგი შეასრულოს ხაზი 974 00:48:03,100 --> 00:48:05,230 ადრე ხედავს მის შედეგებს. 975 00:48:05,230 --> 00:48:06,680 ასე რომ აქ ვართ. 976 00:48:06,680 --> 00:48:09,490 ჩვენ მხოლოდ შესრულებული ამ ხაზის, წინა ტოლია null. 977 00:48:09,490 --> 00:48:13,590 ასე რომ კიდევ ერთხელ, თუ ჩვენ ბეჭდვა წინა ჩვენ ვერ ვხედავთ არაფერს, უცნაური. 978 00:48:13,590 --> 00:48:18,680 მაგრამ თუ ჩვენ რეალურად შეასრულოს, რომ ხაზი, მაშინ ვნახავთ 979 00:48:18,680 --> 00:48:20,380 , რომ ხაზი მუშაობდა. 980 00:48:20,380 --> 00:48:21,060 >> ამიტომ, ჩვენ უნდა Curr. 981 00:48:21,060 --> 00:48:23,180 ეს არის ორივე კარგი. 982 00:48:23,180 --> 00:48:24,010 უფლება? 983 00:48:24,010 --> 00:48:28,130 ახლა ჩვენ ამ ხაზის უფლება აქ. 984 00:48:28,130 --> 00:48:29,310 მიუხედავად იმისა, რომ Curr არ თანაბარი null. 985 00:48:29,310 --> 00:48:31,110 ისე, რას Curr ტოლია? 986 00:48:31,110 --> 00:48:32,450 ჩვენ უბრალოდ დაინახა იგი შეადგენდა null. 987 00:48:32,450 --> 00:48:33,210 ჩვენ დაბეჭდილი იგი out. 988 00:48:33,210 --> 00:48:35,110 მე ამობეჭდოთ ისევ. 989 00:48:35,110 --> 00:48:36,720 ამიტომ არის, რომ სანამ loop აპირებს შეასრულოს? 990 00:48:36,720 --> 00:48:37,270 >> აუდიტორია: არა 991 00:48:37,270 --> 00:48:39,790 >> JASON HIRSCHHORN: ასე რომ, როდესაც მე აკრეფილი, რომ ხაზი, ხედავთ ჩვენ გადახტა ყველა გზა 992 00:48:39,790 --> 00:48:41,390 ქვემოთ ბოლოში, დაბრუნების ცრუ. 993 00:48:41,390 --> 00:48:44,520 და მაშინ ჩვენ ვაპირებთ დაბრუნებას ყალბი და დავუბრუნდეთ ჩვენი პროგრამა და 994 00:48:44,520 --> 00:48:48,020 საბოლოოდ ამობეჭდოთ, როგორც ვნახეთ, ჩანართით არ იყო წარმატებული. 995 00:48:48,020 --> 00:48:51,010 ასე რომ, ვინმეს გაქვთ რაიმე იდეები, თუ რა ჩვენ უნდა გავაკეთოთ დაფიქსირება ამ? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 მე ვაპირებ დაველოდოთ ვხედავ რამდენიმე ხელში ახვიდეთ. 998 00:48:57,570 --> 00:48:58,830 ჩვენ არ შეასრულოს ეს. 999 00:48:58,830 --> 00:49:01,660 გაითვალისწინეთ, ეს იყო პირველი რამ ვაკეთებდით. 1000 00:49:01,660 --> 00:49:02,430 მე არ ვაპირებ გავაკეთოთ რამოდენიმე. 1001 00:49:02,430 --> 00:49:03,670 მე ვაპირებ ამის გაკეთებას რამდენიმე. 1002 00:49:03,670 --> 00:49:04,830 იმის გამო, რომ რამდენიმე ნიშნავს ორი. 1003 00:49:04,830 --> 00:49:07,620 მე ლოდინი ორზე მეტი. 1004 00:49:07,620 --> 00:49:10,690 >> პირველი ჩანართი, Curr, by default შეადგენს null. 1005 00:49:10,690 --> 00:49:14,050 და ამ მარყუჟის მხოლოდ ახორციელებს თუ Curr არ null. 1006 00:49:14,050 --> 00:49:18,740 ასე რომ, როგორ შემიძლია გარშემო? 1007 00:49:18,740 --> 00:49:19,990 მე ვხედავ სამი ხელში. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 მე დაველოდოთ უმეტეს სამი. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, რას ფიქრობთ? 1012 00:49:35,940 --> 00:49:37,730 >> აუდიტორია: ისე, თუ სჭირდება შეასრულოს კიდევ ერთხელ, თქვენ უბრალოდ 1013 00:49:37,730 --> 00:49:39,948 შეცვალოთ ეს do-ხოლო loop. 1014 00:49:39,948 --> 00:49:41,250 >> JASON HIRSCHHORN: OK. 1015 00:49:41,250 --> 00:49:44,240 იქნება, რომ გადაწყვიტოს ჩვენი პრობლემა, თუმცა? 1016 00:49:44,240 --> 00:49:47,750 >> აუდიტორია: ამ შემთხვევაში არ არის, რადგან ის ფაქტი, რომ სია ცარიელია. 1017 00:49:47,750 --> 00:49:52,150 ასე რომ, მაშინ, ალბათ, მხოლოდ უნდა დაამატოთ განცხადება, რომ იმ შემთხვევაში, თუ loop გამოსვლა 1018 00:49:52,150 --> 00:49:55,312 მაშინ თქვენ უნდა იყოს დასასრულს სიაში, სადაც წერტილი თქვენ 1019 00:49:55,312 --> 00:49:56,562 შეგიძლიათ უბრალოდ ჩადეთ იგი. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON HIRSCHHORN: მომწონს, რომ. 1022 00:49:59,680 --> 00:50:00,500 ეს აზრი. 1023 00:50:00,500 --> 00:50:03,390 იმ შემთხვევაში, თუ loop გასასვლელების - 1024 00:50:03,390 --> 00:50:04,800 იმიტომ, რომ თქვენ დაბრუნების ცრუ აქ. 1025 00:50:04,800 --> 00:50:08,220 ასე რომ, თუ loop გასასვლელების, მაშინ ჩვენ at ბოლოს სიაში, ან იქნებ 1026 00:50:08,220 --> 00:50:10,690 დავიწყოთ სიაში, თუ არსებობს არაფერი ის, რაც არის იგივე, რაც ბოლომდე. 1027 00:50:10,690 --> 00:50:12,770 ახლა ჩვენ გვინდა ჩადეთ რაღაც აქ. 1028 00:50:12,770 --> 00:50:17,380 მაშ როგორ ამჯამად რომ კოდი გამოიყურება, Marcus? 1029 00:50:17,380 --> 00:50:21,600 >> აუდიტორია: თუ თქვენ უკვე კვანძის malloced, შეგიძლიათ უბრალოდ, ვამბობთ 1030 00:50:21,600 --> 00:50:25,400 new_node-> მომავალი შეადგენს null რადგან ეს უნდა იყოს დასასრულს. 1031 00:50:25,400 --> 00:50:27,510 ან new_node-> მომავალი შეადგენს null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON HIRSCHHORN: OK. 1033 00:50:27,765 --> 00:50:28,190 უკაცრავად. 1034 00:50:28,190 --> 00:50:35,760 New_node-> მომავალი შეადგენს null რადგან ჩვენ დასასრულს. 1035 00:50:35,760 --> 00:50:36,460 რომ არ განათავსოთ შემოსული 1036 00:50:36,460 --> 00:50:37,710 როგორ უნდა დააყენოს ის სიაში? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 უფლება. 1039 00:50:46,460 --> 00:50:47,750 ეს მხოლოდ განსაზღვრავს ის ტოლია. 1040 00:50:47,750 --> 00:50:50,940 არარის როგორ უნდა რეალურად ამას სიაში? 1041 00:50:50,940 --> 00:50:54,170 რა მიუთითებს სიის ბოლოში? 1042 00:50:54,170 --> 00:50:56,090 >> აუდიტორია: Head. 1043 00:50:56,090 --> 00:50:57,566 >> JASON HIRSCHHORN: უკაცრავად? 1044 00:50:57,566 --> 00:50:59,440 >> აუდიტორია: Head მიუთითებს ბოლომდე სიაში. 1045 00:50:59,440 --> 00:51:01,480 >> JASON HIRSCHHORN: თუ არსებობს არაფერი სიაში, ხელმძღვანელი მიუთითებს 1046 00:51:01,480 --> 00:51:04,170 სიის ბოლოში. 1047 00:51:04,170 --> 00:51:06,920 ასე რომ ვიმუშავებთ პირველი ჩანართი. 1048 00:51:06,920 --> 00:51:09,810 რაც შეეხება, თუ არსებობს რამდენიმე რამ სიაში? 1049 00:51:09,810 --> 00:51:12,470 ვიდრე ჩვენ არ გვინდა, რომ მითითებული უხელმძღვანელებს ტოლია new_node. 1050 00:51:12,470 --> 00:51:13,790 რა გვინდა იქ? 1051 00:51:13,790 --> 00:51:15,610 ჰო? 1052 00:51:15,610 --> 00:51:16,860 ალბათ წინა. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 იქნება, რომ მუშაობს? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 შეგახსენებთ, რომ წინა მხოლოდ მომცეთ კვანძში. 1057 00:51:33,050 --> 00:51:34,770 და წინა ადგილობრივი ცვლადი. 1058 00:51:34,770 --> 00:51:38,080 ასე რომ, ეს ხაზი იქნება ადგილობრივი ცვლადი, წინა, ტოლია ან 1059 00:51:38,080 --> 00:51:39,380 მიუთითებს ამ ახალი კვანძში. 1060 00:51:39,380 --> 00:51:41,500 რომ არ რეალურად დააყენოს ის ჩვენს სიაში, თუმცა. 1061 00:51:41,500 --> 00:51:44,330 როგორ უნდა დააყენოს ის ჩვენს სიაში? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> აუდიტორია: მე ვფიქრობ, თქვენ ამის გაკეთება მიმდინარე> მომავალი. 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> მომავალი. 1067 00:51:54,010 --> 00:51:58,768 ასე რომ კიდევ ერთხელ, ერთადერთი მიზეზი ჩვენ ქვემოთ აქ არის, რას მიმდინარე ტოლია? 1068 00:51:58,768 --> 00:51:59,760 >> აუდიტორია: უდრის null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON HIRSCHHORN: და მერე რა მოხდება, თუ ჩვენ გავაკეთებთ null> შემდეგი? 1070 00:52:01,790 --> 00:52:02,810 რას აპირებს მიიღოს? 1071 00:52:02,810 --> 00:52:04,060 ჩვენ კიდევ სეგმენტაცია ბრალია. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> აუდიტორია: Do Curr შეადგენს null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON HIRSCHHORN: ეს იგივე როგორც prev, თუმცა, რადგან არსებობს 1075 00:52:10,760 --> 00:52:12,820 ადგილობრივი ცვლადი ჩვენ შექმნის ტოლი ახალ კვანძში. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 მოდით დავუბრუნდეთ ჩვენს სურათზე ჩასმა რაღაც. 1078 00:52:20,920 --> 00:52:25,500 ამბობენ, რომ ჩვენ ჩასმა დასასრულს სიაში, ასე რომ უფლება აქ. 1079 00:52:25,500 --> 00:52:30,010 ჩვენ გვაქვს მიმდინარე მაჩვენებელი, მიუთითებს null და previous წერტილი 1080 00:52:30,010 --> 00:52:32,800 რომ მიუთითებს 8. 1081 00:52:32,800 --> 00:52:35,330 ასე რომ, რას უნდა განახლდეს, Avi? 1082 00:52:35,330 --> 00:52:36,680 >> აუდიტორია: წინა> შემდეგი? 1083 00:52:36,680 --> 00:52:41,980 >> JASON HIRSCHHORN: წინა> შემდეგი არის რა ჩვენ გვინდა განაახლოთ იმიტომ, რომ 1084 00:52:41,980 --> 00:52:44,960 რეალურად ჩადეთ იგი დასასრულს სიაში. 1085 00:52:44,960 --> 00:52:47,220 ჩვენ ჯერ კიდევ გვაქვს ერთი bug, თუმცა, რომ ჩვენ ვაპირებთ გადაეყარონ. 1086 00:52:47,220 --> 00:52:50,090 რა არის, რომ bug? 1087 00:52:50,090 --> 00:52:50,790 ჰო? 1088 00:52:50,790 --> 00:52:53,860 >> აუდიტორია: ეს დაბრუნებას აპირებს ცრუ ამ შემთხვევაში? 1089 00:52:53,860 --> 00:52:56,380 >> JASON HIRSCHHORN: Oh, არის არის დაბრუნებას აპირებს ყალბი. 1090 00:52:56,380 --> 00:52:57,430 მაგრამ არსებობს კიდევ ერთი შეცდომა. 1091 00:52:57,430 --> 00:52:58,930 ამიტომ ჩვენ უნდა დააყენოს დაბრუნების ჭეშმარიტი. 1092 00:52:58,930 --> 00:53:01,370 >> აუდიტორია: არა წინა მაინც თანაბარი null ზედა სიაში? 1093 00:53:01,370 --> 00:53:03,645 >> JASON HIRSCHHORN: So წინა მაინც შეადგენს null თავიდანვე. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 ასე როგორ შეიძლება ჩვენ მიიღოს მეტი, რომ? 1096 00:53:10,440 --> 00:53:10,950 ჰო? 1097 00:53:10,950 --> 00:53:15,280 >> აუდიტორია: ვფიქრობ, თქვენ შეგიძლიათ ეს გააკეთოთ გამშვები ადრე ხოლო loop თუ ის 1098 00:53:15,280 --> 00:53:16,610 ცარიელი სია. 1099 00:53:16,610 --> 00:53:17,000 >> JASON HIRSCHHORN: OK. 1100 00:53:17,000 --> 00:53:17,710 მოდით წავიდეთ აქ. 1101 00:53:17,710 --> 00:53:18,530 გავაკეთოთ ქვითარი. 1102 00:53:18,530 --> 00:53:19,380 იმ შემთხვევაში, თუ - 1103 00:53:19,380 --> 00:53:20,770 >> აუდიტორია: ასე რომ, თუ ხელმძღვანელი უდრის უდრის null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON HIRSCHHORN: თუ უფროსი უდრის უდრის null - 1106 00:53:26,320 --> 00:53:27,790 რომ ყველაფერს გვეუბნება, თუ ის ცარიელი სია. 1107 00:53:27,790 --> 00:53:31,090 >> აუდიტორია: და მაშინ გავაკეთოთ ხელმძღვანელი შეადგენს ახალი. 1108 00:53:31,090 --> 00:53:34,740 >> JASON HIRSCHHORN: Head შეადგენს new_node? 1109 00:53:34,740 --> 00:53:35,730 და რა არ უნდა გავაკეთოთ? 1110 00:53:35,730 --> 00:53:37,020 >> აუდიტორია: და მაშინ იქნება TRUE. 1111 00:53:37,020 --> 00:53:37,535 >> JASON HIRSCHHORN: არ არის საკმაოდ. 1112 00:53:37,535 --> 00:53:38,785 ჩვენ დაკარგული ერთი ნაბიჯია. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> აუდიტორია: New_node შემდეგი უნდა აღვნიშნო, რომ null. 1115 00:53:43,710 --> 00:53:44,570 >> JASON HIRSCHHORN: ზუსტად, Alden. 1116 00:53:44,570 --> 00:53:46,600 და მაშინ ჩვენ შეგვიძლია იქნება TRUE. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 მაგრამ მაინც კარგი იდეა უნდა გავაკეთოთ რამ, დასასრულს სიაში, უფლება? 1119 00:53:51,630 --> 00:53:51,950 ყველა უფლება. 1120 00:53:51,950 --> 00:53:54,450 ჩვენ ჯერ კიდევ შეიძლება რეალურად მიიღონ ბოლომდე სიაში. 1121 00:53:54,450 --> 00:53:57,870 ამიტომ არის ეს კოდი ჯარიმა, თუ ჩვენ იმ სიის ბოლოში და არსებობს 1122 00:53:57,870 --> 00:53:59,120 რამ სიაში? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 უფლება? 1125 00:54:02,040 --> 00:54:03,540 იმის გამო, რომ ჩვენ ჯერ კიდევ გვაქვს Marcus იდეა. 1126 00:54:03,540 --> 00:54:06,870 ჩვენ შეიძლება გაითიშება ამ loop რადგან ჩვენ დასასრულს სიაში. 1127 00:54:06,870 --> 00:54:09,308 ასე რომ ჩვენ მაინც გვინდა ეს კოდი ქვემოთ აქ? 1128 00:54:09,308 --> 00:54:10,520 >> აუდიტორია: დიახ. 1129 00:54:10,520 --> 00:54:11,000 >> JASON HIRSCHHORN: ჰო. 1130 00:54:11,000 --> 00:54:14,190 და რას უნდა შეიცვალოს ეს? 1131 00:54:14,190 --> 00:54:15,440 ასეა. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 აკეთებს, რომ ხმის კარგი ყველას აქამდე? 1134 00:54:21,640 --> 00:54:22,420 არავის აქვს არც - 1135 00:54:22,420 --> 00:54:23,480 Avi, გაქვთ რაიმე დასამატებელი? 1136 00:54:23,480 --> 00:54:23,920 >> აუდიტორია: არა 1137 00:54:23,920 --> 00:54:25,276 >> JASON HIRSCHHORN: OK. 1138 00:54:25,276 --> 00:54:27,010 ასე რომ, ჩვენ გავაკეთეთ რამდენიმე ცვლილებები. 1139 00:54:27,010 --> 00:54:29,540 ჩვენ ეს გამშვები სანამ ჩვენ წავიდა განთავსების ცარიელი სია. 1140 00:54:29,540 --> 00:54:31,790 ამიტომ ჩვენ ზრუნვა ცარიელი სია. 1141 00:54:31,790 --> 00:54:35,500 და აქ ჩვენ იზრუნა ჩასმა რაღაც დასასრულს სიაში. 1142 00:54:35,500 --> 00:54:38,930 ასე რომ, როგორც ჩანს, ამ ხოლო loop აყვანა ზრუნვა რამ შორის, 1143 00:54:38,930 --> 00:54:41,920 სადღაც სიაში, თუ არსებობს რამ სიაში. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 მოდით აწარმოებს ამ პროგრამის ერთხელ. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 არ არის წარმატებული. 1148 00:54:50,755 --> 00:54:52,190 >> აუდიტორია: თქვენ არ მიიღოს იგი. 1149 00:54:52,190 --> 00:54:53,940 >> JASON HIRSCHHORN: Oh, მე არ მიიღოს იგი. 1150 00:54:53,940 --> 00:54:56,250 კარგი წერტილი, მაიკლ. 1151 00:54:56,250 --> 00:54:57,500 მოდით დაამატოთ მიიღოს უკავშირდება. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Line 87 იქ შეცდომა. 1154 00:55:04,830 --> 00:55:05,420 Line 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, ეს იყო ონლაინ მომეცით. 1156 00:55:06,600 --> 00:55:08,962 რა არის არასწორი? 1157 00:55:08,962 --> 00:55:10,710 >> აუდიტორია: ეს უნდა იყოს null. 1158 00:55:10,710 --> 00:55:11,000 >> JASON HIRSCHHORN: Excellent. 1159 00:55:11,000 --> 00:55:11,630 სწორედ. 1160 00:55:11,630 --> 00:55:13,290 ეს უნდა იყოს null. 1161 00:55:13,290 --> 00:55:15,210 მოდით კიდევ ერთხელ. 1162 00:55:15,210 --> 00:55:17,220 შეადგინოს. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 მოდით ჩადეთ სამი. 1165 00:55:19,400 --> 00:55:20,570 ჩანართით წარმატებული იყო. 1166 00:55:20,570 --> 00:55:21,660 მოდით ამობეჭდოთ. 1167 00:55:21,660 --> 00:55:23,590 ოჰ, თუ მხოლოდ ჩვენ შეგვიძლია შეამოწმოს. 1168 00:55:23,590 --> 00:55:25,500 მაგრამ ჩვენ არ კეთდება ბეჭდვა ფუნქცია არავის გაუკეთებია. 1169 00:55:25,500 --> 00:55:27,840 მოდით შეიყვანოთ რაღაც. 1170 00:55:27,840 --> 00:55:29,090 რა უნდა შევიდეს? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> აუდიტორია: შვიდი. 1173 00:55:31,940 --> 00:55:33,340 >> JASON HIRSCHHORN: Seven? 1174 00:55:33,340 --> 00:55:34,590 >> აუდიტორია: დიახ. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON HIRSCHHORN: ჩვენ გვყავს seg ბრალია. 1177 00:55:39,780 --> 00:55:43,760 ამიტომ მივიღეთ, მაგრამ ჩვენ ნათლად ვერ ორი. 1178 00:55:43,760 --> 00:55:45,690 ეს არის 5:07. 1179 00:55:45,690 --> 00:55:48,370 ასე რომ, ჩვენ შეიძლება გამართვის ამ სამი წუთის განმავლობაში. 1180 00:55:48,370 --> 00:55:51,240 მაგრამ მე ვაპირებ რომ დატოვოთ აქ და გადაადგილება, რათა hash მაგიდები. 1181 00:55:51,240 --> 00:55:54,290 მაგრამ ერთხელ, პასუხი ეს კოდი მე მქონ ეს თქვენ ცოტა. 1182 00:55:54,290 --> 00:55:55,440 ჩვენ ძალიან ახლოს. 1183 00:55:55,440 --> 00:55:58,300 უაღრესად გარწმუნებთ, რომ გაერკვნენ რა ხდება აქ და გაასწორონ ის. 1184 00:55:58,300 --> 00:56:02,400 ასე რომ მე მქონ თქვენ ამ კოდექსის ისევე პლუს გადაწყვეტა - 1185 00:56:02,400 --> 00:56:03,670 ალბათ გამოსავალი მოგვიანებით. 1186 00:56:03,670 --> 00:56:05,110 პირველი ეს კოდი. 1187 00:56:05,110 --> 00:56:08,290 >> სხვა რამ მინდა გავაკეთოთ სანამ ჩვენ დასრულება ჩვენ არ გაათავისუფლა არაფერი. 1188 00:56:08,290 --> 00:56:10,370 ასე რომ, მე მინდა გაჩვენოთ რა Valgrind ჰგავს. 1189 00:56:10,370 --> 00:56:14,310 თუ ჩვენ აწარმოებს Valgrind საზღვრები ჩვენი პროგრამა. / უკავშირდება. 1190 00:56:14,310 --> 00:56:22,540 ერთხელ, შესაბამისად, ამ slide, ჩვენ უნდა აწარმოებს Valgrind ზოგიერთი ტიპის 1191 00:56:22,540 --> 00:56:26,410 ვარიანტი, ამ შემთხვევაში - გაჟონვის შემოწმება = სავსე. 1192 00:56:26,410 --> 00:56:27,660 მოდით დავწეროთ Valgrind - გაჟონვის შემოწმება = სავსე. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 ასე რომ, ეს აწარმოებს Valgrind ჩვენი პროგრამა. 1195 00:56:35,080 --> 00:56:37,000 და ახლა პროგრამის რეალურად გადის. 1196 00:56:37,000 --> 00:56:40,190 ამიტომ, ჩვენ ვაპირებთ, რომ აწარმოებს, ისევე, ადრე, დააყენა რაღაც შემოსული 1197 00:56:40,190 --> 00:56:40,830 მე ვაპირებ დააყენა სამი. 1198 00:56:40,830 --> 00:56:41,790 რომ მუშაობს. 1199 00:56:41,790 --> 00:56:43,202 მე არ ვაპირებ ცდილობენ რაღაც სხვაგან, რადგან ჩვენ ვაპირებთ 1200 00:56:43,202 --> 00:56:44,710 მიიღეთ seg ცრუ ამ შემთხვევაში. 1201 00:56:44,710 --> 00:56:46,700 ასე რომ მე უბრალოდ აპირებს დატოვა. 1202 00:56:46,700 --> 00:56:50,160 >> და ახლა ხედავთ ქვემოთ აქ გაჟონვის და ბევრი შემაჯამებელი. 1203 00:56:50,160 --> 00:56:52,310 ეს არის კარგი რამ, გსურთ შეამოწმოთ out. 1204 00:56:52,310 --> 00:56:56,780 ასე რომ, ბევრი ინფორმაცია - ნათქვამია, გამოყენება ერთი გასასვლელი - რვა bytes ერთი ბლოკი. 1205 00:56:56,780 --> 00:56:58,370 რომ ერთი ბლოკი კვანძის ჩვენ malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, თქვენ განაცხადა, კვანძის რვა ნაკბენები, რადგან მას მთელი რიცხვი 1207 00:57:02,230 --> 00:57:02,680 და მაჩვენებელი. 1208 00:57:02,680 --> 00:57:04,550 ასე რომ ჩვენი კვანძში. 1209 00:57:04,550 --> 00:57:08,170 და მერე ამბობს, რომ ჩვენ malloc შვიდჯერ და ჩვენ გაათავისუფლა 1210 00:57:08,170 --> 00:57:08,940 რაღაც ექვსჯერ. 1211 00:57:08,940 --> 00:57:13,680 მაგრამ ჩვენ არასოდეს მოუწოდა უფასოდ, ასე რომ მე არ მაქვს ვიცი რა ეს ლაპარაკი. 1212 00:57:13,680 --> 00:57:18,490 >> მაგრამ საკმარისია ვთქვა, რომ როდესაც თქვენი პროგრამა ეშვება, malloc მიმდინარეობს მოუწოდა 1213 00:57:18,490 --> 00:57:20,330 ზოგიერთ სხვა ადგილებში, რომ ჩვენ არ უნდა ფიქრი. 1214 00:57:20,330 --> 00:57:22,460 ასე malloc ალბათ მოუწოდა ზოგან. 1215 00:57:22,460 --> 00:57:24,480 ჩვენ არ უნდა ფიქრი, სადაც. 1216 00:57:24,480 --> 00:57:26,240 მაგრამ ეს მართლაც ჩვენთვის. 1217 00:57:26,240 --> 00:57:27,380 ეს პირველი ხაზი არის ჩვენთვის. 1218 00:57:27,380 --> 00:57:28,320 დავტოვეთ, რომ ბლოკში. 1219 00:57:28,320 --> 00:57:30,330 და თქვენ ხედავთ, რომ აქ in გაჟონვის შემაჯამებელი. 1220 00:57:30,330 --> 00:57:31,950 ჯერ კიდევ მიუწვდომელია - 1221 00:57:31,950 --> 00:57:32,930 რვა bytes ერთი ბლოკი. 1222 00:57:32,930 --> 00:57:34,100 ეს ნიშნავს, რომ მეხსიერება - 1223 00:57:34,100 --> 00:57:35,730 ჩვენ გაჟონა, რომ მეხსიერებაში. 1224 00:57:35,730 --> 00:57:37,570 ნამდვილად დაკარგა - 1225 00:57:37,570 --> 00:57:38,770 რაღაც დაკარგულია. 1226 00:57:38,770 --> 00:57:40,590 ზოგადად, თქვენ არ ვხედავ რაიმე არსებობს. 1227 00:57:40,590 --> 00:57:44,780 ჯერ კიდევ მიუწვდომელია ზოგადად, სადაც თქვენ ნახავთ რამ, სადაც თქვენ გსურთ 1228 00:57:44,780 --> 00:57:48,900 გამოიყურება დაინახოს, თუ რა კოდი უნდა არ გაათავისუფლა, მაგრამ დაავიწყდა უფასოდ. 1229 00:57:48,900 --> 00:57:53,170 >> და შემდეგ, თუ ეს არ მოხდა, თუ გავაკეთეთ უფასო ყველაფერი, 1230 00:57:53,170 --> 00:57:54,360 ჩვენ შეგვიძლია შევამოწმოთ, რომ. 1231 00:57:54,360 --> 00:57:57,330 მოდით უბრალოდ გაუშვით პროგრამა არ აყენებს არაფერი. 1232 00:57:57,330 --> 00:57:59,800 დაინახავთ ქვემოთ აქ გამოყენება exit - 1233 00:57:59,800 --> 00:58:01,310 ნულოვანი bytes ნულოვანი ბლოკები. 1234 00:58:01,310 --> 00:58:06,310 ეს ნიშნავს, რომ ჩვენ არაფერი დარჩა როდესაც ამ პროგრამის დასრულების. 1235 00:58:06,310 --> 00:58:12,090 ასე რომ, სანამ გარდამტეხ pset6, აწარმოებს Valgrind და დარწმუნდით, რომ თქვენ არ გაქვთ 1236 00:58:12,090 --> 00:58:15,310 ნებისმიერი მეხსიერების გაჟონვის თქვენს პროგრამას. 1237 00:58:15,310 --> 00:58:17,910 თუ თქვენ გაქვთ რაიმე შეკითხვებს Valgrind, მოგერიდებათ მივაწვდინოთ. 1238 00:58:17,910 --> 00:58:18,700 მაგრამ ეს არის, თუ როგორ გამოიყენოს იგი. 1239 00:58:18,700 --> 00:58:20,890 ძალიან მარტივია - თუ თქვენ აქვს გამოყენების exit - 1240 00:58:20,890 --> 00:58:22,270 ნებისმიერი bytes ნებისმიერ ბლოკები. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> ასე რომ, ჩვენ მუშაობდა ჩადეთ კვანძში. 1243 00:58:29,580 --> 00:58:33,840 მე მქონდა ორი სხვა ფუნქციები აქ - ბეჭდვა კვანძების და თავისუფალი კვანძების. 1244 00:58:33,840 --> 00:58:37,780 ისევ და ისევ, ეს არის ფუნქციები, რომლებიც იქნება კარგი თქვენთვის პრაქტიკაში 1245 00:58:37,780 --> 00:58:40,990 იმიტომ, რომ ისინი დაგეხმარებათ არა მხოლოდ ეს ნიმუში წვრთნები, არამედ 1246 00:58:40,990 --> 00:58:42,180 პრობლემა შეიქმნა. 1247 00:58:42,180 --> 00:58:44,230 ისინი რუკა საკმაოდ მჭიდროდ რამ თქვენ აპირებთ უნდა გავაკეთოთ 1248 00:58:44,230 --> 00:58:45,010 პრობლემა კომპლექტი. 1249 00:58:45,010 --> 00:58:47,640 მაგრამ მე გვინდა დავრწმუნდეთ ჩვენ შევეხებით ყველაფერს. 1250 00:58:47,640 --> 00:58:50,400 და hash მაგიდები ასევე მნიშვნელოვანია რას ვაკეთებთ ნაწილში ამ 1251 00:58:50,400 --> 00:58:51,980 week - ან პრობლემა კომპლექტი. 1252 00:58:51,980 --> 00:58:55,200 >> ამიტომ, ჩვენ ვაპირებთ, რომ დაასრულოს განყოფილებაში ვსაუბრობთ hash მაგიდები. 1253 00:58:55,200 --> 00:58:58,140 თუ თქვენ შეამჩნევთ მე მივიღე პატარა hash მაგიდასთან. 1254 00:58:58,140 --> 00:59:00,020 ეს არ არის ის, რაც ჩვენ ვსაუბრობთ შესახებ, თუმცა. 1255 00:59:00,020 --> 00:59:03,540 ჩვენ ვსაუბრობთ სხვადასხვა ტიპის hash მაგიდები. 1256 00:59:03,540 --> 00:59:07,300 და მისი ძირითადი, hash მაგიდა მეტი არაფერი 1257 00:59:07,300 --> 00:59:08,860 array plus ქეშირების ფუნქცია. 1258 00:59:08,860 --> 00:59:11,150 ჩვენ ვაპირებთ, რომ გაიგო ცოტა უბრალოდ დარწმუნდით, რომ ყველას ესმის, თუ რა 1259 00:59:11,150 --> 00:59:12,110 hash ფუნქცია. 1260 00:59:12,110 --> 00:59:15,420 და მე გეუბნებით, რომ ეს არის მეტი არაფერი ორი რამ - 1261 00:59:15,420 --> 00:59:18,590 array და ქეშირების ფუნქცია. 1262 00:59:18,590 --> 00:59:20,716 და აქ არის ნაბიჯები მეშვეობით რომელიც ამ მუშაობს. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> იქ ჩვენი მასივი. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 იქ ჩვენი ფუნქცია. 1267 00:59:39,460 --> 00:59:43,180 კერძოდ, hash ფუნქციები უნდა ამის გაკეთება რამდენიმე რამ ამ. 1268 00:59:43,180 --> 00:59:45,040 მე ვაპირებ გაიგო კონკრეტულად ამ პრობლემის შესახებ მითითებული. 1269 00:59:45,040 --> 00:59:46,450 ის ალბათ აპირებს მიიღოს სიმებიანი. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 და რა არის ის დაბრუნებას აპირებს? 1272 00:59:51,770 --> 00:59:52,640 რა მონაცემები ტიპის? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 თქვენი ქეშირების ფუნქცია დაბრუნებას? 1275 00:59:55,760 --> 00:59:58,760 მთელი რიცხვი. 1276 00:59:58,760 --> 01:00:01,700 ასე რომ, ეს არის ის, რაც hash მაგიდა შედგება - 1277 01:00:01,700 --> 01:00:05,430 მაგიდა სახით array და ქეშირების ფუნქცია. 1278 01:00:05,430 --> 01:00:06,010 როგორ მუშაობს? 1279 01:00:06,010 --> 01:00:07,300 იგი მუშაობს სამი ნაბიჯი. 1280 01:00:07,300 --> 01:00:08,740 ჩვენ ეს გასაღები. 1281 01:00:08,740 --> 01:00:11,470 ამ შემთხვევაში, ჩვენ მისთვის string. 1282 01:00:11,470 --> 01:00:18,140 ჩვენ მოვუწოდებთ ქეშირების ფუნქცია თითო ნაბიჯი ერთი გასაღები და მივიღებთ ღირებულება. 1283 01:00:18,140 --> 01:00:20,310 >> კერძოდ, ჩვენ ვიტყვით, მივიღებთ რიცხვი. 1284 01:00:20,310 --> 01:00:25,630 ეს რიცხვი, არსებობს ძალიან კონკრეტული შეზღუდვები რა რომ მთელი რიცხვი უნდა იყოს. 1285 01:00:25,630 --> 01:00:28,880 ამ მაგალითში, ჩვენი მასივი არის ზომა სამი. 1286 01:00:28,880 --> 01:00:32,330 ასე რომ, რა რაოდენობით შეიძლება რომ მთელი რიცხვი უნდა იყოს. 1287 01:00:32,330 --> 01:00:35,970 რა არის სპექტრი მოქმედებს ღირებულებების რომ რიცხვი, დაბრუნების ტიპის ამ 1288 01:00:35,970 --> 01:00:37,220 ქეშირების ფუნქცია? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Zero, ერთი და ორი. 1291 01:00:42,110 --> 01:00:46,060 წერტილი hash ფუნქცია გაერკვნენ ადგილი მასივი 1292 01:00:46,060 --> 01:00:47,790 სადაც ჩვენი გასაღები აპირებს. 1293 01:00:47,790 --> 01:00:51,290 არსებობს მხოლოდ სამი შესაძლო ადგილები აქ - 1294 01:00:51,290 --> 01:00:52,130 ნულოვანი, ერთი, ან ორი. 1295 01:00:52,130 --> 01:00:55,360 ასე რომ, ამ ფუნქციის უკეთ დაბრუნება ნულოვანი, ერთი, ან ორი. 1296 01:00:55,360 --> 01:00:58,740 საპატიო indice ამ მასივი. 1297 01:00:58,740 --> 01:01:02,770 >> და შემდეგ დამოკიდებულია სადაც ის დააბრუნებს, ხედავთ array ღია 1298 01:01:02,770 --> 01:01:03,730 Bracket ღირებულება. 1299 01:01:03,730 --> 01:01:05,800 რომ სადაც ჩვენ გასაღები. 1300 01:01:05,800 --> 01:01:11,280 ასე რომ, ჩვენ ჩააგდოს გოგრა, ჩვენ გავიდნენ ნულოვანი. 1301 01:01:11,280 --> 01:01:15,540 ამავე მასივი bracket 0, ჩვენ გოგრა. 1302 01:01:15,540 --> 01:01:21,070 ჩვენ სახიფათოა, კატა, ჩვენ გავიდნენ ერთი. 1303 01:01:21,070 --> 01:01:24,110 ჩვენ დააყენა cat ერთი. 1304 01:01:24,110 --> 01:01:25,480 ჩვენ დააყენა spider. 1305 01:01:25,480 --> 01:01:26,710 ჩვენ გავიდნენ ორი. 1306 01:01:26,710 --> 01:01:30,200 ჩვენ spider at მასივი bracket ორი. 1307 01:01:30,200 --> 01:01:32,300 ეს იქნება ასე ლამაზი თუ იგი მუშაობდა როგორიცაა, რომ. 1308 01:01:32,300 --> 01:01:35,570 მაგრამ, სამწუხაროდ, როგორც ვნახავთ, ეს ცოტა უფრო რთული. 1309 01:01:35,570 --> 01:01:37,570 >> სანამ არ მივიღებთ იქ რაიმე შეკითხვები ამ საბაზისო 1310 01:01:37,570 --> 01:01:38,820 გაშვება of hash მაგიდასთან? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 ეს არის იმიჯი ზუსტად რაც ჩვენ გაამახვილა ფორუმში. 1313 01:01:51,940 --> 01:01:55,420 მაგრამ რადგან ჩვენ ამოიღო ფორუმში, I არ ვაპირებ წასვლას მის შემდგომ. 1314 01:01:55,420 --> 01:02:00,430 არსებითად გასაღებები, ჯადოსნური black box - ან ამ შემთხვევაში, teal box - ერთი 1315 01:02:00,430 --> 01:02:02,410 ქეშირების ფუნქცია აყენებს მათ თაიგულების. 1316 01:02:02,410 --> 01:02:04,690 და ამ მაგალითში ჩვენ არ აყენებს სახელი. 1317 01:02:04,690 --> 01:02:07,880 ჩვენ აყენებს ასოცირებული ტელეფონი ნომერი სახელწოდების bucket. 1318 01:02:07,880 --> 01:02:10,430 მაგრამ თქვენ შეიძლება ძალიან კარგად მხოლოდ ამით სახელი bucket. 1319 01:02:10,430 --> 01:02:12,950 >> ეს არის მხოლოდ სურათს რა ჩვენ გაამახვილა ფორუმში. 1320 01:02:12,950 --> 01:02:14,460 ჩვენ პოტენციური pitfalls, თუმცა. 1321 01:02:14,460 --> 01:02:17,470 და არსებობს ორი კერძოდ სლაიდები, რომ მე მინდა მეტი. 1322 01:02:17,470 --> 01:02:20,230 პირველი არის ქეშირების ფუნქცია. 1323 01:02:20,230 --> 01:02:22,620 ამიტომ მე ვკითხე კითხვაზე, თუ რა რაც კარგი ქეშირების ფუნქცია? 1324 01:02:22,620 --> 01:02:24,220 მე ვაძლევ ორი ​​პასუხი. 1325 01:02:24,220 --> 01:02:26,630 პირველი არის ის, რომ დეტერმინისტული. 1326 01:02:26,630 --> 01:02:29,660 კონტექსტში hash ფუნქციები, რას ნიშნავს ეს? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 დიახ? 1329 01:02:39,282 --> 01:02:42,850 >> აუდიტორია: ეს შეგიძლიათ index მუდმივ დრო? 1330 01:02:42,850 --> 01:02:43,810 >> JASON HIRSCHHORN: ეს არ არის რას ნიშნავს. 1331 01:02:43,810 --> 01:02:44,725 მაგრამ ეს კარგი ამოიცნობთ. 1332 01:02:44,725 --> 01:02:46,100 ვინმეს აქვს ამოიცნობთ რა ეს იმას ნიშნავს,? 1333 01:02:46,100 --> 01:02:47,780 რომ კარგი ქეშირების ფუნქცია არის დეტერმინისტული? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> აუდიტორია: ეს გასაღები შეიძლება მხოლოდ mapped ერთი ადგილი hash მაგიდასთან. 1336 01:02:51,680 --> 01:02:53,070 >> JASON HIRSCHHORN: ეს სწორედ. 1337 01:02:53,070 --> 01:02:57,430 ყოველ დროს, თქვენ დააყენა გოგრა, ის ყოველთვის ბრუნდება ნულოვანი. 1338 01:02:57,430 --> 01:03:01,660 თუ თქვენ დააყენა გოგრა და თქვენი hash ფუნქცია დააბრუნებს ნულოვანი მაგრამ აქვს 1339 01:03:01,660 --> 01:03:06,060 ალბათობა დაბრუნების რაღაც სხვაგან მეტი ნულოვანი - 1340 01:03:06,060 --> 01:03:09,280 იქნებ მას შეუძლია დაბრუნდეს ერთ ზოგჯერ ან ორი სხვა - ჯერ 1341 01:03:09,280 --> 01:03:11,100 რომ არ არის კარგი ქეშირების ფუნქცია. 1342 01:03:11,100 --> 01:03:11,800 თქვენ ზუსტად უფლება. 1343 01:03:11,800 --> 01:03:15,680 თქვენი ქეშირების ფუნქცია უნდა დაუბრუნდეს იგივე ზუსტი რიცხვი, ამ შემთხვევაში, 1344 01:03:15,680 --> 01:03:17,780 იგივე ზუსტი სიმებიანი. 1345 01:03:17,780 --> 01:03:22,210 >> იქნებ ის დააბრუნებს იგივე ზუსტი რიცხვი იმავე ზუსტი string 1346 01:03:22,210 --> 01:03:24,430 მიუხედავად კაპიტალიზაცია. 1347 01:03:24,430 --> 01:03:27,980 მაგრამ ამ შემთხვევაში მაინც დეტერმინისტული რადგან მრავალი რამ 1348 01:03:27,980 --> 01:03:29,350 მოდელი მოვარგოთ იგივე ღირებულება. 1349 01:03:29,350 --> 01:03:30,170 ეს ჯარიმა. 1350 01:03:30,170 --> 01:03:32,615 რადგან არსებობს მხოლოდ ერთი გამომავალი მოცემული შეყვანის. 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 მეორე ის არის, რომ ეს ბრუნდება ძალაშია მაჩვენებლები. 1354 01:03:38,340 --> 01:03:40,220 ჩვენ მოუტანა, რომ ადრე. 1355 01:03:40,220 --> 01:03:41,860 ამ ქეშირების ფუნქცია - 1356 01:03:41,860 --> 01:03:43,710 oh boy - 1357 01:03:43,710 --> 01:03:46,840 ქეშირების ფუნქცია უნდა დაბრუნებას ძალაშია მაჩვენებლები. 1358 01:03:46,840 --> 01:03:47,740 ასე ამბობენ - 1359 01:03:47,740 --> 01:03:48,990 მოდით დავუბრუნდეთ ამ მაგალითს. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 ჩემი ქეშირების ფუნქცია ითვლის up წერილები სიტყვა. 1362 01:03:57,540 --> 01:03:58,380 სწორედ ქეშირების ფუნქცია. 1363 01:03:58,380 --> 01:03:59,740 და დააბრუნებს, რომ რიცხვი. 1364 01:03:59,740 --> 01:04:04,280 ასე რომ, თუ მე მაქვს სიტყვა, ის დაბრუნებას აპირებს ერთი. 1365 01:04:04,280 --> 01:04:06,900 და ის აპირებს დააყენოს უფლება აქ. 1366 01:04:06,900 --> 01:04:09,430 რა მოხდება, თუ მე ზუსტად სიტყვა bat? 1367 01:04:09,430 --> 01:04:11,310 ის დაბრუნებას აპირებს სამი. 1368 01:04:11,310 --> 01:04:12,560 სად bat წავიდეთ? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> ეს არ ჯდება. 1371 01:04:19,750 --> 01:04:21,000 მაგრამ ეს უნდა წავიდეს სადმე. 1372 01:04:21,000 --> 01:04:23,340 ეს არის ჩემი hash table შემდეგ, და ყველაფერი უნდა წავიდეს სადმე. 1373 01:04:23,340 --> 01:04:24,590 ასე რომ, სადაც უნდა bat წავიდეთ? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 ნებისმიერი აზრები? 1376 01:04:28,710 --> 01:04:29,450 მიხვდება? 1377 01:04:29,450 --> 01:04:30,280 კარგი შთაბეჭდილებები? 1378 01:04:30,280 --> 01:04:31,220 >> აუდიტორია: Zero. 1379 01:04:31,220 --> 01:04:32,120 >> JASON HIRSCHHORN: რატომ ნულოვანი? 1380 01:04:32,120 --> 01:04:35,990 >> აუდიტორია: იმიტომ, რომ სამი modulo სამი ნულოვანი? 1381 01:04:35,990 --> 01:04:38,620 >> JASON HIRSCHHORN: სამი modulo სამი არის ნული. 1382 01:04:38,620 --> 01:04:40,810 რომ არის დიდი ვხვდები, და ეს სწორია. 1383 01:04:40,810 --> 01:04:43,870 ასე რომ, ამ შემთხვევაში ეს უნდა ალბათ წასვლა ნულოვანი. 1384 01:04:43,870 --> 01:04:51,080 ასე რომ კარგი გზა, რათა უზრუნველყოს, რომ ეს hash ფუნქცია მხოლოდ ბრუნდება ძალაშია ინდექსების არის 1385 01:04:51,080 --> 01:04:54,580 to Modulo მას ზომის მაგიდაზე. 1386 01:04:54,580 --> 01:04:57,360 თუ თქვენ Modulo რასაც ამ ბრუნდება მიერ სამი, თქვენ ყოველთვის აპირებს მიიღოს 1387 01:04:57,360 --> 01:05:00,930 რაღაც შორის ნულოვანი, ერთი და ორი. 1388 01:05:00,930 --> 01:05:05,160 და თუ ეს ყოველთვის ბრუნდება შვიდი, და თქვენ ყოველთვის Modulo სამი, თქვენ 1389 01:05:05,160 --> 01:05:06,030 ყოველთვის აპირებს მიიღოს იგივე. 1390 01:05:06,030 --> 01:05:09,270 >> ასე რომ, ჯერ კიდევ დეტერმინისტული თუ Modulo. 1391 01:05:09,270 --> 01:05:11,420 მაგრამ ეს იმისთვის, რომ თქვენ არასოდეს მიიღოთ რაღაც - 1392 01:05:11,420 --> 01:05:12,940 არასწორი ინდუსტრიაში. 1393 01:05:12,940 --> 01:05:16,840 საერთოდ, რომ modulo უნდა მოხდეს თქვენს ქეშირების ფუნქცია. 1394 01:05:16,840 --> 01:05:18,240 ასე რომ თქვენ არ გჭირდებათ ფიქრი ეს. 1395 01:05:18,240 --> 01:05:20,555 თქვენ უბრალოდ შეგიძლიათ უზრუნველყოს, რომ ეს არის სწორი indice. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 ნებისმიერი შეკითხვა ამ პოტენციური pitfall? 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 და იქ ჩვენ წავიდეთ. 1401 01:05:40,290 --> 01:05:42,890 შემდეგი პოტენციური pitfall და ეს არის დიდი ერთი. 1402 01:05:42,890 --> 01:05:46,880 რა მოხდება, თუ ორ კლავიშს რუკა იგივე მნიშვნელობა? 1403 01:05:46,880 --> 01:05:49,350 ასე რომ, არსებობს ორი გზა გაუმკლავდეს ამ. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 პირველი ეწოდება წრფივი საცდელი, რომელიც მე 1406 01:05:56,020 --> 01:05:57,300 არ ვაპირებ წასვლა მეტი. 1407 01:05:57,300 --> 01:06:01,120 მაგრამ თქვენ უნდა იცნობს, თუ როგორ რომელიც მუშაობს და რა, რომ არის. 1408 01:06:01,120 --> 01:06:05,610 >> მეორე ვაპირებ წასვლა მეტი იმიტომ, რომ ის არის, რომ ბევრი 1409 01:06:05,610 --> 01:06:08,290 ადამიანი სავარაუდოდ დასრულდება მდე გადამწყვეტი გამოყენება მათი პრობლემა კომპლექტი. 1410 01:06:08,290 --> 01:06:09,820 რა თქმა უნდა, არ უნდა. 1411 01:06:09,820 --> 01:06:15,280 მაგრამ პრობლემა კომპლექტი, ბევრი ადამიანი ტენდენცია აირჩიოს შევქმნათ hash table 1412 01:06:15,280 --> 01:06:17,950 ცალკე chaining განხორციელება მათი ლექსიკონი. 1413 01:06:17,950 --> 01:06:21,390 ამიტომ, ჩვენ ვაპირებთ წასვლა რას ნიშნავს შევქმნათ hash მაგიდა 1414 01:06:21,390 --> 01:06:23,890 ცალკე chaining. 1415 01:06:23,890 --> 01:06:26,260 >> ასე რომ, მე დააყენა გოგრა. 1416 01:06:26,260 --> 01:06:29,560 ის დააბრუნებს ნულოვანი. 1417 01:06:29,560 --> 01:06:31,410 და მე ზუსტად გოგრა აქ. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 მერე დასვა - 1420 01:06:37,930 --> 01:06:39,922 რა არის კიდევ ერთი ჰელოუინი-themed რამ? 1421 01:06:39,922 --> 01:06:42,200 >> აუდიტორია: Candy. 1422 01:06:42,200 --> 01:06:42,770 >> JASON HIRSCHHORN: Candy! 1423 01:06:42,770 --> 01:06:43,910 სწორედ დიდი ერთი. 1424 01:06:43,910 --> 01:06:47,760 მე ზუსტად Candy, და კანფეტი ასევე მაძლევს ნულოვანი. 1425 01:06:47,760 --> 01:06:49,350 რა გავაკეთო? 1426 01:06:49,350 --> 01:06:51,940 ნებისმიერი იდეები? 1427 01:06:51,940 --> 01:06:53,940 იმიტომ, რომ თქვენ ყველა სახის ვიცი რა ცალკე chaining არის. 1428 01:06:53,940 --> 01:06:55,190 ასე რომ ნებისმიერი იდეები რა უნდა გავაკეთოთ? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 ჰო. 1431 01:06:59,110 --> 01:07:03,810 >> აუდიტორია: ჩვენ სიმებიანი რეალურად hash მაგიდასთან. 1432 01:07:03,810 --> 01:07:08,910 >> JASON HIRSCHHORN: ასე რომ, ჩვენ ვაპირებთ მიაპყროს კარგი იდეა აქ. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> აუდიტორია: Have hashtable [INAUDIBLE] 1435 01:07:12,290 --> 01:07:16,640 მაჩვენებელი, რომელიც მიუთითებს დასაწყისში სიაში. 1436 01:07:16,640 --> 01:07:20,930 და შემდეგ არ გოგრა იქნება პირველი ღირებულება რომ უკავშირდება სიაში და კამფეტი იქნება 1437 01:07:20,930 --> 01:07:22,800 მეორე მნიშვნელობა, რომელიც უკავშირდება სიაში. 1438 01:07:22,800 --> 01:07:23,420 >> JASON HIRSCHHORN: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, რომ იყო გამორჩეული. 1440 01:07:24,670 --> 01:07:26,160 მე ვაპირებ დაარღვიოს, რომ ქვემოთ. 1441 01:07:26,160 --> 01:07:28,890 მარკუს ამბობს, არ გადაწერა გოგრა. 1442 01:07:28,890 --> 01:07:30,660 ეს იქნება ცუდი. 1443 01:07:30,660 --> 01:07:33,640 არ დააყენა candy სხვაგან. 1444 01:07:33,640 --> 01:07:35,390 ჩვენ ვაპირებთ, რომ ამით მათ, როგორც ნულოვანი. 1445 01:07:35,390 --> 01:07:37,770 მაგრამ ჩვენ ვაპირებთ გამკლავება აყენებს მათ ნულოვანი მიერ 1446 01:07:37,770 --> 01:07:39,395 შექმნა სია ნულოვანი. 1447 01:07:39,395 --> 01:07:42,430 და ჩვენ ვაპირებთ, რომ შევქმნათ სია ყველაფერი, რაც mapped ნულოვანი. 1448 01:07:42,430 --> 01:07:47,960 და საუკეთესო გზა გავიგეთ, რომ შევქმნათ სია, რომელიც შეიძლება გაიზარდოს და შემცირება 1449 01:07:47,960 --> 01:07:49,840 დინამიურად არ შედის კიდევ ერთი მასივი. 1450 01:07:49,840 --> 01:07:51,510 ასე რომ, არა მრავალ განზომილებიანი მასივი. 1451 01:07:51,510 --> 01:07:54,080 მაგრამ მხოლოდ შექმნა უკავშირდება სიაში. 1452 01:07:54,080 --> 01:07:55,330 >> ასე რომ, რაც მან შესთავაზა - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 მე ვაპირებ კიდევ ახალი - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 არის შექმნა მასივი პოინტერები, მასივი პოინტერები. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 ნებისმიერი იდეა, ან მინიშნება, თუ რა ტიპის ამ მითითებას უნდა იყოს? 1459 01:08:24,180 --> 01:08:26,290 Marcus? 1460 01:08:26,290 --> 01:08:27,250 >> აუდიტორია: მითითებას - 1461 01:08:27,250 --> 01:08:28,609 >> JASON HIRSCHHORN: იმის გამო, რომ განაცხადა უკავშირდება სიაში, ისე - 1462 01:08:28,609 --> 01:08:29,520 >> აუდიტორია: Node მითითებას? 1463 01:08:29,520 --> 01:08:30,670 >> JASON HIRSCHHORN: Node პოინტერები. 1464 01:08:30,670 --> 01:08:32,830 იმ შემთხვევაში, თუ რამ ჩვენი უკავშირდება სიაში კვანძების შემდეგ ისინი 1465 01:08:32,830 --> 01:08:34,370 უნდა იყოს კვანძის პოინტერები. 1466 01:08:34,370 --> 01:08:35,939 და რას უდრის თავდაპირველად? 1467 01:08:35,939 --> 01:08:36,990 >> აუდიტორია: 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 ასე რომ ჩვენი ცარიელია რამ. 1471 01:08:46,080 --> 01:08:47,170 Pumpkin ბრუნდება ნულოვანი. 1472 01:08:47,170 --> 01:08:48,569 რა ვქნათ? 1473 01:08:48,569 --> 01:08:49,609 სიარული ჩემთვის ეს? 1474 01:08:49,609 --> 01:08:50,810 სინამდვილეში, Marcus უკვე მომცა. 1475 01:08:50,810 --> 01:08:52,439 სხვისი ფეხით ჩემთან მეშვეობით. 1476 01:08:52,439 --> 01:08:54,760 რას ვაკეთებთ, როცა ჩვენ - 1477 01:08:54,760 --> 01:08:56,609 ეს გამოიყურება ძალიან ჰგავს რაც ჩვენ უბრალოდ აკეთებს. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> აუდიტორია: მე ვაპირებ მიიღოს ამოიცნობთ. 1480 01:08:59,090 --> 01:09:01,250 ასე რომ, როდესაც თქვენ candy. 1481 01:09:01,250 --> 01:09:01,640 >> JASON HIRSCHHORN: ჰო. 1482 01:09:01,640 --> 01:09:03,120 ასევე, მივიღეთ გოგრა. 1483 01:09:03,120 --> 01:09:03,870 მოდით მისაღებად ჩვენი პირველი ერთი. 1484 01:09:03,870 --> 01:09:04,324 მივიღეთ გოგრა. 1485 01:09:04,324 --> 01:09:04,779 >> აუდიტორია: OK. 1486 01:09:04,779 --> 01:09:05,880 Pumpkin ბრუნდება ნულოვანი. 1487 01:09:05,880 --> 01:09:08,770 ასე, რომ თქვენ ამას, რომ. 1488 01:09:08,770 --> 01:09:10,810 ან რეალურად, თქვენ ამას უკავშირდება სიაში. 1489 01:09:10,810 --> 01:09:13,550 >> JASON HIRSCHHORN: როგორ გავაკეთოთ ამას უკავშირდება სიაში? 1490 01:09:13,550 --> 01:09:15,479 >> აუდიტორია: Oh, ფაქტობრივი სინტაქსი? 1491 01:09:15,479 --> 01:09:16,240 >> JASON HIRSCHHORN: Just ფეხით - 1492 01:09:16,240 --> 01:09:16,740 ვთქვა მეტი. 1493 01:09:16,740 --> 01:09:19,310 რა ვქნათ? 1494 01:09:19,310 --> 01:09:22,100 >> აუდიტორია: თქვენ უბრალოდ ჩადეთ მას, როგორც პირველ კვანძში. 1495 01:09:22,100 --> 01:09:22,675 >> JASON HIRSCHHORN: OK. 1496 01:09:22,675 --> 01:09:29,069 ასე რომ, ჩვენ გვაქვს ჩვენი კვანძის, გოგრა. 1497 01:09:29,069 --> 01:09:31,560 და ახლა როგორ უნდა ჩადოთ ეს? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> აუდიტორია: თქვენ დაავალოს ის მაჩვენებელი. 1500 01:09:37,090 --> 01:09:37,970 >> JASON HIRSCHHORN: რომელი მაჩვენებელი? 1501 01:09:37,970 --> 01:09:39,620 >> აუდიტორია: The მაჩვენებელი ნულოვანი. 1502 01:09:39,620 --> 01:09:41,420 >> JASON HIRSCHHORN: ასე რომ, სადაც აკეთებს ამ ეტაპზე? 1503 01:09:41,420 --> 01:09:42,810 >> აუდიტორია: To null ახლა. 1504 01:09:42,810 --> 01:09:43,529 >> JASON HIRSCHHORN: ისე, ეს მიუთითებს null. 1505 01:09:43,529 --> 01:09:44,499 მაგრამ მე აყენებს გოგრა. 1506 01:09:44,499 --> 01:09:46,053 ასე რომ, სადაც უნდა აღვნიშნო? 1507 01:09:46,053 --> 01:09:46,880 >> აუდიტორია: იმისათვის, რომ გოგრა. 1508 01:09:46,880 --> 01:09:47,399 >> JASON HIRSCHHORN: To გოგრა. 1509 01:09:47,399 --> 01:09:48,760 ზუსტად. 1510 01:09:48,760 --> 01:09:50,010 ასე რომ, ეს მიუთითებს, რომ გოგრა. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 და სად ეს მაჩვენებელი გოგრა წერტილი? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 დან 1515 01:09:58,340 --> 01:09:58,590 >> აუდიტორია: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON HIRSCHHORN: To null. 1517 01:09:59,210 --> 01:10:00,460 ზუსტად. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 ამიტომ ჩვენ უბრალოდ დევს რაღაც შევიდა უკავშირდება სიაში. 1520 01:10:05,140 --> 01:10:07,210 ჩვენ უბრალოდ დაწერა ეს კოდი უნდა გავაკეთოთ ეს. 1521 01:10:07,210 --> 01:10:09,520 თითქმის ჩვენ თითქმის მივიღე ეს მთლიანად დაბზარულია. 1522 01:10:09,520 --> 01:10:10,790 ახლა ჩვენ ჩადეთ candy. 1523 01:10:10,790 --> 01:10:13,480 ჩვენი candy ასევე მიდის ნულოვანი. 1524 01:10:13,480 --> 01:10:16,100 ასე რომ რას ვაკეთებთ candy? 1525 01:10:16,100 --> 01:10:18,790 >> აუდიტორია: ეს დამოკიდებულია თუ არ ჩვენ ვცდილობთ დასალაგებლად ის. 1526 01:10:18,790 --> 01:10:19,640 >> JASON HIRSCHHORN: ეს სწორედ. 1527 01:10:19,640 --> 01:10:21,070 ეს დამოკიდებულია თუ არა ჩვენ ვცდილობთ, რომ დასალაგებლად ის. 1528 01:10:21,070 --> 01:10:22,660 მოდით ვივარაუდოთ, ჩვენ არა ვართ აპირებს დასალაგებლად ის. 1529 01:10:22,660 --> 01:10:24,880 >> აუდიტორია: Well შემდეგ, როგორც ჩვენ განვიხილეთ ადრე, ის მარტივი უბრალოდ უნდა დააყენოს ის 1530 01:10:24,880 --> 01:10:28,590 უფლება დასაწყისში ასე რომ მომცეთ ნულიდან რაოდენობა candy. 1531 01:10:28,590 --> 01:10:29,020 >> JASON HIRSCHHORN: OK. 1532 01:10:29,020 --> 01:10:29,380 ჩატარების შესახებ. 1533 01:10:29,380 --> 01:10:30,630 ნება მომეცით შექმნა candy უფლება აქ. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 ასე რომ, ეს მაჩვენებელი - 1536 01:10:35,150 --> 01:10:37,590 >> აუდიტორია: Yeah, ახლა უნდა იქნება მიუთითებს candy. 1537 01:10:37,590 --> 01:10:40,580 მაშინ აქვს კურსორი საწყისი candy წერტილი გოგრა. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON HIRSCHHORN: Like რომ? 1540 01:10:44,560 --> 01:10:47,380 და ვთქვათ, ჩვენ მივიღეთ კიდევ ერთი რაც MAP-zero? 1541 01:10:47,380 --> 01:10:48,660 >> აუდიტორია: Well, თქვენ უბრალოდ გავაკეთოთ იგივე? 1542 01:10:48,660 --> 01:10:50,290 >> JASON HIRSCHHORN: ნუ იგივე. 1543 01:10:50,290 --> 01:10:53,700 ასე რომ, ამ შემთხვევაში, თუ ჩვენ არ გვინდა, რომ შევინარჩუნოთ ის დახარისხებული ის 1544 01:10:53,700 --> 01:10:55,270 ხმები საკმაოდ მარტივია. 1545 01:10:55,270 --> 01:10:59,920 ჩვენ ვიღებთ მაჩვენებელი წელს indice მოცემული ჩვენი ქეშირების ფუნქცია. 1546 01:10:59,920 --> 01:11:03,830 ჩვენ იმ ეტაპზე ჩვენი ახალი კვანძში. 1547 01:11:03,830 --> 01:11:07,830 და შემდეგ რაც მიუთითებს ადრე - 1548 01:11:07,830 --> 01:11:10,620 ამ შემთხვევაში, null, იმ მეორე შემთხვევაში გოგრა - 1549 01:11:10,620 --> 01:11:15,310 რომ, რაც მიუთითებს ადრე, ჩვენ დაამატოთ შევიდა უახლოესი 1550 01:11:15,310 --> 01:11:17,810 ჩვენი ახალი კვანძში. 1551 01:11:17,810 --> 01:11:19,650 ჩვენ ჩასმა რაღაც დასაწყისში. 1552 01:11:19,650 --> 01:11:22,900 რეალურად ეს არის ბევრი მარტივი ვიდრე ცდილობს შეინარჩუნოს სია დახარისხებული. 1553 01:11:22,900 --> 01:11:25,340 მაგრამ ერთხელ, ძებნას იქნება უფრო რთული აქ. 1554 01:11:25,340 --> 01:11:28,300 ჩვენ ყოველთვის უნდა წავიდეს ბოლომდე. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 რაიმე შეკითხვები ცალკე chaining? 1557 01:11:32,750 --> 01:11:34,690 როგორ, რომ მუშაობს? 1558 01:11:34,690 --> 01:11:35,820 გთხოვთ ვთხოვთ ახლა. 1559 01:11:35,820 --> 01:11:39,260 მე ნამდვილად მინდა დარწმუნდით ყველა მესმის ეს ადრე ჩვენ უხელმძღვანელებს out. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> აუდიტორია: რატომ დააყენა გოგრა და კამფეტი შევიდა იმავე 1562 01:11:52,060 --> 01:11:54,108 ნაწილი hash table? 1563 01:11:54,108 --> 01:11:55,860 >> JASON HIRSCHHORN: კარგი კითხვაა. 1564 01:11:55,860 --> 01:11:59,140 რატომ ჩვენ მათ იგივე ნაწილი hash table? 1565 01:11:59,140 --> 01:12:03,200 ისე, ამ შემთხვევაში ჩვენი ქეშირების ფუნქცია ანაზღაურება ნულის ორივე მათგანი. 1566 01:12:03,200 --> 01:12:05,310 ასე რომ, ისინი უნდა წავიდეთ at indice ნულოვანი იმიტომ, რომ სადაც ჩვენ ვაპირებთ 1567 01:12:05,310 --> 01:12:07,420 ვეძებთ მათ, თუ ჩვენ ოდესმე გსურთ ვეძებთ მათ. 1568 01:12:07,420 --> 01:12:11,750 ერთხელ, ხაზოვანი საცდელი მიდგომა ჩვენ არ დააყენოს მათ, როგორც ნულოვანი. 1569 01:12:11,750 --> 01:12:13,900 მაგრამ ცალკე ჯაჭვი მიდგომა, ჩვენ ვაპირებთ, რომ ამით მათ, როგორც ნულოვანი 1570 01:12:13,900 --> 01:12:16,620 და შემდეგ შექმნა ჩამონათვალი off ნულოვანი. 1571 01:12:16,620 --> 01:12:20,140 >> და ჩვენ არ გვინდა, რომ გადავაწერო გოგრა უბრალოდ იმის გამო, რომ მაშინ ჩვენ 1572 01:12:20,140 --> 01:12:21,860 ვივარაუდოთ, რომ გოგრა იყო არასდროს არ შეიყვანეს. 1573 01:12:21,860 --> 01:12:25,230 თუ ჩვენ უბრალოდ შეინახოს ერთი რამ ადგილმდებარეობა რომ იქნებოდა ცუდი. 1574 01:12:25,230 --> 01:12:28,590 მაშინ არ იქნება chance of us ოდესმე - 1575 01:12:28,590 --> 01:12:31,660 თუ ჩვენ ოდესმე დუბლიკატი, მაშინ ჩვენ უბრალოდ წაშალოს ჩვენი თავდაპირველი ღირებულება. 1576 01:12:31,660 --> 01:12:34,090 ასე რომ, რატომ ვაკეთებთ ამ მიდგომას. 1577 01:12:34,090 --> 01:12:36,580 ან ამიტომაც ჩვენ ვირჩევთ - მაგრამ ერთხელ, ჩვენ აირჩია ცალკე chaining მიდგომა, 1578 01:12:36,580 --> 01:12:39,670 რომელიც არსებობს მრავალი სხვა მიდგომები შეიძლება აირჩიონ. 1579 01:12:39,670 --> 01:12:41,185 ამჯამად რომ უპასუხოს შეკითხვას? 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 ხაზოვანი საცდელი გულისხმობს - 1584 01:12:47,720 --> 01:12:51,913 თუ ჩვენ აღმოვაჩინეთ შეჯახება ნულოვანი, ჩვენ გამოიყურება მომდევნო ადგილზე თუ 1585 01:12:51,913 --> 01:12:54,310 ეს იყო ღია და ვთქვათ არსებობს. 1586 01:12:54,310 --> 01:12:57,320 და მაშინ ჩვენ გამოიყურებოდეს მომავალი და სპორტის ვნახოთ, თუ რომ ღია იყო და მისი იქ. 1587 01:12:57,320 --> 01:12:59,780 ასე რომ, ჩვენ ვხედავთ, მომავალი ხელმისაწვდომია ღია ადგილზე და დააყენოს ის არსებობს. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 ნებისმიერი სხვა კითხვები? 1590 01:13:03,890 --> 01:13:05,370 ჰო, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> აუდიტორია: როგორც თვალყური რომ, რას ნიშნავს მეორე ადგილზე? 1592 01:13:07,490 --> 01:13:10,250 In hash მაგიდასთან ან უკავშირდება სიაში. 1593 01:13:10,250 --> 01:13:12,100 >> JASON HIRSCHHORN: ხაზოვანი პროგრამირება, არ არის დაკავშირებული სიები. 1594 01:13:12,100 --> 01:13:13,400 მომდევნო ადგილზე hash მაგიდასთან. 1595 01:13:13,400 --> 01:13:13,820 >> აუდიტორია: OK. 1596 01:13:13,820 --> 01:13:17,570 ასე რომ hash table იქნება ინიციალიზაცია ზომა - 1597 01:13:17,570 --> 01:13:19,560 მოსწონს ნომერი strings რომ თქვენ ჩასმა? 1598 01:13:19,560 --> 01:13:22,170 >> JASON HIRSCHHORN თქვენ აკეთებთ გვინდა, რომ იყოს მართლაც დიდი. 1599 01:13:22,170 --> 01:13:23,910 დიახ. 1600 01:13:23,910 --> 01:13:27,900 აქ არის სურათი, რაც ჩვენ უბრალოდ გაამახვილა ფორუმში. 1601 01:13:27,900 --> 01:13:29,470 კიდევ ერთხელ, ჩვენ შეჯახება უფლება აქ. 1602 01:13:29,470 --> 01:13:30,710 at 152. 1603 01:13:30,710 --> 01:13:33,570 და დაინახავთ, ჩვენ შევქმენით დაკავშირებული სიაში off იგი. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 ერთხელ, hash table ცალკე chaining მიდგომა არ არის ერთი თქვენ 1606 01:13:41,850 --> 01:13:45,590 უნდა მიიღოს პრობლემები შექმნას ექვსი მაგრამ არის ერთი, რომ ბევრი 1607 01:13:45,590 --> 01:13:47,100 სტუდენტები ტენდენცია მიიღოს. 1608 01:13:47,100 --> 01:13:51,140 ასე რომ შენიშვნა, ვისაუბროთ მოკლედ სანამ ჩვენ უხელმძღვანელებს out შესახებ პრობლემა ექვსი, 1609 01:13:51,140 --> 01:13:52,160 და მაშინ მე გაუზიაროს ამბავი თქვენთან ერთად. 1610 01:13:52,160 --> 01:13:55,120 ჩვენ სამი წუთის განმავლობაში. 1611 01:13:55,120 --> 01:13:55,750 >> პრობლემა კომპლექტი ექვსი. 1612 01:13:55,750 --> 01:13:57,790 თქვენ გაქვთ ოთხი ფუნქციები - 1613 01:13:57,790 --> 01:14:02,430 დატვირთვა, შეამოწმეთ, სიდიდესა და განიტვირთოს. 1614 01:14:02,430 --> 01:14:03,380 დატვირთვა - 1615 01:14:03,380 --> 01:14:07,120 ასევე, ჩვენ უკვე მიმდინარეობს მეტი დატვირთვის ახლა. 1616 01:14:07,120 --> 01:14:09,330 ჩვენ გაამახვილა დატვირთვის ფორუმში. 1617 01:14:09,330 --> 01:14:13,230 და ჩვენ კი დაიწყო კოდირების ბევრი ჩასმა შევიდა დაკავშირებული სიაში. 1618 01:14:13,230 --> 01:14:18,020 ასე დატვირთვის არ არის ბევრად მეტი, ვიდრე რა ჩვენ უბრალოდ აკეთებს. 1619 01:14:18,020 --> 01:14:21,070 >> Check არის კიდევ გაქვთ რაღაც დატვირთული. 1620 01:14:21,070 --> 01:14:22,580 ეს იგივე პროცესი, როგორც ეს. 1621 01:14:22,580 --> 01:14:26,845 იგივე პირველი ორი ნაწილი, სადაც თქვენ გადაყარეთ რაღაც შევიდა ქეშირების ფუნქცია 1622 01:14:26,845 --> 01:14:29,190 და კიდევ მისი ღირებულება. 1623 01:14:29,190 --> 01:14:30,700 მაგრამ ახლა ჩვენ არ ჩასმა იგი. 1624 01:14:30,700 --> 01:14:33,350 ახლა ჩვენ ვეძებთ მას. 1625 01:14:33,350 --> 01:14:37,130 მე ნიმუში კოდი დაწერილი მოძიების რაღაც უკავშირდება სიაში. 1626 01:14:37,130 --> 01:14:38,250 მე მოგიწოდებთ თქვენ პრაქტიკაში რომ. 1627 01:14:38,250 --> 01:14:43,000 მაგრამ ინტუიციურად მოძიებაში რაღაც საკმაოდ მსგავსი ჩასმა რაღაც. 1628 01:14:43,000 --> 01:14:46,540 მართლაც, ჩვენ მიიპყრო სურათს მოძიებაში რაღაც დაკავშირებული სიაში, მოძრავი 1629 01:14:46,540 --> 01:14:48,910 მეშვეობით სანამ შენ ბოლომდე. 1630 01:14:48,910 --> 01:14:52,430 და თუ თქვენ გაქვთ ბოლომდე და ვერ ის, მაშინ ეს არ არის. 1631 01:14:52,430 --> 01:14:55,400 ასე რომ, შემოწმება, არსებითად. 1632 01:14:55,400 --> 01:14:57,030 >> შემდეგი არის ზომა. 1633 01:14:57,030 --> 01:14:57,910 მოდით გამოტოვოთ ზომა. 1634 01:14:57,910 --> 01:15:00,040 საბოლოოდ თქვენ არ განიტვირთოს. 1635 01:15:00,040 --> 01:15:02,890 განიტვირთოს არის ერთ ერთი ჩვენ არ შედგენილი დაფაზე ან კოდირებულ არავის გაუკეთებია. 1636 01:15:02,890 --> 01:15:05,990 მაგრამ მე მოგიწოდებთ თქვენ ცდილობენ კოდირების ის ჩვენს ნიმუში უკავშირდება სია მაგალითად. 1637 01:15:05,990 --> 01:15:11,440 მაგრამ განიტვირთოს ინტუიციურად მსგავსი free - 1638 01:15:11,440 --> 01:15:14,010 ან ვგულისხმობ მსგავსი შემოწმება. 1639 01:15:14,010 --> 01:15:17,350 გარდა ახლა ყოველ დროს, თქვენ ვაპირებთ მეშვეობით, თქვენ არ უბრალოდ შემოწმების 1640 01:15:17,350 --> 01:15:19,090 თუ თქვენ გაქვთ თქვენი ღირებულება არსებობს. 1641 01:15:19,090 --> 01:15:22,490 მაგრამ თქვენ აღების, რომ კვანძის და ათავისუფლებს მას, არსებითად. 1642 01:15:22,490 --> 01:15:23,610 ის, რაც განიტვირთოს მოგთხოვთ გავაკეთოთ. 1643 01:15:23,610 --> 01:15:24,670 უფასო ყველაფერი თქვენ malloced. 1644 01:15:24,670 --> 01:15:27,480 ასე რომ თქვენ გადის მთელი სია ერთხელ, გადის მთელი hash 1645 01:15:27,480 --> 01:15:27,760 მაგიდა ერთხელ. 1646 01:15:27,760 --> 01:15:29,240 ამ დროს არ ამოწმებენ რა არის იქ. 1647 01:15:29,240 --> 01:15:31,080 უბრალოდ გასათავისუფლებლად, რა არის იქ. 1648 01:15:31,080 --> 01:15:33,260 >> და ბოლოს ზომის. 1649 01:15:33,260 --> 01:15:34,350 ზომა უნდა განხორციელდეს. 1650 01:15:34,350 --> 01:15:35,590 თუ თქვენ არ განახორციელოს ზომა - 1651 01:15:35,590 --> 01:15:36,250 მე ვიტყვი, რომ მოსწონს ეს. 1652 01:15:36,250 --> 01:15:39,740 თუ თქვენ არ განახორციელოს ზომა ზუსტად ერთი ხაზი კოდი ჩათვლით 1653 01:15:39,740 --> 01:15:43,760 დაბრუნების განაცხადი, თქვენ აკეთებს ზომა არასწორად. 1654 01:15:43,760 --> 01:15:47,170 ასე რომ დარწმუნდით, ზომა, სრული დიზაინი ქულა, თქვენ აკეთებთ ეს ზუსტად ერთი 1655 01:15:47,170 --> 01:15:49,970 ხაზი კოდი, მათ შორის, დაბრუნების განცხადებაში. 1656 01:15:49,970 --> 01:15:52,450 >> და არ კრავენ up არის, Akchar. 1657 01:15:52,450 --> 01:15:53,700 მოწადინებული თახვის. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 მინდოდა მეთქვა დიდი მადლობა ბიჭებს მოდის მონაკვეთზე. 1660 01:16:01,300 --> 01:16:02,550 აქვს Happy Halloween. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 ეს არის ჩემი კოსტუმი. 1663 01:16:05,960 --> 01:16:08,850 მე ტარება ამ ხუთშაბათს თუ მე ვერ ვხედავ თქვენ ოფისში საათის განმავლობაში. 1664 01:16:08,850 --> 01:16:14,640 და თუ თქვენ აინტერესებს კიდევ რამდენიმე ფონზე, როგორც ეს კოსტუმი, ვგრძნობ 1665 01:16:14,640 --> 01:16:19,135 უფასო შეამოწმეთ 2011 განყოფილებიანი ამბავი, თუ რატომ ვარ 1666 01:16:19,135 --> 01:16:20,900 ტარება გოგრა კოსტუმი. 1667 01:16:20,900 --> 01:16:23,680 და ეს არის სამწუხარო ამბავი. 1668 01:16:23,680 --> 01:16:27,050 ასე რომ დარწმუნდით აქვს ზოგიერთი ქსოვილების სიახლოვეს. 1669 01:16:27,050 --> 01:16:28,680 მაგრამ, თუ თქვენ გაქვთ რაიმე კითხვებს მე გამყარებაში გარშემო 1670 01:16:28,680 --> 01:16:29,960 გარეთ შემდეგ სექციაში. 1671 01:16:29,960 --> 01:16:31,510 წარმატებებს გისურვებთ პრობლემა კომპლექტი ექვსი. 1672 01:16:31,510 --> 01:16:33,540 და როგორც ყოველთვის, თუ თქვენ გაქვთ რაიმე შეკითხვები, ნება მომეცით ვიცი. 1673 01:16:33,540 --> 01:16:35,584