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 مجد لك. 14 00:00:33,650 --> 00:00:36,149 وإذا كنت تشعر وكأنك في حاجة قليلا مزيد من المساعدة، الرجاء 15 00:00:36,149 --> 00:00:38,140 لا تتردد في الوصول إلى أي من 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 بعضهم صح التعبير، مثل لPSET سبيلر الخاص بك. 25 00:01:08,690 --> 00:01:11,380 >> سيكون لديك اختيارك بين الجداول التجزئة ومحاولات. 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 وربما قليلا من الجداول التجزئة. 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 فإنه سيكون لديك العروض التي تستخدم برنامج بلدي مع الملاحظات التي نحن 37 00:01:46,400 --> 00:01:50,860 تميل إلى استخدام وكذلك بعض البرامج تمارين، خاصة بالنسبة للأشياء 38 00:01:50,860 --> 00:01:55,250 مثل القوائم المرتبطة وثنائي أكوام الأشجار والعظة. 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: الحق. 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: الحق. 64 00:02:56,278 --> 00:02:57,120 حتى مع arrays-- 65 00:02:57,120 --> 00:02:58,500 >> الجمهور: [غير مسموع]. 66 00:02:58,500 --> 00:03:01,090 >> رئيس 1: مع صفائف، لدينا ما يسمى الوصول العشوائي. 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 لو انها قائمة مرتبطة، لدينا تكرار خلال، أليس كذلك؟ 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 لدينا، 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 >> الجمهور: [غير مسموع]. 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 الذهاب للبحث عن طريق، لديك لتكرار الواقع 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 ونحن نقول، حسنا، هل هذا عقدة تحتوي على عدد 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 >> لذلك علينا أن تكرار الواقع من خلال قائمة مرتبطة لدينا. 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 الجمهور: [غير مسموع]. 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 هذه هي النقطة التي سيكون ل في الواقع تكرار خلال قائمتنا. 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 >> وعلى الرغم من انها ليست فارغة، في حين لا يزال لدينا أشياء في قائمتنا، 126 00:05:50,660 --> 00:05:55,580 تحقق لمعرفة ما إذا كان لديها عقدة عدد نبحث عنه. 127 00:05:55,580 --> 00:05:57,740 العودة الحقيقية. 128 00:05:57,740 --> 00:06:01,070 خلاف ذلك، تحديثه، أليس كذلك؟ 129 00:06:01,070 --> 00:06:04,870 >> إذا كانت فارغة، نخرج لدينا في حين حلقة وعودة كاذبة 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 موافق. 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 ما هي القيمة، وأنت تسير وضعه هنا في الجبهة، موافق؟ 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 ثم إعادة تعيين، ثم تحديث ما يجب أن يشير عقدة جديدة ل. 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 >> ولكن إعادة تعيين الخاص بك مؤشرات بالترتيب الصحيح 172 00:08:45,670 --> 00:08:48,750 ستكون جدا جدا المهم لهذا PSET. 173 00:08:48,750 --> 00:08:53,140 خلاف ذلك، وأنت تسير أن يكون تجزئة جدول أو محاولة أن مجرد ستكون 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 لذلك إدراج هنا، وهذا هو معلق مسبقا. 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 إذا لم ينتهي لافتا إلى شيء آخر، ويحصل على تعيينهم وأنها بخير. 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 هذا هو بالضبط لماذا نحن يكون هذا السهم استرجاع. 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 >> الجمهور: هل لدينا ل تهيئة القادم الجديد إلى NULL أولا، 207 00:10:41,100 --> 00:10:44,240 أو يمكننا فقط تهيئة إلى الرأس؟ 208 00:10:44,240 --> 00:10:48,210 >> رئيس 1: جديد المقبل يجب أن تكون فارغة لبدء 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 لأنه، نعم، نحن تعيين القادم الجديد تلقائيا، 215 00:11:12,210 --> 00:11:15,420 لكنها أكثر تماما مثل الممارسة الجيدة لتهيئة عليه 216 00:11:15,420 --> 00:11:19,270 بهذه الطريقة ومن ثم إعادة تعيين. 217 00:11:19,270 --> 00:11:23,420 >> قوائم موافق، يرتبط ذلك بشكل مضاعف الآن. 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-- نحن ليس لدينا أي رمز لهذا الأمر here-- 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 >> موافق، لذلك الجداول التجزئة. 250 00:13:02,650 --> 00:13:07,070 هذا هو على الارجح الاكثر الشيء المفيد للPSET بك 251 00:13:07,070 --> 00:13:11,090 هنا لأنك ستكون تنفيذ واحدة من هذه، أو المحاولة. 252 00:13:11,090 --> 00:13:12,200 أنا حقا أحب الجداول التجزئة. 253 00:13:12,200 --> 00:13:13,110 انهم رائع. 254 00:13:13,110 --> 00:13:17,080 >> ذلك أساسا ما يحدث هو جدول تجزئة 255 00:13:17,080 --> 00:13:22,050 عندما كنا حقا بحاجة سريعة الإدراج أو الحذف، والبحث. 256 00:13:22,050 --> 00:13:25,010 تلك هي الأشياء التي نحن إعطاء الأولوية في جدول تجزئة. 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 >> لكن في الأساس، كل تجزئة الجدول هو دالة تجزئة 260 00:13:38,330 --> 00:13:47,215 تخبرك التي دلو لوضع كل البيانات الخاصة بك، كل العناصر الخاصة بك في. 261 00:13:47,215 --> 00:13:51,140 وهناك طريقة بسيطة للتفكير في جدول تجزئة هو أنه مجرد دلاء من الأشياء، 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 هذا هو نوع من مثل جدول التجزئة. 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 أيا كان، وهذا هو فعال إنشاء جدول التجزئة. 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 أنا يمكن أن يكون مثل، أوه، أنا أعرف أن عيد ميلاد دانيال هو 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 لذلك أنا ابحث في بلدي أبريل دلو، ومع أي حظ، 276 00:14:33,120 --> 00:14:38,270 وقالت انها سوف تكون واحدة فقط في وجود و كان وقتي المستمر في هذا المعنى، 277 00:14:38,270 --> 00:14:41,230 في حين إذا كان لدي لتبدو من خلال مجموعة كاملة من الناس، 278 00:14:41,230 --> 00:14:43,090 انها سوف يستغرق وقتا أطول من ذلك بكثير. 279 00:14:43,090 --> 00:14:45,830 حتى الجداول التجزئة هي حقا دلاء فقط. 280 00:14:45,830 --> 00:14:48,630 طريقة سهلة للتفكير منهم. 281 00:14:48,630 --> 00:14:52,930 >> ذلك شيء مهم جدا حول جدول تجزئة دالة البعثرة. 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 انها مجرد وسيلة للالبت فيها دلو لك يذهب عنصر كنت في، موافق؟ 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 هناك بعض منها باردة حقا هناك أن تفعل كل أنواع الرياضيات مجنون. 289 00:15:21,140 --> 00:15:25,170 وإذا كنت تريد أن تجعل الخاصة بك المدقق الإملائي بسرعة فائقة، 290 00:15:25,170 --> 00:15:27,620 أنا بالتأكيد ننظر إلى واحد من هؤلاء. 291 00:15:27,620 --> 00:15:32,390 >> ولكن هناك أيضا منها البسيطة، مثل حساب 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 الذي يحدد دلو. 295 00:15:42,230 --> 00:15:45,430 لديهم أيضا تلك السهلة التي هي تماما مثل كل عام وهنا، 296 00:15:45,430 --> 00:15:47,050 جميع المبيت هنا. 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-- انها كل وظيفة تجزئة هي. 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 >> بحيث يكون لديك بعض البعثرة هذا مجرد الحرف الأول من سلسلة الخاص بك ناقص A، 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 حجم التجزئة الخاصة بك table-- كم دلاء هناك. 306 00:16:24,110 --> 00:16:25,860 مع العديد من هذه وظائف التجزئة، وانهم 307 00:16:25,860 --> 00:16:31,630 ستكون عودته القيم التي قد تكون أعلى بكثير من عدد من الدلاء 308 00:16:31,630 --> 00:16:33,610 أن لديك بالفعل في جدول التجزئة الخاصة بك، 309 00:16:33,610 --> 00:16:37,240 لذلك تحتاج إلى جعل تأكد وزارة الدفاع من قبل هؤلاء. 310 00:16:37,240 --> 00:16:42,190 خلاف ذلك، انها سوف أقول، أوه، ينبغي أن يكون في دلو 5000 311 00:16:42,190 --> 00:16:46,040 ولكن لديك فقط 30 دلاء في جدول التجزئة الخاص بك. 312 00:16:46,040 --> 00:16:49,360 وبطبيعة الحال، نحن جميعا نعرف هذا سوف ينتج عنه بعض الأخطاء مجنون. 313 00:16:49,360 --> 00:16:52,870 لذلك تأكد من أن وزارة الدفاع من قبل حجم جدول التجزئة الخاص بك. 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 ذلك التصادم. 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 موافق. 327 00:17:22,829 --> 00:17:24,480 >> ذلك التصادم. 328 00:17:24,480 --> 00:17:29,270 في الأساس، وكما قلت في وقت سابق، في أفضل السيناريوهات، 329 00:17:29,270 --> 00:17:32,040 أي دلو انني اتطلع الى هو ستكون لدينا شيء واحد، 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 من الدلاء، ونحن في طريقنا لديك اصطدام حيث في نهاية المطاف شيئا 334 00:17:48,700 --> 00:17:54,210 وستكون لدينا في نهاية المطاف في دلو التي لديها بالفعل عنصر. 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 انها سوف تحتوي على قائمة مرتبطة العناصر التي تم تجزئته إلى ذلك. 347 00:18:24,020 --> 00:18:27,588 حسنا، هل الجميع نوع من الحصول على هذه الفكرة؟ 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 وتجزئته إلى أن دلو، أليس كذلك؟ 352 00:18:38,465 --> 00:18:42,260 353 00:18:42,260 --> 00:18:50,500 >> الخطية حتى بالتدقيق هو أساسا هذا idea-- 354 00:18:50,500 --> 00:18:52,300 انها طريقة واحدة للتعامل مع حادث تصادم. 355 00:18:52,300 --> 00:18:58,010 ما يمكنك القيام به هو إذا، في هذا الحالة، تم تجزئته إلى التوت 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 called-- وترتبط يسمى تسلسل القائمة. 361 00:19:12,280 --> 00:19:20,510 >> لذلك هذه الفكرة تعمل إذا جدول التجزئة الخاص بك كنت تعتقد 362 00:19:20,510 --> 00:19:24,150 هو أكبر بكثير من مجموعة البيانات الخاصة بك أو إذا كنت 363 00:19:24,150 --> 00:19:28,870 تريد أن تجرب وتقليل تسلسل حتى انه من الضروري على الاطلاق. 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 لأنك لن ينتهي باستخدام وظيفة التجزئة الخاص بك، والحصول على نقطة، 367 00:19:42,200 --> 00:19:46,400 كنت الخطي وصولا الى تحقيق في مكان ما هو متاح. 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 يذهب إلى إدخال عنصر في البعثرة الجدول الخاص بك الآن، أليس كذلك؟ 372 00:19:59,820 --> 00:20:05,640 والآن عندما تذهب ومحاولة إيجاد التوت مرة أخرى، وأنت تسير إلى تجزئة ذلك، 373 00:20:05,640 --> 00:20:07,742 وانها سوف يقولون، أوه، أن ننظر في دلو 1، 374 00:20:07,742 --> 00:20:09,700 وانها لن تكون في دلو 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 نحن ذاهبون إلى القول بأن تسلسل هو ما تريد القيام به. 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 ولكن تسلسل هو في الأساس أن كل دلو في جدول التجزئة الخاصة بك 381 00:20:33,560 --> 00:20:36,120 هو مجرد قائمة مرتبطة. 382 00:20:36,120 --> 00:20:39,660 >> لذلك بطريقة أخرى، أو أكثر تقنية الطريقة، للتفكير في جدول تجزئة 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 >> الجمهور: ذلك جدول التجزئة لديها حجم محدد سلفا، 388 00:20:57,680 --> 00:20:58,980 مثل [غير مسموع] من الدلاء؟ 389 00:20:58,980 --> 00:20:59,220 >> رئيس 1: الحق. 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 يمكن أن يكون بارد جدا لنرى ماذا سيحدث 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 هذا هو تسلسل منفصلة حيث كنت ربطت القوائم الموجودة في كل مجموعة. 398 00:21:19,350 --> 00:21:22,850 وهذا يعني جدول التجزئة الخاصة بك سوف يكون بالضبط حجم 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 >> لذلك الجميع موافق هناك؟ 404 00:21:38,780 --> 00:21:39,801 حسنا. 405 00:21:39,801 --> 00:21:40,300 آه. 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 >> موافق ونحن في طريقنا للذهاب إلى محاولات، التي هي مجنون قليلا. 410 00:21:52,060 --> 00:21:53,140 أحب الجداول التجزئة. 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 الجمهور: أنا مجرد الايماء أننا لم نذهب أكثر من ذلك. 418 00:22:08,460 --> 00:22:09,626 رئيس 1: نحن لا نذهب أكثر من ذلك. 419 00:22:09,626 --> 00:22:13,100 حسنا، نحن حقا للذهاب أكثر من ذلك الآن هو ما نقوله. 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 والآن نحن نبحث أكثر في حرفا، أليس كذلك؟ 428 00:22:32,270 --> 00:22:38,380 لذلك لدينا أكثر من هنا ماكسويل ومندل. 429 00:22:38,380 --> 00:22:47,840 ذلك أساسا try-- وسيلة للتفكير في هذا هو أن كل مستوى هنا 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 لذلك هذا هو العقدة الجذر الخاص بك هنا، أليس كذلك؟ 433 00:22:55,790 --> 00:23:01,980 هذا له جميع الشخصيات من الأبجدية لبداية كل كلمة. 434 00:23:01,980 --> 00:23:06,480 >> وما تريد القيام به هو يقول، حسنا، لدينا بعض M كلمة. 435 00:23:06,480 --> 00:23:10,590 ونحن في طريقنا للبحث عن ماكسويل، لذلك نذهب إلى M. و 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 طالما هناك كلمة لديه باء الرسالة الثانية، 439 00:23:19,460 --> 00:23:24,630 سيكون لها مؤشر الذهاب إلى بعض مجموعة المقبلة. 440 00:23:24,630 --> 00:23:29,290 >> هناك ربما ليس كلمة النائب شيء، 441 00:23:29,290 --> 00:23:32,980 حتى في موقف P في هذا مجموعة، فإنه سيكون مجرد فارغة. 442 00:23:32,980 --> 00:23:38,840 فإنها يمكن أن تقول، حسنا، ليس هناك كلمة الذي يليه M P، موافق؟ 443 00:23:38,840 --> 00:23:43,100 لذلك إذا كنا نفكر في ذلك، كل واحدة من هذه الأشياء الصغيرة 444 00:23:43,100 --> 00:23:47,990 هو في الواقع واحدة من هذه صفائف كبيرة من A إلى Z. 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 هذه هي باردة حقا لPSET الخاص بك، لكنها لا يستغرق الكثير من الذاكرة، 454 00:24:29,470 --> 00:24:30,290 حتى تتمكن مقايضة. 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 لقد تخلص من كل أحرف فارغة، ولكن بعد 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 كنت في حاجة إلى أحرف فارغة للسماح لل يمكنك معرفة ما إذا كان هناك ليست كلمة هناك. 465 00:24:50,460 --> 00:24:52,040 لم بن لديك شيء تريد؟ 466 00:24:52,040 --> 00:24:52,540 موافق. 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 >> حسنا، هذا هو الشيء نفسه. 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 >> لذلك لدينا بعض منطقي أن يمثل ما إذا كانت الكلمة فعلا 474 00:25:17,000 --> 00:25:23,530 موجود في هذا المكان، ثم لدينا بعض مجموعة here-- أو بالأحرى، 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 أن يسمح للالفواصل العليا. 481 00:25:43,240 --> 00:25:46,010 ولهذا السبب واحد إضافي. 482 00:25:46,010 --> 00:25:50,500 سيكون لديك أيضا في بعض حالات فاصل باطل 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 إذا كنت مهتما، وتحقق من فيديو كيفن على 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 لذلك لدينا واحدة عظمى بسيط هنا لديه عبارة "الخفافيش" و "زووم" في نفوسهم. 490 00:26:16,230 --> 00:26:18,920 وكما نرى هنا، هذه مساحة صغيرة هنا 491 00:26:18,920 --> 00:26:22,560 يمثل منطقي أن لدينا يقول: نعم، وهذا هو كلمة واحدة. 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 في هذه المجموعة، وذلك لأن أ و ب. 497 00:26:47,840 --> 00:26:51,340 ذلك ما يقرب من ثانية واحدة. 498 00:26:51,340 --> 00:26:58,820 >> وتقول، حسنا، بارد، اتبع ذلك في مجموعة المقبلة، لأنه إذا نحن نتذكر، 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 أعدك إذا ذهبت ساعة غدا باختصار مرة أخرى، 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 إذا كان لدينا مثلا، أو ج د أو أي حرف آخر، 512 00:27:40,240 --> 00:27:45,810 نحن بحاجة إلى الخريطة التي تعود إلى مؤشر لدينا مجموعة وأن يتوافق. 513 00:27:45,810 --> 00:27:56,930 ولذا فإننا سوف تتخذ مثل rchar ونحن فقط طرح قبالة لتعيين ذلك إلى 0-25. 514 00:27:56,930 --> 00:27:58,728 الجميع جيدا كيف نحن خريطة شخصياتنا؟ 515 00:27:58,728 --> 00:28:00,440 موافق. 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 >> ونحن نقول، حسنا، نحن الآن بحاجة الى معرفة ما اذا كان هو هنا. 520 00:28:15,500 --> 00:28:18,590 هي باطلة أو أنها لا التحرك إلى الأمام في الواقع؟ 521 00:28:18,590 --> 00:28:21,880 لذلك يتحرك في الواقع إلى الأمام في هذه المجموعة. 522 00:28:21,880 --> 00:28:24,570 ونحن نقول، حسنا، t هي الرسالة الأخيرة لدينا. 523 00:28:24,570 --> 00:28:27,580 لذلك نحن نذهب إلى ر في المؤشر. 524 00:28:27,580 --> 00:28:30,120 ثم ننتقل إلى الأمام لأن هناك واحد آخر. 525 00:28:30,120 --> 00:28:38,340 وهذا واحد يقول أساسا أن، نعم، تقول أن هناك كلمة here-- 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: رقم 532 00:28:48,243 --> 00:28:55,360 لذلك إذا نظرنا إلى الوراء في موقعنا اعلان هنا، هو منطقي، 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-- ب، لذلك، ر. 551 00:30:08,260 --> 00:30:11,820 نحن في هذه المجموعة، و نذهب للبحث عن ح. 552 00:30:11,820 --> 00:30:15,220 >> في هذه الحالة، عندما كنا نظرة على المؤشر في ساعة، 553 00:30:15,220 --> 00:30:17,890 انها لافتا إلى NULL، موافق؟ 554 00:30:17,890 --> 00:30:20,780 لذلك ما لم يكن صراحة مشيرا إلى مجموعة أخرى، 555 00:30:20,780 --> 00:30:25,000 أنت تفترض أن كل المؤشرات في هذه المجموعة يتم الإشارة إلى قيمة خالية. 556 00:30:25,000 --> 00:30:28,270 حتى في هذه الحالة، يشير ح إلى قيمة خالية لذلك نحن لا نستطيع أن نفعل أي شيء، 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 هكذا بنفس الطريقة التي بدأنا مع قائمة مرتبطة دينا، ونحن نبدأ في الجذر. 563 00:30:47,810 --> 00:30:50,600 عندما تكون في شك، تبدأ في جذر هذه الأمور. 564 00:30:50,600 --> 00:30:53,330 >> ونحن سوف نقول، حسنا، ض. 565 00:30:53,330 --> 00:30:55,650 يوجد ض في هذا، ويفعل. 566 00:30:55,650 --> 00:30:58,370 لذلك كنت الانتقال إلى مجموعة الخاص بك المقبل، موافق؟ 567 00:30:58,370 --> 00:31:01,482 ثم على واحد القادم، نقول، حسنا، لا يا موجودة؟ 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 >> وهلم جرا لدينا واحدة المقبل، قلنا، موافق، "حديقة الحيوان" موجود بالفعل هنا. 571 00:31:08,670 --> 00:31:12,440 تم تعيين كل ما تحتاج إلى القيام بذلك على قدم المساواة إلى true، أن هناك كلمة هناك. 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 >> الجمهور: حتى ذلك الحين يفعل ذلك يعني أن "با" هي كلمة أيضا؟ 576 00:31:22,550 --> 00:31:24,120 >> رئيس 1: رقم 577 00:31:24,120 --> 00:31:28,870 حتى في هذه الحالة، "با" سوف نحصل هنا، لقلنا أنها ليست كلمة، 578 00:31:28,870 --> 00:31:31,590 وسيكون لا يزال هناك. 579 00:31:31,590 --> 00:31:32,822 موافق؟ 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 عندما تذهب إلى check-- مثل، ويقول لك أريد أن أقول، 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 كنت ابدا الذهاب الى التحرك خلال لم لأن ذلك ليس 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 إلا أننا نرى أننا عندما محاولة الحصول على ح، فإنه لا وجود لها. 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 ثم ما كنا نفعله هو مجرد تعيين ح عنصر من هذه المجموعة لافتا إلى هذا. 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 كنت من أي وقت مضى فقط ستكون لدينا ل جعل خمسة في معظم المقارنات، موافق؟ 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 لديك بعض من كلمة علامة ثم لديك 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 تكون مهلة صغيرة لطيفة محاولات من هناك. 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 ذهبت قطف التفاح في نهاية هذا الاسبوع، ويا إلهي، كانت جميلة. 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 انها مجرد بعض عقدة، و يشير إلى مجموعة من العقد الأخرى. 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 لذلك الجذر هو كل ما هو في أعلى جدا. 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 ولكن بالنسبة لأشجار، فإننا نميل إلى أشير إلى أنها جذورها. 654 00:35:28,750 --> 00:35:32,820 >> أي شيء في أسفل here-- في جدا، bottom-- جدا 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 كل ما هو خطوة واحدة أدناه العقدة في السؤال، موافق؟ 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 >> الجمهور: ماكس اثنين من الأوراق. 673 00:36:32,770 --> 00:36:33,478 >> رئيس 1: الحق. 674 00:36:33,478 --> 00:36:34,640 حتى أقصى اثنين من الأوراق. 675 00:36:34,640 --> 00:36:39,730 حتى في هذه واحدة من قبل، كان لدينا هذا واحد أن كان ثلاثة، ولكن في شجرة ثنائية، 676 00:36:39,730 --> 00:36:45,000 لديك اثنين كحد أقصى أطفال لكل من الوالدين، أليس كذلك؟ 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 >> حتى شجرة ثنائية سيكون كل شيء على the-- هذا هو واحد لا sorted-- 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 اذا لاحظنا، كل شيء على الحق هنا هو أكبر than-- 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 >> حتى إذا كان الجذر الخاص بك هو 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، مداخن. 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، مداخن ذلك. 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 >> موافق، لذلك معظمنا، كما أعتقد، تناول الطعام في المطاعم halls-- 723 00:39:10,400 --> 00:39:13,100 بقدر ما قد لا يروق ل. 724 00:39:13,100 --> 00:39:16,900 ولكن من الواضح، يمكنك التفكير في كومة حرفيا تماما كما كومة من الصواني 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 something-- السمة أن نسميها 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 >> الجمهور: الماضي في، أولا خارج. 731 00:39:30,650 --> 00:39:32,250 >> رئيس 1: الحق، وتستمر في، لأول مرة. 732 00:39:32,250 --> 00:39:36,585 حتى لو كنا نعرف، إذا نحن تكديس الأشياء يصل، وأسهل شيء لانتزاع off-- 733 00:39:36,585 --> 00:39:39,570 وربما الشيء الوحيد الذي يمكن انتزاع حالا إذا لدينا هو كومة كبيرة enough-- 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 ستكون أول الشيء الذي نحن انصرف، موافق؟ 738 00:39:51,160 --> 00:39:56,324 >> ذلك ما لدينا هنا هو البنية typedef وآخر. 739 00:39:56,324 --> 00:39:58,740 هذا هو في الحقيقة مجرد مثل تحطم دورة في بنية البيانات، 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 بعد ذلك بنية أخرى. 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 فإنه يسمح لك لأقول، حسنا، أنا في القدرات؟ 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 هو حتى تعرف ما لك يمكن أن تتخذ في الواقع قبالة. 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 >> لذلك عندما كنت تقوم بإنشاء حملة وظيفة، أول شيء عليك فعله هو يقول، موافق، 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 ومن ثم التحقق من وجود أحدث فارغة، 770 00:41:44,610 --> 00:41:47,950 ولكن أسهل بكثير شيء هو مجرد أن نقول، حسنا، تتبع الحجم. 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 >> حتى لو كنا في محاولة لموسيقى البوب شيء من المكدس، 777 00:42:12,730 --> 00:42:16,072 ما قد يكون أول شيء أننا نريد أن تحقق ل؟ 778 00:42:16,072 --> 00:42:18,030 كنت تحاول اتخاذ شيء من الكدسة. 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 >> الجمهور: [غير مسموع]. 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، موافق؟ 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 حجم ثم أخذ تشغيله، ونتف ذلك 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 ونحن لدينا فقط إنقاص حجم ثم يعود الحجم. 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-- موافق، 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 مع أكوام، في أي وقت تحتاج لتتبع شيئا 815 00:44:15,780 --> 00:44:20,456 وأضاف في الآونة الأخيرة هو عندما كنت تريد الذهاب الى استخدام المكدس. 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 أشعر أنني يجب أن يكون مجرد أرنب الفيديو 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 أولا للخروج، يخرج أولا هو أولا في، انتهت الأولى. 837 00:45:30,090 --> 00:45:33,400 لذلك هذا هو المكان مهما كنت وضعت على الأول هو الخاص بك الأكثر أهمية. 838 00:45:33,400 --> 00:45:35,540 حتى إذا كنت في انتظار في line-- يمكن لك 839 00:45:35,540 --> 00:45:39,130 تخيل لو كنت ذهبت ل يذهب للحصول على اي فون الجديد 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 >> حتى يخرج أولا، ونحن جميعا على دراية جدا مع في العالم الحقيقي هنا، 843 00:45:49,800 --> 00:45:54,930 وهذا كله لا علاقة له في الواقع نوع من إعادة هذا الخط كله 844 00:45:54,930 --> 00:45:56,900 ويصطفون هيكل. 845 00:45:56,900 --> 00:46:02,390 حتى حين مع مكدس، لدينا دفعة والبوب. 846 00:46:02,390 --> 00:46:06,440 مع طابور، لدينا إدراج بقائمة الانتظار وdequeue. 847 00:46:06,440 --> 00:46:10,910 ذلك يعني أساسا إدراج بقائمة الانتظار وضعه على ظهره، 848 00:46:10,910 --> 00:46:13,680 وسائل dequeue تأخذ الخروج من الجبهة. 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 هذا هو نفس هيكل كومة. 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 كل الحق، لذلك اذا لم نفعل إدراج بقائمة الانتظار. 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 تحتاج إلى التحقق لاغية. 866 00:47:04,760 --> 00:47:08,330 مع أي من هذه المداخن والطوابير، تحتاج 867 00:47:08,330 --> 00:47:13,420 لمعرفة ما إذا كان هناك مساحة لأننا التعامل مع مجموعة وحجم ثابت، 868 00:47:13,420 --> 00:47:16,030 كما نرى here-- 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 موافق. 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: رقم 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 >> حسنا، هناك شيء واحد في هذا الحالة، إذا هو في رؤوسنا 0 896 00:48:42,720 --> 00:48:45,270 ثم نحن فقط يمكن إضافته في الحجم. 897 00:48:45,270 --> 00:48:51,020 لكنه يحصل اصعب قليلا لأن في الواقع، انهم 898 00:48:51,020 --> 00:48:52,840 لم يكن لديك شريحة لهذا، لذلك انا ذاهب 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 >> حسنا، واحد thing-- أوه، هذا هو الطباشير رهيب. 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 موافق، لذلك نحن ذاهبون ل يقول رئيس هو هنا. 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 الذهاب إلى التحرك بهذه الطريقة و ثم حلقة حول العودة، موافق؟ 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 إذا كان لنا أن وزارة الدفاع بنسبة 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 مداخن، لا يمكنك أن تفعل هذا. 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 لأن كل شيء سوف تضاف في هذا الاتجاه اليساري، في هذه الحالة، 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 موافق. 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 ثم نحن لدينا إنقاص حجم ويعود عنصر. 968 00:53:18,390 --> 00:53:21,000 969 00:53:21,000 --> 00:53:26,250 >> هناك أكثر واقعية بكثير كود في 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 لا بأس. 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 >> ولكن هذا هو في الأساس الخاص بك تحطم دورة في هياكل البيانات. 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 الجمهور: موافق. 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 الجمهور: نعم. 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 حتى في هذا المثال هنا، وكان هذا مجموعة نحن نبحث في، موافق؟ 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 >> الجمهور: ما هو الحد الأقصى؟ 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 >> الجمهور: [غير مسموع] قبل نعود العنصر؟ 1009 00:55:39,210 --> 00:55:46,270 >> رئيس 1: لذلك نحن نقل رئاسة أو العودة لحظة؟ 1010 00:55:46,270 --> 00:55:52,680 حتى إذا انتقلنا احد، إنقاص حجم؟ 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 >> الجمهور: موافق، لأنه في هذه نقطة، وكان رئيس في 0، 1018 00:56:13,270 --> 00:56:18,452 ثم تريد العودة مؤشر 0 ثم جعل رئيس 1؟ 1019 00:56:18,452 --> 00:56:19,870 >> رئيس 1: الحق. 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 ولكن اعتقد انها صالحة تماما ل يقول، موافق، وتخزين هذه element-- أيا كان 1023 00:56:35,470 --> 00:56:40,759 عنصر رئيس في is-- إنقاص بك الحجم، وتحرك رأسك فوق، وعودة 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 موافق. 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-- 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 ونحن نميل حقا إلى التأكيد، خاصة في سياق مقدمة. 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 سوف يطلب منك تنفيذ دفعة أو تنفيذ البوب ​​أو إدراج بقائمة الانتظار و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 >> الجمهور: حسنا، حتى تلك التي هي نحن من المفترض أن تستخدم في 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، لديك الخاص بك اختيار يحاول أو الجداول التجزئة. 1065 00:58:47,779 --> 00:58:49,570 بعض الناس سيحاولون واستخدام الفلاتر ازهر، 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 ولكن لديك اختيارك بين جدول تجزئة والمحاولة. 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 >> الجمهور: قلت قبل ذلك يمكننا استخدام وظائف التجزئة الأخرى، 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 هكذا حرفيا عن وظيفة التجزئة الخاصة بك، مثل جوجل "وظيفة تجزئة" 1082 00:59:38,150 --> 00:59:40,770 وابحث عن بعض منها باردة. 1083 00:59:40,770 --> 00:59:43,250 لا يتوقع منك أن بناء وظائف التجزئة الخاصة بك. 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 لجعل أنواع الإرجاع من تطابق ما يصل وغيرها، وذلك في البداية، 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 ثم بمجرد الانتهاء من ذلك العمل، دمج وظيفة تجزئة برودة. 1092 01:00:08,760 --> 01:00:09,260 Mmhmm؟ 1093 01:00:09,260 --> 01:00:13,020 >> الجمهور: هل تكون المحاولة أو كفاءة ولكن فقط يصعب، like-- 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 ولكن إذا اخترت المحاولة أو التجزئة الجدول، طالما أنه يعمل، 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 نحن أيضا الوصول نقطة في هذا semester-- 1109 01:00:53,410 --> 01:00:55,340 أنا لا أعرف ما إذا كنت الرجال noticed-- إذا كنت 1110 01:00:55,340 --> 01:00:58,780 تنخفض درجات PSET قليلا بسبب التصميم وغيرها، 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 حسنا، كل الحق. 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 لأنني نسيت الحلوى اليوم. 1137 01:02:17,459 --> 01:02:19,750 واحضرت الحلوى الأخيرة الأسبوع، ولكنه كان يوم كولومبوس، 1138 01:02:19,750 --> 01:02:25,400 حيث كانت هناك مثل ستة أشخاص وكان أربعة أكياس من الحلوى لأنفسهم. 1139 01:02:25,400 --> 01:02:28,820 أنا يمكن أن يجلب الانفجارات النجمية مرة أخرى إذا أردت. 1140 01:02:28,820 --> 01:02:29,580 النجمية؟ 1141 01:02:29,580 --> 01:02:32,250 حسنا، يبدو جيدا. 1142 01:02:32,250 --> 01:02:35,050 لقد يوم عظيم، والرجال. 1143 01:02:35,050 --> 01:02:39,510