1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:05,120 [მუსიკალური სათამაშო] 3 00:00:05,120 --> 00:00:12,026 4 00:00:12,026 --> 00:00:12,900 დინამიკები 1: ყველა უფლება. 5 00:00:12,900 --> 00:00:14,600 ყველას მივესალმებით თავში მონაკვეთზე. 6 00:00:14,600 --> 00:00:18,660 ვიმედოვნებ, რომ ყველა წარმატებით ამოღებული თქვენს ვიქტორინა 7 00:00:18,660 --> 00:00:19,510 გასულ კვირას. 8 00:00:19,510 --> 00:00:22,564 მე ვიცი, რომ ცოტა გიჟები დროს. 9 00:00:22,564 --> 00:00:25,230 როგორც მე ამბობდა ადრე, თუ თქვენ ფარგლებში სტანდარტული გადახრა, 10 00:00:25,230 --> 00:00:28,188 ნამდვილად არ აღელვებს, განსაკუთრებით ნაკლებად კომფორტული მონაკვეთზე. 11 00:00:28,188 --> 00:00:30,230 ეს არის ის, სადაც თქვენ უნდა იყოს. 12 00:00:30,230 --> 00:00:32,850 >> თუ თქვენ არ დიდი, მაშინ გასაოცარია. 13 00:00:32,850 --> 00:00:33,650 Kudos თქვენ. 14 00:00:33,650 --> 00:00:36,149 და თუ თქვენ თავს თქვენ უნდა ცოტა მეტი დახმარება, გთხოვთ 15 00:00:36,149 --> 00:00:38,140 შეგიძლიათ მიღწევა out ნებისმიერ TFs. 16 00:00:38,140 --> 00:00:40,030 ჩვენ ყველანი აქ, რათა დაეხმაროს. 17 00:00:40,030 --> 00:00:40,960 >> ამიტომ, ჩვენ ასწავლიან. 18 00:00:40,960 --> 00:00:44,550 სწორედ ამიტომ მე აქ ყოველ ორშაბათს თქვენ ბიჭები და საათებში ხუთშაბათს. 19 00:00:44,550 --> 00:00:48,130 ასე რომ, გთხოვთ მოგერიდებათ ნება მომეცით ვიცი თუ თქვენ აწუხებს არაფერი 20 00:00:48,130 --> 00:00:52,450 ან თუ არსებობს რამე ვიქტორინა რომ თქვენ ნამდვილად მინდა მივმართო. 21 00:00:52,450 --> 00:00:56,940 >> ასე რომ, დღის წესრიგში დღეს არის ყველაფერი მონაცემების სტრუქტურებში. 22 00:00:56,940 --> 00:01:01,520 ზოგიერთი უბრალოდ უნდა იყოს მხოლოდ მისაღებად თქვენ გაეცნო ამ. 23 00:01:01,520 --> 00:01:04,870 შეიძლება არ ოდესმე განახორციელოს მათ ამ კლასში. 24 00:01:04,870 --> 00:01:08,690 ზოგიერთი მათგანი კი, როგორიცაა თქვენი speller pset. 25 00:01:08,690 --> 00:01:11,380 >> თქვენ უნდა თქვენი არჩევანი შორის hash მაგიდები და ცდილობს. 26 00:01:11,380 --> 00:01:13,680 ასე რომ, ჩვენ ნამდვილად აპირებს მეტი იმ. 27 00:01:13,680 --> 00:01:18,690 ეს იქნება ნამდვილად უფრო სახის მაღალი დონის მონაკვეთზე დღეს, თუმცა, 28 00:01:18,690 --> 00:01:22,630 იმიტომ, რომ არსებობს ბევრი მათგანი, და თუ ჩვენ შევიდა განხორციელების დეტალები 29 00:01:22,630 --> 00:01:26,490 ყველა ამ, ჩვენ არ კი მეშვეობით უკავშირდება სიები 30 00:01:26,490 --> 00:01:28,520 და იქნებ ცოტა hash მაგიდები. 31 00:01:28,520 --> 00:01:31,200 >> ასე აგებს ჩემთან ერთად. 32 00:01:31,200 --> 00:01:33,530 ჩვენ არ ვაპირებთ უნდა აკეთებს იმდენი კოდირების ამ დროს. 33 00:01:33,530 --> 00:01:36,870 თუ თქვენ გაქვთ რაიმე შეკითხვები ან გსურთ ნახოთ იგი განხორციელდა 34 00:01:36,870 --> 00:01:39,260 ან ცდილობენ თავს, მე აუცილებლად გირჩევთ 35 00:01:39,260 --> 00:01:44,250 აპირებს study.cs50.net, რომელიც აქვს მაგალითები ამ ყოველივეს. 36 00:01:44,250 --> 00:01:46,400 ეს უნდა ჩემი PowerPoints აღნიშნავს, რომ 37 00:01:46,400 --> 00:01:50,860 ტენდენცია გამოიყენოს, ასევე რამდენიმე პროგრამირების წვრთნები, განსაკუთრებით რამ 38 00:01:50,860 --> 00:01:55,250 როგორიცაა უკავშირდება სიები და ბინარული ხეები stacks და მინიშნებებს. 39 00:01:55,250 --> 00:01:59,590 ასე რომ ცოტა უფრო მაღალ დონეზე, რომელიც შეიძლება იყოს ლამაზი ბიჭები. 40 00:01:59,590 --> 00:02:01,320 >> ასე რომ, ჩვენ უნდა დავიწყოთ. 41 00:02:01,320 --> 00:02:03,060 და ასევე, yes-- ტესტები. 42 00:02:03,060 --> 00:02:06,550 მე ვფიქრობ, რომ ყველაზე მეტად თქვენ, რომლებიც ჩემი მონაკვეთზე თქვენი ტესტები, 43 00:02:06,550 --> 00:02:12,060 მაგრამ ყველას მოდის და რატომღაც თქვენ არა, ისინი სწორედ აქ, წინ. 44 00:02:12,060 --> 00:02:12,740 >> ასე უკავშირდება სიები. 45 00:02:12,740 --> 00:02:15,650 მე ვიცი, ეს სახის მიდის მხარი დაუჭიროს, სანამ თქვენი ვიქტორინა. 46 00:02:15,650 --> 00:02:17,940 რომ იყო ერთი კვირის წინ ჩვენ შეიტყო. 47 00:02:17,940 --> 00:02:21,040 მაგრამ ამ შემთხვევაში, ჩვენ უბრალოდ წავიდეთ ცოტა უფრო სიღრმისეული. 48 00:02:21,040 --> 00:02:25,900 >> ასე რატომ ვირჩევთ უკავშირდება სიაში მეტი მასივი? 49 00:02:25,900 --> 00:02:27,130 რა განასხვავებს მათ? 50 00:02:27,130 --> 00:02:27,630 დიახ? 51 00:02:27,630 --> 00:02:30,464 >> აუდიტორია: თქვენ შეგიძლიათ გაფართოებას უკავშირდება მიუთითეთ წინააღმდეგ მასივი ფიქსირებული ზომის. 52 00:02:30,464 --> 00:02:31,171 დინამიკები 1: Right. 53 00:02:31,171 --> 00:02:33,970 მასივი ფიქსირებული ზომის, ხოლო უკავშირდება სიაში აქვს ცვლადი ზომა. 54 00:02:33,970 --> 00:02:36,970 ასე რომ, თუ ჩვენ არ ვიცით, როგორ რამდენად ჩვენ გვინდა, შენახვა, 55 00:02:36,970 --> 00:02:39,880 უკავშირდება სიაში გვაძლევს დიდი გზა ამის გაკეთება, რადგან ჩვენ შეგვიძლია მხოლოდ 56 00:02:39,880 --> 00:02:43,730 დაამატოთ კიდევ ერთი კვანძის და დაემატოს სხვა კვანძის და დაამატოთ კიდევ ერთი კვანძის. 57 00:02:43,730 --> 00:02:45,750 მაგრამ რა შეიძლება იყოს ვაჭრობის საგანი? 58 00:02:45,750 --> 00:02:49,521 ვინმეს გახსოვთ ვაჭრობის შორის კოლექტორები და უკავშირდება სიები? 59 00:02:49,521 --> 00:02:50,020 Mmhmm? 60 00:02:50,020 --> 00:02:51,460 >> აუდიტორია: თქვენ უნდა გავლა ყველა გზა 61 00:02:51,460 --> 00:02:53,738 მეშვეობით უკავშირდება სიაში ელემენტს სიაში. 62 00:02:53,738 --> 00:02:55,570 მასივი, თქვენ შეგიძლიათ მხოლოდ ელემენტს. 63 00:02:55,570 --> 00:02:56,278 >> დინამიკები 1: Right. 64 00:02:56,278 --> 00:02:57,120 ასე მასივების 65 00:02:57,120 --> 00:02:58,500 >> აუდიტორია: [INAUDIBLE]. 66 00:02:58,500 --> 00:03:01,090 >> დინამიკები 1: With მასივები, ჩვენ გვაქვს რა ეწოდება წვდომის. 67 00:03:01,090 --> 00:03:04,820 იმას ნიშნავს, რომ, თუ გვინდა, რა არის ოდესმე მეხუთე პუნქტში სია 68 00:03:04,820 --> 00:03:07,230 ან მეხუთე წერტილი ჩვენი მასივი, ჩვენ უბრალოდ დაიბრუნოს ის. 69 00:03:07,230 --> 00:03:10,440 თუ ეს უკავშირდება სია, ჩვენ უნდა iterate მეშვეობით, უფლება? 70 00:03:10,440 --> 00:03:14,020 ასე წვდომის ელემენტს მასივი არის მუდმივი დრო, 71 00:03:14,020 --> 00:03:19,530 ხოლო ერთად უკავშირდება სიაში, რომ ის სავარაუდოდ, ხაზოვანი დროს, რადგან, შესაძლოა, 72 00:03:19,530 --> 00:03:21,370 ჩვენი ელემენტს ყველა გზა ბოლოს. 73 00:03:21,370 --> 00:03:23,446 ჩვენ უნდა მოძებნოთ მეშვეობით ყველაფერს. 74 00:03:23,446 --> 00:03:25,320 ასე რომ, ყველა ამ მონაცემების სტრუქტურები ჩვენ ვაპირებთ 75 00:03:25,320 --> 00:03:29,330 უნდა ხარჯვის ცოტა მეტი დრო, რა არის პლიუსი და მინუსებიც. 76 00:03:29,330 --> 00:03:31,480 როდესაც შესაძლოა ჩვენ გვინდა, გამოყენება ერთი მეტი სხვა? 77 00:03:31,480 --> 00:03:34,970 და ეს სახის დიდი რამ წართმევას. 78 00:03:34,970 --> 00:03:40,140 >> ასე რომ, ჩვენ აქ განმარტებას კვანძში. 79 00:03:40,140 --> 00:03:43,040 ეს იგივეა, რომ ერთ ელემენტს ჩვენი დაკავშირებული სიაში, უფლება? 80 00:03:43,040 --> 00:03:46,180 ასე რომ, ჩვენ ყველა იცნობს ჩვენი typedef structs, 81 00:03:46,180 --> 00:03:47,980 რომელიც წავედით მიმოხილვა ბოლო დროს. 82 00:03:47,980 --> 00:03:53,180 ეს იყო, ძირითადად, მხოლოდ შექმნა სხვა ტიპის მონაცემის რომ ჩვენ შეგვიძლია გამოვიყენოთ. 83 00:03:53,180 --> 00:03:57,930 >> და ამ შემთხვევაში, ეს არის ზოგიერთი კვანძის რომ გამართავს რამდენიმე რიცხვი. 84 00:03:57,930 --> 00:04:00,210 და მერე რა არის მეორე ნაწილი აქ? 85 00:04:00,210 --> 00:04:03,192 86 00:04:03,192 --> 00:04:05,677 ვინმე? 87 00:04:05,677 --> 00:04:06,680 >> აუდიტორია: [INAUDIBLE]. 88 00:04:06,680 --> 00:04:07,020 >> დინამიკები 1: ჰო. 89 00:04:07,020 --> 00:04:08,400 ეს მაჩვენებელი მომდევნო კვანძის. 90 00:04:08,400 --> 00:04:12,610 ასე რომ, ეს რეალურად უნდა იყოს აქ. 91 00:04:12,610 --> 00:04:18,790 ეს არის მაჩვენებელი ტიპის კვანძის მომდევნო რამ. 92 00:04:18,790 --> 00:04:22,410 და რომ ის, რაც მათ მოიცავს ჩვენი კვანძში. 93 00:04:22,410 --> 00:04:24,060 ზემოთ. 94 00:04:24,060 --> 00:04:29,390 >> ყველა უფლება, ასე ძიება, რადგან ჩვენ ვიყავით უბრალოდ ვამბობ, რომ ადრე მხრივ, თუ თქვენ 95 00:04:29,390 --> 00:04:31,840 მიმდინარეობს ძებნის მეშვეობით, თქვენ უნდა რეალურად iterate 96 00:04:31,840 --> 00:04:33,660 საშუალებით თქვენი უკავშირდება სიაში. 97 00:04:33,660 --> 00:04:38,530 ასე რომ, თუ ჩვენ ვეძებთ ნომერი 9, გვინდა იწყება ჩვენი უფროსი 98 00:04:38,530 --> 00:04:41,520 და რომ მიგვითითებს დასაწყისში ჩვენი დაკავშირებული სიაში, უფლება? 99 00:04:41,520 --> 00:04:44,600 და ვამბობთ, OK, ჯერ ეს node შეიცავს 9 ნომერი? 100 00:04:44,600 --> 00:04:45,690 არა? 101 00:04:45,690 --> 00:04:47,500 >> ყველა უფლება, წასვლა მომდევნო ერთი. 102 00:04:47,500 --> 00:04:48,312 დაიცვას იგი. 103 00:04:48,312 --> 00:04:49,520 იგი შეიცავს 9 ნომერი? 104 00:04:49,520 --> 00:04:50,570 პოსტები 105 00:04:50,570 --> 00:04:51,550 დაიცვას მომდევნო ერთი. 106 00:04:51,550 --> 00:04:55,490 >> ასე რომ, ჩვენ უნდა რეალურად iterate ჩვენი უკავშირდება სიაში. 107 00:04:55,490 --> 00:05:00,070 ჩვენ არ შეგვიძლია მხოლოდ წასვლა პირდაპირ, სადაც 9. 108 00:05:00,070 --> 00:05:05,860 და თუ ბიჭები რეალურად გვინდა ვხედავ ზოგიერთი ფსევდო კოდი აქ. 109 00:05:05,860 --> 00:05:10,420 ჩვენ გვაქვს გარკვეული ძებნის ფუნქცია აქ რომელიც იღებს in-- რა სჭირდება ყველაზე მეტად? 110 00:05:10,420 --> 00:05:13,110 111 00:05:13,110 --> 00:05:14,320 თქვენ რას ფიქრობთ? 112 00:05:14,320 --> 00:05:15,960 ასე ადვილი. 113 00:05:15,960 --> 00:05:17,784 რა არის ეს? 114 00:05:17,784 --> 00:05:18,700 აუდიტორია: [INAUDIBLE]. 115 00:05:18,700 --> 00:05:20,366 დინამიკები 1: ნომერი ჩვენ ვეძებთ. 116 00:05:20,366 --> 00:05:20,980 არა? 117 00:05:20,980 --> 00:05:22,875 და რა ეს შეესაბამება? 118 00:05:22,875 --> 00:05:25,020 ეს მაჩვენებელი? 119 00:05:25,020 --> 00:05:26,000 >> აუდიტორია: კვანძში. 120 00:05:26,000 --> 00:05:28,980 >> დინამიკები 1: კვანძის სიაში რომ ჩვენ შევხედავთ, არა? 121 00:05:28,980 --> 00:05:33,700 ასე რომ, ჩვენ გვაქვს გარკვეული კვანძების მაჩვენებელი აქ. 122 00:05:33,700 --> 00:05:37,240 ეს არის წერტილი, რომელიც აპირებს რეალურად iterate ჩვენი სია. 123 00:05:37,240 --> 00:05:39,630 ჩვენ ვაყენებთ მას ტოლი სიაში იმიტომ, რომ ეს მხოლოდ 124 00:05:39,630 --> 00:05:44,380 განსაზღვრავს ის ტოლია დაწყება უკავშირდება სიაში. 125 00:05:44,380 --> 00:05:50,660 >> ხოლო ეს არ არის NULL, ხოლო ჩვენ ჯერ კიდევ გვაქვს რამ ჩვენს სიაში, 126 00:05:50,660 --> 00:05:55,580 შეამოწმეთ თუ რომ კვანძის პუნქტების ჩვენ ვეძებთ. 127 00:05:55,580 --> 00:05:57,740 TRUE. 128 00:05:57,740 --> 00:06:01,070 წინააღმდეგ შემთხვევაში, განახლება, არა? 129 00:06:01,070 --> 00:06:04,870 >> თუ ეს არ არის NULL, ჩვენ გასასვლელად ჩვენი ხოლო მარყუჟის და დაბრუნების ცრუ 130 00:06:04,870 --> 00:06:08,340 რადგან ეს იმას ნიშნავს, რომ ჩვენ არ აღმოაჩინა იგი. 131 00:06:08,340 --> 00:06:11,048 ამჯამად ყველას, როგორ მუშაობს? 132 00:06:11,048 --> 00:06:11,548 OK. 133 00:06:11,548 --> 00:06:14,940 134 00:06:14,940 --> 00:06:20,260 >> ასე ჩანართი, თქვენ აქვს სამი სხვადასხვა გზა. 135 00:06:20,260 --> 00:06:25,250 თქვენ შეგიძლიათ prepend, შეგიძლიათ დამატება და შეგიძლიათ ჩადეთ ასორტი. 136 00:06:25,250 --> 00:06:28,215 ამ შემთხვევაში, ჩვენ აპირებს prepend. 137 00:06:28,215 --> 00:06:33,380 ვინმეს ვიცი, როგორ იმ სამი შემთხვევა შეიძლება განსხვავდება? 138 00:06:33,380 --> 00:06:36,920 >> ასე prepend ნიშნავს, რომ თქვენ დააყენა მას წინ თქვენი სია. 139 00:06:36,920 --> 00:06:39,770 ასე რომ, იმას ნიშნავს, რომ არ აქვს მნიშვნელობა, რა თქვენი კვანძის არის, არ აქვს მნიშვნელობა, 140 00:06:39,770 --> 00:06:43,160 რა ღირებულება, თქვენ აპირებს იმისათვის, რომ ეს უფლება აქ ჩვენს თვალწინ, OK? 141 00:06:43,160 --> 00:06:45,160 ეს იქნება პირველი ელემენტს სიაში. 142 00:06:45,160 --> 00:06:49,510 >> თუ დამატება, ის აპირებს წასვლა უკან თქვენი სია. 143 00:06:49,510 --> 00:06:54,010 და ჩადეთ ასორტი ნიშნავს, რომ თქვენ აპირებს დააყენოს რეალურად შევიდა ადგილი 144 00:06:54,010 --> 00:06:57,700 სადაც ის ინახავს თქვენს უკავშირდება სია დალაგებულია. 145 00:06:57,700 --> 00:07:00,810 კიდევ ერთხელ, თუ როგორ გამოიყენოთ ამ და როდესაც თქვენ იყენებთ 146 00:07:00,810 --> 00:07:02,530 მათ იქნება განსხვავდება დამოკიდებულია თქვენი საქმე. 147 00:07:02,530 --> 00:07:05,834 148 00:07:05,834 --> 00:07:07,750 თუ იგი არ უნდა იყოს დახარისხებული, prepend აპირებს 149 00:07:07,750 --> 00:07:10,460 რომ ის, რაც ყველაზე ხალხი გამოყენება, რადგან არ 150 00:07:10,460 --> 00:07:15,680 უნდა გაიაროს მთელი სია რათა ვიპოვოთ ბოლომდე დაამატოთ ეს, არა? 151 00:07:15,680 --> 00:07:17,720 შეგიძლიათ უბრალოდ გამყარებაში მას უფლება. 152 00:07:17,720 --> 00:07:21,930 >> ასე რომ, ჩვენ გაივლიან ჩანართი 1 ახლა. 153 00:07:21,930 --> 00:07:26,360 ასე რომ ერთი რამ, რომ მე ვაპირებ უაღრესად გირჩევთ ამ pset 154 00:07:26,360 --> 00:07:29,820 მიაპყროს რამ, როგორც ყოველთვის. 155 00:07:29,820 --> 00:07:35,130 ეს ძალიან მნიშვნელოვანია, რომ თქვენ განახლება თქვენი მითითებას სწორი მიზნით 156 00:07:35,130 --> 00:07:38,620 იმიტომ, რომ თუ განაახლებს მათ ოდნავ მწყობრიდან, 157 00:07:38,620 --> 00:07:42,210 თქვენ აპირებს დასრულდება მდე დაკარგვის ნაწილების თქვენი სია. 158 00:07:42,210 --> 00:07:49,680 >> ასე მაგალითად, ამ შემთხვევაში, ჩვენ ვეუბნებოდი ხელმძღვანელი მხოლოდ წერტილი 1. 159 00:07:49,680 --> 00:07:56,070 თუ ჩვენ უბრალოდ, რომ შენახვის გარეშე ეს 1, 160 00:07:56,070 --> 00:07:58,570 ჩვენ არ ვიცით, რა 1 უნდა აღვნიშნო, რომ ახლა 161 00:07:58,570 --> 00:08:02,490 იმიტომ, რომ ჩვენ დავკარგეთ რა უფროსი მიუთითა. 162 00:08:02,490 --> 00:08:05,530 ასე რომ, ერთი რამ უნდა გვახსოვდეს როდესაც თქვენ აკეთებთ prepend 163 00:08:05,530 --> 00:08:09,630 გადარჩენა, რა უფროსი რაოდენობა პირველ, 164 00:08:09,630 --> 00:08:15,210 მაშინ reassign ის, და შემდეგ განახლება რა თქვენი ახალი კვანძის უნდა აღვნიშნო, რომ. 165 00:08:15,210 --> 00:08:20,870 166 00:08:20,870 --> 00:08:22,560 ამ შემთხვევაში, ეს არის ერთი გზა ამის გაკეთება. 167 00:08:22,560 --> 00:08:25,440 >> ასე რომ, თუ ჩვენ გავაკეთეთ ეს გზა სადაც ჩვენ უბრალოდ გადაიყვანა ხელმძღვანელი, 168 00:08:25,440 --> 00:08:30,320 ჩვენ დასაკარგი, ძირითადად, ჩვენი მთელი სია, არა? 169 00:08:30,320 --> 00:08:38,000 ერთი გზა უნდა გააკეთოს, რომ აქვს 1 წერტილი შემდეგი, და შემდეგ უფროსი წერტილი 1. 170 00:08:38,000 --> 00:08:42,650 ან შეგიძლიათ გააკეთოთ სახის მოსწონს დროებითი შენახვა, რომელიც მე ისაუბრა. 171 00:08:42,650 --> 00:08:45,670 >> მაგრამ reassigning თქვენი პოინტერები სწორი მიზნით 172 00:08:45,670 --> 00:08:48,750 იქნება ძალიან, ძალიან მნიშვნელოვანია ამ pset. 173 00:08:48,750 --> 00:08:53,140 წინააღმდეგ შემთხვევაში, თქვენ აპირებს აქვს hash მაგიდასთან ან ცდილობენ, რომ უბრალოდ იქნება 174 00:08:53,140 --> 00:08:56,014 მხოლოდ ნაწილი სიტყვა, რომ თქვენ გსურთ და შემდეგ you're-- mmhmm? 175 00:08:56,014 --> 00:08:58,930 აუდიტორია: რა იყო დროებითი შენახვის, რაც თქვენ ვსაუბრობთ? 176 00:08:58,930 --> 00:09:00,305 დინამიკები 1: დროებითი შენახვის. 177 00:09:00,305 --> 00:09:02,760 ასე რომ, ძირითადად, სხვა გზა თქვენ შეიძლება ამის გაკეთება 178 00:09:02,760 --> 00:09:07,650 არის შესანახად ხელმძღვანელი რაღაც, როგორიცაა ჩაწეროთ იგი დროებითი ცვლადი. 179 00:09:07,650 --> 00:09:11,250 მივანიჭოთ მას 1 და მაშინ განაახლებს 1 აღვნიშნო 180 00:09:11,250 --> 00:09:13,830 რაც არ უნდა უფროსის გამოიყენება წერტილი. 181 00:09:13,830 --> 00:09:16,920 ამ გზით, ცხადია, უფრო დახვეწილი იმიტომ, რომ თქვენ 182 00:09:16,920 --> 00:09:20,770 არ უნდა დროებითი ღირებულება, მაგრამ მხოლოდ სთავაზობს კიდევ ერთი გზა ამის გაკეთება. 183 00:09:20,770 --> 00:09:23,999 184 00:09:23,999 --> 00:09:25,790 და ჩვენ მართლაც არ ზოგიერთი კოდი ამ. 185 00:09:25,790 --> 00:09:28,080 ასე უკავშირდება სია, ჩვენ რეალურად გვაქვს კოდი. 186 00:09:28,080 --> 00:09:31,930 ასე ჩასასმელი აქ, ამ prepending. 187 00:09:31,930 --> 00:09:34,290 ასე რომ, ეს შემოდის იგი სათავეში. 188 00:09:34,290 --> 00:09:38,820 >> ასე რომ, პირველი, რაც თქვენ უნდა შექმნათ თქვენი ახალი კვანძის, რა თქმა უნდა, 189 00:09:38,820 --> 00:09:40,790 შეამოწმეთ NULL. 190 00:09:40,790 --> 00:09:43,250 ყოველთვის კარგი. 191 00:09:43,250 --> 00:09:47,840 და მაშინ უნდა მივუთითოთ ფასეულობების. 192 00:09:47,840 --> 00:09:51,260 როდესაც თქვენ შექმნათ ახალი კვანძის, თქვენ არ ვიცი, რა ეს მიუთითებს შემდეგი, 193 00:09:51,260 --> 00:09:54,560 ასე რომ თქვენ გსურთ ინიციალიზაცია მას null. 194 00:09:54,560 --> 00:09:58,760 თუ ეს არ დასრულდება up მიუთითებს რაღაც სხვაგან, იგი იღებს გადაიყვანა და ეს ჯარიმა. 195 00:09:58,760 --> 00:10:00,740 თუ ის, პირველ რიგში, სიაში, მას სჭირდება 196 00:10:00,740 --> 00:10:04,270 აღვნიშნო, რომ null რადგან ეს ბოლომდე სიაში. 197 00:10:04,270 --> 00:10:12,410 >> ასე რომ, შემდეგ ჩადეთ იგი, ჩვენ ვხედავთ, რომ აქ ჩვენ არიან იმის თაობაზე, რომ მომავალი ღირებულება ჩვენი კვანძის 198 00:10:12,410 --> 00:10:17,380 უნდა იყოს, რაც ხელმძღვანელი, რაც ჩვენ გვქონდა აქ. 199 00:10:17,380 --> 00:10:19,930 ეს არის ის, რაც ჩვენ გავაკეთეთ. 200 00:10:19,930 --> 00:10:25,820 და მაშინ ჩვენ მინიჭების უფროსი წერტილი ჩვენი ახალი კვანძის, რადგან გახსოვთ, 201 00:10:25,820 --> 00:10:31,090 ახალი გარკვეული მომცეთ კვანძის, და სწორედ ის, რაც ხელმძღვანელი. 202 00:10:31,090 --> 00:10:34,370 სწორედ ამიტომ ჩვენ აქვს ამ arrow accessor. 203 00:10:34,370 --> 00:10:37,030 204 00:10:37,030 --> 00:10:37,530 მაგარი? 205 00:10:37,530 --> 00:10:38,130 Mmhmm? 206 00:10:38,130 --> 00:10:41,100 >> აუდიტორია: გვაქვს ვრთავ new შემდეგი null პირველი, 207 00:10:41,100 --> 00:10:44,240 თუ შეგვიძლია მხოლოდ ინიციალიზაცია იგი უხელმძღვანელებს? 208 00:10:44,240 --> 00:10:48,210 >> დინამიკები 1: New შემდეგი უნდა იყოს NULL დაიწყოს 209 00:10:48,210 --> 00:10:53,760 იმიტომ, რომ თქვენ არ ვიცი სადაც ის იქნება. 210 00:10:53,760 --> 00:10:56,100 გარდა ამისა, ეს არის ერთგვარი ისევე, როგორც პარადიგმა. 211 00:10:56,100 --> 00:10:59,900 თქვენ ვაყენებთ მას ტოლი NULL მხოლოდ იმისათვის, დარწმუნებული ვარ, რომ ყველა თქვენი ბაზები დაფარული 212 00:10:59,900 --> 00:11:04,070 სანამ რაიმე თანამდებობის ისე, რომ თქვენ გარანტირებულია, რომ ეს 213 00:11:04,070 --> 00:11:08,880 მივუთითოთ კონკრეტული ღირებულება წინააღმდეგ, როგორიცაა ნაგვის ღირებულება. 214 00:11:08,880 --> 00:11:12,210 იმის გამო, რომ, yeah, მივუთითოთ ახალი შემდეგი ავტომატურად, 215 00:11:12,210 --> 00:11:15,420 მაგრამ ეს უფრო, ისევე, როგორც კარგი პრაქტიკის ინიციალიზაცია იგი 216 00:11:15,420 --> 00:11:19,270 რომ გზა და მაშინ reassign. 217 00:11:19,270 --> 00:11:23,420 >> OK, ასე რომ ორმაგად უკავშირდება სიები ახლა. 218 00:11:23,420 --> 00:11:24,601 რას ფიქრობენ? 219 00:11:24,601 --> 00:11:26,350 რა არის განსხვავებული ორმაგად უკავშირდება სიები? 220 00:11:26,350 --> 00:11:30,750 221 00:11:30,750 --> 00:11:34,300 >> ასე, რომ ჩვენს უკავშირდება სიები, ჩვენ შეგვიძლია გადაადგილება მხოლოდ ერთი მიმართულებით, არა? 222 00:11:34,300 --> 00:11:35,270 ჩვენ მხოლოდ შემდეგ. 223 00:11:35,270 --> 00:11:36,760 ჩვენ შეგვიძლია მხოლოდ წავიდეთ წინ. 224 00:11:36,760 --> 00:11:40,300 >> ერთად ორმაგად უკავშირდება სია, ჩვენ ასევე შეგიძლიათ გადაადგილება უკან. 225 00:11:40,300 --> 00:11:44,810 ასე რომ, ჩვენ გვაქვს არა მხოლოდ ნომერი, რომელიც ჩვენ გვინდა შეინახოს, 226 00:11:44,810 --> 00:11:50,110 ჩვენ გვაქვს, სადაც იგი მიუთითებს, რომ შემდეგი და სადაც ჩვენ უბრალოდ მოვიდა. 227 00:11:50,110 --> 00:11:52,865 ასე რომ, ეს საშუალებას იძლევა უკეთესი გასვლის. 228 00:11:52,865 --> 00:11:56,620 229 00:11:56,620 --> 00:12:01,240 >> ასე ორმაგად უკავშირდება კვანძების, ძალიან ჰგავს, არა? 230 00:12:01,240 --> 00:12:05,000 განსხვავება მხოლოდ ისაა, ახლა ჩვენ აქვს შემდეგი და წინა. 231 00:12:05,000 --> 00:12:06,235 ეს არის ერთადერთი განსხვავება. 232 00:12:06,235 --> 00:12:09,570 233 00:12:09,570 --> 00:12:14,790 >> ასე რომ, თუ ჩვენ უნდა prepend ან append-- ჩვენ არ აქვს რაიმე კოდი ამ up აქ 234 00:12:14,790 --> 00:12:17,830 მაგრამ თუ თქვენ ცდილობენ და ჩადეთ იგი, მთავარია 235 00:12:17,830 --> 00:12:19,980 არის, რომ თქვენ უნდა მიიღოს დარწმუნებული ვარ, თქვენ მინიჭების 236 00:12:19,980 --> 00:12:23,360 ორივე წინა და თქვენი შემდეგი მაჩვენებელი სწორად. 237 00:12:23,360 --> 00:12:29,010 ასე რომ, ამ შემთხვევაში, თქვენ არა მხოლოდ ინიციალიზაცია შემდეგ, 238 00:12:29,010 --> 00:12:31,820 ინიციალიზაცია წინა. 239 00:12:31,820 --> 00:12:36,960 თუ ჩვენ იმ სიის სათავეში, ჩვენ რომ არა მხოლოდ უფროსი თანაბარი ახალი, 240 00:12:36,960 --> 00:12:41,750 მაგრამ ჩვენი ახალი წინა უნდა აღვნიშნო, რომ ხელმძღვანელი, არა? 241 00:12:41,750 --> 00:12:43,380 >> ეს არის ერთადერთი განსხვავება. 242 00:12:43,380 --> 00:12:47,200 და თუ გინდათ უფრო მეტი პრაქტიკა ეს უკავშირდება სიები, ჩასმა, 243 00:12:47,200 --> 00:12:49,900 ერთად წაშლის, ჩანართით შევიდა ასორტი სია, 244 00:12:49,900 --> 00:12:52,670 გთხოვთ study.cs50.net. 245 00:12:52,670 --> 00:12:54,870 აქ არის რამოდენიმე დიდი წვრთნები. 246 00:12:54,870 --> 00:12:55,870 მე მაღალ რეკომენდაციას აძლევს. 247 00:12:55,870 --> 00:12:59,210 მე მინდა, რომ ჩვენ გვქონდა დრო გადის მათ მაგრამ არსებობს უამრავი მონაცემთა სტრუქტურები 248 00:12:59,210 --> 00:13:01,530 მისაღებად მეშვეობით. 249 00:13:01,530 --> 00:13:02,650 >> OK, ასე რომ hash მაგიდები. 250 00:13:02,650 --> 00:13:07,070 ეს არის ერთ ერთი ყველაზე სასარგებლო bit თქვენი pset 251 00:13:07,070 --> 00:13:11,090 აქ იმიტომ, რომ თქვენ იქნება განხორციელების ერთ-ერთი, ან ცდილობენ. 252 00:13:11,090 --> 00:13:12,200 მე ნამდვილად მინდა hash მაგიდები. 253 00:13:12,200 --> 00:13:13,110 ისინი საკმაოდ გრილი. 254 00:13:13,110 --> 00:13:17,080 >> ასე რომ, ძირითადად, რა ხდება hash მაგიდასთან 255 00:13:17,080 --> 00:13:22,050 როდესაც ჩვენ ნამდვილად გვჭირდება სწრაფი ჩასმა, წაშლა, და საძიებელი. 256 00:13:22,050 --> 00:13:25,010 ეს ის საკითხებია, რომელიც ჩვენ პრიორიტეტულ in hash მაგიდასთან. 257 00:13:25,010 --> 00:13:29,500 მათ შეუძლიათ მიიღონ საკმაოდ დიდი, მაგრამ, როგორც ვნახავთ ერთად ლელო, 258 00:13:29,500 --> 00:13:33,040 არსებობს რამ, რომ გაცილებით დიდია. 259 00:13:33,040 --> 00:13:38,330 >> მაგრამ ძირითადად, ყველა hash მაგიდა არის ქეშირების ფუნქცია 260 00:13:38,330 --> 00:13:47,215 რომ გიჩვენებთ რომელიც bucket იმისათვის, რომ ყოველი თქვენი მონაცემები, თითოეული თქვენი ელემენტები. 261 00:13:47,215 --> 00:13:51,140 მარტივი გზა ვფიქრობ hash მაგიდა ის არის, რომ უბრალოდ თაიგულების რამ, 262 00:13:51,140 --> 00:13:51,770 არა? 263 00:13:51,770 --> 00:13:59,720 ასე რომ, როდესაც თქვენ დახარისხება რამ ისევე, როგორც პირველი წერილი მათი სახელი, 264 00:13:59,720 --> 00:14:01,820 ეს ერთგვარი მოსწონს hash მაგიდასთან. 265 00:14:01,820 --> 00:14:06,180 >> ასე რომ, თუ მე რომ ჯგუფი ბიჭები ჯგუფები ვინც სახელი იწყება 266 00:14:06,180 --> 00:14:11,670 ერთად აქ, ან ვინც ის დაბადების დღე არის იანვარი, თებერვალი, მარტი, 267 00:14:11,670 --> 00:14:15,220 რასაც, რომელიც ეფექტურად შექმნის hash მაგიდასთან. 268 00:14:15,220 --> 00:14:18,120 უბრალოდ შექმნაში თაიგულების, თქვენ დასალაგებლად ელემენტები 269 00:14:18,120 --> 00:14:19,520 ასე რომ თქვენ შეგიძლიათ მათ ადვილია. 270 00:14:19,520 --> 00:14:22,300 ასე რომ, ეს გზა, როცა საჭიროა იპოვონ თქვენ, 271 00:14:22,300 --> 00:14:24,680 მე არ უნდა ვეძებოთ მეშვეობით თითოეული თქვენი სახელები. 272 00:14:24,680 --> 00:14:29,490 მე შეიძლება იყოს, როგორიცაა, oh, მე ვიცი, რომ Danielle დაბადების დღე არის in-- 273 00:14:29,490 --> 00:14:30,240 აუდიტორია: --April. 274 00:14:30,240 --> 00:14:30,948 დინამიკები 1: აპრილი. 275 00:14:30,948 --> 00:14:33,120 ასე რომ შევხედოთ ჩემი აპრილი bucket, და ნებისმიერ წარმატებას, 276 00:14:33,120 --> 00:14:38,270 ის იქნება მხოლოდ ერთი არსებობს და დრო იყო მუდმივი, ამ თვალსაზრისით, 277 00:14:38,270 --> 00:14:41,230 ხოლო თუ მე უნდა გამოიყურებოდეს მეშვეობით მთელი bunch ადამიანი, 278 00:14:41,230 --> 00:14:43,090 ის აპირებს ბევრად უფრო. 279 00:14:43,090 --> 00:14:45,830 ასე hash მაგიდები მართლაც მხოლოდ თაიგულების. 280 00:14:45,830 --> 00:14:48,630 მარტივი გზა ვფიქრობ ისინი. 281 00:14:48,630 --> 00:14:52,930 >> ასე რომ, ძალიან მნიშვნელოვანი რამ hash მაგიდა ქეშირების ფუნქცია. 282 00:14:52,930 --> 00:14:58,140 ასე რამ მე მხოლოდ ისაუბრა, როგორიცაა თქვენი პირველი წერილი თქვენი სახელი 283 00:14:58,140 --> 00:15:01,450 ან თქვენი დაბადების თვე, ეს იდეები, რომ 284 00:15:01,450 --> 00:15:03,070 ნამდვილად შეესაბამება ქეშირების ფუნქცია. 285 00:15:03,070 --> 00:15:08,900 ეს უბრალოდ ისე, გადაწყდა, რომელიც bucket თქვენ ელემენტი გადადის, OK? 286 00:15:08,900 --> 00:15:14,850 ასე რომ, ამ pset, შეგიძლიათ ეძებოთ საკმაოდ ბევრი ნებისმიერი ქეშირების ფუნქცია გსურთ. 287 00:15:14,850 --> 00:15:16,030 >> არ უნდა იყოს თქვენი საკუთარი. 288 00:15:16,030 --> 00:15:21,140 არსებობს რამდენიმე მართლაც cool პირობა გარეთ არსებობს, რომ ყველა სახის გიჟები მათემატიკის. 289 00:15:21,140 --> 00:15:25,170 და თუ გვინდა, რომ თქვენი spellchecker სუპერ სწრაფი, 290 00:15:25,170 --> 00:15:27,620 მე აუცილებლად შეისწავლის იმ. 291 00:15:27,620 --> 00:15:32,390 >> მაგრამ არსებობს ასევე მარტივი პირობა, როგორიცაა compute 292 00:15:32,390 --> 00:15:39,010 თანხა სიტყვებით, როგორიცაა თითოეულ წერილს აქვს ნომერი. 293 00:15:39,010 --> 00:15:39,940 გამოთვლაც თანხა. 294 00:15:39,940 --> 00:15:42,230 რომელიც განსაზღვრავს bucket. 295 00:15:42,230 --> 00:15:45,430 მათ ასევე აქვს მარტივი პირობა, რომ , ისევე, როგორც ყველა აქ, 296 00:15:45,430 --> 00:15:47,050 ყველა B აქ. 297 00:15:47,050 --> 00:15:48,920 ერთ-ერთი მათგანია. 298 00:15:48,920 --> 00:15:55,770 >> ძირითადად, ეს მხოლოდ გიჩვენებთ რომელიც მასივი ინდექსი თქვენი ელემენტს უნდა წავიდეს. 299 00:15:55,770 --> 00:15:58,690 მხოლოდ გადამწყვეტი bucket-- ეს ყველაფერი hash ფუნქცია. 300 00:15:58,690 --> 00:16:04,180 ასე რომ, აქ ჩვენ გვაქვს მაგალითი, რომელიც მხოლოდ პირველი წერილი სიმებიანი 301 00:16:04,180 --> 00:16:05,900 რომ მე მხოლოდ საუბარი. 302 00:16:05,900 --> 00:16:11,900 >> ასე რომ თქვენ გაქვთ ზოგიერთი ქეშირების ეს მხოლოდ პირველი წერილი თქვენი string მინუს, 303 00:16:11,900 --> 00:16:16,090 რომელიც მოგცემთ ზოგიერთი რიცხვი 0 და 25. 304 00:16:16,090 --> 00:16:20,790 და რა გინდათ რომ გააკეთოთ, არის დარწმუნდით, რომ ეს 305 00:16:20,790 --> 00:16:24,110 ზომა თქვენი hash table-- რამდენი თაიგულების არსებობს. 306 00:16:24,110 --> 00:16:25,860 მრავალი ამ hash ფუნქციები, ისინი 307 00:16:25,860 --> 00:16:31,630 უნდა დაბრუნების ღირებულებები, რომლებიც შეიძლება იყოს ბევრად მაღლა რაოდენობის თაიგულების 308 00:16:31,630 --> 00:16:33,610 რომ თქვენ ნამდვილად აქვს თქვენი hash მაგიდასთან, 309 00:16:33,610 --> 00:16:37,240 ასე რომ თქვენ უნდა მიიღოს დარწმუნებული ვარ და თავდაცვის სამინისტროს მიერ იმ. 310 00:16:37,240 --> 00:16:42,190 წინააღმდეგ შემთხვევაში, ეს ხდება იმის თქმა, ოჰ, ეს უნდა იყოს bucket 5000 311 00:16:42,190 --> 00:16:46,040 მაგრამ თქვენ გაქვთ 30 თაიგულების თქვენი hash მაგიდასთან. 312 00:16:46,040 --> 00:16:49,360 და რა თქმა უნდა, ჩვენ ყველამ ვიცით, რომ ის, ვაპირებთ გამოიწვიოს ზოგიერთი გიჟები შეცდომები. 313 00:16:49,360 --> 00:16:52,870 ამიტომ დარწმუნდით, რომ თავდაცვის სამინისტროს მიერ ზომა თქვენი hash მაგიდასთან. 314 00:16:52,870 --> 00:16:58,430 315 00:16:58,430 --> 00:16:58,930 ზემოთ. 316 00:16:58,930 --> 00:17:00,506 ასე collisions. 317 00:17:00,506 --> 00:17:02,620 ყველას კარგი აქამდე? 318 00:17:02,620 --> 00:17:03,120 Mmhmm? 319 00:17:03,120 --> 00:17:05,900 >> აუდიტორია: რატომ დაბრუნდეს ასეთი მასიური მნიშვნელობა? 320 00:17:05,900 --> 00:17:09,210 >> დინამიკები 1: დამოკიდებულია ალგორითმი რომ თქვენი ქეშირების ფუნქცია იყენებს. 321 00:17:09,210 --> 00:17:12,270 ზოგიერთი მათგანი გააკეთებს გიჟები გამრავლება. 322 00:17:12,270 --> 00:17:16,270 და ეს ყველაფერი არის მიღების მაშინაც კი, განაწილების, 323 00:17:16,270 --> 00:17:18,490 ასე რომ მათ გარკვეული ნამდვილად გიჟები რამ ზოგჯერ. 324 00:17:18,490 --> 00:17:20,960 ეს ყველაფერი. 325 00:17:20,960 --> 00:17:22,140 არაფერი? 326 00:17:22,140 --> 00:17:22,829 OK. 327 00:17:22,829 --> 00:17:24,480 >> ასე collisions. 328 00:17:24,480 --> 00:17:29,270 ძირითადად, როგორც ვთქვი ადრე, საუკეთესო შემთხვევაში, 329 00:17:29,270 --> 00:17:32,040 ნებისმიერი bucket მე შეესწავლათ არის გვექნება ერთი რამ, 330 00:17:32,040 --> 00:17:34,160 ასე რომ არ უნდა შევხედოთ ყველა, არა? 331 00:17:34,160 --> 00:17:37,040 მე არც ვიცი, რომ ეს არის, ან ეს არა, და რომ ის, რაც ჩვენ ნამდვილად გვინდა. 332 00:17:37,040 --> 00:17:43,960 მაგრამ თუ ჩვენ გვაქვს ათეულ ათასობით მონაცემების რაოდენობა და ნაკლები, რომ ნომერი, 333 00:17:43,960 --> 00:17:48,700 თაიგულების, ჩვენ ვაპირებთ აქვს collisions, სადაც საბოლოოდ რაღაც 334 00:17:48,700 --> 00:17:54,210 აპირებს დასრულდება მდე bucket, რომ უკვე აქვს ელემენტს. 335 00:17:54,210 --> 00:17:57,390 >> ასე რომ, კითხვაზე, თუ რა ვქნათ ამ შემთხვევაში? 336 00:17:57,390 --> 00:17:58,480 რა ვქნათ? 337 00:17:58,480 --> 00:17:59,300 ჩვენ უკვე გვაქვს რაღაც არსებობს? 338 00:17:59,300 --> 00:18:00,060 ჩვენ უბრალოდ გადაყარეთ ის? 339 00:18:00,060 --> 00:18:00,700 >> პოსტები 340 00:18:00,700 --> 00:18:01,980 ჩვენ უნდა შევინარჩუნოთ ორივე მათგანი. 341 00:18:01,980 --> 00:18:06,400 ასე რომ, ისე, რომ ჩვენ როგორც წესი, რომ არის რა? 342 00:18:06,400 --> 00:18:08,400 რა არის მონაცემთა სტრუქტურა ჩვენ უბრალოდ ვისაუბრეთ? 343 00:18:08,400 --> 00:18:09,316 აუდიტორია: უკავშირდება სიაში. 344 00:18:09,316 --> 00:18:10,500 დინამიკები 1: უკავშირდება სიაში. 345 00:18:10,500 --> 00:18:16,640 ასე რომ, ახლა, ნაცვლად თითოეულ ამ თაიგულების მხოლოდ ერთი მქონე ელემენტის, 346 00:18:16,640 --> 00:18:24,020 ის აპირებს შეიცავდეს უკავშირდება სიაში ელემენტები, რომ იყო hashed შევიდა. 347 00:18:24,020 --> 00:18:27,588 OK, ამჯამად ყველას სახის მისაღებად რომ იდეა? 348 00:18:27,588 --> 00:18:30,546 იმის გამო, რომ ჩვენ ვერ აქვს მასივი იმიტომ, რომ ჩვენ არ ვიცით, რამდენი რამ 349 00:18:30,546 --> 00:18:31,730 ვაპირებთ, რომ იყოს იქ. 350 00:18:31,730 --> 00:18:36,540 უკავშირდება სია საშუალებას გვაძლევს მხოლოდ ერთი ზუსტი რაოდენობა, რომ 351 00:18:36,540 --> 00:18:38,465 არიან hashed შევიდა, რომ bucket, არა? 352 00:18:38,465 --> 00:18:42,260 353 00:18:42,260 --> 00:18:50,500 >> ასე რომ წრფივი probing არის ძირითადად ეს იდეა 354 00:18:50,500 --> 00:18:52,300 ეს არის ერთ ერთი გზა გაუმკლავდეთ შეჯახება. 355 00:18:52,300 --> 00:18:58,010 რა შეგიძლიათ გააკეთოთ, თუ ამ იმ შემთხვევაში, berry იყო hashed შევიდა 1 356 00:18:58,010 --> 00:19:01,130 და ჩვენ უკვე გვაქვს რაღაც არსებობს, უბრალოდ 357 00:19:01,130 --> 00:19:04,840 შენარჩუნებას აპირებს, სანამ თქვენთვის ცარიელი სლოტი. 358 00:19:04,840 --> 00:19:06,370 რომ ერთი გზა გაუმკლავდეს მას. 359 00:19:06,370 --> 00:19:09,020 სხვა გზა გაუმკლავდეს ეს არის ის, რაც ჩვენ მხოლოდ 360 00:19:09,020 --> 00:19:12,280 მოუწოდა უკავშირდება სია ეწოდება chaining. 361 00:19:12,280 --> 00:19:20,510 >> ასე რომ, ეს იდეა მუშაობს თუ თქვენი hash მაგიდასთან ფიქრობთ 362 00:19:20,510 --> 00:19:24,150 გაცილებით დიდია, ვიდრე თქვენი მონაცემები მითითებული, ან თუ 363 00:19:24,150 --> 00:19:28,870 შევეცდები და მინიმუმამდე chaining სანამ ეს აუცილებელია. 364 00:19:28,870 --> 00:19:34,050 ასე რომ ერთი რამ არის წრფივი საცდელი აშკარად ნიშნავს იმას, 365 00:19:34,050 --> 00:19:37,290 რომ თქვენი ქეშირების ფუნქცია არ არის საკმაოდ სასარგებლო 366 00:19:37,290 --> 00:19:42,200 იმიტომ, რომ თქვენ აპირებს დასრულდება up გამოყენებით თქვენი ქეშირების ფუნქცია, მიღების წერტილი, 367 00:19:42,200 --> 00:19:46,400 თქვენ Linear Probe ქვემოთ რამდენიმე ადგილას, რომ არ არის შესაძლებელი. 368 00:19:46,400 --> 00:19:49,670 მაგრამ ახლა, რა თქმა უნდა, არაფერი სხვა რომ მთავრდება იქ, 369 00:19:49,670 --> 00:19:52,050 თქვენ აპირებს უნდა ძიება კიდევ უფრო ქვემოთ. 370 00:19:52,050 --> 00:19:55,650 >> და არსებობს კიდევ ბევრი ძიების ხარჯზე, 371 00:19:55,650 --> 00:19:59,820 გადადის შესაყვანი ელემენტს თქვენი hash მაგიდასთან არის, არა? 372 00:19:59,820 --> 00:20:05,640 და ახლა, როდესაც თქვენ წავიდეთ და ცდილობენ და მოძებნონ berry ერთხელ თქვენ აპირებს hash ის, 373 00:20:05,640 --> 00:20:07,742 და ის აპირებს, რომ ვთქვათ, შეხედეთ, in bucket 1, 374 00:20:07,742 --> 00:20:09,700 და ეს არ იქნება in bucket 1, ასე რომ თქვენ 375 00:20:09,700 --> 00:20:11,970 აპირებთ უნდა კვეთენ დანარჩენ ამ. 376 00:20:11,970 --> 00:20:17,720 ასე რომ, ეს ზოგჯერ სასარგებლო, მაგრამ უმეტეს შემთხვევაში, 377 00:20:17,720 --> 00:20:22,660 ჩვენ ვაპირებთ, რომ ვთქვა, რომ chaining არის ის, რაც თქვენ გსურთ. 378 00:20:22,660 --> 00:20:25,520 >> ასე რომ, ჩვენ ვისაუბრეთ ამ ადრე. 379 00:20:25,520 --> 00:20:27,812 მე მივიღე ცოტა ადრე თავს. 380 00:20:27,812 --> 00:20:33,560 მაგრამ chaining ძირითადად, რომ თითოეულ bucket თქვენი hash მაგიდასთან 381 00:20:33,560 --> 00:20:36,120 მხოლოდ უკავშირდება სიაში. 382 00:20:36,120 --> 00:20:39,660 >> ასე რომ, ერთი გზა, ან სხვა ტექნიკური ისე, ვფიქრობ, რომ hash მაგიდა 383 00:20:39,660 --> 00:20:44,490 არის ის, რომ უბრალოდ მასივი დაკავშირებული სიები, რომელიც 384 00:20:44,490 --> 00:20:49,330 როდესაც თქვენ წერა თქვენი ლექსიკონი და თქვენ ცდილობთ, რათა ჩატვირთოს ის 385 00:20:49,330 --> 00:20:52,070 ვფიქრობ, რომ ეს, როგორც მასივი უკავშირდება სიები 386 00:20:52,070 --> 00:20:54,390 გახდის ბევრად უფრო ადვილია, თქვენ ინიციალიზაცია. 387 00:20:54,390 --> 00:20:57,680 >> აუდიტორია: ასე რომ hash მაგიდა გააჩნია წინასწარ ზომა, 388 00:20:57,680 --> 00:20:58,980 როგორც [INAUDIBLE] თაიგულების? 389 00:20:58,980 --> 00:20:59,220 >> დინამიკები 1: Right. 390 00:20:59,220 --> 00:21:01,655 ასე რომ მას აქვს მითითებული რაოდენობის თაიგულების, რომ თქვენ determine-- 391 00:21:01,655 --> 00:21:03,530 რომელიც თქვენ ბიჭები უნდა შეგიძლიათ ითამაშოთ ერთად. 392 00:21:03,530 --> 00:21:05,269 ეს შეიძლება იყოს საკმაოდ cool ვნახოთ, რა მოხდება 393 00:21:05,269 --> 00:21:06,810 როგორც თქვენ შეცვალოთ თქვენი რაოდენობის თაიგულების. 394 00:21:06,810 --> 00:21:09,410 395 00:21:09,410 --> 00:21:11,510 მაგრამ ჰო, მას აქვს მითითებული რაოდენობის თაიგულების. 396 00:21:11,510 --> 00:21:15,360 რაც საშუალებას გაძლევთ ჯდება, ბევრი ელემენტები, როგორც თქვენ უნდა 397 00:21:15,360 --> 00:21:19,350 ეს ცალკე chaining, სადაც თქვენ არ უკავშირდება სიები თითოეულ bucket. 398 00:21:19,350 --> 00:21:22,850 ეს ნიშნავს, რომ თქვენი hash მაგიდა იქნება ზუსტად ზომა 399 00:21:22,850 --> 00:21:25,440 რომ თქვენ უნდა, რომ იყოს, არა? 400 00:21:25,440 --> 00:21:27,358 რომ მთელი წერტილი უკავშირდება სიები. 401 00:21:27,358 --> 00:21:30,850 402 00:21:30,850 --> 00:21:32,480 ზემოთ. 403 00:21:32,480 --> 00:21:38,780 >> ასე რომ, ყველას OK არსებობს? 404 00:21:38,780 --> 00:21:39,801 ყველა უფლება. 405 00:21:39,801 --> 00:21:40,300 Ah. 406 00:21:40,300 --> 00:21:41,860 რა მოხდა? 407 00:21:41,860 --> 00:21:42,960 ნამდვილად არის. 408 00:21:42,960 --> 00:21:45,250 ვფიქრობ, ვიღაცამ მკვლელობის ჩემთვის. 409 00:21:45,250 --> 00:21:52,060 >> OK, ჩვენ ვაპირებთ წასვლას ლელო, რომლებიც ცოტა შეშლილი. 410 00:21:52,060 --> 00:21:53,140 მომწონს hash მაგიდები. 411 00:21:53,140 --> 00:21:54,460 ვფიქრობ, ისინი მართლაც მაგარი. 412 00:21:54,460 --> 00:21:56,710 ცდილობს მაგარია, ძალიან. 413 00:21:56,710 --> 00:21:59,590 >> ასე რომ ვინმეს გახსოვთ რა ლელო? 414 00:21:59,590 --> 00:22:01,740 თქვენ უნდა დაასრულოთ მოკლედ ლექცია? 415 00:22:01,740 --> 00:22:04,570 416 00:22:04,570 --> 00:22:06,377 გახსოვთ, როგორი როგორ მუშაობს? 417 00:22:06,377 --> 00:22:08,460 აუდიტორია: მე უბრალოდ nodding რომ ჩვენ არ წასვლა მას. 418 00:22:08,460 --> 00:22:09,626 დინამიკები 1: ჩვენ არ წასვლა მას. 419 00:22:09,626 --> 00:22:13,100 OK, ჩვენ ნამდვილად აპირებს მისვლას მეტი ახლა არის ის, რაც ჩვენ დაყრდნობით. 420 00:22:13,100 --> 00:22:14,860 >> აუდიტორია: ეს დიდი კითხვის ხე. 421 00:22:14,860 --> 00:22:15,280 >> დინამიკები 1: ჰო. 422 00:22:15,280 --> 00:22:16,196 ეს კითხვის ხე. 423 00:22:16,196 --> 00:22:16,960 გასაოცარია. 424 00:22:16,960 --> 00:22:23,610 ასე რომ ერთი რამ შეამჩნია აქ არის ის, რომ ჩვენ ეძებს ინდივიდუალური გმირები 425 00:22:23,610 --> 00:22:24,480 აქ, არა? 426 00:22:24,480 --> 00:22:29,710 >> ასე რომ, სანამ ჩვენი ქეშირების ფუნქცია, ჩვენ შევხედავთ სიტყვა, როგორც მთელი, 427 00:22:29,710 --> 00:22:32,270 და ახლა ჩვენ ვეძებთ უფრო at გმირები, არა? 428 00:22:32,270 --> 00:22:38,380 ამიტომ, ჩვენ უნდა Maxwell აქ და მენდელი. 429 00:22:38,380 --> 00:22:47,840 ასე რომ, ძირითადად შეეცდება გზა ვფიქრობ, ეს არის ის, რომ ყველა დონეზე აქ 430 00:22:47,840 --> 00:22:49,000 მასივი წერილები. 431 00:22:49,000 --> 00:22:53,310 432 00:22:53,310 --> 00:22:55,790 ასე რომ, ეს არის თქვენი root node აქ, არა? 433 00:22:55,790 --> 00:23:01,980 ეს აქვს ყველა გმირები ანბანი დაწყების ყოველ სიტყვას. 434 00:23:01,980 --> 00:23:06,480 >> და რა გინდათ რომ გააკეთოთ, არის ვთქვათ, OK, ჩვენ გვაქვს გარკვეული M სიტყვა. 435 00:23:06,480 --> 00:23:10,590 ჩვენ ვაპირებთ, რომ ვეძებოთ Maxwell, ასე ჩვენ წასვლა M. And M რაოდენობა მთელი 436 00:23:10,590 --> 00:23:14,800 სხვა რიგი, სადაც ყველა სიტყვა, რადგან იქ 437 00:23:14,800 --> 00:23:17,044 სიტყვა, რომელიც აქვს მეორე წერილი, 438 00:23:17,044 --> 00:23:19,460 რადგან არსებობს სიტყვა, რომელიც აქვს B მეორე წერილი, 439 00:23:19,460 --> 00:23:24,630 ეს მაჩვენებელი აპირებს ზოგიერთი შემდეგი მასივი. 440 00:23:24,630 --> 00:23:29,290 >> იქ, ალბათ, არ არის სიტყვა, რომელიც MP რაღაც, 441 00:23:29,290 --> 00:23:32,980 ისე P პოზიცია მასივი, რომ ის უბრალოდ იყოს NULL. 442 00:23:32,980 --> 00:23:38,840 რომ ვთქვა, OK, არ არსებობს სიტყვა რომ M მოჰყვა P, OK? 443 00:23:38,840 --> 00:23:43,100 ასე რომ, თუ ჩვენ ამაზე ვფიქრობთ, თითოეული ერთ-ერთი ასეთი მცირე რამ 444 00:23:43,100 --> 00:23:47,990 ფაქტიურად ერთი ასეთი დიდი მასივების ეხლა მეშვეობით ზ 445 00:23:47,990 --> 00:23:55,064 ასე რომ, რა შეიძლება იყოს, ერთი რამ ეს არის ერთგვარი ხარვეზად ლელო? 446 00:23:55,064 --> 00:23:56,500 >> აუდიტორია: მეხსიერების დიდ ნაწილს. 447 00:23:56,500 --> 00:23:59,940 >> დინამიკები 1: ეს ტონა მეხსიერება, არა? 448 00:23:59,940 --> 00:24:08,750 თითოეული ეს ბლოკები აქ წარმოადგენს 26 ფართები, 26 ელემენტს მასივი. 449 00:24:08,750 --> 00:24:13,680 ასე ცდილობს მიიღოს წარმოუდგენლად ფართი მძიმე. 450 00:24:13,680 --> 00:24:17,100 >> მაგრამ ისინი ძალიან სწრაფად. 451 00:24:17,100 --> 00:24:22,540 ასე ძალიან სწრაფი, მაგრამ ნამდვილად ფართი არაეფექტური. 452 00:24:22,540 --> 00:24:24,810 სახის უნდა გაერკვნენ რომელი ერთი გსურთ. 453 00:24:24,810 --> 00:24:29,470 ეს არის მართლაც cool თქვენი pset, მაგრამ ისინი დასჭირდეს ბევრი მეხსიერება, 454 00:24:29,470 --> 00:24:30,290 ასე რომ თქვენ ვაჭრობის off. 455 00:24:30,290 --> 00:24:31,480 ჰო? 456 00:24:31,480 --> 00:24:34,300 >> აუდიტორია: თუ ეს შესაძლებელია შეიქმნა ცდილობენ და მაშინ 457 00:24:34,300 --> 00:24:37,967 ერთხელ თქვენ ყველა მონაცემები, რომ თქვენ need-- 458 00:24:37,967 --> 00:24:39,550 მე არ ვიცი, თუ ეს აზრი. 459 00:24:39,550 --> 00:24:42,200 მე მოშორების ყველა NULL პერსონაჟი, მაგრამ შემდეგ 460 00:24:42,200 --> 00:24:42,910 თქვენ ვერ შეძლებს ინდექსი them-- 461 00:24:42,910 --> 00:24:43,275 >> დინამიკები 1: თქვენ ჯერ კიდევ გვჭირდება. 462 00:24:43,275 --> 00:24:44,854 >> აუდიტორია: - იგივე გზა ყოველ ჯერზე. 463 00:24:44,854 --> 00:24:45,520 დინამიკები 1: ჰო. 464 00:24:45,520 --> 00:24:50,460 თქვენ უნდა NULL გმირები მისცეს თქვენ იცით, თუ იქ არ არის სიტყვა არსებობს. 465 00:24:50,460 --> 00:24:52,040 Ben გქონდათ რაიმე გინდათ? 466 00:24:52,040 --> 00:24:52,540 OK. 467 00:24:52,540 --> 00:24:54,581 ყველა უფლება, ამიტომ ჩვენ ვაპირებთ წასვლა ცოტა მეტი 468 00:24:54,581 --> 00:24:58,920 ტექნიკურ დეტალურად უკან ცდილობენ და მუშაობა მეშვეობით მაგალითი. 469 00:24:58,920 --> 00:25:01,490 >> OK, ასე რომ ეს არის იგივე. 470 00:25:01,490 --> 00:25:06,290 მაშინ, როდესაც დაკავშირებული სიაში, ჩვენი მთავარი სახის of-- რა სიტყვა მინდა? - 471 00:25:06,290 --> 00:25:08,350 როგორიცაა კორპუსში იყო კვანძი. 472 00:25:08,350 --> 00:25:12,280 ლელო, ჩვენ ასევე გვაქვს კვანძი, მაგრამ ეს განისაზღვრება სხვაგვარად. 473 00:25:12,280 --> 00:25:17,000 >> ასე, რომ ჩვენ გვაქვს bool, წარმოადგენს თუ არა სიტყვა, ფაქტობრივად, 474 00:25:17,000 --> 00:25:23,530 არსებობს ამ ადგილას და შემდეგ ჩვენ გვაქვს გარკვეული მასივი აქ უფრო სწორად, 475 00:25:23,530 --> 00:25:27,840 ეს არის მომცეთ მასივი 27 სიმბოლოს. 476 00:25:27,840 --> 00:25:33,339 და ეს არის, ამ შემთხვევაში, ამ 27-- დარწმუნებული ვარ ყველა თქვენ, როგორიცაა, დაველოდოთ, 477 00:25:33,339 --> 00:25:34,880 არსებობს 26 ასო ანბანი. 478 00:25:34,880 --> 00:25:36,010 რატომ ჩვენ 27? 479 00:25:36,010 --> 00:25:37,870 >> ასე რომ დამოკიდებულია ისე თქვენ განხორციელების, 480 00:25:37,870 --> 00:25:43,240 ეს არის საწყისი pset, რომ დაშვებულია apostrophes. 481 00:25:43,240 --> 00:25:46,010 ამიტომაც დამატებით ერთი. 482 00:25:46,010 --> 00:25:50,500 თქვენ ასევე უნდა ზოგიერთი შემთხვევაში null terminator 483 00:25:50,500 --> 00:25:53,230 შედის როგორც ერთ-ერთი სიმბოლო, რომ ეს დასაშვებია, 484 00:25:53,230 --> 00:25:56,120 და ეს, როგორ შეამოწმეთ თუ ეს ბოლოს სიტყვა. 485 00:25:56,120 --> 00:26:01,340 თუ თქვენ დაინტერესებული, შეამოწმეთ Kevin ს ვიდეო study.cs50, 486 00:26:01,340 --> 00:26:04,790 ისევე როგორც ვიკიპედია კარგი რესურსები არსებობს. 487 00:26:04,790 --> 00:26:09,000 >> მაგრამ ჩვენ ვაპირებთ გავლა მხოლოდ სახის როგორ შეიძლება იმუშაოს მეშვეობით ცდილობენ 488 00:26:09,000 --> 00:26:11,010 თუ თქვენ მოცემული ერთი. 489 00:26:11,010 --> 00:26:16,230 ასე რომ, ჩვენ გვაქვს სუპერ მარტივია, რომ აქვს სიტყვა "წინ" და "Zoom" მათ. 490 00:26:16,230 --> 00:26:18,920 და, როგორც ვხედავთ, აქ, ამ პატარა სივრცეში აქ 491 00:26:18,920 --> 00:26:22,560 წარმოადგენს ჩვენი bool, ამბობს, დიახ, ეს არის სიტყვა. 492 00:26:22,560 --> 00:26:27,060 და შემდეგ ეს ყველაფერი ჩვენი კოლექტორები პერსონაჟების, არა? 493 00:26:27,060 --> 00:26:33,480 >> ამიტომ, ჩვენ ვაპირებთ გავლა გამოვლენა "წინ" ამ ცდილობენ. 494 00:26:33,480 --> 00:26:38,340 ასე იწყება ზედა, არა? 495 00:26:38,340 --> 00:26:46,290 და ვიცით, რომ ბ შეესაბამება მეორე ინდექსი, მეორე ელემენტი 496 00:26:46,290 --> 00:26:47,840 ამ მასივი, რადგან a და b. 497 00:26:47,840 --> 00:26:51,340 ასე რომ დაახლოებით მეორე. 498 00:26:51,340 --> 00:26:58,820 >> ის ამბობს, OK, cool, დაიცვას, რომ შევიდა შემდეგი მასივი, რადგან, თუ ჩვენ გვახსოვს, 499 00:26:58,820 --> 00:27:02,160 ეს არ არის, რომ თითოეული ეს რეალურად შეიცავს ელემენტს. 500 00:27:02,160 --> 00:27:07,110 თითოეული ეს კოლექტორები შეიცავს მაჩვენებელი, არა? 501 00:27:07,110 --> 00:27:10,030 ეს არის მნიშვნელოვანი განსხვავება, რათა. 502 00:27:10,030 --> 00:27:13,450 >> მე ვიცი, რომ ეს ხდება be-- ცდილობს ნამდვილად მძიმე მისაღებად პირველად, 503 00:27:13,450 --> 00:27:15,241 ისე კი, თუ ეს არის მეორე ან მესამე 504 00:27:15,241 --> 00:27:18,370 და ეს ჯერ კიდევ სახის მოჩვენებითი რთული, 505 00:27:18,370 --> 00:27:21,199 მე გპირდებით, რომ, თუ მიდიხარ watch მოკლე ერთხელ ხვალ, 506 00:27:21,199 --> 00:27:22,740 ეს ალბათ გაცილებით მეტი გრძნობა. 507 00:27:22,740 --> 00:27:23,890 იგი იღებს ბევრი დაიჯესტს. 508 00:27:23,890 --> 00:27:27,800 მე მაინც ზოგჯერ ვარ როგორიცაა, დაველოდოთ, რა არის შანსი? 509 00:27:27,800 --> 00:27:29,080 როგორ გამოვიყენო ეს? 510 00:27:29,080 --> 00:27:33,880 >> ასე რომ, ჩვენ ბ ამ შემთხვევაში, რომელიც არის ჩვენი მეორე ინდექსი. 511 00:27:33,880 --> 00:27:40,240 თუ ჩვენ გვექნება, ვთქვათ, გ ან d ან რაიმე სხვა წერილი, 512 00:27:40,240 --> 00:27:45,810 ჩვენ უნდა განვსაზღვრავთ, რომ თავში ინდექსი ჩვენი მასივი, რომ შეესაბამება. 513 00:27:45,810 --> 00:27:56,930 ასე რომ, ჩვენ უნდა მიიღოს, როგორიცაა rchar და ჩვენ უბრალოდ სხვაობა off რუკაზე იგი 0-დან 25. 514 00:27:56,930 --> 00:27:58,728 ყველას კარგი თუ როგორ ჩვენ რუკა ჩვენი გმირები? 515 00:27:58,728 --> 00:28:00,440 OK. 516 00:28:00,440 --> 00:28:05,980 >> ამიტომ, ჩვენ წასვლა მეორე და ჩვენ , რომ, დიახ, ეს არ არის NULL. 517 00:28:05,980 --> 00:28:07,780 ჩვენ შეგვიძლია გადაადგილება ამ შემდეგი მასივი. 518 00:28:07,780 --> 00:28:12,300 ასე რომ, ჩვენ წასვლა ამ შემდეგი მასივი აქ. 519 00:28:12,300 --> 00:28:15,500 >> და ვამბობთ, OK, ახლა ჩვენ უნდა დაინახოს, თუ არის აქ. 520 00:28:15,500 --> 00:28:18,590 არის null ან აკეთებს რეალურად წინსვლა? 521 00:28:18,590 --> 00:28:21,880 ასე რომ, რეალურად მოძრაობს ველით ამ მასივი. 522 00:28:21,880 --> 00:28:24,570 და ვამბობთ, OK, t არის ჩვენი ბოლო წერილში. 523 00:28:24,570 --> 00:28:27,580 ასე რომ, ჩვენ წასვლა t ინდექსი. 524 00:28:27,580 --> 00:28:30,120 და შემდეგ ჩვენ წინსვლა იმიტომ, რომ იქ კიდევ ერთი. 525 00:28:30,120 --> 00:28:38,340 და ეს ერთი ამბობს, ძირითადად, რომ, დიახ, ის ამბობს, რომ არ არსებობს სიტყვა აქ 526 00:28:38,340 --> 00:28:41,750 რომ თუ ამ გზა, თქვენ არ ჩამოვიდა 527 00:28:41,750 --> 00:28:43,210 ერთი სიტყვა, რომელიც ჩვენ ვიცით, რომ "წინ". 528 00:28:43,210 --> 00:28:43,800 დიახ? 529 00:28:43,800 --> 00:28:46,770 >> აუდიტორია: ეს სტანდარტი აქვს, რომ ინდექსი 0 და შემდეგ აქვს სახის ანგარიშით 1 530 00:28:46,770 --> 00:28:47,660 ან აქვს ბოლოს? 531 00:28:47,660 --> 00:28:48,243 >> დინამიკები 1: No. 532 00:28:48,243 --> 00:28:55,360 ასე რომ, თუ ჩვენ ვიხსენებთ ჩვენი დეკლარაციის აქ, bool, 533 00:28:55,360 --> 00:28:59,490 ასე რომ, საკუთარი ელემენტს თქვენს კვანძი. 534 00:28:59,490 --> 00:29:03,331 ასე რომ, ეს არ არის ნაწილი მასივი. 535 00:29:03,331 --> 00:29:03,830 ზემოთ. 536 00:29:03,830 --> 00:29:08,370 ასე რომ, როდესაც ჩვენ დასრულდება ჩვენი სიტყვა და ჩვენ ამ მასივი, რაც ჩვენ გვინდა, რომ გავაკეთოთ 537 00:29:08,370 --> 00:29:12,807 არის ამის შემოწმება ეს სიტყვა. 538 00:29:12,807 --> 00:29:14,390 და ამ შემთხვევაში, ეს დაბრუნდნენ დიახ. 539 00:29:14,390 --> 00:29:17,220 540 00:29:17,220 --> 00:29:24,090 >> ასე რომ შენიშვნა, ჩვენ ვიცით, რომ "ზოოპარკი" - ჩვენ ვიცით, როგორც ადამიანები, რომ "ზოოპარკი" არის სიტყვა, 541 00:29:24,090 --> 00:29:24,820 არა? 542 00:29:24,820 --> 00:29:28,990 მაგრამ ცდილობენ აქ იქნებოდა ამბობენ, რომ არა, ეს ასე არ არის. 543 00:29:28,990 --> 00:29:33,980 და ეს იქნებოდა ვთქვა, რომ რადგან ჩვენ არ ინიშნებიან, როგორც სიტყვა აქ. 544 00:29:33,980 --> 00:29:40,440 მიუხედავად იმისა, რომ ჩვენ შეგვიძლია დაფარავს მეშვეობით ამ მასივი, 545 00:29:40,440 --> 00:29:43,890 ეს ლელო ვიტყოდი, რომ, არა, ზოოპარკში არ არის თქვენს ლექსიკონი 546 00:29:43,890 --> 00:29:47,070 იმიტომ, რომ ჩვენ არ გვაქვს დანიშნული, როგორც ასეთი. 547 00:29:47,070 --> 00:29:52,870 >> ასე რომ, ერთი გზა ამის that-- ოჰ, უკაცრავად, ეს ერთი. 548 00:29:52,870 --> 00:29:59,450 ასე რომ, ამ შემთხვევაში, "ზოოპარკი" არ არის სიტყვა, მაგრამ ეს არის ჩვენი შანსი. 549 00:29:59,450 --> 00:30:05,690 მაგრამ ამ ერთი, ამბობენ, ჩვენ გვინდა, რომ ეს დანერგვა სიტყვა "აბანო," რა ხდება 550 00:30:05,690 --> 00:30:08,260 არის მივყვებით through-- b, a, ტ. 551 00:30:08,260 --> 00:30:11,820 ჩვენ ამ მასივი, ჩვენ წასვლა ძიება სთ. 552 00:30:11,820 --> 00:30:15,220 >> ამ შემთხვევაში, როცა ჩვენ შევხედოთ მაჩვენებელი h, 553 00:30:15,220 --> 00:30:17,890 ეს მიუთითებს NULL, OK? 554 00:30:17,890 --> 00:30:20,780 ასე რომ, თუ ეს პირდაპირ მიუთითებს სხვა მასივი, 555 00:30:20,780 --> 00:30:25,000 თქვენ ვივარაუდოთ, რომ ყველა მითითებას ამ მასივი მიუთითებს null. 556 00:30:25,000 --> 00:30:28,270 ასე რომ, ამ შემთხვევაში, h მიუთითებს to null ასე რომ, ჩვენ არაფრის გაკეთება არ შეგვიძლია, 557 00:30:28,270 --> 00:30:31,540 ასე რომ, ეს დაბრუნდება ყალბი, "აბანო" არ არის აქ. 558 00:30:31,540 --> 00:30:34,102 559 00:30:34,102 --> 00:30:35,810 ასე რომ, ახლა ჩვენ, ფაქტობრივად, შევჩერდები 560 00:30:35,810 --> 00:30:39,790 როგორ იქნებოდა რეალურად ამბობენ რომ "ზოოპარკი" არის ჩვენი შანსი. 561 00:30:39,790 --> 00:30:42,920 როგორ უნდა ჩადოთ "ზოოპარკი" ჩვენი შანსი? 562 00:30:42,920 --> 00:30:47,810 ასე რომ, იმ გზით, რომ ჩვენ დავიწყეთ ჩვენი უკავშირდება სია, ჩვენ იწყება root. 563 00:30:47,810 --> 00:30:50,600 როდესაც ეჭვი, იწყება ფესვი ეს ყველაფერი. 564 00:30:50,600 --> 00:30:53,330 >> და ჩვენ ვიტყვით, OK, z. 565 00:30:53,330 --> 00:30:55,650 z არსებობს, და ეს ასეა. 566 00:30:55,650 --> 00:30:58,370 ასე რომ, თქვენ მოძრავი თქვენი შემდეგი მასივი, OK? 567 00:30:58,370 --> 00:31:01,482 და შემდეგ მომდევნო ერთი, ჩვენ ვამბობთ, OK, არ o არსებობს? 568 00:31:01,482 --> 00:31:03,000 ეს ასეა. 569 00:31:03,000 --> 00:31:04,330 ეს კიდევ ერთხელ. 570 00:31:04,330 --> 00:31:08,670 >> და ასე შემდეგ, ჩვენი მომავალი, ჩვენ ვთქვით, OK, "ზოოპარკი" უკვე არსებობს. 571 00:31:08,670 --> 00:31:12,440 ყველა ჩვენ უნდა გავაკეთოთ არის მითითებული ამ თანასწორი მართალია, რომ სიტყვა არსებობს. 572 00:31:12,440 --> 00:31:15,260 თითქოს მოყვება ყველაფერი მდე სანამ, რომ წერტილი, 573 00:31:15,260 --> 00:31:17,030 ეს სიტყვა, ასე რომ მხოლოდ იგი ტოლია ასეთი. 574 00:31:17,030 --> 00:31:17,530 დიახ? 575 00:31:17,530 --> 00:31:22,550 >> აუდიტორია: ასე შემდეგ აკეთებს, რომ ნიშნავს, რომ "ba" არის სიტყვა, ასევე? 576 00:31:22,550 --> 00:31:24,120 >> დინამიკები 1: No. 577 00:31:24,120 --> 00:31:28,870 ასე რომ, ამ შემთხვევაში, "ba" ჩვენ მივიღებთ აქ, ჩვენ ვთქვათ, არის ის სიტყვა, 578 00:31:28,870 --> 00:31:31,590 და ეს მაინც არ იქნება. 579 00:31:31,590 --> 00:31:32,822 OK? 580 00:31:32,822 --> 00:31:33,740 Mmhmm? 581 00:31:33,740 --> 00:31:36,360 >> აუდიტორია: ასე რომ, კიდევ არის ის სიტყვა და ამბობენ დიახ, მაშინ ეს 582 00:31:36,360 --> 00:31:38,380 შეიცავს წასვლა მ? 583 00:31:38,380 --> 00:31:42,260 >> დინამიკები 1: ასე რომ, ეს უნდა გააკეთოს with-- თქვენ ჩატვირთვის ეს. 584 00:31:42,260 --> 00:31:43,640 ამბობენ, რომ "ზოოპარკი" არის სიტყვა. 585 00:31:43,640 --> 00:31:47,020 როდესაც თქვენ წავიდეთ შეამოწმოთ როგორიცაა, ვთქვათ, მინდა ვთქვა, 586 00:31:47,020 --> 00:31:49,400 ნიშნავს "ზოოპარკი" არსებობს ამ ლექსიკონი? 587 00:31:49,400 --> 00:31:54,200 თქვენ მხოლოდ უნდა მოძებნოთ "ზოოპარკი" და შემდეგ შეამოწმოს, რომ ეს სიტყვა. 588 00:31:54,200 --> 00:31:57,291 თქვენ არასდროს გადავიდეს გადის m იმიტომ, რომ ის არ 589 00:31:57,291 --> 00:31:58,290 ის, რაც თქვენ ეძებთ. 590 00:31:58,290 --> 00:32:02,690 591 00:32:02,690 --> 00:32:08,070 >> ასე რომ, თუ ჩვენ რეალურად სურდა რჩეულებში "აბანოს" ამ ლელო, 592 00:32:08,070 --> 00:32:11,390 ჩვენ ყველაფერს გააკეთებს იგივე როგორც ჩვენ გავაკეთეთ "ზოოპარკი" 593 00:32:11,390 --> 00:32:15,380 გარდა ჩვენ ვხედავთ, რომ როდესაც ჩვენ ცდილობენ და მიიღეთ h, ის არ არსებობს. 594 00:32:15,380 --> 00:32:20,090 ასე რომ თქვენ შეგიძლიათ წარმოიდგინოთ, რომ ეს ცდილობს დამატება ახალი კვანძის უკავშირდება სია, 595 00:32:20,090 --> 00:32:27,210 ასე რომ, ჩვენ უნდა დაამატოთ კიდევ ერთი ერთ-ერთი ასეთი მასივები, როგორიცაა ასე. 596 00:32:27,210 --> 00:32:35,670 და მერე რას ვაკეთებთ არის ჩვენ მხოლოდ მითითებული h ელემენტის ამ მასივი მიუთითებს ამ. 597 00:32:35,670 --> 00:32:39,430 >> და მერე რა გვინდა აქ? 598 00:32:39,430 --> 00:32:43,110 სანიშნეს ეს უდრის მართალია იმიტომ, რომ ეს სიტყვა. 599 00:32:43,110 --> 00:32:46,350 600 00:32:46,350 --> 00:32:48,150 ზემოთ. 601 00:32:48,150 --> 00:32:48,700 მე ვიცი. 602 00:32:48,700 --> 00:32:51,170 ცდილობს არ არის ყველაზე საინტერესო. 603 00:32:51,170 --> 00:32:54,250 მერწმუნეთ, მე ვიცი. 604 00:32:54,250 --> 00:32:58,040 >> ასე რომ, ერთი რამ უნდა გააცნობიეროს ერთად ლელო, მე ვუთხარი, რომ ისინი ძალიან ეფექტური. 605 00:32:58,040 --> 00:33:00,080 ასე რომ, ჩვენ ვხედავთ, რომ ისინი დასჭირდეს ტონა სივრცეში. 606 00:33:00,080 --> 00:33:01,370 ისინი ერთგვარი გაუგებარია. 607 00:33:01,370 --> 00:33:03,367 ასე რომ, ჩვენ ოდესმე გამოიყენოს ეს? 608 00:33:03,367 --> 00:33:05,450 ჩვენ ვიყენებთ ეს იმიტომ, რომ ისინი ძალიან ეფექტური. 609 00:33:05,450 --> 00:33:08,130 >> ასე რომ, თუ თქვენ ოდესმე ეძებს სიტყვა, თქვენ მხოლოდ 610 00:33:08,130 --> 00:33:10,450 ესაზღვრება სიგრძეზე სიტყვა. 611 00:33:10,450 --> 00:33:15,210 ასე რომ, თუ თქვენ ვეძებთ სიტყვა, რომელიც სიგრძით ხუთი, 612 00:33:15,210 --> 00:33:20,940 თქვენ მხოლოდ ოდესმე აპირებს უნდა რათა უმეტეს ხუთი შედარება, OK? 613 00:33:20,940 --> 00:33:25,780 ასე რომ ხდის ძირითადად მუდმივი. 614 00:33:25,780 --> 00:33:29,150 როგორიცაა ჩანართი და საძიებელი ძირითადად მუდმივი დრო. 615 00:33:29,150 --> 00:33:33,750 >> ასე რომ, თუ თქვენ ოდესმე მისაღებად რაღაც მუდმივი, 616 00:33:33,750 --> 00:33:35,150 რომ, როგორც კარგი, როგორც იგი იღებს. 617 00:33:35,150 --> 00:33:37,990 თქვენ არ შეუძლია უკეთ, ვიდრე მუდმივი დრო ეს ყველაფერი. 618 00:33:37,990 --> 00:33:43,150 ასე რომ, ერთ-ერთი დიდი პლიუსი ცდილობს. 619 00:33:43,150 --> 00:33:46,780 >> მაგრამ ეს არის დიდი ადგილი. 620 00:33:46,780 --> 00:33:50,380 ასე, რომ თქვენ ერთგვარი უნდა გადაწყვიტოს რა უფრო მნიშვნელოვანია თქვენთვის. 621 00:33:50,380 --> 00:33:54,700 და დღევანდელი კომპიუტერები, სივრცე, რომელიც ლელო შეიძლება დასჭირდეს 622 00:33:54,700 --> 00:33:57,740 იქნებ არ იმოქმედებს თქვენ რომ ბევრი რამ, მაგრამ იქნებ 623 00:33:57,740 --> 00:34:01,350 თქვენ საქმე რაღაც რომელსაც აქვს ბევრად, ბევრად მეტი რამ, 624 00:34:01,350 --> 00:34:02,810 და ვცდილობთ მხოლოდ მიზანშეწონილი არ არის. 625 00:34:02,810 --> 00:34:03,000 დიახ? 626 00:34:03,000 --> 00:34:05,610 >> აუდიტორია: დაველოდოთ, ასე რომ თქვენ უნდა 26 წერილები ყველა ერთი? 627 00:34:05,610 --> 00:34:07,440 >> დინამიკები 1: Mmhmm. 628 00:34:07,440 --> 00:34:08,570 ჰო, თქვენ გაქვთ 26. 629 00:34:08,570 --> 00:34:16,984 თქვენ გაქვთ გარკვეული არის სიტყვა marker და შემდეგ თქვენ გაქვთ 26 მითითებას ყველა ერთი. 630 00:34:16,984 --> 00:34:17,775 და ისინი point-- 631 00:34:17,775 --> 00:34:20,280 >> აუდიტორია: და ყოველ 26 ისინი ყოველ 26? 632 00:34:20,280 --> 00:34:21,500 >> დინამიკები 1: დიახ. 633 00:34:21,500 --> 00:34:27,460 და ამიტომაც, როგორც თქვენ შეგიძლიათ ვხედავ, იგი აფართოებს საკმაოდ სწრაფად. 634 00:34:27,460 --> 00:34:28,130 ყველა უფლება. 635 00:34:28,130 --> 00:34:32,524 ამიტომ, ჩვენ ვაპირებთ შეღწევას ხეები, რომლებიც მე ვგრძნობ, როგორც უფრო ადვილია და ალბათ 636 00:34:32,524 --> 00:34:36,150 იყოს ლამაზი პატარა reprieve საწყისი ლელო არსებობს. 637 00:34:36,150 --> 00:34:39,620 ასე რომ, იმედია, ყველაზე მეტად თქვენ მინახავს ხე ადრე. 638 00:34:39,620 --> 00:34:41,820 არ მინდა საკმაოდ ვინც გარეთ, რომელიც მე 639 00:34:41,820 --> 00:34:44,340 არ ვიცი, თუ ვინმეს წავიდა გარეთ ცოტა ხნის წინ. 640 00:34:44,340 --> 00:34:49,230 მივედი ვაშლის კრეფა ამ კვირის ბოლოს, და რა ჩემი gosh, ძალიან ლამაზი იყო. 641 00:34:49,230 --> 00:34:52,250 მე არ ვიცი, ფოთლები შეიძლება გამოიყურებოდეს, რომ საკმაოდ. 642 00:34:52,250 --> 00:34:53,610 >> ასე რომ, ეს უბრალოდ ხე, არა? 643 00:34:53,610 --> 00:34:56,790 სულ რაღაც კვანძის და იგი მიუთითებს bunch სხვა კვანძების. 644 00:34:56,790 --> 00:34:59,570 როგორც ხედავთ, ეს არის სახის განმეორებადი თემა. 645 00:34:59,570 --> 00:35:03,720 კვანძების მიუთითებს კვანძების სახის არსი ბევრი მონაცემები სტრუქტურების. 646 00:35:03,720 --> 00:35:06,670 უბრალოდ დამოკიდებულია იმაზე, თუ რამდენად ჩვენ აქვს მათ აღვნიშნო, რომ ერთმანეთი 647 00:35:06,670 --> 00:35:08,600 და როგორ კვეთენ მათი მეშვეობით და როგორ 648 00:35:08,600 --> 00:35:14,500 ჩასასმელი რამ, რომელიც განსაზღვრავს მათი განსხვავებული თვისებები. 649 00:35:14,500 --> 00:35:17,600 >> ასე რომ რამოდენიმე ტერმინოლოგია, რომელიც მე გამოყენებული ადრე. 650 00:35:17,600 --> 00:35:20,010 ასე root არის, რაც ძალიან ზევით. 651 00:35:20,010 --> 00:35:21,200 ეს არის ის, სადაც ჩვენ ყოველთვის დაიწყება. 652 00:35:21,200 --> 00:35:23,610 შეგიძლიათ წარმოიდგინოთ, რომ, როგორც უფროსი, ასევე. 653 00:35:23,610 --> 00:35:28,750 მაგრამ ხეები, ჩვენ, როგორც წესი, ეხება, როგორც root. 654 00:35:28,750 --> 00:35:32,820 >> არაფერი ბოლოში აქ ძალიან, ძალიან ქვედა 655 00:35:32,820 --> 00:35:34,500 განხილულია ფოთლები. 656 00:35:34,500 --> 00:35:37,210 ასე რომ მიდის ერთად მთელი ხე რამ, არა? 657 00:35:37,210 --> 00:35:39,860 ფოთლები კიდეებს თქვენი ხე. 658 00:35:39,860 --> 00:35:45,820 >> და მაშინ ჩვენ ასევე გვაქვს რამდენიმე თვალსაზრისით ლაპარაკი კვანძების დაკავშირებით 659 00:35:45,820 --> 00:35:46,680 ერთმანეთს. 660 00:35:46,680 --> 00:35:49,700 ამიტომ, ჩვენ უნდა მშობელს, შვილი, და-ძმა. 661 00:35:49,700 --> 00:35:56,260 ასე რომ, ამ შემთხვევაში, 3 მშობელი, 5, 6 და 7. 662 00:35:56,260 --> 00:36:00,370 ასე რომ, მშობელი არის, რაც ერთი ნაბიჯი ზემოთ, რასაც თქვენ 663 00:36:00,370 --> 00:36:02,940 გულისხმობდა, ისე უბრალოდ მოსწონს ოჯახის ხე. 664 00:36:02,940 --> 00:36:07,090 იმედია, ეს ყველაფერი ცოტა ცოტა უფრო ინტუიტიური ვიდრე ცდილობს. 665 00:36:07,090 --> 00:36:10,970 >> ძმა რაიმე რომ აქვს იგივე მშობელი, არა? 666 00:36:10,970 --> 00:36:13,470 ისინი ერთსა და იმავე დონეზე აქ. 667 00:36:13,470 --> 00:36:16,960 და შემდეგ, როგორც მე ვიყავი განაცხადა, რომ შვილი მხოლოდ 668 00:36:16,960 --> 00:36:22,630 რაც არის ერთი ნაბიჯით ქვემოთ კვანძის კითხვა, OK? 669 00:36:22,630 --> 00:36:23,470 ზემოთ. 670 00:36:23,470 --> 00:36:25,610 ასე ორობითი ხე. 671 00:36:25,610 --> 00:36:31,450 შეიძლება ვინმეს ვივარაუდოთ ერთი მახასიათებლები ორობითი ხე? 672 00:36:31,450 --> 00:36:32,770 >> აუდიტორია: Max ორი ფოთლები. 673 00:36:32,770 --> 00:36:33,478 >> დინამიკები 1: Right. 674 00:36:33,478 --> 00:36:34,640 ასე max ორი ფოთლები. 675 00:36:34,640 --> 00:36:39,730 ასე რომ ამ ერთი ადრე გვქონდა ამ ერთი რომ სამი, არამედ ორობითი ხე, 676 00:36:39,730 --> 00:36:45,000 თქვენ გაქვთ max ორი ბავშვის მშობელი, არა? 677 00:36:45,000 --> 00:36:46,970 არსებობს კიდევ ერთი საინტერესო დეტალს. 678 00:36:46,970 --> 00:36:51,550 ვინმეს ვიცი, რომ? 679 00:36:51,550 --> 00:36:52,620 ორობითი ხე. 680 00:36:52,620 --> 00:37:00,350 >> ასე ორობითი ხე ექნება ყველაფერი on the-- ეს არ არის დახარისხებული 681 00:37:00,350 --> 00:37:05,320 მაგრამ დახარისხებული ორობითი ხე, ყველაფერი მარჯვენა 682 00:37:05,320 --> 00:37:08,530 მეტია, ვიდრე მშობელს, და ყველაფერი მარცხენა 683 00:37:08,530 --> 00:37:10,035 ნაკლებია, ვიდრე მშობელი. 684 00:37:10,035 --> 00:37:15,690 და რომ უკვე ვიქტორინა კითხვა ადრე, ასე რომ კარგი ვიცი. 685 00:37:15,690 --> 00:37:19,500 ასე რომ გზა ჩვენ განსაზღვრავს, კიდევ ერთხელ, ჩვენ გვაქვს სხვა კვანძის. 686 00:37:19,500 --> 00:37:21,880 ეს გამოიყურება ძალიან ჰგავს, თუ რა? 687 00:37:21,880 --> 00:37:28,336 688 00:37:28,336 --> 00:37:28,836 ორმაგად 689 00:37:28,836 --> 00:37:29,320 >> აუდიტორია: უკავშირებს სიები 690 00:37:29,320 --> 00:37:31,100 >> დინამიკები 1: ორმაგი დაკავშირებული სიაში, უფლება? 691 00:37:31,100 --> 00:37:33,690 ასე რომ, თუ შევცვალოთ ეს წინა და მომდევნო, 692 00:37:33,690 --> 00:37:35,670 ეს იქნება ორმაგად უკავშირდება სიაში. 693 00:37:35,670 --> 00:37:40,125 მაგრამ ამ შემთხვევაში, ჩვენ, ფაქტობრივად, აქვს მარჯვენა და მარცხენა და რომ არის ის. 694 00:37:40,125 --> 00:37:41,500 წინააღმდეგ შემთხვევაში, ეს ზუსტად იგივე. 695 00:37:41,500 --> 00:37:43,374 ჩვენ ჯერ კიდევ გვაქვს ელემენტი თქვენ ვეძებთ, 696 00:37:43,374 --> 00:37:45,988 და თქვენ უბრალოდ უნდა ორი პოინტერები აპირებს, რასაც მომავალი. 697 00:37:45,988 --> 00:37:49,210 698 00:37:49,210 --> 00:37:51,870 ჰო, ისე, ორობითი ძებნა ხე. 699 00:37:51,870 --> 00:37:57,665 თუ ჩვენ შეამჩნევთ, ყველაფერს აქ არის უფრო მეტი, ვიდრე 700 00:37:57,665 --> 00:37:59,850 ან ყველაფერი სასწრაფოდ მარჯვნივ აქ 701 00:37:59,850 --> 00:38:02,840 მეტია, ყველაფერი აქ არის ნაკლები. 702 00:38:02,840 --> 00:38:06,980 703 00:38:06,980 --> 00:38:14,000 >> ასე რომ, თუ ჩვენ უნდა მოძებნოთ მეშვეობით, ის უნდა გამოიყურებოდეს ძალიან ახლოს ორობითი ძებნა 704 00:38:14,000 --> 00:38:14,910 აქ, არა? 705 00:38:14,910 --> 00:38:17,640 გარდა ნაცვლად ეძებს ნახევარ მასივი, 706 00:38:17,640 --> 00:38:21,720 ჩვენ მხოლოდ ეძებს ან მარცხენა მხარეს ან მარჯვენა მხარეს ხე. 707 00:38:21,720 --> 00:38:24,850 ამიტომ იგი იღებს ცოტა მარტივი, ვფიქრობ. 708 00:38:24,850 --> 00:38:29,300 >> ასე რომ, თუ თქვენი root არის NULL, ცხადია, ეს მხოლოდ ცრუ. 709 00:38:29,300 --> 00:38:33,470 და თუ ეს არ არსებობს, ბუნებრივია, ეს სიმართლეა. 710 00:38:33,470 --> 00:38:35,320 თუ ნაკლები, ჩვენ ძიება მარცხენა. 711 00:38:35,320 --> 00:38:37,070 თუ ეს მეტია, ჩვენ მოძებნოთ უფლება. 712 00:38:37,070 --> 00:38:39,890 ეს ზუსტად ისევე, როგორც ორობითი ძებნა, უბრალოდ სხვადასხვა მონაცემები სტრუქტურა 713 00:38:39,890 --> 00:38:40,600 რომ ჩვენ გამოყენებით. 714 00:38:40,600 --> 00:38:42,790 იმის ნაცვლად, რომ მასივი, ეს მხოლოდ ორობითი ხე. 715 00:38:42,790 --> 00:38:45,820 716 00:38:45,820 --> 00:38:48,090 >> OK, stacks. 717 00:38:48,090 --> 00:38:51,550 და ასევე, როგორც ჩანს ჩვენ შესაძლოა, ცოტა დრო. 718 00:38:51,550 --> 00:38:54,460 თუ ჩვენ გავაკეთებთ, მოხარული ვარ, რომ წავიდეთ მეტი რომელიმე ამ ერთხელ. 719 00:38:54,460 --> 00:38:56,856 OK, ასე რომ stacks. 720 00:38:56,856 --> 00:39:02,695 ვინმეს გახსოვთ რა stacks-- ნებისმიერი მახასიათებლები დასტის? 721 00:39:02,695 --> 00:39:05,550 722 00:39:05,550 --> 00:39:10,400 >> OK, ასე რომ ყველაზე მეტად, მე ვფიქრობ, ჭამა სასადილო halls-- 723 00:39:10,400 --> 00:39:13,100 ისევე, როგორც ჩვენ შეიძლება არ მოგწონდეს. 724 00:39:13,100 --> 00:39:16,900 მაგრამ ცხადია, რომ შეგიძლიათ წარმოიდგინოთ, რომ დასტის ფაქტიურად, ისევე როგორც Stack of ქაღალდის 725 00:39:16,900 --> 00:39:18,460 ან დასტის რამ. 726 00:39:18,460 --> 00:39:21,820 და, რაც მთავარია გააცნობიეროს, ის არის, რომ 727 00:39:21,820 --> 00:39:26,850 რაღაც დამახასიათებელი რომ ჩვენ მას by-- არის LIFO. 728 00:39:26,850 --> 00:39:28,450 ვინმემ იცის რა, რომ დგას? 729 00:39:28,450 --> 00:39:29,070 Mmhmm? 730 00:39:29,070 --> 00:39:30,650 >> აუდიტორია: ბოლო წელს, პირველი out. 731 00:39:30,650 --> 00:39:32,250 >> დინამიკები 1: მარჯვენა, გაგრძელდება, პირველი გარეთ. 732 00:39:32,250 --> 00:39:36,585 ასე რომ, თუ ჩვენ ვიცით, რომ თუ ჩვენ დაწყობა რამ up, მარტივი რამ რაც უნდა დაიბრუნოს off-- 733 00:39:36,585 --> 00:39:39,570 და შესაძლოა, ერთადერთი, რაც შეგვიძლია აითვისებდა იქნება, თუ ჩვენი დასტის არის დიდი საკმარისად 734 00:39:39,570 --> 00:39:40,850 ის არის, რომ ყველაზე ელემენტს. 735 00:39:40,850 --> 00:39:43,460 ასე რომ, რაც ჩაიდო last-- როგორც ვხედავთ აქ, 736 00:39:43,460 --> 00:39:46,370 რასაც მივიღებთ ყველაზე recently-- არის 737 00:39:46,370 --> 00:39:51,160 იქნება პირველი ის, რომ პოპ off, OK? 738 00:39:51,160 --> 00:39:56,324 >> ასე რომ, რა გვაქვს აქ სხვა typedef struct. 739 00:39:56,324 --> 00:39:58,740 ეს არის ნამდვილად მომწონს Crash კურსი მონაცემთა სტრუქტურა, 740 00:39:58,740 --> 00:40:01,650 ასე რომ, ეს არის ძალიან ბევრი ესროლეს თქვენ ბიჭები. 741 00:40:01,650 --> 00:40:02,540 მე ვიცი. 742 00:40:02,540 --> 00:40:04,970 ასე კიდევ ერთი struct. 743 00:40:04,970 --> 00:40:06,740 საზაფხულო სტრუქტურები. 744 00:40:06,740 --> 00:40:16,660 >> და ამ შემთხვევაში, ეს არის ზოგიერთი მაჩვენებელი მასივი, რომელსაც აქვს გარკვეული შესაძლებლობები. 745 00:40:16,660 --> 00:40:20,830 ასე რომ, ეს არის ჩვენი დასტის აქ, ისევე როგორც ჩვენი ფაქტობრივი მასივი 746 00:40:20,830 --> 00:40:22,520 რომ ჩატარების ჩვენი ელემენტებს. 747 00:40:22,520 --> 00:40:24,850 და მერე აქ ჩვენ გვაქვს გარკვეული ზომა. 748 00:40:24,850 --> 00:40:31,170 >> და, როგორც წესი, თქვენ გინდათ რომ შეინახოთ სიმღერა, რამდენად დიდი თქვენი დასტის 749 00:40:31,170 --> 00:40:36,180 რადგან რასაც ის აპირებს, ნება თქვენ უნდა გააკეთოთ, თუ იცით, ზომა, 750 00:40:36,180 --> 00:40:39,170 ეს გაძლევთ საშუალებას ვთქვა, OK, მე სიმძლავრის? 751 00:40:39,170 --> 00:40:40,570 დავამატო რამე სხვა? 752 00:40:40,570 --> 00:40:44,650 და ასევე გიჩვენებთ სადაც ზევით თქვენი დასტის 753 00:40:44,650 --> 00:40:48,180 ასე რომ თქვენ იცით, რა შეგიძლიათ რეალურად მიიღოს off. 754 00:40:48,180 --> 00:40:51,760 და რომ რეალურად აპირებს იყოს უფრო ნათელი აქ. 755 00:40:51,760 --> 00:40:57,350 >> ასე რომ, ბიძგი, ერთი რამ, თუ ოდესმე განახორციელოს ბიძგი, 756 00:40:57,350 --> 00:41:01,330 როგორც მე უბრალოდ ვამბობ, თქვენი დასტის აქვს შეზღუდული ზომა, არა? 757 00:41:01,330 --> 00:41:03,990 ჩვენი მასივი გვქონდა მოცულობა. 758 00:41:03,990 --> 00:41:04,910 ეს მასივი. 759 00:41:04,910 --> 00:41:08,930 ეს ფიქსირებული ზომა, ამიტომ ჩვენ უნდა დარწმუნდით, რომ ჩვენ არ აყენებს მეტი 760 00:41:08,930 --> 00:41:11,950 ჩვენი მასივი, ვიდრე ჩვენ რეალურად აქვს ადგილი. 761 00:41:11,950 --> 00:41:16,900 >> ასე რომ, როდესაც თქვენ შექმნით push ფუნქცია, პირველი, რაც თქვენ უნდა ვთქვა, OK, 762 00:41:16,900 --> 00:41:18,570 მაქვს სივრცე ჩემს დასტის? 763 00:41:18,570 --> 00:41:23,330 იმიტომ, რომ თუ მე არა, ბოდიში, მე ვერ შეინახავს თქვენს ელემენტს. 764 00:41:23,330 --> 00:41:28,980 თუ ამის გაკეთება, მაშინ გსურთ შესანახად მას ზედა დასტის, არა? 765 00:41:28,980 --> 00:41:31,325 >> და ამიტომ ჩვენ გვაქვს შენარჩუნება სიმღერა ჩვენი ზომა. 766 00:41:31,325 --> 00:41:35,290 თუ ჩვენ არ შენარჩუნება სიმღერა ჩვენი ზომა, ჩვენ არ ვიცით, სად უნდა დააყენოს იგი. 767 00:41:35,290 --> 00:41:39,035 ჩვენ არ ვიცით, რამდენი რამ რომლებიც ჩვენი მასივი უკვე. 768 00:41:39,035 --> 00:41:41,410 როგორიცაა აშკარად არსებობს გზები რომ იქნებ შეიძლება ამის გაკეთება. 769 00:41:41,410 --> 00:41:44,610 თქვენ ვერ ვრთავ ყველაფერი null და შემდეგ შეამოწმეთ უახლესი NULL, 770 00:41:44,610 --> 00:41:47,950 მაგრამ ბევრად უფრო ადვილი რამ არის მხოლოდ ამბობენ, OK, ტრეკზე ზომა. 771 00:41:47,950 --> 00:41:51,840 ისევე, როგორც მე ვიცი, მე ოთხი ელემენტები ჩემი მასივი, ასე რომ შემდეგი რამ 772 00:41:51,840 --> 00:41:55,930 რომ ჩვენ, ჩვენ ვართ აპირებს შესანახად ინდექსი 4. 773 00:41:55,930 --> 00:42:00,940 და მაშინ, რა თქმა უნდა, ეს იმას ნიშნავს, რომ თქვენ წარმატებით აიძულა რაღაც 774 00:42:00,940 --> 00:42:03,320 თქვენს დასტის, თქვენ გვინდა გაზრდის ზომა 775 00:42:03,320 --> 00:42:08,880 ასე რომ თქვენ იცით, სადაც თქვენ იმდენად რომ თქვენ შეგიძლიათ დააყენებს მეტი რამ. 776 00:42:08,880 --> 00:42:12,730 >> ასე რომ, თუ ჩვენ ვცდილობთ, რომ პოპ რაღაც off დასტის, 777 00:42:12,730 --> 00:42:16,072 რა შეიძლება იყოს, პირველ რიგში, რომ ჩვენ გვინდა შევამოწმოთ? 778 00:42:16,072 --> 00:42:18,030 თქვენ ცდილობთ მიიღოს რაღაც off თქვენი დასტის. 779 00:42:18,030 --> 00:42:21,710 780 00:42:21,710 --> 00:42:24,781 დარწმუნებული ხართ, რომ იქ რაღაც თქვენი დასტის? 781 00:42:24,781 --> 00:42:25,280 პოსტები 782 00:42:25,280 --> 00:42:26,894 რა შეიძლება ჩვენ გვინდა შევამოწმოთ? 783 00:42:26,894 --> 00:42:27,810 >> აუდიტორია: [INAUDIBLE]. 784 00:42:27,810 --> 00:42:29,880 დინამიკები 1: შეამოწმეთ ზომა? 785 00:42:29,880 --> 00:42:31,840 ზომა. 786 00:42:31,840 --> 00:42:38,520 ამიტომ, ჩვენ გვინდა შეამოწმეთ თუ ჩვენი ზომა მეტია 0, OK? 787 00:42:38,520 --> 00:42:44,970 და თუ არის, მაშინ ჩვენ გვინდა შემცირება ჩვენი ზომა 0 და დააბრუნა. 788 00:42:44,970 --> 00:42:45,840 რატომ? 789 00:42:45,840 --> 00:42:49,950 >> პირველ ნაწილში ჩვენ ვიყავით უბიძგებს, ჩვენ მივიღებთ 790 00:42:49,950 --> 00:42:52,460 გადატანა ზომა და შემდეგ მხრიდან ზომა. 791 00:42:52,460 --> 00:42:57,850 ამ შემთხვევაში, ჩვენ decrementing ზომა და შემდეგ ის ეთერიდან, plucking ეს 792 00:42:57,850 --> 00:42:58,952 ჩვენი მასივი. 793 00:42:58,952 --> 00:42:59,826 რატომ შეგვიძლია ამის გაკეთება? 794 00:42:59,826 --> 00:43:04,800 795 00:43:04,800 --> 00:43:11,811 ასე რომ, თუ მე ერთი რამ ჩემს დასტის, რა იქნება ჩემი ზომა იმ ეტაპზე? 796 00:43:11,811 --> 00:43:13,140 1. 797 00:43:13,140 --> 00:43:15,180 >> და სად არის ელემენტს 1 შენახული? 798 00:43:15,180 --> 00:43:17,621 რა ინდექსი? 799 00:43:17,621 --> 00:43:18,120 აუდიტორია: 0. 800 00:43:18,120 --> 00:43:19,060 დინამიკები 1: 0. 801 00:43:19,060 --> 00:43:22,800 ასე რომ, ამ შემთხვევაში, ჩვენ ყოველთვის უნდა მიიღოს sure-- 802 00:43:22,800 --> 00:43:27,630 დაბრუნების ნაცვლად ზომა მინუს 1, იმიტომ, რომ ჩვენ 803 00:43:27,630 --> 00:43:31,730 ვიცი, რომ ჩვენი ელემენტს იქნება ინახება 1 ნაკლები 804 00:43:31,730 --> 00:43:34,705 მიუხედავად ჩვენი ზომა, ამ უბრალოდ ზრუნავს მასზე. 805 00:43:34,705 --> 00:43:36,080 ეს ოდნავ უფრო დახვეწილი გზა. 806 00:43:36,080 --> 00:43:41,220 და ჩვენ უბრალოდ decrement ჩვენი ზომა და შემდეგ დაბრუნდნენ ზომა. 807 00:43:41,220 --> 00:43:42,330 Mmhmm? 808 00:43:42,330 --> 00:43:45,300 >> აუდიტორია: ვფიქრობ, უბრალოდ, ზოგადად, რატომ ამ მონაცემების სტრუქტურას 809 00:43:45,300 --> 00:43:47,800 იყოს მომგებიანი? 810 00:43:47,800 --> 00:43:50,660 >> დინამიკები 1: ეს დამოკიდებულია თქვენი კონტექსტში. 811 00:43:50,660 --> 00:43:57,420 ასე რომ ზოგიერთი თეორია თუ თქვენ მუშაობის with-- OK, 812 00:43:57,420 --> 00:44:02,750 ნება მომეცით, თუ არსებობს ფაქტობრივი ერთი რომელიც სასარგებლოა მეტი გარეთ 813 00:44:02,750 --> 00:44:05,420 CS. 814 00:44:05,420 --> 00:44:15,780 ერთად stacks, ნებისმიერ დროს თქვენ უნდა შენარჩუნება სიმღერა, რომ რაღაც 815 00:44:15,780 --> 00:44:20,456 ყველაზე ცოტა ხნის წინ დაემატა, რომ, როდესაც თქვენ აპირებს გსურთ გამოიყენოთ Stack. 816 00:44:20,456 --> 00:44:24,770 >> და მე არ ვფიქრობ, რომ კარგი მაგალითია, რომ ახლა. 817 00:44:24,770 --> 00:44:29,955 მაგრამ როდესაც ყველაზე ბოლო რაც ყველაზე მნიშვნელოვანია, თქვენ, 818 00:44:29,955 --> 00:44:31,705 ეს მაშინ, როდესაც დასტის იქნება სასარგებლო. 819 00:44:31,705 --> 00:44:35,797 820 00:44:35,797 --> 00:44:39,330 ვცდილობ, რომ, თუ არსებობს ერთი კარგი ამ. 821 00:44:39,330 --> 00:44:43,720 თუ ვფიქრობ, კარგი მაგალითი შემდეგი 20-ე, მე აუცილებლად გეტყვით. 822 00:44:43,720 --> 00:44:49,455 >> მაგრამ საერთო ჯამში, თუ არსებობს რამე, როგორც ვთქვი, ყველაზე, სადაც ყველაზე ბოლო 823 00:44:49,455 --> 00:44:52,470 ყველაზე მნიშვნელოვანია, რომ სადაც დასტის ძალაში პიესა. 824 00:44:52,470 --> 00:44:58,860 იმის გამო, რიგები არის სახის საპირისპირო. 825 00:44:58,860 --> 00:44:59,870 და ყველა პატარა ძაღლები. 826 00:44:59,870 --> 00:45:00,890 ეს არ არის დიდი, არა? 827 00:45:00,890 --> 00:45:03,299 ვგრძნობ, როგორიც მე უნდა უბრალოდ bunny ვიდეო 828 00:45:03,299 --> 00:45:05,090 მარჯვენა შუა განყოფილებაში თქვენ ბიჭები 829 00:45:05,090 --> 00:45:08,870 იმიტომ, რომ ეს არის ინტენსიური მონაკვეთზე. 830 00:45:08,870 --> 00:45:10,480 >> ასე რიგიდან. 831 00:45:10,480 --> 00:45:12,710 ძირითადად მდგომ, როგორიცაა ხაზი. 832 00:45:12,710 --> 00:45:15,780 თქვენ ბიჭები დარწმუნებული ვარ, რომ გამოიყენოს ეს ყოველდღე, ისევე, როგორც ჩვენი სასადილო დარბაზებში. 833 00:45:15,780 --> 00:45:18,160 ასე რომ, ჩვენ უნდა წავიდეს და მიიღეთ ჩვენი უჯრები, მე 834 00:45:18,160 --> 00:45:21,260 დარწმუნდით, რომ თქვენ უნდა ველოდოთ ონლაინ დარტყმა და მიიღოთ თქვენი საკვები. 835 00:45:21,260 --> 00:45:24,650 >> ასე რომ, განსხვავება აქ არის, რომ ეს FIFO. 836 00:45:24,650 --> 00:45:30,090 ასე რომ, თუ LIFO იყო ბოლო წელს, პირველი გარეთ, FIFO არის პირველი, პირველი გარეთ. 837 00:45:30,090 --> 00:45:33,400 ასე რომ, რასაც თქვენ დააყენა პირველი არის თქვენი ყველაზე მნიშვნელოვანი. 838 00:45:33,400 --> 00:45:35,540 ასე რომ, თუ თქვენ ელოდნენ ამ ხაზის შეგიძლიათ 839 00:45:35,540 --> 00:45:39,130 წარმოიდგინეთ, თუ წავიდა წავიდეთ მიიღოს ახალი iPhone 840 00:45:39,130 --> 00:45:42,800 და ეს იყო დასტის, სადაც ბოლო პირი ხაზი მიიღო ეს, პირველ რიგში, 841 00:45:42,800 --> 00:45:44,160 ხალხი კლავს ერთმანეთს. 842 00:45:44,160 --> 00:45:49,800 >> ასე FIFO, ჩვენ ყველა ძალიან კარგად იცნობს ერთად რეალურ სამყაროში, აქ, 843 00:45:49,800 --> 00:45:54,930 და ეს ყველაფერი უნდა გააკეთოს, რომ რეალურად სახის აღდგენის მთელი ეს ხაზი 844 00:45:54,930 --> 00:45:56,900 და queuing სტრუქტურა. 845 00:45:56,900 --> 00:46:02,390 ასე რომ, ხოლო დასტის, ჩვენ გვაქვს ბიძგი და საესტრადო. 846 00:46:02,390 --> 00:46:06,440 რიგში, ჩვენ enqueue და dequeue. 847 00:46:06,440 --> 00:46:10,910 ასე enqueue ძირითადად იმას ნიშნავს, ბოლო გადატანა უკან, 848 00:46:10,910 --> 00:46:13,680 და dequeue საშუალებით მიიღოს off წინაშე. 849 00:46:13,680 --> 00:46:18,680 ასე რომ, ჩვენი მონაცემები სტრუქტურა ცოტა უფრო რთული. 850 00:46:18,680 --> 00:46:21,060 ჩვენ გვაქვს მეორე ის, რომ შევინარჩუნოთ სიმღერა. 851 00:46:21,060 --> 00:46:25,950 >> ისე, რომ ხელმძღვანელი, ამ არის ზუსტად ის, დასტის, არა? 852 00:46:25,950 --> 00:46:27,900 ეს არის იგივე სტრუქტურა, როგორც Stack. 853 00:46:27,900 --> 00:46:32,480 ერთადერთი განსხვავებული ახლა არის ჩვენ გვყავს ამ ხელმძღვანელი, რომელიც რას ფიქრობთ 854 00:46:32,480 --> 00:46:34,272 აპირებს შენარჩუნება სიმღერა? 855 00:46:34,272 --> 00:46:35,510 >> აუდიტორია: პირველი. 856 00:46:35,510 --> 00:46:38,685 >> დინამიკები 1: დიახ, პირველი, რაც ჩვენ დააყენა. 857 00:46:38,685 --> 00:46:41,130 ხელმძღვანელი ჩვენი რიგიდან. 858 00:46:41,130 --> 00:46:42,240 ვინც არის პირველი ხაზი. 859 00:46:42,240 --> 00:46:45,300 860 00:46:45,300 --> 00:46:49,420 ყველა უფლება, ასე რომ, თუ ჩვენ გავაკეთებთ enqueue. 861 00:46:49,420 --> 00:46:52,720 862 00:46:52,720 --> 00:46:55,920 ერთხელ, ნებისმიერ ამ მონაცემების სტრუქტურები, 863 00:46:55,920 --> 00:46:59,760 ვინაიდან ჩვენ საქმე მასივი, ჩვენ უნდა შევამოწმოთ, თუ ჩვენ გვაქვს სივრცეში. 864 00:46:59,760 --> 00:47:03,290 >> ეს არის სახის მოსწონს მითხრა, შენ, თუ გახსნა ფაილი, 865 00:47:03,290 --> 00:47:04,760 თქვენ უნდა შევამოწმოთ null. 866 00:47:04,760 --> 00:47:08,330 ნებისმიერი ამ stacks და რიგები, თქვენ უნდა 867 00:47:08,330 --> 00:47:13,420 თუ არსებობს სივრცე, რადგან ჩვენ საქმე ფიქსირებული ზომის მასივი, 868 00:47:13,420 --> 00:47:16,030 როგორც ვხედავთ, აქ 0, 1 ყველა 5. 869 00:47:16,030 --> 00:47:20,690 რასაც ჩვენ ვაკეთებთ ამ შემთხვევაში შემოწმება თუ ჩვენ ჯერ კიდევ აქვს სივრცეში. 870 00:47:20,690 --> 00:47:23,110 ჩვენი ზომა ნაკლები მოცულობა? 871 00:47:23,110 --> 00:47:28,480 >> თუ ეს ასეა, უნდა შეინახოს იგი კუდი და ჩვენ განახლება ჩვენი ზომა. 872 00:47:28,480 --> 00:47:30,250 რა შეიძლება კუდი იქნება ამ შემთხვევაში? 873 00:47:30,250 --> 00:47:32,360 ეს არ არის მკაფიოდ გაწერილი. 874 00:47:32,360 --> 00:47:33,380 როგორ გვინდა შეინახოს იგი? 875 00:47:33,380 --> 00:47:34,928 რას კუდი უნდა იყოს? 876 00:47:34,928 --> 00:47:38,600 877 00:47:38,600 --> 00:47:40,190 >> მოდით გავლა ამ მაგალითს. 878 00:47:40,190 --> 00:47:44,590 ასე რომ, ეს მასივი ზომა 6, არა? 879 00:47:44,590 --> 00:47:49,220 და ჩვენ გვაქვს ახლა, ჩვენი ზომა არის 5. 880 00:47:49,220 --> 00:47:55,240 და როდესაც ჩვენ ამას, ის აპირებს წასვლას მეხუთე მაჩვენებელი, არა? 881 00:47:55,240 --> 00:47:57,030 ასე შესანახად კუდი. 882 00:47:57,030 --> 00:48:05,600 >> სხვა გზა წერენ კუდი, უბრალოდ, იყოს ჩვენი მასივი ინდექსი ზომა, არა? 883 00:48:05,600 --> 00:48:07,560 ეს არის ზომა 5. 884 00:48:07,560 --> 00:48:11,490 შემდეგი რამ აპირებს წასვლას 5. 885 00:48:11,490 --> 00:48:12,296 მაგარი? 886 00:48:12,296 --> 00:48:13,290 OK. 887 00:48:13,290 --> 00:48:16,350 იგი იღებს ოდნავ უფრო რთული როდესაც ჩვენ ვიწყებთ ძვირფასი ხელმძღვანელი. 888 00:48:16,350 --> 00:48:17,060 დიახ? 889 00:48:17,060 --> 00:48:20,090 >> აუდიტორია: არა ეს იმას, რომ ჩვენ არ გამოცხადდა მასივი, 890 00:48:20,090 --> 00:48:23,880 იყო ხუთ ელემენტები ხანგრძლივი და მაშინ ჩვენ დასძინა გადატანა? 891 00:48:23,880 --> 00:48:24,730 >> დინამიკები 1: No. 892 00:48:24,730 --> 00:48:27,560 ასე რომ, ამ შემთხვევაში, ეს არის დასტის. 893 00:48:27,560 --> 00:48:31,760 ეს არ ჩაითვლება მასივი ზომა 6. 894 00:48:31,760 --> 00:48:37,120 და ამ შემთხვევაში, ჩვენ მხოლოდ ერთი სივრცე მარცხენა. 895 00:48:37,120 --> 00:48:42,720 >> OK, ასე რომ ერთი რამ არის ამ იმ შემთხვევაში, თუ ჩვენი ხელმძღვანელი არის 0, 896 00:48:42,720 --> 00:48:45,270 მაშინ ჩვენ უბრალოდ არ შეგვიძლია დავამატოთ ის ზომა. 897 00:48:45,270 --> 00:48:51,020 მაგრამ იგი იღებს პატარა trickier იმიტომ, რომ რეალურად, ისინი 898 00:48:51,020 --> 00:48:52,840 არ აქვს slide ამ, ასე რომ მე ვაპირებ 899 00:48:52,840 --> 00:48:56,670 მიაპყროს ერთი იმიტომ, რომ ეს არ არის რომ მარტივი ერთხელ თქვენ 900 00:48:56,670 --> 00:48:59,230 დაიწყოს მოშორების რამ. 901 00:48:59,230 --> 00:49:03,920 ასე რომ, ხოლო დასტის თქვენ მხოლოდ ოდესმე 902 00:49:03,920 --> 00:49:08,920 ფიქრი თუ რა ზომის არის როდესაც თქვენ დასძინა რაღაც, 903 00:49:08,920 --> 00:49:15,710 ერთად მდგომ, თქვენ ასევე უნდა მიიღოს დარწმუნებული ვარ, რომ თქვენი უფროსი აღრიცხვა, 904 00:49:15,710 --> 00:49:20,760 იმიტომ, რომ მაგარი რამ რიგები ის არის, რომ თუ თქვენ არ სიმძლავრის, 905 00:49:20,760 --> 00:49:23,040 თქვენ შეგიძლიათ რეალურად ეს გადაიტანოთ გარშემო. 906 00:49:23,040 --> 00:49:28,810 >> OK, ასე რომ ერთი რამ oh, ამ საშინელი ცარცი. 907 00:49:28,810 --> 00:49:31,815 ერთი რამ განიხილოს საქმე. 908 00:49:31,815 --> 00:49:35,514 909 00:49:35,514 --> 00:49:37,140 ჩვენ უბრალოდ ხუთ. 910 00:49:37,140 --> 00:49:41,810 OK, ასე რომ, ჩვენ ვაპირებთ ამბობენ, არის აქ. 911 00:49:41,810 --> 00:49:46,140 ეს არის 0, 1, 2, 3, 4. 912 00:49:46,140 --> 00:49:54,210 >> უფროსი იქ, და გთხოვთ რამ მათ. 913 00:49:54,210 --> 00:49:58,340 და ჩვენ გვსურს, რომ რაღაც, არა? 914 00:49:58,340 --> 00:50:01,170 ასე რომ, ის, რომ ჩვენ უნდა ვიცი, ის არის, რომ უფროსი ყოველთვის 915 00:50:01,170 --> 00:50:05,620 აპირებს გადავიდეს ამ გზით და მაშინ loop უკან გარშემო, OK? 916 00:50:05,620 --> 00:50:10,190 >> ასე რომ, ეს რიგი აქვს სივრცეში, არა? 917 00:50:10,190 --> 00:50:13,950 მას აქვს სივრცეში თავიდანვე, სახის საპირისპირო ამ. 918 00:50:13,950 --> 00:50:17,920 ამიტომ, რაც ჩვენ უნდა გავაკეთოთ არის ჩვენ უნდა გამოვთვალოთ კუდი. 919 00:50:17,920 --> 00:50:20,530 თუ თქვენ იცით, რომ თქვენი უფროსი არ გადავიდა, კუდი 920 00:50:20,530 --> 00:50:24,630 მხოლოდ თქვენი მასივი ინდექსი ზომა. 921 00:50:24,630 --> 00:50:30,000 >> მაგრამ სინამდვილეში, თუ თქვენ იყენებთ რიგში, თქვენი უფროსი ალბათ მიმდინარეობს განახლება. 922 00:50:30,000 --> 00:50:33,890 რაც თქვენ გჭირდებათ რომ გააკეთოთ, არის რეალურად გამოთვლა კუდი. 923 00:50:33,890 --> 00:50:39,990 რასაც ჩვენ ვაკეთებთ, ეს ფორმულა აქ, მე ვაპირებ მოგცემთ 924 00:50:39,990 --> 00:50:42,680 ბიჭები ფიქრი და მაშინ ჩვენ ამაზე. 925 00:50:42,680 --> 00:50:49,567 926 00:50:49,567 --> 00:50:50,400 ასე რომ, ეს შესაძლებლობები. 927 00:50:50,400 --> 00:50:55,890 928 00:50:55,890 --> 00:50:59,660 >> ასე რომ, ეს, ფაქტობრივად, გაძლევთ გზა ამის გაკეთება. 929 00:50:59,660 --> 00:51:03,205 930 00:51:03,205 --> 00:51:04,330 რადგან ამ შემთხვევაში, რა? 931 00:51:04,330 --> 00:51:09,205 ჩვენი ხელმძღვანელი არის 1, ჩვენი ზომა არის 4. 932 00:51:09,205 --> 00:51:11,760 933 00:51:11,760 --> 00:51:18,490 თუ ჩვენ mod რომ 5, მივიღებთ 0, რომ არის, სადაც ჩვენ უნდა შეყვანის. 934 00:51:18,490 --> 00:51:23,320 935 00:51:23,320 --> 00:51:26,080 >> ასე რომ, მაშინ მომდევნო შემთხვევაში, თუ ჩვენ ამის გაკეთება, 936 00:51:26,080 --> 00:51:33,390 ჩვენ ვამბობთ, კარგი, მოდით dequeue რაღაც. 937 00:51:33,390 --> 00:51:34,390 ჩვენ dequeue ეს. 938 00:51:34,390 --> 00:51:37,740 ჩვენ ვიღებთ ამ ელემენტს, არა? 939 00:51:37,740 --> 00:51:47,930 >> და ახლა ჩვენი თავი მიუთითებს აქ, და ჩვენ გვინდა, რომ დაამატოთ კიდევ ერთი რამ. 940 00:51:47,930 --> 00:51:52,470 ეს არის ძირითადად უკან ჩვენი ხაზი, არა? 941 00:51:52,470 --> 00:51:55,450 რიგები შეგიძლიათ გადაიტანოთ გარშემო მასივი. 942 00:51:55,450 --> 00:51:57,310 ეს არის ერთ ერთი ძირითადი განსხვავებები. 943 00:51:57,310 --> 00:51:58,780 Stacks, თქვენ ამის გაკეთება არ შეუძლიათ. 944 00:51:58,780 --> 00:52:01,140 >> ერთად რიგები, თქვენ შეგიძლიათ იმიტომ, რომ ყველა, რომ თემა 945 00:52:01,140 --> 00:52:03,940 არის, რომ თქვენ იცით, რა ყველაზე ცოტა ხნის წინ დაემატა. 946 00:52:03,940 --> 00:52:10,650 მას შემდეგ, რაც ეს ყველაფერი დაემატება ამ leftward მიმართულებით, ამ შემთხვევაში, 947 00:52:10,650 --> 00:52:16,480 და შემდეგ გადაიტანოთ გარშემო, თქვენ შეგიძლიათ გაგრძელდება აყენებს ახალი ელემენტები 948 00:52:16,480 --> 00:52:18,830 წინ მასივი იმიტომ, რომ ეს არ არის ნამდვილად 949 00:52:18,830 --> 00:52:20,640 წინა მასივი უქმნით. 950 00:52:20,640 --> 00:52:26,320 შეგიძლიათ წარმოიდგინოთ, რომ დასაწყისში წყობის, სადაც თქვენი უფროსი რეალურად არის. 951 00:52:26,320 --> 00:52:29,710 >> ასე რომ, ეს ფორმულა როგორ თქვენ გამოთვალოთ თქვენი კუდი. 952 00:52:29,710 --> 00:52:32,780 953 00:52:32,780 --> 00:52:35,610 ამჯამად რომ აზრი? 954 00:52:35,610 --> 00:52:36,110 OK. 955 00:52:36,110 --> 00:52:39,400 956 00:52:39,400 --> 00:52:44,040 OK, dequeue, და შემდეგ თქვენ ბიჭები 10 წუთი 957 00:52:44,040 --> 00:52:48,840 მკითხავთ, ნებისმიერი გასარკვევად კითხვები გსურთ, რადგან ვიცი, რომ ეს გიჟები. 958 00:52:48,840 --> 00:52:51,980 >> ყველა უფლება, ასე იგივე way-- მე არ ვიცი თუ ბიჭები შენიშნა, 959 00:52:51,980 --> 00:52:53,450 მაგრამ CS ყველაფერი ნიმუშები. 960 00:52:53,450 --> 00:52:57,370 რამ საკმაოდ ბევრი იგივე, უბრალოდ, პატარა შესწორებები. 961 00:52:57,370 --> 00:52:58,950 ასე იგივე აქ. 962 00:52:58,950 --> 00:53:04,040 ჩვენ უნდა შეამოწმოს, თუ ჩვენ რეალურად რაღაც ჩვენი მდგომ, არა? 963 00:53:04,040 --> 00:53:05,960 იტყვით, ჩვენი ზომა მეტია 0? 964 00:53:05,960 --> 00:53:06,730 ზემოთ. 965 00:53:06,730 --> 00:53:10,690 >> თუ ჩვენ გავაკეთებთ, მაშინ ჩვენ გადაადგილება ჩვენი ხელმძღვანელი, რომელიც არის ის, რაც მე უბრალოდ აჩვენა აქ. 966 00:53:10,690 --> 00:53:13,870 ჩვენ განახლება ჩვენი უფროსი კიდევ ერთი. 967 00:53:13,870 --> 00:53:18,390 და მაშინ ჩვენ decrement ჩვენი ზომა და დაუბრუნოს ელემენტს. 968 00:53:18,390 --> 00:53:21,000 969 00:53:21,000 --> 00:53:26,250 >> არსებობს ბევრად უფრო კონკრეტული კოდი on study.cs50.net, 970 00:53:26,250 --> 00:53:29,440 და მე მაღალ რეკომენდაციას აპირებს მეშვეობით, თუ თქვენ გაქვთ დრო, 971 00:53:29,440 --> 00:53:30,980 მაშინაც კი, თუ ეს მხოლოდ ფსევდო კოდი. 972 00:53:30,980 --> 00:53:35,980 და თუ ბიჭები მინდა გაიგო მეშვეობით რომ ჩემთან ერთად ერთ ერთი, გთხოვთ, ნება მომეცით 973 00:53:35,980 --> 00:53:37,500 ვიცი. 974 00:53:37,500 --> 00:53:38,770 მე მინდა იყოს ბედნიერი. 975 00:53:38,770 --> 00:53:42,720 მონაცემთა სტრუქტურები, თუ თქვენ მიიღოს CS 124, თქვენ 976 00:53:42,720 --> 00:53:47,830 ვიცი, რომ მონაცემები სტრუქტურების კიდევ ძალიან გართობა და ეს მხოლოდ დასაწყისია. 977 00:53:47,830 --> 00:53:50,350 >> მე ვიცი, ძნელია. 978 00:53:50,350 --> 00:53:51,300 ეს OK. 979 00:53:51,300 --> 00:53:52,410 ჩვენ ბრძოლას. 980 00:53:52,410 --> 00:53:53,630 მე მაინც გავაკეთებ. 981 00:53:53,630 --> 00:53:56,660 ასე რომ არ ინერვიულოთ ძალიან ბევრი ამის შესახებ. 982 00:53:56,660 --> 00:54:02,390 >> მაგრამ ეს ძირითადად თქვენი Crash კურსი მონაცემთა სტრუქტურები. 983 00:54:02,390 --> 00:54:03,400 მე ვიცი, რომ ბევრი. 984 00:54:03,400 --> 00:54:06,860 არის რამე, რომ ჩვენ მინდა წასვლა კიდევ? 985 00:54:06,860 --> 00:54:09,400 არაფერი გვინდა გაიგო მეშვეობით? 986 00:54:09,400 --> 00:54:10,060 დიახ? 987 00:54:10,060 --> 00:54:16,525 >> აუდიტორია: იმისათვის, რომ მაგალითად, ასე ახალი კუდი 0 დასრულდა, რომ? 988 00:54:16,525 --> 00:54:17,150 დინამიკები 1: დიახ. 989 00:54:17,150 --> 00:54:18,230 აუდიტორია: OK. 990 00:54:18,230 --> 00:54:24,220 ასე რომ, მაშინ გადის, ნეტავ 1 + 4 or-- 991 00:54:24,220 --> 00:54:27,671 >> დინამიკები 1: ასე ამბობდნენ, როდესაც ჩვენ გვინდა ეს კიდევ ერთხელ გავაკეთოთ? 992 00:54:27,671 --> 00:54:28,296 აუდიტორია: Yeah. 993 00:54:28,296 --> 00:54:38,290 ასე რომ, თუ თქვენ მჭიდროდაა out-- სად არის თქვენ გაანგარიშების კუდი ეხლა რომ? 994 00:54:38,290 --> 00:54:44,260 >> დინამიკები 1: ასე კუდი იყო in-- მე შევცვალე ეს. 995 00:54:44,260 --> 00:54:52,010 ასე რომ, ამ მაგალითში, ეს იყო მასივი ჩვენ შევხედავთ, OK? 996 00:54:52,010 --> 00:54:54,670 ამიტომ რამ, 1, 2, 3, 4. 997 00:54:54,670 --> 00:55:05,850 ასე რომ, ჩვენ გვაქვს ჩვენი უფროსი უდრის 1-ში ამ ეტაპზე, და ჩვენი ზომა უდრის 4 998 00:55:05,850 --> 00:55:07,050 ამ ეტაპზე, არა? 999 00:55:07,050 --> 00:55:08,960 >> თქვენ ყველა თვლის, რომ ეს საქმე? 1000 00:55:08,960 --> 00:55:14,620 ამიტომ, ჩვენ ხელმძღვანელი პლუს ზომა, რომელიც გვაძლევს 5, შემდეგ კი თავდაცვის სამინისტროს მიერ 5. 1001 00:55:14,620 --> 00:55:20,690 მივიღებთ 0, რომელიც გვეუბნება, რომ 0 არის სად არის ჩვენი კუდი, სადაც ჩვენ გვაქვს სივრცეში. 1002 00:55:20,690 --> 00:55:22,010 >> აუდიტორია: რა არის cap? 1003 00:55:22,010 --> 00:55:23,520 >> დინამიკები 1: მოცულობა. 1004 00:55:23,520 --> 00:55:24,020 უკაცრავად. 1005 00:55:24,020 --> 00:55:29,640 ასე რომ, არის ზომა თქვენი მასივი. 1006 00:55:29,640 --> 00:55:35,210 1007 00:55:35,210 --> 00:55:36,047 დიახ? 1008 00:55:36,047 --> 00:55:39,210 >> აუდიტორია: [INAUDIBLE] წინაშე ჩვენ დაბრუნდნენ ელემენტს? 1009 00:55:39,210 --> 00:55:46,270 >> დინამიკები 1: ასე რომ, ჩვენ გადაადგილება ხელმძღვანელი ან დაბრუნების მომენტში? 1010 00:55:46,270 --> 00:55:52,680 ასე რომ, თუ ჩვენ გადაადგილება ერთი, decrement ზომა? 1011 00:55:52,680 --> 00:55:54,150 ჩატარების შესახებ. 1012 00:55:54,150 --> 00:55:55,770 მე ნამდვილად დაავიწყდა სხვა. 1013 00:55:55,770 --> 00:56:00,646 1014 00:56:00,646 --> 00:56:01,990 არასოდეს იბადება. 1015 00:56:01,990 --> 00:56:04,980 არ არის კიდევ ერთი ფორმულა. 1016 00:56:04,980 --> 00:56:09,980 ჰო, თქვენ სურს დაბრუნდეს ხელმძღვანელი და შემდეგ გადაადგილება უკან. 1017 00:56:09,980 --> 00:56:13,270 >> აუდიტორია: OK, რადგან ამ წერტილი, ხელმძღვანელი იყო 0, 1018 00:56:13,270 --> 00:56:18,452 და მაშინ მინდა დაბრუნდეს ინდექსი 0 და შემდეგ, რათა უფროსმა 1? 1019 00:56:18,452 --> 00:56:19,870 >> დინამიკები 1: Right. 1020 00:56:19,870 --> 00:56:22,820 მე ვფიქრობ, რომ არსებობს კიდევ ერთი ფორმულა სახის მოსწონს ეს. 1021 00:56:22,820 --> 00:56:26,970 მე არ მაქვს თავზე ჩემი უფროსი, მე არ მინდა, რათა თქვენ არასწორი. 1022 00:56:26,970 --> 00:56:35,470 მაგრამ მე ვფიქრობ, რომ ეს კარგად მოქმედებს ვთქვათ, OK, შესანახად ამ ელემენტს რასაც 1023 00:56:35,470 --> 00:56:40,759 ხელმძღვანელი ელემენტს is-- decrement თქვენი ზომა გადატანა თქვენი უფროსი მეტი, და სანაცვლოდ 1024 00:56:40,759 --> 00:56:41,800 რასაც ელემენტი. 1025 00:56:41,800 --> 00:56:44,760 ეს შესანიშნავად მოქმედებს. 1026 00:56:44,760 --> 00:56:45,260 OK. 1027 00:56:45,260 --> 00:56:48,360 1028 00:56:48,360 --> 00:56:53,560 მე ვგრძნობ, რომ ეს არ არის როგორიცაა most-- თქვენ არ 1029 00:56:53,560 --> 00:56:55,740 სიარული აქედან როგორიცაა, დიახ, მე ვიცი ლელო. 1030 00:56:55,740 --> 00:56:56,880 მე მივიღე ეს ყველაფერი. 1031 00:56:56,880 --> 00:56:57,670 რომ კარგადაა. 1032 00:56:57,670 --> 00:57:00,200 მე გპირდებით. 1033 00:57:00,200 --> 00:57:05,240 მაგრამ მონაცემები სტრუქტურები, რომ რაღაც იგი იღებს ბევრი დრო, რათა შეეგუოს. 1034 00:57:05,240 --> 00:57:10,010 ალბათ ერთ-ერთი უმძიმესი რამ, ვფიქრობ, რა თქმა უნდა. 1035 00:57:10,010 --> 00:57:15,330 >> ასე რომ, ეს ნამდვილად სჭირდება განმეორება და ეძებს at-- I 1036 00:57:15,330 --> 00:57:20,050 არ ვიცი, უკავშირდება სიები სანამ მე ძალიან ბევრი მათ, 1037 00:57:20,050 --> 00:57:22,550 იმ გზით, რომ არ ნამდვილად გვესმის პოინტერები 1038 00:57:22,550 --> 00:57:27,040 სანამ მე მქონდა ასწავლიან, რომ ის ორი ახალი და გავაკეთოთ საკუთარი psets იგი. 1039 00:57:27,040 --> 00:57:28,990 იგი იღებს ბევრი გამეორება და დრო. 1040 00:57:28,990 --> 00:57:32,600 და საბოლოოდ, ეს იქნება ერთგვარი დაჭერით. 1041 00:57:32,600 --> 00:57:36,320 >> მაგრამ, მანამდე, თუ თქვენ გაქვთ სახის მაღალი დონის გაგება, თუ რა 1042 00:57:36,320 --> 00:57:39,321 ეს გააკეთოს, მათი დადებითი და cons-- რაც 1043 00:57:39,321 --> 00:57:41,820 ჩვენ ნამდვილად ტენდენცია აღვნიშნო, განსაკუთრებით intro რა თქმა უნდა. 1044 00:57:41,820 --> 00:57:45,511 როგორიცაა, თუ რატომ ვიყენებთ ცდილობენ მეტი მასივი? 1045 00:57:45,511 --> 00:57:48,010 როგორიცაა, რა არის დადებითი და ნეგატივები, თითოეულ? 1046 00:57:48,010 --> 00:57:51,610 >> და გაგება ვაჭრობის ღ შორის თითოეული ამ სტრუქტურის 1047 00:57:51,610 --> 00:57:54,910 არის ის, რაც ბევრად უფრო მნიშვნელოვანია, ახლავე. 1048 00:57:54,910 --> 00:57:58,140 არ შეიძლება ერთი შეშლილი კითხვა ან ორი, რომ არის 1049 00:57:58,140 --> 00:58:03,710 ვაპირებთ გთხოვოთ, განახორციელოს ბიძგი და განახორციელოს პოპ ან enqueue და dequeue. 1050 00:58:03,710 --> 00:58:07,340 მაგრამ იმ ნაწილს, რომელსაც ეს უმაღლესი დონის გაგება და მეტი 1051 00:58:07,340 --> 00:58:09,710 ინტუიციური შემოტევით არის უფრო მნიშვნელოვანია, ვიდრე რეალურად 1052 00:58:09,710 --> 00:58:11,250 მიმდინარეობს შეუძლია განახორციელოს იგი. 1053 00:58:11,250 --> 00:58:14,880 >> ეს მინდა იყოს მართლაც გასაოცარია, თუ ყველა თქვენ შეიძლება გასვლა და წავიდეთ განახორციელოს ლელო, 1054 00:58:14,880 --> 00:58:19,720 მაგრამ ჩვენ გვესმის, რომ ეს არ არის აუცილებელი ყველაზე გონივრული რამ არ არის. 1055 00:58:19,720 --> 00:58:23,370 მაგრამ შეგიძლიათ თქვენი pset, თუ გსურთ და შემდეგ თქვენ მიიღებთ პრაქტიკა, 1056 00:58:23,370 --> 00:58:27,200 და მაშინ იქნებ თქვენ ნამდვილად მესმის. 1057 00:58:27,200 --> 00:58:27,940 დიახ? 1058 00:58:27,940 --> 00:58:30,440 >> აუდიტორია: OK, ასე რომ რაც პირობა არის ნიშნავდა გამოყენება pset? 1059 00:58:30,440 --> 00:58:31,916 ნუ მე უნდა გამოვიყენოთ ერთი მათგანი? 1060 00:58:31,916 --> 00:58:32,540 დინამიკები 1: დიახ. 1061 00:58:32,540 --> 00:58:34,199 ასე რომ თქვენ გაქვთ არჩევანი. 1062 00:58:34,199 --> 00:58:36,740 ვფიქრობ, ამ შემთხვევაში, ჩვენ შეგვიძლია ვისაუბროთ pset ცოტა 1063 00:58:36,740 --> 00:58:40,480 იმიტომ, რომ მე გაიქცა მეშვეობით ამ. 1064 00:58:40,480 --> 00:58:47,779 ასე რომ, თქვენი pset, თქვენ გაქვთ თქვენი არჩევანი ლელო ან hash მაგიდები. 1065 00:58:47,779 --> 00:58:49,570 ზოგიერთი ადამიანი შეეცდება და გამოიყენოს bloom ფილტრები, 1066 00:58:49,570 --> 00:58:51,840 მაგრამ ტექნიკურად არ არის სწორი. 1067 00:58:51,840 --> 00:58:55,804 იმიტომ, რომ მათი ალბათური ბუნების, მათ მისცეს ცრუ დადებითი ზოგჯერ. 1068 00:58:55,804 --> 00:58:57,095 ისინი ზემოთ სახეს, თუმცა. 1069 00:58:57,095 --> 00:58:59,030 უაღრესად გირჩევთ ეძებს მათ მინიმუმ. 1070 00:58:59,030 --> 00:59:03,260 მაგრამ თქვენ გაქვთ თქვენი არჩევანი შორის hash მაგიდა და ცდილობენ. 1071 00:59:03,260 --> 00:59:06,660 და ეს იქნება, სადაც ჩატვირთვა თქვენი ლექსიკონი. 1072 00:59:06,660 --> 00:59:09,230 >> და თქვენ უნდა აირჩიოს თქვენი ქეშირების ფუნქცია, 1073 00:59:09,230 --> 00:59:13,420 თქვენ უნდა აირჩიოს, თუ რამდენი თაიგულების გაქვთ, და ეს იქნება განსხვავდება. 1074 00:59:13,420 --> 00:59:17,440 ასე, თუ თქვენ გაქვთ უფრო მეტი თაიგულების, შეიძლება ის უფრო სწრაფად. 1075 00:59:17,440 --> 00:59:22,790 მაგრამ იქნებ თქვენ გაყვანაა ბევრი სივრცე, რომ გზა, თუმცა. 1076 00:59:22,790 --> 00:59:26,320 თქვენ უნდა გაერკვნენ ის. 1077 00:59:26,320 --> 00:59:27,140 Mmhmm? 1078 00:59:27,140 --> 00:59:29,875 >> აუდიტორია: თქვენ დაწყებამდე განაცხადა, რომ ჩვენ შეგვიძლია გამოვიყენოთ სხვა hash ფუნქციები, 1079 00:59:29,875 --> 00:59:31,750 რომ ჩვენ არ უნდა შექმნა ქეშირების ფუნქცია? 1080 00:59:31,750 --> 00:59:32,666 >> დინამიკები 1: დიახ, მარჯვნივ. 1081 00:59:32,666 --> 00:59:38,150 ასე სიტყვასიტყვით თქვენი ქეშირების ფუნქცია, როგორიცაა Google "ქეშირების ფუნქცია" 1082 00:59:38,150 --> 00:59:40,770 და გადახედეთ cool პირობა. 1083 00:59:40,770 --> 00:59:43,250 თქვენ არ მოსალოდნელია, რომ ავაშენოთ საკუთარი hash ფუნქციები. 1084 00:59:43,250 --> 00:59:46,100 ადამიანები გაატარონ თეზისები ეს ყველაფერი. 1085 00:59:46,100 --> 00:59:50,250 >> ასე რომ არ ინერვიულოთ შესახებ მშენებლობის თქვენი საკუთარი. 1086 00:59:50,250 --> 00:59:53,350 იპოვონ ონლაინ უნდა დაიწყოს. 1087 00:59:53,350 --> 00:59:56,120 ზოგიერთი მათგანი, თქვენ უნდა მანიპულირება ცოტა 1088 00:59:56,120 --> 00:59:59,430 რომ დავრწმუნდეთ, რომ დაბრუნების ტიპის შეესაბამება და whatnot, ასე რომ, წლის დასაწყისში, 1089 00:59:59,430 --> 01:00:02,420 მე გირჩევთ გამოყენებით რაღაც მართლაც ადვილი, რომ შესაძლოა მხოლოდ 1090 01:00:02,420 --> 01:00:04,680 ჰეშები პირველი წერილი. 1091 01:00:04,680 --> 01:00:08,760 და შემდეგ კიდევ გაქვთ, რომ სამუშაო, გაერთიანებული cooler ქეშირების ფუნქცია. 1092 01:00:08,760 --> 01:00:09,260 Mmhmm? 1093 01:00:09,260 --> 01:00:13,020 >> აუდიტორია: თუ ცდილობენ იყოს ან ეფექტური, მაგრამ მხოლოდ უფრო რთული, ისევე როგორც 1094 01:00:13,020 --> 01:00:15,880 >> დინამიკები 1: ასე ცდილობენ, ვფიქრობ, ინტუიციურად მძიმე განახორციელებს 1095 01:00:15,880 --> 01:00:18,310 მაგრამ ძალიან სწრაფად. 1096 01:00:18,310 --> 01:00:20,620 თუმცა, იღებს მეტი სივრცე. 1097 01:00:20,620 --> 01:00:25,270 კიდევ ერთხელ, თქვენ შეუძლია ოპტიმიზაცია, როგორც იმ სხვადასხვა გზები და გზები არსებობს, რომელთა მიზანია: 1098 01:00:25,270 --> 01:00:26,770 აუდიტორია: როგორ ვართ ჩვენ ფასდება ეს? 1099 01:00:26,770 --> 01:00:27,540 ჯერ ეს matter-- 1100 01:00:27,540 --> 01:00:29,164 >> დინამიკები 1: ასე რომ თქვენ ფასდება ნორმალური გზა. 1101 01:00:29,164 --> 01:00:31,330 თქვენ აპირებს ფასდება დიზაინი. 1102 01:00:31,330 --> 01:00:36,020 რომელი გზა, თქვენ გინდათ, რომ დარწმუნდით, რომ იგი როგორც ელეგანტური, როგორც ეს შეიძლება იყოს 1103 01:00:36,020 --> 01:00:38,610 და, როგორც ეფექტური როგორც ეს შეიძლება იყოს. 1104 01:00:38,610 --> 01:00:41,950 მაგრამ თუ თქვენ ცდილობენ ან hash მაგიდა, რადგან იგი მუშაობს, 1105 01:00:41,950 --> 01:00:45,350 ჩვენ კმაყოფილი, რომ. 1106 01:00:45,350 --> 01:00:48,370 და თუ თქვენ იყენებთ რაღაც რომ ჰეშები პირველი წერილი, რომ ჯარიმა, 1107 01:00:48,370 --> 01:00:51,410 როგორც ალბათ, ისევე როგორც დიზაინის ბრძენი. 1108 01:00:51,410 --> 01:00:53,410 ჩვენ ასევე მიაღწია წერტილი ამ სემესტრის 1109 01:00:53,410 --> 01:00:55,340 მე არ ვიცი, თუ ბიჭები noticed-- თუ თქვენ 1110 01:00:55,340 --> 01:00:58,780 pset შეფასება უარი ცოტა იმის გამო, რომ დიზაინი და whatnot, 1111 01:00:58,780 --> 01:00:59,900 ეს შესანიშნავად ჯარიმა. 1112 01:00:59,900 --> 01:01:02,960 ის მიღების წერტილში, სადაც თქვენი პროგრამები უფრო რთული. 1113 01:01:02,960 --> 01:01:04,830 არსებობს სხვა ადგილებში თქვენ შეგიძლიათ გაუმჯობესება. 1114 01:01:04,830 --> 01:01:06,370 >> ასე რომ, ეს ნორმალურია. 1115 01:01:06,370 --> 01:01:08,810 ეს არ არის, რომ თქვენ ვაკეთებთ უარესი თქვენი pset. 1116 01:01:08,810 --> 01:01:11,885 უბრალოდ ჩვენ უფრო რთული თქვენ ახლა. 1117 01:01:11,885 --> 01:01:13,732 ასე რომ ყველას გრძნობენ მას. 1118 01:01:13,732 --> 01:01:14,940 უბრალოდ ფასდება ყველა psets. 1119 01:01:14,940 --> 01:01:16,490 მე ვიცი, რომ ყველას გრძნობენ მას. 1120 01:01:16,490 --> 01:01:19,600 >> ასე არ უნდა გვაღელვებდეს. 1121 01:01:19,600 --> 01:01:23,580 და თუ თქვენ გაქვთ რაიმე შეკითხვები ადრე psets ან გზები შეგიძლიათ გაუმჯობესება, 1122 01:01:23,580 --> 01:01:27,760 ვცდილობ და კომენტარს კონკრეტული ადგილებში, მაგრამ ზოგჯერ გვიან 1123 01:01:27,760 --> 01:01:30,840 და მე დაიღალა. 1124 01:01:30,840 --> 01:01:34,885 არსებობს თუ არა სხვა რამ მონაცემთა სტრუქტურები? 1125 01:01:34,885 --> 01:01:37,510 დარწმუნებული ვარ, რომ თქვენ ბიჭები ნამდვილად არ მინდა ვისაუბრო მათ უქმნით, 1126 01:01:37,510 --> 01:01:42,650 მაგრამ თუ არსებობს, მოხარული ვარ, მეტი მათ, ისევე, როგორც არაფერი 1127 01:01:42,650 --> 01:01:45,580 ლექცია გასულ კვირის ან ბოლო ერთი კვირის განმავლობაში. 1128 01:01:45,580 --> 01:01:51,580 >> მე ვიცი, რომ გასულ კვირას იყო განხილვა, ისე, ჩვენ შეიძლება არ გამოტოვებენ ზოგიერთი მიმოხილვა 1129 01:01:51,580 --> 01:01:54,190 ლექცია. 1130 01:01:54,190 --> 01:01:58,230 ნებისმიერი სხვა კითხვები შემიძლია გითხრათ? 1131 01:01:58,230 --> 01:01:59,350 OK, ყველა უფლება. 1132 01:01:59,350 --> 01:02:02,400 ისე, თქვენ ბიჭები კიდევ 15 წუთით ადრე. 1133 01:02:02,400 --> 01:02:08,370 >> ვიმედოვნებ, რომ ეს ნახევრად სასარგებლო მინიმუმ, და მე ვხედავ, რომ თქვენ ბიჭები მომავალ კვირას, 1134 01:02:08,370 --> 01:02:12,150 ან ხუთშაბათს საათებში. 1135 01:02:12,150 --> 01:02:15,285 არსებობს მოთხოვნები, საჭმლის მომავალ კვირას, ეს რამ? 1136 01:02:15,285 --> 01:02:17,459 იმიტომ დამავიწყდა candy დღეს. 1137 01:02:17,459 --> 01:02:19,750 მე და მოიყვანა candy ბოლო კვირას, მაგრამ ეს იყო Columbus Day, 1138 01:02:19,750 --> 01:02:25,400 ასე იყო, როგორც ექვსი ადამიანი, რომლებიც მას ოთხი ჩანთა Candy თავს. 1139 01:02:25,400 --> 01:02:28,820 მე შეუძლია Starbursts ერთხელ თუ გნებავთ. 1140 01:02:28,820 --> 01:02:29,580 Starbursts? 1141 01:02:29,580 --> 01:02:32,250 OK, ჟღერს. 1142 01:02:32,250 --> 01:02:35,050 აქვს დიდი დღე, ბიჭები. 1143 01:02:35,050 --> 01:02:39,510