1 00:00:00,000 --> 00:00:03,423 >> [موسیقی] 2 00:00:03,423 --> 00:00:05,380 3 00:00:05,380 --> 00:00:08,210 >> ANDI PENG: به هفته 6 از بخش خوش آمدید. 4 00:00:08,210 --> 00:00:11,620 ما از استاندارد ما منحرف شده زمان بخش از سه شنبه 5 00:00:11,620 --> 00:00:14,130 بعد از ظهر به این یکشنبه صبح دوست داشتنی. 6 00:00:14,130 --> 00:00:17,330 با تشکر از شما برای هر کس که من پیوست امروز، اما به طور جدی، 7 00:00:17,330 --> 00:00:18,170 دور از تشویق. 8 00:00:18,170 --> 00:00:20,600 >> که یک تلاش بسیار بزرگ است. 9 00:00:20,600 --> 00:00:23,600 من تقریبا حتی آن را نمی در زمان، اما آن خوب بود. 10 00:00:23,600 --> 00:00:27,520 بنابراین من می دانم که همه شما فقط آن را به مسابقه ساخته شده است. 11 00:00:27,520 --> 00:00:30,370 اول از همه، به استقبال در سمت تلنگر از آن. 12 00:00:30,370 --> 00:00:32,917 >> در مرحله دوم، ما در مورد آن صحبت کنید. 13 00:00:32,917 --> 00:00:34,000 ما در مورد مسابقه صحبت کنید. 14 00:00:34,000 --> 00:00:35,700 ما در مورد چگونگی صحبت شما در حال انجام در کلاس. 15 00:00:35,700 --> 00:00:36,550 خوب میشی. 16 00:00:36,550 --> 00:00:39,080 من خود را برای آزمونها شما در پایان از اینجا، 17 00:00:39,080 --> 00:00:42,120 بنابراین اگر شما می خواهید را به بچه ها یک در آن نگاه کنید، کاملا خوب است. 18 00:00:42,120 --> 00:00:46,590 >> بنابراین به سرعت قبل از ما شروع، دستور کار امروز به شرح زیر. 19 00:00:46,590 --> 00:00:48,430 همانطور که می بینید، ما شلیک اساسا سریع 20 00:00:48,430 --> 00:00:52,120 از طریق یک دسته کامل از ساختمان داده واقعا، واقعا، واقعا به سرعت. 21 00:00:52,120 --> 00:00:54,380 بنابراین به عنوان مثل، آن را نمی خواهد امروز فوق العاده تعاملی. 22 00:00:54,380 --> 00:00:59,620 آن را فقط می شود من فریاد نوع چیزهایی که شما، و اگر من شما را گیج، 23 00:00:59,620 --> 00:01:02,680 اگر من بیش از حد سریع رفتن، من می دانم. 24 00:01:02,680 --> 00:01:05,200 آنها داده های مختلف هستید فقط سازه، و به عنوان بخشی 25 00:01:05,200 --> 00:01:07,070 از pset خود را برای این هفته آینده، شما 26 00:01:07,070 --> 00:01:10,340 خواسته می شود برای اجرای یکی از آنها، شاید دو نفر از دو نفر از آنها them-- 27 00:01:10,340 --> 00:01:12,319 در pset خود را. 28 00:01:12,319 --> 00:01:14,610 خوب، پس من فقط رفتن به با برخی از اطلاعیه شروع می شود. 29 00:01:14,610 --> 00:01:19,070 ما بیش از پشته و صف در رفتن عمق از آنچه که ما قبل از مسابقه بود. 30 00:01:19,070 --> 00:01:20,990 توضیح خواهیم مرتبط فهرست دوباره، یک بار دیگر، 31 00:01:20,990 --> 00:01:23,899 بیشتر در عمق از آنچه ما قبل از مسابقه بود. 32 00:01:23,899 --> 00:01:26,440 و سپس ما در مورد هش صحبت جداول، درختان و تلاش می کند، که 33 00:01:26,440 --> 00:01:28,890 همه بسیار لازم برای pset خود را. 34 00:01:28,890 --> 00:01:32,925 و سپس ما را بیش از برخی از رفتن راهنمایی های مفید برای pset5. 35 00:01:32,925 --> 00:01:37,360 >> خوب، پس امتحان 0. 36 00:01:37,360 --> 00:01:41,090 متوسط ​​58٪ بود. 37 00:01:41,090 --> 00:01:45,370 آن بسیار کم بود، و بنابراین شما بچه ها همه خیلی، خیلی خوب بود بر اساس 38 00:01:45,370 --> 00:01:46,510 با آن. 39 00:01:46,510 --> 00:01:49,970 >> بسیار زیبا، قانون این است اگر شما در یک انحراف معیار از میانگین 40 00:01:49,970 --> 00:01:52,990 به ویژه از ما در کمتر هستید بخش راحت، شما کاملا خوب است. 41 00:01:52,990 --> 00:01:54,120 شما در مسیر. 42 00:01:54,120 --> 00:01:55,190 زندگی خوب است. 43 00:01:55,190 --> 00:01:58,952 >> من می دانم که آن را ترسناک به فکر می کنم که من مثل یک٪ 40 در این مسابقه است. 44 00:01:58,952 --> 00:02:00,160 من قصد دارم به شکست این کلاس است. 45 00:02:00,160 --> 00:02:02,243 من به شما قول، شما نه رفتن به شکست کلاس. 46 00:02:02,243 --> 00:02:03,680 شما کاملا خوب است. 47 00:02:03,680 --> 00:02:06,850 >> برای کسانی از شما که کردم بیش از میانگین، قابل توجه، قابل توجه، 48 00:02:06,850 --> 00:02:08,780 مانند، به طور جدی انجام می شود. 49 00:02:08,780 --> 00:02:09,689 من آنها را با من داشته باشند. 50 00:02:09,689 --> 00:02:11,730 در صورت تمایل به دریافت آنها آمده در پایان بخش. 51 00:02:11,730 --> 00:02:14,520 اجازه دهید من می دانم اگر شما هر گونه مسائل، سوالات با آنها. 52 00:02:14,520 --> 00:02:17,204 اگر ما تا نمره خود را اشتباه است، به ما اطلاع دهید. 53 00:02:17,204 --> 00:02:21,240 >> خوب، پس pset5، این است که واقعا هفته عجیب و غریب برای ییل در مفهوم 54 00:02:21,240 --> 00:02:24,240 که pset ما است که به علت روز چهارشنبه در ظهر از جمله 55 00:02:24,240 --> 00:02:27,317 در اواخر روز، به طوری که در واقع از لحاظ نظری به دلیل روز سه شنبه در ظهر. 56 00:02:27,317 --> 00:02:29,150 احتمالا هیچ کس به پایان رسید در روز سه شنبه در ظهر. 57 00:02:29,150 --> 00:02:30,830 این کاملا خوب است. 58 00:02:30,830 --> 00:02:33,700 ما در حال رفتن به ساعات اداری امشب و همچنین دوشنبه شب. 59 00:02:33,700 --> 00:02:36,810 و همه بخش های این هفته در واقع به کارگاه تبدیل شود، 60 00:02:36,810 --> 00:02:38,800 بنابراین احساس رایگان به پاپ در هر بخش شما می خواهید، 61 00:02:38,800 --> 00:02:42,810 و آنها خواهید بود نوع مینی pset کارگاه های آموزشی برای کمک در که. 62 00:02:42,810 --> 00:02:45,620 بنابراین به عنوان مثل، این بخش تنها که در آن ما مواد آموزشی. 63 00:02:45,620 --> 00:02:49,220 همه بخش های دیگر تمرکز خواهد به طور انحصاری در کمک برای pset. 64 00:02:49,220 --> 00:02:50,146 آره؟ 65 00:02:50,146 --> 00:02:52,000 >> رسید که در آن ساعت اداری است؟ 66 00:02:52,000 --> 00:02:56,120 >> ANDI PENG: ساعات اداری tonight-- آه، سوال خوب است. 67 00:02:56,120 --> 00:03:00,580 من فکر می کنم امشب ساعات اداری در ای آبی سیر یا در ویکیانبار است. 68 00:03:00,580 --> 00:03:02,984 اگر شما بررسی آنلاین CS50 و شما را به ساعات اداری بروید، 69 00:03:02,984 --> 00:03:05,650 باید یک برنامه وجود داشته باشد که شما که در آن همه از آنها می گوید. 70 00:03:05,650 --> 00:03:07,954 >> من هم می دانم که امشب یا فردا ای آبی سیر است، 71 00:03:07,954 --> 00:03:10,120 و من فکر می کنم ما ممکن است عوام برای شب دیگر. 72 00:03:10,120 --> 00:03:11,020 مطمئن نیستم. 73 00:03:11,020 --> 00:03:11,700 سوال خوبی بود. 74 00:03:11,700 --> 00:03:14,430 در CS50 را بررسی کنید. 75 00:03:14,430 --> 00:03:18,780 >> سرد، هرگونه سوال در مورد برنامه برای بعدی مانند سه روز؟ 76 00:03:18,780 --> 00:03:21,690 من به شما قول بچه ها مثل دیوید گفت، این بالای تپه می باشد. 77 00:03:21,690 --> 00:03:23,050 شما بچه ها تقریبا وجود دارد. 78 00:03:23,050 --> 00:03:24,644 فقط سه روز است. 79 00:03:24,644 --> 00:03:26,310 وجود دارد، و پس از آن همه ما پایین آمده است. 80 00:03:26,310 --> 00:03:28,114 ما یک استراحت CS-رایگان خوب داشته باشد. 81 00:03:28,114 --> 00:03:28,780 خوش برگشتی. 82 00:03:28,780 --> 00:03:30,779 ما را به شیرجه رفتن وب برنامه نویسی و توسعه، 83 00:03:30,779 --> 00:03:35,150 چیزهایی که بسیار سرگرم کننده است در مقایسه به برخی از psets دیگر. 84 00:03:35,150 --> 00:03:37,974 و آن خواهید بود لرز، و ما بسیاری از سرگرم کننده داشته باشد. 85 00:03:37,974 --> 00:03:38,890 ما آب نبات بیشتر داشته باشد. 86 00:03:38,890 --> 00:03:39,730 با عرض پوزش برای آب نبات. 87 00:03:39,730 --> 00:03:40,945 من آب نبات را فراموش کرده. 88 00:03:40,945 --> 00:03:43,310 این صبح خشن بود. 89 00:03:43,310 --> 00:03:46,340 پس شما بچه ها تقریبا وجود دارد، و من واقعا افتخار از شما بچه ها هستم. 90 00:03:46,340 --> 00:03:49,570 >> خوب، پس پشته. 91 00:03:49,570 --> 00:03:53,331 چه کسی سوال در مورد جک دوست و لباس خود را در مسابقه؟ 92 00:03:53,331 --> 00:03:53,830 هیچکس؟ 93 00:03:53,830 --> 00:03:56,500 باشه خوبه. 94 00:03:56,500 --> 00:04:00,200 >> بنابراین اساسا که شما می توانید تصویر جک، این پسر در اینجا، 95 00:04:00,200 --> 00:04:03,350 دوست دارد به لباس از بالای پشته، 96 00:04:03,350 --> 00:04:05,750 و او آن را قرار می دهد بر روی پشته پس از او انجام داده است. 97 00:04:05,750 --> 00:04:07,600 بنابراین در این روش، او هرگز نظر می رسد گرفتن 98 00:04:07,600 --> 00:04:10,090 به پایین پشته در لباس خود را. 99 00:04:10,090 --> 00:04:12,600 بنابراین این نوع از توصیف ساختار داده های اولیه 100 00:04:12,600 --> 00:04:16,610 چگونه یک پشته پیاده سازی شده است. 101 00:04:16,610 --> 00:04:20,060 >> اساسا، یک فکر پشته به عنوان هر پشته از اشیاء 102 00:04:20,060 --> 00:04:24,900 که در آن شما قرار دادن همه چیز بر روی بالا، و سپس شما آنها را از بالا به پاپ. 103 00:04:24,900 --> 00:04:28,600 بنابراین LIFO مخفف ما دوست است به use-- گذشته در، برای اولین بار بیرون. 104 00:04:28,600 --> 00:04:32,480 و به این ترتیب آخرین به بالای پشته یکی از اولین که بیرون می آید است. 105 00:04:32,480 --> 00:04:34,260 و به این ترتیب دو دوره ما دوست داریم به معاشرت 106 00:04:34,260 --> 00:04:36,190 که با فشار و پاپ هستند نامیده می شود. 107 00:04:36,190 --> 00:04:39,790 هنگامی که شما فشار را بر روی چیزی پشته، و شما آن را به پاپ به بالا. 108 00:04:39,790 --> 00:04:43,422 >> و بنابراین من حدس می زنم این نوع از است مفهوم انتزاعی برای کسانی از شما 109 00:04:43,422 --> 00:04:45,630 که می خواهند به مانند یک دید اجرای واقعی از این 110 00:04:45,630 --> 00:04:46,740 در دنیای واقعی. 111 00:04:46,740 --> 00:04:50,170 مقاله چگونه بسیاری از شما نوشته شده است شاید مانند یک ساعت قبل از آن به علت بود، 112 00:04:50,170 --> 00:04:54,510 و شما به طور تصادفی پاک بزرگ تکه از آن را، مانند به طور تصادفی؟ 113 00:04:54,510 --> 00:04:58,560 و پس از آن چه انجام کنترل ما با استفاده از آن را به عقب؟ 114 00:04:58,560 --> 00:05:00,030 کنترل-Z، آره؟ 115 00:05:00,030 --> 00:05:03,640 کنترل-Z، به طوری که مقدار بار که کنترل-Z زندگی من را نجات داده است، 116 00:05:03,640 --> 00:05:08,820 تا الاغ من را نجات داد، هر زمان است که از طریق یک پشته اجرا شده است. 117 00:05:08,820 --> 00:05:13,020 >> اساسا تمام اطلاعات که در سند ورد خود را، 118 00:05:13,020 --> 00:05:15,080 آن را می شود تحت فشار قرار دادند و ظهور در خواهد شد. 119 00:05:15,080 --> 00:05:19,460 و بنابراین اساسا هر زمان که شما حذف هر چیزی، شما آن را به پاپ به بالا. 120 00:05:19,460 --> 00:05:22,820 و پس از آن اگر شما به آن نیاز پشت در، شما فشار آن است که آنچه کنترل-C می کند. 121 00:05:22,820 --> 00:05:26,770 و تابع جهان خیلی واقعی ساختار داده که چگونه ساده 122 00:05:26,770 --> 00:05:28,690 می توانید با زندگی روزمره شما کمک کند. 123 00:05:28,690 --> 00:05:31,710 124 00:05:31,710 --> 00:05:40,150 >> بنابراین یک ساختار راه این است که ما در واقع یک پشته ایجاد کنید. 125 00:05:40,150 --> 00:05:44,720 ما نوع تعریف ساختار، و پس از آن ما پاسخ آن را در پایین پشته. 126 00:05:44,720 --> 00:05:47,440 و در داخل پشته، ما باید دو پارامتر 127 00:05:47,440 --> 00:05:51,580 که ما اساسا می تواند دستکاری، بنابراین ما باید ظرفیت رشته کاراکتر ستاره. 128 00:05:51,580 --> 00:05:55,150 >> که در آن است انجام ایجاد یک آرایه 129 00:05:55,150 --> 00:05:58,835 که ما می توانیم هر آنچه می خواهید ذخیره که ما می توانیم ظرفیت خود را تعیین می کند. 130 00:05:58,835 --> 00:06:01,990 ظرفیت تنها مقدار حداکثر از آیتم های ما می توانید به این آرایه قرار دهید. 131 00:06:01,990 --> 00:06:05,660 اندازه INT مقابله نگه می دارد که است پیگیری چگونه بسیاری از موارد در حال حاضر 132 00:06:05,660 --> 00:06:07,850 در پشته. 133 00:06:07,850 --> 00:06:11,860 پس ما می توانید آهنگ از، A را نگه دارید، هر دو بزرگ پشته واقعی است، 134 00:06:11,860 --> 00:06:14,850 و، B، چه مقدار از آن پشته ما را پر چون ما نمی خواهیم 135 00:06:14,850 --> 00:06:18,800 به سرریز بیش از آنچه که ظرفیت و توانایی ما است. 136 00:06:18,800 --> 00:06:24,340 >> بنابراین برای مثال، این دوست داشتنی سوال در مسابقه بود. 137 00:06:24,340 --> 00:06:28,160 اساسا چگونه ما فشار بر روی بالای پشته. 138 00:06:28,160 --> 00:06:28,830 خیلی ساده است. 139 00:06:28,830 --> 00:06:30,621 اگر شما در آن نگاه کنید، ما از طریق این راه رفتن. 140 00:06:30,621 --> 00:06:32,640 اگر [نامفهوم] size-- به یاد داشته باشید، هر زمان که شما 141 00:06:32,640 --> 00:06:35,300 می خواهید برای دسترسی به هر پارامتر در داخل یک ساختار، 142 00:06:35,300 --> 00:06:40,320 شما به نام از struct.parameter. 143 00:06:40,320 --> 00:06:42,720 >> در این مورد، است نام پشته ما. 144 00:06:42,720 --> 00:06:46,230 ما می خواهیم برای دسترسی به اندازه از آن، بنابراین ما نمی s.size. 145 00:06:46,230 --> 00:06:50,280 بنابراین تا زمانی که به اندازه است به ظرفیت و یا تا زمانی برابر 146 00:06:50,280 --> 00:06:52,940 آن را به عنوان کمتر از ظرفیت، هم اینجا کار می کنند. 147 00:06:52,940 --> 00:06:57,180 >> شما می خواهید برای دسترسی به داخل پشته خود را، به طوری که s.strings، 148 00:06:57,180 --> 00:07:00,790 و شما در حال رفتن برای قرار دادن که شماره جدید که شما می خواهید برای وارد کردن به وجود دارد. 149 00:07:00,790 --> 00:07:05,030 بیایید می گویند ما می خواهید قرار دادن INT N را بر روی پشته، 150 00:07:05,030 --> 00:07:08,905 ما می تواند s.strings انجام دهید، براکت، s.size برابر با n. 151 00:07:08,905 --> 00:07:11,030 از آنجا که اندازه جایی است که ما در حال حاضر در پشته می باشد 152 00:07:11,030 --> 00:07:14,590 اگر ما قصد داریم به فشار آن را در، ما فقط دسترسی 153 00:07:14,590 --> 00:07:17,370 هر کجا به اندازه است، پری در حال حاضر از پشته، 154 00:07:17,370 --> 00:07:21,729 و ما فشار INT N بر روی آن. 155 00:07:21,729 --> 00:07:24,770 و پس از آن ما می خواهیم مطمئن شوید که ما نیز در حال افزایش اندازه N، 156 00:07:24,770 --> 00:07:27,436 بنابراین ما می توانیم پیگیری ایم یک چیز اضافی به پشته اضافه شده است. 157 00:07:27,436 --> 00:07:29,660 در حال حاضر ما به یک اندازه بیشتر است. 158 00:07:29,660 --> 00:07:33,196 آیا این حس را در اینجا به همه، چگونه منطقی کار می کند؟ 159 00:07:33,196 --> 00:07:34,160 این نوع از سریع بود. 160 00:07:34,160 --> 00:07:39,535 161 00:07:39,535 --> 00:07:42,160 رسید می تواند شما را بیش از s.stringss.strings [s.size] دوباره؟ 162 00:07:42,160 --> 00:07:45,808 ANDI PENG: مطمئنا، پس چه s.size در حال حاضر به ما بدهید؟ 163 00:07:45,808 --> 00:07:47,440 رسید این اندازه فعلی است. 164 00:07:47,440 --> 00:07:50,890 ANDI PENG: دقیقا، به طوری که شاخص در حال حاضر که اندازه ما در، 165 00:07:50,890 --> 00:07:57,780 و بنابراین ما خواهید برای قرار دادن عدد صحیح جدید که ما می خواهیم برای وارد کردن به s.size. 166 00:07:57,780 --> 00:07:58,760 فرقی میکنه؟ 167 00:07:58,760 --> 00:08:01,110 از آنجا که s.strings، همه که است که نام آرایه است. 168 00:08:01,110 --> 00:08:03,510 همه آن است که دسترسی به آرایه در ساختار ما، 169 00:08:03,510 --> 00:08:06,030 و بنابراین اگر ما می خواهیم مشخصات N به آن شاخص، 170 00:08:06,030 --> 00:08:09,651 ما فقط می توانید به آن دسترسی داشته با استفاده از براکت s.size. 171 00:08:09,651 --> 00:08:10,150 خنک. 172 00:08:10,150 --> 00:08:13,580 173 00:08:13,580 --> 00:08:18,916 >> همه حق است، پاپ، من آن را شبه خارج برای شما بچه ها، اما مفهوم مشابه. 174 00:08:18,916 --> 00:08:19,790 فرقی میکنه؟ 175 00:08:19,790 --> 00:08:22,310 اگر حجم بیشتر است از صفر است، پس از آن شما 176 00:08:22,310 --> 00:08:25,350 مطمئن شوید که شما می خواهید به چیزی چون اگر به اندازه نیست 177 00:08:25,350 --> 00:08:27,620 بزرگتر از صفر، سپس شما هیچ چیزی در پشته. 178 00:08:27,620 --> 00:08:29,840 >> بنابراین شما فقط می خواهید برای اجرای این کد، تنها می تواند 179 00:08:29,840 --> 00:08:32,320 پاپ اگر چیزی است که به موسیقی پاپ است. 180 00:08:32,320 --> 00:08:35,830 بنابراین اگر حجم بیشتر است از 0، ما منهای اندازه. 181 00:08:35,830 --> 00:08:40,020 ما به اندازه واحد کم و سپس بازگشت هر آنچه در داخل از آن به دلیل 182 00:08:40,020 --> 00:08:42,710 با ظاهر، ما می خواهیم دسترسی هر ذخیره شده است 183 00:08:42,710 --> 00:08:45,694 در شاخص از بالای پشته. 184 00:08:45,694 --> 00:08:46,610 همه چیز را حس؟ 185 00:08:46,610 --> 00:08:49,693 اگر من شما را هم از این نوشتن، آیا شما بچه ها قادر به آن را بنویسید؟ 186 00:08:49,693 --> 00:08:52,029 187 00:08:52,029 --> 00:08:53,570 خوب، شما بچه ها می توانید با آن بازی کند. 188 00:08:53,570 --> 00:08:55,252 هیچ نگرانی اگر شما آن را دریافت نمی. 189 00:08:55,252 --> 00:08:57,460 ما هم به کد ندارد آن را امروز به دلیل ایم 190 00:08:57,460 --> 00:08:59,959 یک مقدار زیادی از این سازه ها از طریق رفتن، اما در اصل 191 00:08:59,959 --> 00:09:02,214 شبه، بسیار، بسیار شبیه به فشار. 192 00:09:02,214 --> 00:09:03,380 فقط در کنار منطق دنبال کنید. 193 00:09:03,380 --> 00:09:06,092 مطمئن شوید که شما دسترسی به همه ویژگی های ساختار خود را به درستی. 194 00:09:06,092 --> 00:09:06,574 آره؟ 195 00:09:06,574 --> 00:09:09,282 >> مخاطبان: این اسلاید و این که کل آن تا امروز حرکت؟ 196 00:09:09,282 --> 00:09:11,586 ANDI PENG: همیشه، بله. 197 00:09:11,586 --> 00:09:13,710 من قصد دارم به تلاش برای قرار دادن این مثل یک ساعت پس از. 198 00:09:13,710 --> 00:09:16,626 من دیوید را ایمیل، دیوید سعی خواهد کرد به قرار داده و آن را مانند یک ساعت بعد از این. 199 00:09:16,626 --> 00:09:20,040 200 00:09:20,040 --> 00:09:25,470 >> خوب، پس بعد از آن ما را به این دیگر حرکت می کند ساختار داده ها دوست داشتنی به نام یک صف. 201 00:09:25,470 --> 00:09:30,140 همانطور که شما بچه ها در اینجا می توانید ببینید، صف، برای انگلیس در میان ما، 202 00:09:30,140 --> 00:09:32,010 همه آن است که یک خط است. 203 00:09:32,010 --> 00:09:34,680 بنابراین بر خلاف آنچه شما فکر می کنم پشته است، 204 00:09:34,680 --> 00:09:37,750 یک صف دقیقا همان چیزی است منطقی شما فکر می کنم آن است. 205 00:09:37,750 --> 00:09:41,914 آن را توسط قوانین FIFO برگزار شد، که برای اولین بار در سال، از اول. 206 00:09:41,914 --> 00:09:43,705 اگر برای اولین بار است یکی در خط، شما 207 00:09:43,705 --> 00:09:46,230 یکی از اولین که خارج از خط می آید. 208 00:09:46,230 --> 00:09:49,680 >> بنابراین آنچه که ما دوست به این است dequeueing و enqueueing. 209 00:09:49,680 --> 00:09:52,380 اگر ما می خواهیم به اضافه کردن چیزی به صف ما، ما نوبت. 210 00:09:52,380 --> 00:09:55,690 اگر ما می خواهیم به dequeue، و یا چیزی دور، ما dequeue. 211 00:09:55,690 --> 00:10:03,350 >> بنابراین همان معنا که ما نوع هستید ایجاد عناصر با اندازه ثابت که ما 212 00:10:03,350 --> 00:10:06,500 می توانید ذخیره خاص همه چیز، اما ما نیز می توانید 213 00:10:06,500 --> 00:10:10,100 تغییر که در آن ما در حال قرار دادن پارامترهای داخل از آنها 214 00:10:10,100 --> 00:10:13,140 بر اساس چه نوع از قابلیت های ما را می خواهم. 215 00:10:13,140 --> 00:10:16,700 بنابراین پشته، ما می خواستیم آخرین یکی، N به یکی از اولین. 216 00:10:16,700 --> 00:10:19,800 صف است که ما می خواهیم اولین چیزی که در به اولین چیزی که است. 217 00:10:19,800 --> 00:10:22,510 218 00:10:22,510 --> 00:10:26,710 >> بنابراین ساختار نوع تعریف، به عنوان شما می توانید ببینید، 219 00:10:26,710 --> 00:10:29,470 آن را کمی متفاوت از پشته بود 220 00:10:29,470 --> 00:10:33,120 چون نه تنها ما را به نگه داشتن پیگیری که در آن اندازه در حال حاضر است، 221 00:10:33,120 --> 00:10:37,420 ما همچنین می خواهم برای پیگیری از سر همچنین که در آن ما در حال حاضر می باشد. 222 00:10:37,420 --> 00:10:39,580 بنابراین من فکر می کنم آن را آسان تر اگر من این قرعه کشی تا. 223 00:10:39,580 --> 00:10:53,270 بنابراین اجازه دهید تصور کنید که ما یک صف کردم، بنابراین اجازه دهید بگویم سر این است در اینجا. 224 00:10:53,270 --> 00:10:55,811 225 00:10:55,811 --> 00:10:58,310 سر خط، اجازه دهید فقط می گویند که در حال حاضر وجود دارد، 226 00:10:58,310 --> 00:11:01,809 و ما می خواهیم به قرار دادن چیزی را به صف. 227 00:11:01,809 --> 00:11:04,350 من قصد دارم به اندازه پاسخ اساسا همان دم، 228 00:11:04,350 --> 00:11:06,314 پایان هر کجا صف خود است. 229 00:11:06,314 --> 00:11:07,730 بیایید می گویند اندازه مناسب است در اینجا. 230 00:11:07,730 --> 00:11:14,380 231 00:11:14,380 --> 00:11:18,400 >> بنابراین چگونه می توان عملی قرار دادن چیزی به یک صف؟ 232 00:11:18,400 --> 00:11:21,000 233 00:11:21,000 --> 00:11:24,130 چه شاخص ما می خواهیم به جای که در آن ما می خواهیم برای وارد کردن به. 234 00:11:24,130 --> 00:11:29,320 اگر این آغاز است خود را صف و این پایان است 235 00:11:29,320 --> 00:11:31,860 یا به اندازه آن، که در آن ما خواهید برای اضافه کردن شی بعدی؟ 236 00:11:31,860 --> 00:11:32,920 >> مخاطبان: [نامفهوم] 237 00:11:32,920 --> 00:11:35,920 ANDI PENG: دقیقا، شما می خواهید برای اضافه آن را بسته به شما آن را نوشته شده است. 238 00:11:35,920 --> 00:11:37,840 در هر صورت این خالی است یا که خالی است. 239 00:11:37,840 --> 00:11:42,630 بنابراین شما می خواهید به آن اضافه کنید، احتمالا در اینجا به دلیل اگر به اندازه is-- 240 00:11:42,630 --> 00:11:50,540 اگر این همه کامل، شما می خواهید به آن اضافه کنید در اینجا، درست است؟ 241 00:11:50,540 --> 00:11:57,150 >> و به طوری که، در حالی که بسیار، بسیار ساده، کاملا همیشه درست 242 00:11:57,150 --> 00:12:00,690 به دلیل تفاوت اصلی بین یک صف و یک پشته 243 00:12:00,690 --> 00:12:04,350 این است که به صف می توانید در واقع دستکاری شود 244 00:12:04,350 --> 00:12:06,980 به طوری که تغییرات سر بسته به جایی که شما می خواهید 245 00:12:06,980 --> 00:12:08,650 آغاز نشانه خود را آغاز کنیم. 246 00:12:08,650 --> 00:12:11,900 و به عنوان یک نتیجه، دم خود را همچنین رفتن به تغییر دهید. 247 00:12:11,900 --> 00:12:14,770 و به این ترتیب یک نگاه این کد را در حال حاضر. 248 00:12:14,770 --> 00:12:18,620 همانطور که شما بچه ها نیز به خواسته شد ارسال در مسابقه، در نوبت قراردادن. 249 00:12:18,620 --> 00:12:22,580 شاید ما را از طریق چرا بحث پاسخ این بود آنچه در آن بود. 250 00:12:22,580 --> 00:12:26,790 >> من کاملا نمی تواند مناسب این خط در یک، اما در اصل این قطعه از کد 251 00:12:26,790 --> 00:12:29,030 باید در یک خط باشد. 252 00:12:29,030 --> 00:12:30,140 مانند صرف 30 ثانیه. 253 00:12:30,140 --> 00:12:33,000 نگاهی به، و ببینید که چرا این راهی است که در آن است. 254 00:12:33,000 --> 00:12:50,030 255 00:12:50,030 --> 00:12:55,420 >> بسیار، ساختار بسیار شبیه، بسیار، بسیار ساختار مشابه به عنوان قبلی 256 00:12:55,420 --> 00:12:58,090 پشته به جز شاید برای یک خط کد. 257 00:12:58,090 --> 00:13:01,190 و یک خط از کد قابلیت تعیین می کند. 258 00:13:01,190 --> 00:13:03,900 و آن را واقعا متمایز یک صف از پشته. 259 00:13:03,900 --> 00:13:18,510 260 00:13:18,510 --> 00:13:22,010 >> هر کسی می خواهید را به یک چاقو در توضیح اینکه چرا شما را 261 00:13:22,010 --> 00:13:24,980 کردم این چیز پیچیده در اینجا؟ 262 00:13:24,980 --> 00:13:27,845 ما در بازگشت از دید ما مدول دوست فوق العاده است. 263 00:13:27,845 --> 00:13:31,020 همانطور که شما بچه ها به زودی خواهد آمد به رسمیت شناختن در برنامه نویسی، 264 00:13:31,020 --> 00:13:34,910 تقریبا در هر زمان شما نیاز به چیزی به بسته بندی کردن اطراف هر چیزی، 265 00:13:34,910 --> 00:13:36,850 مدول است برای رفتن به راه به انجام آن. 266 00:13:36,850 --> 00:13:40,510 با علم به اینکه، آیا کسی می خواهید را امتحان کنید و توضیح داد که خط از کد؟ 267 00:13:40,510 --> 00:13:44,060 268 00:13:44,060 --> 00:13:47,507 آره، همه پاسخ ها پذیرفته شده و خوش آمدید. 269 00:13:47,507 --> 00:13:48,840 مخاطبان: آیا شما به من حرف میزنی؟ 270 00:13:48,840 --> 00:13:49,506 ANDI PENG: آره. 271 00:13:49,506 --> 00:13:56,200 مخاطبان: اوه، نه با عرض پوزش. 272 00:13:56,200 --> 00:14:00,250 ANDI PENG: OK، بنابراین اجازه دهید از طریق راه رفتن این کد. 273 00:14:00,250 --> 00:14:03,642 بنابراین، هنگامی که شما در حال تلاش برای چیزی اضافه بر روی یک صف، 274 00:14:03,642 --> 00:14:08,510 در مورد دوست داشتنی که سر اتفاق می افتد به حق در اینجا، آن را بسیار آسان برای ما 275 00:14:08,510 --> 00:14:10,960 فقط به پایان قرار دادن چیزی، درست است؟ 276 00:14:10,960 --> 00:14:14,690 اما نکته از یک صف است که سر در واقع می توانید به صورت پویا 277 00:14:14,690 --> 00:14:17,280 تغییر بسته به جایی که ما می خواهید از شروع Q ما را به عنوان، 278 00:14:17,280 --> 00:14:19,880 و به عنوان مثل، دم همچنین رفتن به تغییر دهید. 279 00:14:19,880 --> 00:14:31,100 >> و به این ترتیب تصور کنید که این نبود صف، بلکه این صف. 280 00:14:31,100 --> 00:14:37,900 281 00:14:37,900 --> 00:14:39,330 بیایید می گویند سر این است در اینجا. 282 00:14:39,330 --> 00:14:54,900 283 00:14:54,900 --> 00:14:56,980 بیایید می گویند صف ما شبیه این. 284 00:14:56,980 --> 00:15:00,190 اگر ما می خواستیم به تغییر که در آن آغاز خط است، 285 00:15:00,190 --> 00:15:03,400 بیایید می گویند ما سر منتقل این راه و اندازه است. 286 00:15:03,400 --> 00:15:07,100 >> حالا ما می خواهیم به اضافه کردن چیزی به این صف، اما به عنوان شما می توانید ببینید بچه ها، 287 00:15:07,100 --> 00:15:11,150 آن را بسیار ساده به عنوان نه تنها اضافه هر آنچه پس از اندازه 288 00:15:11,150 --> 00:15:13,630 چرا که پس از ما از اجرا مرزهای آرایه واقعی ما. 289 00:15:13,630 --> 00:15:16,190 که در آن ما می خواهیم به واقعا اضافه است در اینجا. 290 00:15:16,190 --> 00:15:18,610 که زیبایی یک صف است این است که به ما، بصری آن 291 00:15:18,610 --> 00:15:22,380 به نظر می رسد مثل خط می رود مثل این، اما زمانی که در یک ساختار داده های ذخیره شده، 292 00:15:22,380 --> 00:15:29,370 آنها آن را به عنوان یک چرخه را مانند. 293 00:15:29,370 --> 00:15:32,360 این نوع از به دور به جلو به همان شیوه 294 00:15:32,360 --> 00:15:34,780 که یک خط همچنین می توانید بسته بندی در اطراف بسته به هر کجا که می 295 00:15:34,780 --> 00:15:36,279 می خواهم به ابتدای خط است. 296 00:15:36,279 --> 00:15:38,630 و بنابراین اگر ما را پایین نگاه کنید، اجازه دهید 297 00:15:38,630 --> 00:15:40,880 می گویند که ما می خواست برای ایجاد یک تابع به نام نوبت قراردادن. 298 00:15:40,880 --> 00:15:43,980 ما می خواستیم به اضافه INT N به که q. 299 00:15:43,980 --> 00:15:49,250 اگر q.size q-- ما تماس بگیرید که داده های ما structure-- اگر queue.size ما ندارد 300 00:15:49,250 --> 00:15:52,520 به ظرفیت و یا اگر برابر آن را کمتر از ظرفیت، 301 00:15:52,520 --> 00:15:55,120 q.strings آرایه در س ما است. 302 00:15:55,120 --> 00:15:58,380 ما در حال رفتن به راه که به q.heads برابر، 303 00:15:58,380 --> 00:16:02,730 که مناسب است در اینجا، به علاوه q.size مدول با ظرفیت، که 304 00:16:02,730 --> 00:16:04,290 بسته بندی با ما تماس در اطراف اینجا. 305 00:16:04,290 --> 00:16:08,040 >> بنابراین در این مثال، شاخص سر 1 است، درست است؟ 306 00:16:08,040 --> 00:16:11,480 شاخص اندازه 0، 1، 2، 3، 4 است. 307 00:16:11,480 --> 00:16:19,500 بنابراین ما می توانیم 1 به علاوه 4 مدول انجام ظرفیت ما است که 5. 308 00:16:19,500 --> 00:16:20,920 چه که به ما بدهید؟ 309 00:16:20,920 --> 00:16:23,270 شاخص این است که از این می آید؟ 310 00:16:23,270 --> 00:16:24,080 >> مخاطبان: 0. 311 00:16:24,080 --> 00:16:27,870 >> ANDI PENG: 0، که اتفاق می افتد به حق در اینجا، 312 00:16:27,870 --> 00:16:30,640 و بنابراین ما می خواهم که قادر برای وارد کردن به حق در اینجا. 313 00:16:30,640 --> 00:16:34,730 و به این ترتیب این معادله در اینجا نوع فقط با هر شماره کار می کند 314 00:16:34,730 --> 00:16:36,750 بسته به جایی که خود را سر و اندازه شما هستند. 315 00:16:36,750 --> 00:16:38,541 اگر می دانید چه کسانی همه چیز، شما می دانید 316 00:16:38,541 --> 00:16:43,170 دقیقا جایی که شما می خواهید برای وارد آنچه پس از صف خود. 317 00:16:43,170 --> 00:16:44,640 آیا این را حس به همه؟ 318 00:16:44,640 --> 00:16:48,560 >> من می دانم که نوع یک مغز تیزر به خصوص از این 319 00:16:48,560 --> 00:16:50,512 در دوران پس از مسابقه خود آمد. 320 00:16:50,512 --> 00:16:52,220 اما امیدوارم همه هم اکنون می توانید درک 321 00:16:52,220 --> 00:16:57,800 چرا این راه حل یا این عملکرد راه است که در آن است. 322 00:16:57,800 --> 00:16:59,840 هر کسی کمی مبهم در آن؟ 323 00:16:59,840 --> 00:17:03,471 324 00:17:03,471 --> 00:17:03,970 باشه. 325 00:17:03,970 --> 00:17:07,109 326 00:17:07,109 --> 00:17:09,970 >> و بنابراین در حال حاضر، اگر شما می خواستم به dequeue، این 327 00:17:09,970 --> 00:17:15,240 است که در آن سر ما خواهد بود تغییر چون اگر ما به dequeue، 328 00:17:15,240 --> 00:17:17,030 ما را نمی کردن پایان q است. 329 00:17:17,030 --> 00:17:19,130 ما می خواهیم به دور از سر، درست است؟ 330 00:17:19,130 --> 00:17:24,260 بنابراین به عنوان یک نتیجه، سر است که برای تغییر، و به همین دلیل زمانی که شما نوبت، 331 00:17:24,260 --> 00:17:26,800 شما رو به پیگیری که در آن سر خود را و اندازه خود را 332 00:17:26,800 --> 00:17:29,450 به قادر به وارد کردن را به موقعیت صحیح. 333 00:17:29,450 --> 00:17:32,740 >> و تا زمانی که شما dequeue، من هم آن را شبه است. 334 00:17:32,740 --> 00:17:35,480 در صورت تمایل به اگر شما می خواهید به تلاش برنامه نویسی این است. 335 00:17:35,480 --> 00:17:36,980 شما می خواهید به حرکت سر، درست است؟ 336 00:17:36,980 --> 00:17:39,320 اگر من می خواستم به dequeue، من به سر حرکت می کند. 337 00:17:39,320 --> 00:17:40,800 این امر می تواند سر. 338 00:17:40,800 --> 00:17:45,617 >> و اندازه فعلی ما تفریق چرا که ما دیگر 339 00:17:45,617 --> 00:17:46,950 چهار عناصر موجود در آرایه. 340 00:17:46,950 --> 00:17:51,370 ما تنها سه، و سپس ما می خواهیم به بازگشت هر داخل ذخیره شد 341 00:17:51,370 --> 00:17:56,260 از سر زیرا ما می خواهیم را به این ارزش بنابراین بسیار شبیه به پشته. 342 00:17:56,260 --> 00:17:58,010 فقط شما در حال گرفتن از محل های مختلف، 343 00:17:58,010 --> 00:18:01,770 و شما باید به اشاره گر خود را جابهجا به محل های مختلف به عنوان یک نتیجه. 344 00:18:01,770 --> 00:18:03,890 منطقی، هر کس به دنبال؟ 345 00:18:03,890 --> 00:18:05,690 عالی. 346 00:18:05,690 --> 00:18:10,156 >> OK، بنابراین ما قصد داریم به بحث کمی عمیق تر در مورد لیست های پیوندی 347 00:18:10,156 --> 00:18:13,280 چرا که آنها بسیار، بسیار با ارزش برای شما در این دوره از این هفته 348 00:18:13,280 --> 00:18:14,964 psets. 349 00:18:14,964 --> 00:18:17,130 لیست های پیوندی، که شما بچه ها می توانید به یاد داشته باشید، همه آنها 350 00:18:17,130 --> 00:18:22,570 گره که گره خاص هستند ارزش هر دو یک ارزش و یک اشاره گر 351 00:18:22,570 --> 00:18:26,290 که در ارتباط با یکدیگر توسط کسانی که اشاره گر. 352 00:18:26,290 --> 00:18:29,880 و به این ترتیب ساختار در چگونه ما ایجاد یک گره در اینجا ما است 353 00:18:29,880 --> 00:18:33,569 دارند INT N است که هر ارزش در یک فروشگاه یا رشته n 354 00:18:33,569 --> 00:18:35,610 و یا هر آنچه شما می خواهید از آن تماس، ستاره کاراکتر N. 355 00:18:35,610 --> 00:18:41,482 ستاره ساختار گره است، که اشاره گر که شما می خواهید در هر گره، 356 00:18:41,482 --> 00:18:43,690 شما در حال رفتن به که نقطه اشاره گر نسبت به آینده. 357 00:18:43,690 --> 00:18:48,207 358 00:18:48,207 --> 00:18:50,040 شما سر دارند از یک لیست پیوندی که 359 00:18:50,040 --> 00:18:53,140 رفتن به نقطه را به بقیه ارزش غیره و غیره 360 00:18:53,140 --> 00:18:55,290 تا زمانی که شما در نهایت به پایان برسد. 361 00:18:55,290 --> 00:18:58,040 و این گره فقط آخرین رفتن یک اشاره گر به ندارد. 362 00:18:58,040 --> 00:18:59,952 آن را به نقطه را به تهی، و این زمانی 363 00:18:59,952 --> 00:19:01,910 شما می دانید که شما ضربه ام پایان لیست پیوندی خود را 364 00:19:01,910 --> 00:19:04,076 است که آخرین اشاره گر خود را به هر چیزی نقطه نیست. 365 00:19:04,076 --> 00:19:06,670 366 00:19:06,670 --> 00:19:10,990 >> بنابراین ما قصد داریم برای رفتن کمی بیشتر در عمق در مورد چگونه یک احتمالا 367 00:19:10,990 --> 00:19:12,400 جستجو یک لیست پیوندی. 368 00:19:12,400 --> 00:19:15,460 به یاد داشته باشید که برخی از هستند اشکالاتی از لیست های پیوندی 369 00:19:15,460 --> 00:19:19,340 آیات یک آرایه در مورد جستجو. 370 00:19:19,340 --> 00:19:22,565 یک آرایه شما می توانید جستجوی دودویی، اما چرا که نه می توانید انجام دهید که در یک لیست پیوندی؟ 371 00:19:22,565 --> 00:19:26,834 372 00:19:26,834 --> 00:19:30,320 >> مخاطبان: از آنجا که همه آنها در ارتباط است، اما شما کاملا نمی دانند که در آن 373 00:19:30,320 --> 00:19:31,330 [نامفهوم]. 374 00:19:31,330 --> 00:19:34,600 >> ANDI PENG: بله، دقیقا به یاد داشته باشید که درخشش یک آرایه 375 00:19:34,600 --> 00:19:37,190 این واقعیت است که ما بود حافظه با دسترسی تصادفی که در آن 376 00:19:37,190 --> 00:19:41,580 اگر من می خواستم ارزش از شاخص شش، من فقط می گویند شاخص شش، 377 00:19:41,580 --> 00:19:42,407 من که ارزش می دهد. 378 00:19:42,407 --> 00:19:45,240 و این به دلیل آرایه ها طبقه بندی شده اند در یک فضای پیوسته از حافظه 379 00:19:45,240 --> 00:19:48,020 در یک مکان، در حالی که نوع لیست های پیوندی 380 00:19:48,020 --> 00:19:52,820 به طور تصادفی پراکنده در اطراف، و تنها راه شما می توانید یکی پیدا 381 00:19:52,820 --> 00:19:56,890 است از طریق یک اشاره گر است که به شما می گوید آدرس از جایی که آن گره بعدی است. 382 00:19:56,890 --> 00:20:00,290 >> و به این ترتیب به عنوان یک نتیجه، تنها راه برای جستجو از طریق یک لیست پیوندی 383 00:20:00,290 --> 00:20:01,560 جستجوی خطی است. 384 00:20:01,560 --> 00:20:05,890 از آنجا که من دقیقا نمی دانم که در آن ارزش 12th در لیست پیوندی است، 385 00:20:05,890 --> 00:20:08,780 من را به گذشتن از تمامیت که لیست پیوندی یک 386 00:20:08,780 --> 00:20:12,450 توسط یکی از سر به گره اول، به گره دوم، به گره سوم، 387 00:20:12,450 --> 00:20:17,690 تمام راه را تا زمانی که من در نهایت به جایی که آن گره من به دنبال است. 388 00:20:17,690 --> 00:20:22,110 و بنابراین در این معنا، جستجو در یک لیست پیوندی است که همیشه N. 389 00:20:22,110 --> 00:20:23,040 این N همیشه. 390 00:20:23,040 --> 00:20:25,690 این همیشه در زمان خطی. 391 00:20:25,690 --> 00:20:28,470 >> و به این ترتیب است که در آن کد ما این پیاده سازی، و این 392 00:20:28,470 --> 00:20:32,620 است که کمی جدید برای شما از شما بچه ها بچه ها واقعا در مورد و یا تا کنون صحبت نکرده 393 00:20:32,620 --> 00:20:35,000 اشاره گر دیده می شود در چگونه به جستجو از طریق اشاره گرها، 394 00:20:35,000 --> 00:20:37,670 بنابراین ما از طریق راه رفتن این بسیار، بسیار آرام است. 395 00:20:37,670 --> 00:20:40,200 بنابراین جستجو بولی، راست، بیایید تصور کنید ما می خواهیم 396 00:20:40,200 --> 00:20:42,820 برای ایجاد یک تابع به نام جستجو است که برمی گرداند درست 397 00:20:42,820 --> 00:20:46,820 اگر شما یک ارزش در داخل مرتبط لیست و آن را برمی گرداند در غیر این صورت نادرست است. 398 00:20:46,820 --> 00:20:50,030 لیست ستاره گره است در حال حاضر فقط اشاره گر 399 00:20:50,030 --> 00:20:52,960 به اولین آیتم در لیست پیوندی خود را. 400 00:20:52,960 --> 00:20:56,700 INT n مقدار که شما هستید جستجو برای در این لیست. 401 00:20:56,700 --> 00:20:58,770 >> بنابراین اشاره گر ستاره گره برابر لیست. 402 00:20:58,770 --> 00:21:00,970 این بدان معناست که ما در حال تنظیم و ایجاد یک اشاره گر 403 00:21:00,970 --> 00:21:03,592 به گره اول در داخل از لیست. 404 00:21:03,592 --> 00:21:04,300 همه با من؟ 405 00:21:04,300 --> 00:21:06,530 بنابراین اگر ما بودند برای رفتن تماس اینجا، من می خواهم که 406 00:21:06,530 --> 00:21:13,850 مقداردهی اولیه اشاره گر است که به رئیس هر لیست قرار دارد. 407 00:21:13,850 --> 00:21:18,600 >> و پس از آن هنگامی که شما از اینجا، در حالی که اشاره گر تهی برابر می کند نیست، 408 00:21:18,600 --> 00:21:22,160 به طوری که حلقه که در آن ما می باشد رفتن به پس از آن عبور 409 00:21:22,160 --> 00:21:25,940 بقیه از لیست ما به دلیل آنچه اتفاق می افتد هنگامی که اشاره گر برابر تهی؟ 410 00:21:25,940 --> 00:21:27,550 ما می دانیم که have-- 411 00:21:27,550 --> 00:21:28,450 >> مخاطبان: [نامفهوم] 412 00:21:28,450 --> 00:21:31,491 >> ANDI PENG: دقیقا، بنابراین ما می دانیم که ما در پایان از لیست رسیدهاید، درست است؟ 413 00:21:31,491 --> 00:21:34,470 اگر شما به عقب در اینجا، هر گره باید اشاره به گره دیگر 414 00:21:34,470 --> 00:21:36,550 و به همین ترتیب، و غیره تا زمانی که شما در نهایت ضربه 415 00:21:36,550 --> 00:21:41,589 دم از لیست پیوندی خود را، است که یک اشاره گر است که فقط 416 00:21:41,589 --> 00:21:43,130 می کند نقطه به هر نقطه دیگر از هیچ است. 417 00:21:43,130 --> 00:21:47,510 و بنابراین شما می دانید که اساسا لیست خود را هنوز هم وجود دارد تا 418 00:21:47,510 --> 00:21:50,900 تا زمانی که اشاره گر برابر نیست null را به دلیل یک بار آن را برابر تهی، 419 00:21:50,900 --> 00:21:53,310 شما می دانید که هیچ چیز بیشتر وجود دارد. 420 00:21:53,310 --> 00:21:56,930 >> به طوری که حلقه که در آن ما است رفتن به جستجو واقعی. 421 00:21:56,930 --> 00:22:01,690 و اگر اشاره گر می بینید این نوع از تابع فلش وجود دارد؟ 422 00:22:01,690 --> 00:22:06,930 بنابراین اگر اشاره گر به n، اگر اشاره گر را در برابر برابر N N، 423 00:22:06,930 --> 00:22:09,180 به طوری که بدان معنی است که اگر اشاره گر است که شما 424 00:22:09,180 --> 00:22:13,420 جستجو برای در پایان هر گره در واقع به ارزش برابر است 425 00:22:13,420 --> 00:22:15,990 شما به دنبال برای، سپس شما می خواهید به بازگشت واقعی است. 426 00:22:15,990 --> 00:22:19,280 بنابراین اساسا، اگر شما در یک گره هستید که دارای ارزش است که شما دنبال آن هستید، 427 00:22:19,280 --> 00:22:23,550 شما می دانید که شما شده است قادر به موفقیت را جستجو کنید. 428 00:22:23,550 --> 00:22:27,150 >> در غیر این صورت، شما می خواهید به مجموعه اشاره گر خود را به گره بعدی. 429 00:22:27,150 --> 00:22:28,850 این چیزی است که این خط در اینجا انجام شده است. 430 00:22:28,850 --> 00:22:31,750 اشاره گر برابر اشاره گر. 431 00:22:31,750 --> 00:22:33,360 همه ببینید که چگونه است که کار می کند؟ 432 00:22:33,360 --> 00:22:36,580 >> و اساسا شما در حال رفتن به فقط گذشتن از کل لیست، 433 00:22:36,580 --> 00:22:41,920 بازنشانی اشاره گر خود را در هر زمان تا شما در نهایت ضربه آخر لیست. 434 00:22:41,920 --> 00:22:45,030 و شما می دانید که هیچ وجود دارد گره های دیگر به جستجو از طریق، 435 00:22:45,030 --> 00:22:47,999 و پس از آن شما می توانید کاذب بازگشت چون می دانید که، آه، خوب، 436 00:22:47,999 --> 00:22:50,540 اگر من قادر به جستجو شده از طریق به طور کامل از لیست. 437 00:22:50,540 --> 00:22:54,530 اگر در این مثال، اگر من می خواستم برای ارزش 10 نگاه کنید، 438 00:22:54,530 --> 00:22:57,250 و من در شروع به سر و من جستجو تمام راه را، 439 00:22:57,250 --> 00:23:00,550 و من در نهایت به این کردم که یک اشاره گر است که اشاره به تهی، 440 00:23:00,550 --> 00:23:04,415 من می دانم که، تلخه، من حدس می زنم 10 در نه این لیست چون من می تواند آن را پیدا کند. 441 00:23:04,415 --> 00:23:06,520 و من در انتهای لیست هستم. 442 00:23:06,520 --> 00:23:11,040 و که در این صورت شما می دانید من قصد دارم به بازگشت نادرست است. 443 00:23:11,040 --> 00:23:12,900 >> اجازه دهید که خیس خوردن در یک کمی. 444 00:23:12,900 --> 00:23:17,350 این بسیار خواهد بود برای pset شما مهم است. 445 00:23:17,350 --> 00:23:21,140 منطق آن بسیار ساده است، شاید از لحاظ دستوری فقط آن را پیاده سازی است. 446 00:23:21,140 --> 00:23:23,365 شما بچه ها می خواهید به مطمئن شوید که شما را درک کنند. 447 00:23:23,365 --> 00:23:25,870 448 00:23:25,870 --> 00:23:27,650 خنک. 449 00:23:27,650 --> 00:23:32,560 >> خوب، پس چگونه ما می شود قرار دادن گره، راست، 450 00:23:32,560 --> 00:23:35,380 به یک لیست به دلیل به یاد داشته باشید چه آنچه از مزایای هستند 451 00:23:35,380 --> 00:23:39,230 داشتن یک لیست پیوندی در مقابل یک آرایه از نظر ذخیره سازی؟ 452 00:23:39,230 --> 00:23:41,110 >> مخاطبان: این پویا، پس از آن راحت to-- 453 00:23:41,110 --> 00:23:43,180 >> ANDI PENG: دقیقا، پس از آن پویا، که 454 00:23:43,180 --> 00:23:46,880 بدان معنی است که می تواند گسترش و کوچک کردن بسته به نیازهای کاربر. 455 00:23:46,880 --> 00:23:56,570 و بنابراین، در این معنا، ما لازم نیست به هدر حافظه های غیر ضروری چون من 456 00:23:56,570 --> 00:24:00,850 اگر نمی دانید که چگونه بسیاری از ارزش های من می خواهم به فروشگاه، آن را حس برای من نیست 457 00:24:00,850 --> 00:24:04,310 برای ایجاد یک آرایه به دلیل اگر من می خواهم برای ذخیره 10 مقدار 458 00:24:04,310 --> 00:24:08,380 و من ایجاد آرایه ای از 1،000، که مقدار زیادی از حافظه هدر رفته، اختصاص داده شده. 459 00:24:08,380 --> 00:24:11,180 به همین دلیل ما می خواهیم به استفاده از یک مرتبط لیست قادر به صورت پویا 460 00:24:11,180 --> 00:24:13,860 تغییر اندازه و یا کوچک است. 461 00:24:13,860 --> 00:24:17,040 >> و به طوری که باعث درج کمی پیچیده تر است. 462 00:24:17,040 --> 00:24:20,810 از آنجا که ما نمی توانیم به طور تصادفی عناصر دسترسی راه که ما را به مجموعه ای از. 463 00:24:20,810 --> 00:24:24,270 اگر من می خواهم به قرار دادن یک عنصر به شاخص هفتم 464 00:24:24,270 --> 00:24:26,930 من فقط می توانید آن را درج به شاخص هفتم. 465 00:24:26,930 --> 00:24:30,020 در یک لیست پیوندی، آن را نمی کند کاملا کار به راحتی، 466 00:24:30,020 --> 00:24:34,947 و به همین ترتیب اگر ما می خواستیم به قرار دادن که در اینجا در لیست پیوندی، 467 00:24:34,947 --> 00:24:36,280 بصری، آن را بسیار آسان را ببینید. 468 00:24:36,280 --> 00:24:39,363 ما فقط می خواهیم به آن را درج سمت راست وجود دارد، درست در ابتدای فهرست، 469 00:24:39,363 --> 00:24:40,840 درست بعد از سر. 470 00:24:40,840 --> 00:24:44,579 >> اما روشی که در آن ما باید به جابهجا اشاره گر است کمی پیچیده 471 00:24:44,579 --> 00:24:47,620 و یا، منطقی، آن را حس می، اما شما می خواهید مطمئن شوید که شما آن را دارند 472 00:24:47,620 --> 00:24:50,250 به طور کامل پایین به دلیل آخرین چیزی که شما می خواهید 473 00:24:50,250 --> 00:24:52,990 است جابهجا اشاره گر ها که ما در اینجا انجام می دهند. 474 00:24:52,990 --> 00:24:58,170 اگر شما ارجاع اشاره گر از سر تا 1، 475 00:24:58,170 --> 00:25:01,086 پس از آن همه ناگهانی بقیه لیست پیوندی خود را 476 00:25:01,086 --> 00:25:04,680 از دست داده است چرا که شما باید در واقع هر چیزی موقت ایجاد شده است. 477 00:25:04,680 --> 00:25:06,220 که به 2 اشاره کرد. 478 00:25:06,220 --> 00:25:10,080 اگر شما اشاره گر، سپس جابهجا بقیه لیست خود را کاملا از دست داد. 479 00:25:10,080 --> 00:25:13,310 بنابراین شما می خواهید به بسیار، بسیار مراقب باشید در اینجا 480 00:25:13,310 --> 00:25:17,010 به اولین اختصاص اشاره گر از هر آنچه که شما 481 00:25:17,010 --> 00:25:20,150 می خواهید برای وارد کردن به هر کجا شما می خواهید، و سپس شما 482 00:25:20,150 --> 00:25:22,710 می توانید ارجاع بقیه از لیست خود را. 483 00:25:22,710 --> 00:25:25,250 >> بنابراین این امر برای هر کجا شما در حال تلاش برای وارد کردن به. 484 00:25:25,250 --> 00:25:27,520 اگر شما می خواهید برای وارد کردن در سر، اگر شما می خواهید برای پاسخ به اینجا، 485 00:25:27,520 --> 00:25:29,455 اگر شما می خواهید برای وارد کردن در پایان، خوب، پایان من 486 00:25:29,455 --> 00:25:30,910 حدس می زنم شما را فقط هیچ اشاره گر، اما شما 487 00:25:30,910 --> 00:25:33,830 خواهید مطمئن شوید که شما نمی از دست دادن بقیه از لیست خود را. 488 00:25:33,830 --> 00:25:36,640 شما همیشه می خواهید مطمئن شوید گره جدید خود را با اشاره 489 00:25:36,640 --> 00:25:39,330 هر آنچه که شما به سمت می خواهید برای وارد کردن به، 490 00:25:39,330 --> 00:25:42,170 و پس از آن شما می توانید در زنجیری اضافه کنید. 491 00:25:42,170 --> 00:25:43,330 همه روشن؟ 492 00:25:43,330 --> 00:25:45,427 >> این است برای رفتن به یکی از مسائل واقعی است. 493 00:25:45,427 --> 00:25:48,010 یکی از مهمترین مسائل عمده شما در حال رفتن به pset خود را 494 00:25:48,010 --> 00:25:51,340 این است که شما در حال رفتن به تلاش برای ایجاد یک لیست پیوندی و چیزهای درج 495 00:25:51,340 --> 00:25:53,340 اما پس از آن فقط از دست دادن بقیه لیست پیوندی خود را. 496 00:25:53,340 --> 00:25:54,900 و شما در حال رفتن به مانند من نمی دانم چرا این اتفاق می افتد؟ 497 00:25:54,900 --> 00:25:58,040 و این درد را از طریق رفتن است و جستجو در تمام از اشاره گر خود را. 498 00:25:58,040 --> 00:26:02,100 >> و من به شما تضمین در این pset، نوشتن و نقاشی کردن این گره 499 00:26:02,100 --> 00:26:03,344 خواهد شد بسیار، بسیار مفید است. 500 00:26:03,344 --> 00:26:06,010 بنابراین شما می توانید به طور کامل پیگیری که در آن تمام اشاره گر خود را، 501 00:26:06,010 --> 00:26:08,540 چه خبر اشتباه، که در آن تمام گره ها خود را، 502 00:26:08,540 --> 00:26:12,660 آنچه شما نیاز دارید انجام دهید برای دسترسی داشته و یا درج یا حذف یا هر یک از آنها. 503 00:26:12,660 --> 00:26:14,550 همه خوب با که؟ 504 00:26:14,550 --> 00:26:15,050 خنک. 505 00:26:15,050 --> 00:26:19,300 506 00:26:19,300 --> 00:26:22,600 >> بنابراین اگر ما می خواستیم به در کد نگاه می کنید؟ 507 00:26:22,600 --> 00:26:24,470 اوه، من نمی دانم اگر ما می توانید the-- OK را ببینید، بنابراین 508 00:26:24,470 --> 00:26:27,940 در بالای همه آن است که یک تابع است نام درج آن ما می خواهیم 509 00:26:27,940 --> 00:26:31,365 برای وارد کردن INT N به لیست پیوندی. 510 00:26:31,365 --> 00:26:32,740 ما قصد داریم تا از طریق این راه رفتن. 511 00:26:32,740 --> 00:26:34,770 این تعداد زیادی از کد، بسیاری از نحو جدید است. 512 00:26:34,770 --> 00:26:36,220 ما OK خواهید بود. 513 00:26:36,220 --> 00:26:39,120 >> بنابراین تا در بالای صفحه، هر زمان که ما می خواهیم برای ایجاد هر چیزی 514 00:26:39,120 --> 00:26:42,380 چه چیزی ما باید انجام دهید، به خصوص اگر شما می خواهم آن را روی پشته ذخیره می شود 515 00:26:42,380 --> 00:26:43,920 اما در پشته؟ 516 00:26:43,920 --> 00:26:45,460 ما به یک malloc به، درست است؟ 517 00:26:45,460 --> 00:26:48,240 بنابراین ما قصد داریم برای ایجاد یک اشاره گر است. 518 00:26:48,240 --> 00:26:52,074 گره، اشاره گر، برابر جدید از malloc به اندازه یک گره 519 00:26:52,074 --> 00:26:53,740 زیرا ما می خواهیم که گره ایجاد می شود. 520 00:26:53,740 --> 00:26:56,720 ما می خواهیم مقدار حافظه ای که یک گره طول می کشد تا 521 00:26:56,720 --> 00:26:59,300 برای اختصاص داده شود ایجاد گره جدید است. 522 00:26:59,300 --> 00:27:02,270 >> و پس از آن ما قصد داریم به بررسی تا ببینید اگر برابر جدید برابر تهی. 523 00:27:02,270 --> 00:27:03,370 به یاد داشته باشید آنچه که ما گفت؟ 524 00:27:03,370 --> 00:27:06,470 هر آنچه که شما از malloc، آنچه باید شما همیشه؟ 525 00:27:06,470 --> 00:27:09,490 شما همیشه باید چک کنید آیا یا نه که تهی است. 526 00:27:09,490 --> 00:27:13,620 >> برای مثال، اگر عامل خود را سیستم کاملا کامل بود، 527 00:27:13,620 --> 00:27:17,060 اگر شما حافظه بیشتر در حال همه و شما به malloc را امتحان کنید، 528 00:27:17,060 --> 00:27:18,410 آن را برای شما null را بازگشت. 529 00:27:18,410 --> 00:27:21,094 و بنابراین اگر شما سعی می کنید به استفاده از آن هنگامی که آن را اشاره شد به تهی، 530 00:27:21,094 --> 00:27:23,260 شما به قادر نیست برای دسترسی به این اطلاعات. 531 00:27:23,260 --> 00:27:27,010 و به این ترتیب به عنوان مثل، ما می خواستیم به مطمئن شوید که هر زمان که شما mallocing، 532 00:27:27,010 --> 00:27:30,500 شما همیشه چک برای دیدن اگر که حافظه داده شده به شما تهی است. 533 00:27:30,500 --> 00:27:33,670 و اگر آن را ندارد، پس ما می تواند حرکت کند در با بقیه کد ما. 534 00:27:33,670 --> 00:27:36,140 >> بنابراین ما قصد داریم به مقداردهی اولیه گره جدید است. 535 00:27:36,140 --> 00:27:39,050 ما قصد داریم برای انجام N جدید برابر با n. 536 00:27:39,050 --> 00:27:42,390 و سپس ما در حال رفتن به مجموعه ای جدید اشاره گر بر روی جدید 537 00:27:42,390 --> 00:27:46,900 به تهی چون در حال حاضر ما نمی می خواهید چیزی را برای آن به نقطه را به. 538 00:27:46,900 --> 00:27:48,755 ما هیچ ایده که در آن آن را به شما قرار داده، 539 00:27:48,755 --> 00:27:50,630 و سپس اگر ما می خواهیم قرار دادن آن در سر، 540 00:27:50,630 --> 00:27:53,820 پس ما می توانیم جابهجا اشاره گر به سر. 541 00:27:53,820 --> 00:27:58,530 آیا همه به دنبال منطق که در آن که اتفاق می افتد؟ 542 00:27:58,530 --> 00:28:02,502 >> همه ما در حال انجام است ایجاد جدید گره، تنظیم اشاره گر به تهی، 543 00:28:02,502 --> 00:28:04,210 و پس از آن reassigning آن را به سر اگر ما 544 00:28:04,210 --> 00:28:06,320 می دانیم که ما می خواهیم به آن را درج در سر. 545 00:28:06,320 --> 00:28:09,420 و سپس سر است که به اشاره به سمت که گره جدید است. 546 00:28:09,420 --> 00:28:11,060 همه با آن خوب؟ 547 00:28:11,060 --> 00:28:12,380 >> پس از آن یک فرآیند دو مرحله ای است. 548 00:28:12,380 --> 00:28:14,760 به شما اختصاص اول کردم هر آنچه که شما در حال ایجاد. 549 00:28:14,760 --> 00:28:18,260 مجموعه ای که اشاره گر به مرجع، و سپس شما 550 00:28:18,260 --> 00:28:21,400 می توانید نوع ارجاع اشاره گر اول 551 00:28:21,400 --> 00:28:22,972 و آن را به سمت گره جدید است. 552 00:28:22,972 --> 00:28:25,680 هر کجا که می خواهید به آن وارد است، که منطق است که به نگه درست است. 553 00:28:25,680 --> 00:28:27,530 >> این نوع مانند اختصاص متغیرهای موقت. 554 00:28:27,530 --> 00:28:28,700 به یاد داشته باشید، شما باید مطمئن شوید که شما 555 00:28:28,700 --> 00:28:30,346 انجام پیگیری اگر شما در حال مبادله دست دادن نیست. 556 00:28:30,346 --> 00:28:33,470 شما می خواهید مطمئن شوید که شما یک متغیر موقت این نوع از نگه می دارد 557 00:28:33,470 --> 00:28:35,620 پیگیری که در آن چیزی که است به طوری که ذخیره می شود شما 558 00:28:35,620 --> 00:28:41,190 هر مقدار در این دوره از دست دادن نیست مانند messing اطراف با آن است. 559 00:28:41,190 --> 00:28:42,710 >> خوب، پس کد اینجا خواهد بود. 560 00:28:42,710 --> 00:28:45,020 شما بچه ها را نگاه پس از بخش. 561 00:28:45,020 --> 00:28:48,060 آن وجود خواهد داشت. 562 00:28:48,060 --> 00:28:50,280 >> بنابراین من حدس می زنم چگونه این متفاوت اگر ما می خواستیم 563 00:28:50,280 --> 00:28:52,300 برای وارد کردن به وسط و یا پایان؟ 564 00:28:52,300 --> 00:28:57,892 آیا کسی یک ایده از آنچه که شبه به عنوان مرجع منطقی 565 00:28:57,892 --> 00:29:00,350 که ما اگر ما می خواستیم را به آن وارد در وسط؟ 566 00:29:00,350 --> 00:29:03,391 بنابراین اگر ما می خواستیم به آن وارد در سر، همه ما است ایجاد یک گره جدید است. 567 00:29:03,391 --> 00:29:06,311 ما مجموعه ای از اشاره گر که گره جدید به هر آنچه سر، 568 00:29:06,311 --> 00:29:08,310 و پس از آن ما مجموعه ای از سر به گره جدید، درست است؟ 569 00:29:08,310 --> 00:29:11,560 اگر ما می خواستیم به آن وارد در وسط از لیست، آنچه را که ما باید انجام دهیم؟ 570 00:29:11,560 --> 00:29:14,108 571 00:29:14,108 --> 00:29:16,110 >> رسید این بود هنوز هم یک فرایند مشابه 572 00:29:16,110 --> 00:29:19,114 مانند اختصاص اشاره گر و سپس اختصاص که اشاره گر، 573 00:29:19,114 --> 00:29:20,530 اما ما باید برای قرار دارد. 574 00:29:20,530 --> 00:29:23,560 >> ANDI PENG: دقیقا، دقیقا همان روند به جز شما 575 00:29:23,560 --> 00:29:27,820 باید برای قرار که دقیقا شما می خواهید که اشاره گر به به، 576 00:29:27,820 --> 00:29:44,790 بنابراین اگر من می خواهم برای وارد کردن به وسط مرتبط list-- OK، 577 00:29:44,790 --> 00:29:46,370 اجازه دهید بگویم که لیست پیوندی ما است. 578 00:29:46,370 --> 00:29:49,500 اگر ما می خواهیم به آن را درج در اینجا، ما قصد داریم برای ایجاد یک گره جدید است. 579 00:29:49,500 --> 00:29:50,520 ما قصد داریم به malloc. 580 00:29:50,520 --> 00:29:52,220 ما قصد داریم برای ایجاد یک گره جدید است. 581 00:29:52,220 --> 00:29:55,940 ما قصد داریم به او واگذار اشاره گر از این گره است. 582 00:29:55,940 --> 00:29:58,335 >> اما مشکل این است که متفاوت از جایی که سر است 583 00:29:58,335 --> 00:30:00,490 این است که ما دقیقا می دانستند که در آن سر است. 584 00:30:00,490 --> 00:30:01,930 این حق در اول بود، درست است؟ 585 00:30:01,930 --> 00:30:04,870 اما در اینجا ما باید برای پیگیری از جایی که ما آن را قرار دادن به. 586 00:30:04,870 --> 00:30:07,930 اگر ما در حال قرار دادن ما گره در اینجا، ما باید 587 00:30:07,930 --> 00:30:12,270 مطمئن شوید که یکی از قبلی به این گره 588 00:30:12,270 --> 00:30:14,172 یکی که مجددا تخصیص اشاره گر است. 589 00:30:14,172 --> 00:30:16,380 بنابراین پس از آن شما را به نوعی باید پیگیری دو چیز است. 590 00:30:16,380 --> 00:30:19,420 اگر شما پیگیری که در آن این گره در حال حاضر قرار دادن به. 591 00:30:19,420 --> 00:30:23,280 همچنین شما می توانید پیگیری که در آن گره قبلی که شما دنبال آن هستید در 592 00:30:23,280 --> 00:30:24,340 هم آنجا بود. 593 00:30:24,340 --> 00:30:25,830 همه خوب با که؟ 594 00:30:25,830 --> 00:30:26,500 باشه. 595 00:30:26,500 --> 00:30:28,000 >> چگونه در مورد قرار دادن به پایان؟ 596 00:30:28,000 --> 00:30:34,220 اگر من می خواستم به آن اضافه کنید here-- اگر من می خواستم برای اضافه کردن یک گره جدید به پایان یک لیست، 597 00:30:34,220 --> 00:30:37,009 چگونه ممکن است من در مورد انجام می کنید؟ 598 00:30:37,009 --> 00:30:39,300 مخاطبان: بنابراین در حال حاضر، به NULL اشاره یکی از آخرین. 599 00:30:39,300 --> 00:30:40,960 ANDI PENG: آره. 600 00:30:40,960 --> 00:30:43,560 دقیقا، بنابراین این یکی در حال حاضر اشاره شده است به دانستن، 601 00:30:43,560 --> 00:30:46,720 و به همین ترتیب من حدس می زنم، در این معنا، آن را بسیار آسان برای اضافه کردن به پایان یک لیست. 602 00:30:46,720 --> 00:30:51,810 همه شما باید انجام دهید این است آن را راه به تهی برابر و سپس بوم. 603 00:30:51,810 --> 00:30:53,070 حق وجود دارد، بسیار آسان است. 604 00:30:53,070 --> 00:30:53,960 بسیار ساده. 605 00:30:53,960 --> 00:30:56,430 >> بسیار شبیه به سر، اما منطقی شما 606 00:30:56,430 --> 00:30:59,690 خواهید مطمئن شوید که مراحل شما را به سمت انجام هر یک از این را، 607 00:30:59,690 --> 00:31:01,500 شما زیر همراه است. 608 00:31:01,500 --> 00:31:04,420 این بسیار آسان است به، در وسط از کد خود را، تا گرفتار در، 609 00:31:04,420 --> 00:31:05,671 آه، من بسیاری از اشاره گر کردم. 610 00:31:05,671 --> 00:31:07,461 من نمی دانم که در آن هر چیزی با اشاره به. 611 00:31:07,461 --> 00:31:09,170 من حتی نمی دانند که گره من در هستم. 612 00:31:09,170 --> 00:31:11,490 چه خبره؟ 613 00:31:11,490 --> 00:31:13,620 >> استراحت، آرام، یک نفس عمیق بکشید. 614 00:31:13,620 --> 00:31:15,530 بیرون کشیدن لیست پیوندی خود را. 615 00:31:15,530 --> 00:31:18,800 اگر شما می گویم، من می دانم که در آن دقیقا من نیاز به وارد کردن این به 616 00:31:18,800 --> 00:31:22,970 و من می دانم که دقیقا چگونه به من جابهجا اشاره گرها، خیلی، خیلی آسان تر به تصویر 617 00:31:22,970 --> 00:31:27,200 out-- بسیار آسان تر به در اشکالات از کد خود را از دست داد. 618 00:31:27,200 --> 00:31:29,410 همه با آن خوب؟ 619 00:31:29,410 --> 00:31:31,380 باشه. 620 00:31:31,380 --> 00:31:35,120 >> بنابراین من حدس می زنم یک مفهوم است که ما نه واقعا در مورد قبل از هم اکنون صحبت کردیم، 621 00:31:35,120 --> 00:31:38,131 و من حدس می زنم احتمالا شما خواهد yet-- مشاهد نشد 622 00:31:38,131 --> 00:31:40,880 آن نوع از concept-- و جوی پیشرفته این است که ما در واقع یک داده ها 623 00:31:40,880 --> 00:31:43,900 ساختار به نام یک لیست مضاعف مرتبط. 624 00:31:43,900 --> 00:31:46,390 به طوری که شما می توانید ببینید بچه ها، همه ما در حال انجام است ایجاد 625 00:31:46,390 --> 00:31:50,400 ارزش واقعی، اضافی اشاره گر بر روی هر یک از گره های ما 626 00:31:50,400 --> 00:31:52,660 که آن نیز به گره قبلی اشاره می کند. 627 00:31:52,660 --> 00:31:58,170 بنابراین نه تنها ما باید ما گره اشاره به یک بعدی است. 628 00:31:58,170 --> 00:32:01,430 آنها همچنین به یکی از قبلی اشاره می کنند. 629 00:32:01,430 --> 00:32:04,310 من قصد دارم به چشم پوشی از این دو در حال حاضر. 630 00:32:04,310 --> 00:32:06,740 >> پس شما باید یک زنجیره است که می تواند به هر دو روش حرکت می کند، 631 00:32:06,740 --> 00:32:09,630 و سپس آن را کمی ساده تر به منطقی به دنبال همراه. 632 00:32:09,630 --> 00:32:11,896 مثل اینجا، به جای پیگیری، آه، من 633 00:32:11,896 --> 00:32:14,520 باید بدانید که این گره است یکی که من به جابهجا، 634 00:32:14,520 --> 00:32:17,532 من فقط می توانید به اینجا بروید و تنها کاری که مونده قبلی است. 635 00:32:17,532 --> 00:32:19,490 سپس من دقیقا می دانند که است که، و سپس شما 636 00:32:19,490 --> 00:32:21,130 لازم نیست برای گذشتن از تمامیت لیست پیوندی. 637 00:32:21,130 --> 00:32:22,180 آن را کمی آسان تر است. 638 00:32:22,180 --> 00:32:24,960 >> اما به عنوان مثل، شما باید مضاعف مقدار اشاره گر، 639 00:32:24,960 --> 00:32:26,960 که دو برابر مقدار حافظه است. 640 00:32:26,960 --> 00:32:28,950 این بسیاری از اشاره گر به پیگیری است. 641 00:32:28,950 --> 00:32:32,140 آن را کمی پیچیده تر است، اما آن را یک کاربر پسند تر بسته 642 00:32:32,140 --> 00:32:34,080 در مورد آنچه شما در حال تلاش برای انجام. 643 00:32:34,080 --> 00:32:36,910 >> بنابراین این نوع از داده ساختار کاملا وجود دارد، 644 00:32:36,910 --> 00:32:40,280 و ساختار برای بسیار، بسیار ساده به غیر از همه شما با داشتن است، 645 00:32:40,280 --> 00:32:43,850 به جای فقط یک اشاره گر به بعد، شما همچنین یک اشاره گر به قبلی داشته باشد. 646 00:32:43,850 --> 00:32:45,940 که همه تفاوت بود. 647 00:32:45,940 --> 00:32:47,740 همه خوب با که؟ 648 00:32:47,740 --> 00:32:48,240 خنک. 649 00:32:48,240 --> 00:32:50,940 650 00:32:50,940 --> 00:32:53,280 >> همه حق است، بنابراین در حال حاضر من واقعا صرف احتمالا 651 00:32:53,280 --> 00:32:56,870 مانند 15 تا 20 دقیقه و یا بخش عمده ای از بقیه از آن زمان در بخش 652 00:32:56,870 --> 00:32:58,360 صحبت کردن در مورد جداول هش. 653 00:32:58,360 --> 00:33:02,590 چگونه بسیاری از شما بچه ها تنظیمات pset5 را خوانده اند؟ 654 00:33:02,590 --> 00:33:03,620 همه حق است، خوب است. 655 00:33:03,620 --> 00:33:06,160 که بالاتر از 50٪ از معمول. 656 00:33:06,160 --> 00:33:07,560 مشکلی نیست. 657 00:33:07,560 --> 00:33:10,345 >> به طوری که شما بچه ها خواهید دید، شما را به چالش در pset5 هستید 658 00:33:10,345 --> 00:33:16,790 خواهد بود به پیاده سازی یک فرهنگ لغت که در آن شما بیش از 140،000 کلمات بار 659 00:33:16,790 --> 00:33:20,610 که ما به شما و بررسی املا را آن را در برابر همه از متن. 660 00:33:20,610 --> 00:33:22,580 ما شما را به صورت تصادفی به قطعه از ادبیات. 661 00:33:22,580 --> 00:33:23,520 ما به شما اودیسه است. 662 00:33:23,520 --> 00:33:24,561 ما به شما ایلیاد است. 663 00:33:24,561 --> 00:33:26,350 ما به شما آستین پاورز است. 664 00:33:26,350 --> 00:33:28,220 >> و چالش خود را خواهد بود به بررسی املا 665 00:33:28,220 --> 00:33:31,760 هر کلمه در تمام از آن لغت نامه 666 00:33:31,760 --> 00:33:34,960 اساسا با جستجوگر طلسم ما است. 667 00:33:34,960 --> 00:33:38,620 و بنابراین چند قسمت وجود دارد ایجاد این pset، 668 00:33:38,620 --> 00:33:41,970 برای اولین بار شما می خواهید به قادر به واقع بار 669 00:33:41,970 --> 00:33:43,970 همه کلمات را به خود فرهنگ لغت، و سپس شما 670 00:33:43,970 --> 00:33:45,530 می خواهم که قادر به بررسی هجی همه آنها. 671 00:33:45,530 --> 00:33:48,780 و به این ترتیب به عنوان مثل، شما در حال رفتن به نیاز یک ساختار داده که می تواند این کار را انجام سریع 672 00:33:48,780 --> 00:33:50,790 و کارآمد و به صورت پویا. 673 00:33:50,790 --> 00:33:52,900 >> بنابراین من ساده ترین فرض راه برای انجام این کار، شما 674 00:33:52,900 --> 00:33:55,010 احتمالا ایجاد یک آرایه، درست است؟ 675 00:33:55,010 --> 00:33:58,910 ساده ترین راه ذخیره سازی شما است می توانید مجموعه ای از 140،000 کلمات ایجاد 676 00:33:58,910 --> 00:34:03,400 و همه آنها را بصورت مستقیم وجود دارد و سپس آنها را با گذشتن جستجوی دودویی 677 00:34:03,400 --> 00:34:06,780 یا با انتخاب و یا not-- با عرض پوزش که مرتب سازی. 678 00:34:06,780 --> 00:34:10,729 شما می توانید آنها را مرتب و سپس گذشتن آنها توسط جستجوی دودویی یا جستجو فقط خطی 679 00:34:10,729 --> 00:34:13,730 و فقط نهایی از کلمات، اما که طول می کشد یک مقدار زیادی از حافظه، 680 00:34:13,730 --> 00:34:15,190 و آن را بسیار موثر است. 681 00:34:15,190 --> 00:34:18,350 >> و بنابراین ما قصد داریم به شروع صحبت کردن در مورد راه های ساخت 682 00:34:18,350 --> 00:34:20,110 زمان در حال اجرا ما را کارآمد تر. 683 00:34:20,110 --> 00:34:23,190 و هدف ما این است که برای دریافت زمان ثابت که در آن 684 00:34:23,190 --> 00:34:25,810 آن را تقریبا مانند آرایه ها، که در آن شما دسترسی سریع و آنی. 685 00:34:25,810 --> 00:34:28,560 اگر من می خواستم به جستجو برای هر چیز، من می خواهم به قادر به فقط، 686 00:34:28,560 --> 00:34:30,810 رونق، پیدا کردن آن دقیقا، و آن را بیرون بکشید. 687 00:34:30,810 --> 00:34:34,100 و به این ترتیب یک ساختار است که در آن ما می شود تبدیل شدن به بسیار نزدیک 688 00:34:34,100 --> 00:34:37,569 قادر به دسترسی مداوم زمان، این جام مقدس 689 00:34:37,569 --> 00:34:41,370 در برنامه نویسی از ثابت زمان یک جدول هش نامیده می شود. 690 00:34:41,370 --> 00:34:45,370 و به این ترتیب دیوید قبلا ذکر شد [نامفهوم] کمی در سخنرانی، 691 00:34:45,370 --> 00:34:49,100 اما ما قصد داریم که واقعا شیرجه رفتن در عمیق این هفته 692 00:34:49,100 --> 00:34:51,780 بر روی یک تکه که در مورد چگونه یک جدول هش کار می کند. 693 00:34:51,780 --> 00:34:53,949 >> بنابراین راه است که یک رشته هش آثار جدول، برای مثال، 694 00:34:53,949 --> 00:35:00,230 اگر من می خواستم برای ذخیره یک دسته از کلمات، یک دسته از کلمات در زبان انگلیسی، 695 00:35:00,230 --> 00:35:02,940 من از لحاظ نظری می تواند قرار داده موز، سیب، کیوی، انبه، جفت، 696 00:35:02,940 --> 00:35:04,980 و طالبی در همه فقط یک آرایه. 697 00:35:04,980 --> 00:35:07,044 همه آنها می تواند جا در و پیدا کنید. 698 00:35:07,044 --> 00:35:09,210 این می شود نوع درد به جستجو از طریق و دسترسی، 699 00:35:09,210 --> 00:35:12,920 اما راه ساده تر از انجام این کار است که ما می توانیم ایجاد در واقع یک ساختار 700 00:35:12,920 --> 00:35:15,680 نام جدول هش که در آن ما هش. 701 00:35:15,680 --> 00:35:19,880 ما همه از کلید اجرا را از طریق ما یک تابع هش، یک معادله، 702 00:35:19,880 --> 00:35:22,600 که تبدیل همه آنها را به نوعی از ارزش 703 00:35:22,600 --> 00:35:28,740 که پس از آن ما می توانیم بر روی ذخیره اساسا یک آرایه از لیست پیوندی. 704 00:35:28,740 --> 00:35:32,570 >> و بنابراین در اینجا، اگر ما می خواستیم برای ذخیره کلمات انگلیسی، 705 00:35:32,570 --> 00:35:37,250 ما به طور بالقوه می تواند فقط، من نمی مطمئن شوید، به نوبه خود تمام حروف اول 706 00:35:37,250 --> 00:35:39,630 به نوعی یک عدد است. 707 00:35:39,630 --> 00:35:43,140 و بنابراین، برای مثال، اگر من می خواستم A به مترادف با apple-- 708 00:35:43,140 --> 00:35:47,460 و یا با شاخص 0 و B، مترادف با 1، 709 00:35:47,460 --> 00:35:51,030 ما می توانیم 26 مدخل داشته که فقط می تواند ذخیره 710 00:35:51,030 --> 00:35:53,610 همه حروف از الفبای که ما شروع با. 711 00:35:53,610 --> 00:35:56,130 و پس از آن ما می توانیم سیب در شاخص 0. 712 00:35:56,130 --> 00:35:59,160 ما می توانیم موز در شاخص از 1، طالبی در شاخص 2، 713 00:35:59,160 --> 00:36:00,540 و به همین ترتیب، و غیره. 714 00:36:00,540 --> 00:36:04,460 و به این ترتیب اگر من می خواستم به جستجو هش من جدول و دسترسی سیب، 715 00:36:04,460 --> 00:36:07,560 من می دانم که اپل شروع می شود با یک A، و من می دانم که دقیقا 716 00:36:07,560 --> 00:36:10,860 که باید آن را و هش جدول در اندیس 0 به دلیل 717 00:36:10,860 --> 00:36:13,620 از تابع قبلا اختصاص داده است. 718 00:36:13,620 --> 00:36:16,572 >> بنابراین من نمی دانم، ما یک برنامه برای کاربران که در آن 719 00:36:16,572 --> 00:36:18,780 شما با اتهام arbitrarily-- خودسرانه نیست، 720 00:36:18,780 --> 00:36:22,530 با تلاش برای ملاحظه معادلات خوب فکر می کنم 721 00:36:22,530 --> 00:36:25,460 قادر به گسترش همه از ارزش های خود 722 00:36:25,460 --> 00:36:29,370 در راه آنها راحتی می توانید دسترسی از آن به بعد با یک معادله مانند 723 00:36:29,370 --> 00:36:31,130 که شما، خود، مطمئن شوید. 724 00:36:31,130 --> 00:36:35,210 بنابراین به این معنا اگر من می خواستم برای رفتن به انبه، من می دانم، آه، آن را با متر شروع می شود. 725 00:36:35,210 --> 00:36:37,134 آن را باید در صفحه اول از 12 باشد. 726 00:36:37,134 --> 00:36:38,800 من لازم نیست به جستجو از طریق هر چیزی. 727 00:36:38,800 --> 00:36:42,080 من می دانم که exactly-- من فقط می تواند به شاخص 12 و کشیدن که از. 728 00:36:42,080 --> 00:36:45,520 >> همه روشن در مورد چگونگی تابع جدول هش کار می کند؟ 729 00:36:45,520 --> 00:36:48,380 این نوع از فقط یک آرایه پیچیده تر است. 730 00:36:48,380 --> 00:36:50,010 که همه آن است. 731 00:36:50,010 --> 00:36:51,630 باشه. 732 00:36:51,630 --> 00:36:57,690 >> بنابراین من حدس می زنم ما را به اجرا این موضوع از چه 733 00:36:57,690 --> 00:37:06,390 اتفاق می افتد اگر شما چیزهای متعدد که شما در همین شاخص به من بدهید؟ 734 00:37:06,390 --> 00:37:10,570 بنابراین می گویند تابع ما، همه آن بود را که حرف اول بود 735 00:37:10,570 --> 00:37:14,490 و تبدیل آن به یک مربوطه را از طریق 25 شاخص 0. 736 00:37:14,490 --> 00:37:17,137 که اگر کاملا خوب شما فقط یکی از هر کدام. 737 00:37:17,137 --> 00:37:18,970 اما دوم شما شروع داشتن بیش، شما 738 00:37:18,970 --> 00:37:20,910 رفتن به آنچه در برخورد نامیده می شود. 739 00:37:20,910 --> 00:37:25,580 >> بنابراین اگر من سعی کنید برای وارد دفن به یک هش جدول است که در حال حاضر دارای موز بر روی آن، 740 00:37:25,580 --> 00:37:27,870 چه اتفاقی خواهد افتاد وقتی که شما سعی می کنید برای وارد کردن که؟ 741 00:37:27,870 --> 00:37:30,930 همه چیز بد است زیرا موز در حال حاضر در شاخص وجود دارد 742 00:37:30,930 --> 00:37:33,800 که شما می خواهید برای ذخیره آن را در. 743 00:37:33,800 --> 00:37:35,560 توت نوع مانند، آه، چه کار باید بکنم است؟ 744 00:37:35,560 --> 00:37:37,080 من نمی دانم به کجا برود. 745 00:37:37,080 --> 00:37:38,410 چگونه می توانم این را حل کنم؟ 746 00:37:38,410 --> 00:37:41,150 >> و به این ترتیب شما بچه ها نوع خواهد شد ببینید که ما انجام این کار چیزی روی حیله و تزویر 747 00:37:41,150 --> 00:37:44,810 که در آن ما می توانیم نوع در واقع ایجاد لیست پیوندی در آرایه است. 748 00:37:44,810 --> 00:37:46,840 و بنابراین ساده ترین راه در مورد این فکر می کنم، 749 00:37:46,840 --> 00:37:50,830 تمام جدول هش است مجموعه ای از لیست های پیوندی. 750 00:37:50,830 --> 00:37:55,670 و بنابراین، در این معنا، شما این آرایه از اشاره گر زیبا، 751 00:37:55,670 --> 00:37:58,740 و سپس هر اشاره گر در که ارزش، در آن شاخص، 752 00:37:58,740 --> 00:38:00,740 در واقع می تواند به چیزهای دیگر اشاره می کنند. 753 00:38:00,740 --> 00:38:05,720 و بنابراین شما باید تمام این جداگانه زنجیره آینده خاموش از یک آرایه بزرگ است. 754 00:38:05,720 --> 00:38:07,960 >> و بنابراین در اینجا، اگر من می خواستم به قرار دادن انواع توت ها، 755 00:38:07,960 --> 00:38:11,220 من می دانم، خوب، من قصد دارم به ورودی آن را از طریق تابع هش من. 756 00:38:11,220 --> 00:38:15,070 من قصد دارم برای پایان دادن به شاخص 1، و سپس من قصد دارم به قادر به 757 00:38:15,070 --> 00:38:20,410 فقط یک زیر مجموعه کوچک تر از این غول فرهنگ لغت 140،000 کلمه. 758 00:38:20,410 --> 00:38:24,220 و بعد من فقط می تواند نگاه از طریق 1/26 از آن. 759 00:38:24,220 --> 00:38:27,910 >> و به این ترتیب پس از آن من فقط می توانید وارد توت قبل یا بعد از موز 760 00:38:27,910 --> 00:38:28,820 در این مورد؟ 761 00:38:28,820 --> 00:38:29,700 پس از، درست است؟ 762 00:38:29,700 --> 00:38:33,920 و به طوری که شما می خواهید به قرار دادن این گره پس از موز، 763 00:38:33,920 --> 00:38:36,667 و بنابراین شما در حال رفتن به درج در دم که لیست پیوندی. 764 00:38:36,667 --> 00:38:38,500 من قصد دارم برای رفتن به عقب این اسلاید قبلی، 765 00:38:38,500 --> 00:38:40,680 بنابراین شما می توانید ببینید که چگونه بچه ها تابع هش کار می کند. 766 00:38:40,680 --> 00:38:43,980 >> بنابراین تابع هش این معادله است که شما در حال اجرا نوع ورودی خود را 767 00:38:43,980 --> 00:38:46,940 از طریق هر شاخص به شما می خواهید به آن اختصاص به سمت. 768 00:38:46,940 --> 00:38:51,130 و به همین ترتیب، در این مثال، همه ما می خواست برای انجام شد را حرف اول، 769 00:38:51,130 --> 00:38:55,890 تبدیل آن به یک شاخص، پس ما می توانید ذخیره که در تابع هش ما است. 770 00:38:55,890 --> 00:39:00,160 همه ما در این جا انجام است که ما تبدیل حرف اول. 771 00:39:00,160 --> 00:39:04,770 بنابراین keykey [0] فقط حرف اول از هر رشته ما با داشتن، 772 00:39:04,770 --> 00:39:05,720 ما در حال عبور در. 773 00:39:05,720 --> 00:39:09,740 ما در حال تبدیل که به بالا، و ما در حال کم کردن توسط حروف بزرگ A، 774 00:39:09,740 --> 00:39:11,740 به طوری که تمام است که انجام به ما تعداد 775 00:39:11,740 --> 00:39:13,670 که در آن ما می توانیم ارزش های ما بر روی هش. 776 00:39:13,670 --> 00:39:16,550 >> و سپس ما در حال رفتن به بازگشت اندازه ماژول هش. 777 00:39:16,550 --> 00:39:19,340 بسیار، بسیار مراقب باشید چون، به لحاظ نظری، در اینجا 778 00:39:19,340 --> 00:39:21,870 مقدار هش خود را می تواند بی نهایت است. 779 00:39:21,870 --> 00:39:23,660 این فقط می تواند به در و در و در. 780 00:39:23,660 --> 00:39:26,080 می تواند برخی از واقعا، واقعا ارزش بزرگ، 781 00:39:26,080 --> 00:39:29,849 اما به دلیل جدول هش خود را که شما ایجاد کرده اید فقط 26 شاخص، 782 00:39:29,849 --> 00:39:31,890 شما می خواهید مطمئن شوید شما modulusing به طوری که شما 783 00:39:31,890 --> 00:39:33,848 انجام run-- نیست آن را همان چیزی که به عنوان queue-- خود را 784 00:39:33,848 --> 00:39:36,320 به طوری که شما اجرا نمی کردن پایین تابع هش خود را. 785 00:39:36,320 --> 00:39:39,210 >> شما می خواهید به آن را بسته بندی در اطراف به همان شیوه در [نامفهوم] که 786 00:39:39,210 --> 00:39:41,750 شما مانند یک بسیار بود، نامه ای بسیار بزرگ، شما 787 00:39:41,750 --> 00:39:43,740 نمی خواست که به فقط اجرا کردن به پایان است. 788 00:39:43,740 --> 00:39:46,948 همان چیزی که در اینجا، شما می خواهید مطمئن شوید آن را اجرا نمی کند در انتهای با کاغذ بسته بندی 789 00:39:46,948 --> 00:39:48,330 در اطراف به بالای جدول. 790 00:39:48,330 --> 00:39:50,530 پس این است که فقط بسیار تابع هش ساده است. 791 00:39:50,530 --> 00:39:56,570 همه که انجام بگیرد اولین نامه ای از هر ورودی ما بود 792 00:39:56,570 --> 00:40:01,660 و تبدیل آن به یک شاخص که ما می تواند به جدول هش ما قرار داده است. 793 00:40:01,660 --> 00:40:05,450 >> آره، و بنابراین همانطور که گفتم قبل، راه است که ما حل و فصل برخورد 794 00:40:05,450 --> 00:40:09,330 در هش ما جداول داشتن، آنچه ما تماس بگیرید، زنجیری. 795 00:40:09,330 --> 00:40:13,860 بنابراین اگر شما سعی می کنید برای وارد کردن چند کلمات است که با همین شروع، 796 00:40:13,860 --> 00:40:16,145 شما در حال رفتن به یک مقدار هش. 797 00:40:16,145 --> 00:40:18,770 آوکادو و سیب، اگر شما اجرا آن را از طریق تابع هش ما، 798 00:40:18,770 --> 00:40:21,450 می خواهیم به شما می دهد به همان تعداد، تعداد 0. 799 00:40:21,450 --> 00:40:24,550 و به این ترتیب راه حل این است که ما که ما در واقع می تواند به نوعی از آنها پیوند 800 00:40:24,550 --> 00:40:27,010 با هم از طریق لیست های پیوندی. 801 00:40:27,010 --> 00:40:29,600 >> و به این ترتیب در این معنا، شما بچه ها می توانید نوع دید 802 00:40:29,600 --> 00:40:32,640 چگونه ساختارهای داده که ما شده ایم که قبلا تنظیم 803 00:40:32,640 --> 00:40:35,870 مثل کشمش مرتبط لیست نوع از می توانید با هم به یک آمده است. 804 00:40:35,870 --> 00:40:38,860 و پس از آن شما می توانید دور ایجاد ساختارهای کارآمد تر داده 805 00:40:38,860 --> 00:40:43,350 که می توانید مقدار بیشتری از دسته داده ها، که به صورت پویا تغییر اندازه بسته 806 00:40:43,350 --> 00:40:44,870 به نیازهای شما. 807 00:40:44,870 --> 00:40:45,620 همه روشن؟ 808 00:40:45,620 --> 00:40:47,580 نوع هر کس از روشن در چه اتفاقی می افتد؟ 809 00:40:47,580 --> 00:40:52,110 >> اگر من می خواستم به insert-- چه یک میوه است که با، من نمی دانم شروع می شود، 810 00:40:52,110 --> 00:40:54,726 B، به غیر از انواع توت ها، موز. 811 00:40:54,726 --> 00:40:55,710 >> مخاطبان: توت سیاه. 812 00:40:55,710 --> 00:40:57,910 >> ANDI PENG: شاه توت، شاه توت. 813 00:40:57,910 --> 00:41:00,530 کجا شاه توت اینجا بروم؟ 814 00:41:00,530 --> 00:41:04,251 خب، ما در واقع طبقه بندی شده اند این در عین حال، اما به لحاظ نظری 815 00:41:04,251 --> 00:41:06,250 اگر ما می خواستیم به این به ترتیب حروف الفبا، 816 00:41:06,250 --> 00:41:07,944 که در آن باید BLACKBERRY رفت؟ 817 00:41:07,944 --> 00:41:09,210 >> مخاطبان: [نامفهوم] 818 00:41:09,210 --> 00:41:11,100 >> ANDI PENG: دقیقا، پس در اینجا، درست است؟ 819 00:41:11,100 --> 00:41:14,950 اما از آنجایی که بسیار دشوار است برای reorder-- من حدس می زنم آن را تا به شما بچه ها. 820 00:41:14,950 --> 00:41:17,920 شما بچه ها کاملا می تواند اجرای هر آنچه که شما می خواهید. 821 00:41:17,920 --> 00:41:20,730 راه کارآمد تر برای انجام این کار شاید 822 00:41:20,730 --> 00:41:24,570 می شود به مرتب کردن خود را در ارتباط لیست را به ترتیب حروف الفبا، 823 00:41:24,570 --> 00:41:26,520 و تا زمانی که شما هستید قرار دادن همه چیز، شما می خواهید 824 00:41:26,520 --> 00:41:28,632 تا مطمئن شوید که آنها را وارد به به ترتیب حروف الفبا 825 00:41:28,632 --> 00:41:30,590 به طوری که پس از آن زمانی که شما تلاش آنها را جستجو کنید، 826 00:41:30,590 --> 00:41:32,410 شما لازم نیست که به گذشتن از همه چیز است. 827 00:41:32,410 --> 00:41:35,290 شما دقیقا همان جایی که می دانم آن است، و آن را آسان تر. 828 00:41:35,290 --> 00:41:39,100 >> اما اگر شما از نوع همه چیز به طور تصادفی پراکنده، 829 00:41:39,100 --> 00:41:41,420 شما هنوز هم در حال رفتن به به آن گذشتن به هر حال. 830 00:41:41,420 --> 00:41:44,990 و به همین ترتیب اگر من می خواستم فقط قرار دادن شاه توت در اینجا 831 00:41:44,990 --> 00:41:47,470 و من می خواستم به جستجو برای آن را، من می دانم، آه، شاه توت 832 00:41:47,470 --> 00:41:52,012 باید با شاخص 1 شروع، بنابراین من مطمئن شوید بلافاصله فقط در 1 جستجو کنید. 833 00:41:52,012 --> 00:41:53,970 و پس از آن من می توانم نوع گذشتن از لیست پیوندی 834 00:41:53,970 --> 00:41:56,120 تا زمانی که من به شاه توت، و پس از آن، آره؟ 835 00:41:56,120 --> 00:41:59,550 >> مخاطبان: اگر شما در حال تلاش برای create-- من حدس می زنم مثل این هش بسیار ساده است 836 00:41:59,550 --> 00:42:00,050 عملکرد. 837 00:42:00,050 --> 00:42:02,835 و اگر ما می خواستیم به انجام لایه های متعدد از که مانند، 838 00:42:02,835 --> 00:42:05,870 خوب، ما می خواهیم برای جدا به مثل همه حروف الفبا 839 00:42:05,870 --> 00:42:09,040 و سپس دوباره به دوست یکی دیگر از مجموعه از حروف الفبا است که در آن، 840 00:42:09,040 --> 00:42:11,715 مانند یک رشته هش قرار دادن ما جدول در یک جدول هش، 841 00:42:11,715 --> 00:42:13,256 و یا مانند یک تابع در یک تابع؟ 842 00:42:13,256 --> 00:42:14,880 و یا that-- است 843 00:42:14,880 --> 00:42:17,510 >> ANDI PENG: پس هش خود را تابع هش خود را جدول 844 00:42:17,510 --> 00:42:19,360 می تواند به عنوان بزرگ به عنوان شما می خواهید آن را به. 845 00:42:19,360 --> 00:42:21,930 بنابراین در این معنا، من فکر کردم آن بسیار آسان است، بسیار 846 00:42:21,930 --> 00:42:25,320 ساده برای من به بر اساس فقط به نوع در حرف از کلمه است. 847 00:42:25,320 --> 00:42:28,690 و بنابراین تنها 26 گزینه وجود دارد. 848 00:42:28,690 --> 00:42:32,650 تنها می توانم از 26 گزینه 0 تا 25 زیرا آنها تنها می توانید 849 00:42:32,650 --> 00:42:36,510 شروع از A تا Z. اما اگر شما می خواهید برای اضافه کردن، شاید، پیچیدگی بیشتر 850 00:42:36,510 --> 00:42:39,260 یا سریع تر زمان اجرا و به خود جدول هش، شما کاملا 851 00:42:39,260 --> 00:42:40,760 می توانید تمام انواع چیزهای است. 852 00:42:40,760 --> 00:42:43,330 شما می توانید خود را معادله است که به شما می دهد 853 00:42:43,330 --> 00:42:48,000 توزیع بیشتر در خود کلمات، سپس هنگامی که شما را جستجو کنید، 854 00:42:48,000 --> 00:42:49,300 آن را به سریع تر. 855 00:42:49,300 --> 00:42:52,100 >> این کاملا به شما بچه ها چگونه می خواهید به پیاده سازی است. 856 00:42:52,100 --> 00:42:55,140 فکر می کنم از آن را به عنوان تنها سطل. 857 00:42:55,140 --> 00:42:57,376 اگر من می خواستم به 26 سطل، من قصد دارم 858 00:42:57,376 --> 00:42:59,420 مرتب سازی بر اساس همه چیز را به آن سطل. 859 00:42:59,420 --> 00:43:02,980 اما من قصد دارم به یک دسته از مسائل در هر سطل، 860 00:43:02,980 --> 00:43:05,890 بنابراین اگر شما می خواهید آن را سریع تر و کارآمد تر، 861 00:43:05,890 --> 00:43:07,190 اجازه دهید من صد سطل. 862 00:43:07,190 --> 00:43:09,290 >> اما پس از آن شما باید به شکل از راه به مسائل به طوری که آنها 863 00:43:09,290 --> 00:43:11,040 در سطل مناسب آنها باید در باشد. 864 00:43:11,040 --> 00:43:13,331 اما پس از آن که شما در واقع می خواهید در سطل که نگاه کنید، 865 00:43:13,331 --> 00:43:16,410 آن را بسیار سریع تر به دلیل وجود دارد چیزهای کمتر در هر سطل. 866 00:43:16,410 --> 00:43:20,250 و به این ترتیب، آره، که در واقع ترفند را برای شما در pset5 بچه 867 00:43:20,250 --> 00:43:22,360 این است که به شما امکان می به چالش کشیده فقط به ایجاد 868 00:43:22,360 --> 00:43:26,170 هر آنچه از کارآمد ترین تابع شما می توانید از فکر می کنم به 869 00:43:26,170 --> 00:43:28,520 قادر به ذخیره و بررسی این مقادیر. 870 00:43:28,520 --> 00:43:30,840 >> کاملا به شما بچه ها حال شما می خواهید به انجام آن، 871 00:43:30,840 --> 00:43:32,229 اما یک نقطه واقعا خوب است. 872 00:43:32,229 --> 00:43:34,520 این نوع از منطق شما می خواهم برای شروع تفکر در مورد 873 00:43:34,520 --> 00:43:37,236 است، خوب، چرا من سطل تر می کند. 874 00:43:37,236 --> 00:43:39,527 و پس از آن من به جستجو همه چیز کمتر، و پس از آن شاید من 875 00:43:39,527 --> 00:43:41,640 یک تابع هش متفاوت است. 876 00:43:41,640 --> 00:43:45,500 >> آره، بسیاری از راه های انجام این کار وجود دارد pset، برخی از آنها سریع تر از دیگران است. 877 00:43:45,500 --> 00:43:50,630 من کاملا رفتن به فقط ببینید که چگونه سریع سریعترین شما بچه ها بود خواهد 878 00:43:50,630 --> 00:43:55,170 قادر به گرفتن توابع خود را به کار. 879 00:43:55,170 --> 00:43:58,176 OK، هر کس در خوب زنجیره و هش جدول؟ 880 00:43:58,176 --> 00:44:00,800 این در واقع مثل یک بسیار ساده مفهوم اگر شما فکر می کنم. 881 00:44:00,800 --> 00:44:05,160 همه آن است که جدا از هر ورودی های خود را به سطل هستند، 882 00:44:05,160 --> 00:44:10,670 مرتب سازی آنها، و سپس جستجو در لیست است که با وجود همراه است. 883 00:44:10,670 --> 00:44:11,852 >> خنک. 884 00:44:11,852 --> 00:44:18,160 همه حق است، در حال حاضر ما یک نوع متفاوت ساختار داده ها که در یک درخت نامیده می شود. 885 00:44:18,160 --> 00:44:20,850 بیایید در رفتن و صحبت در مورد تلاش می کند که متفاوت و مجزا، 886 00:44:20,850 --> 00:44:22,330 اما در همان رده. 887 00:44:22,330 --> 00:44:29,010 اساسا، همه یک درخت است که به جای سازماندهی داده ها در راه خطی 888 00:44:29,010 --> 00:44:32,560 که یک جدول هش شما does-- می دانید، آن را به یک بالا و پایین 889 00:44:32,560 --> 00:44:37,900 و سپس شما نوع پیوند را از it-- درخت دارای بالا که شما در ریشه پاسخ، 890 00:44:37,900 --> 00:44:40,220 و سپس آن را برگ اطراف آن. 891 00:44:40,220 --> 00:44:42,390 >> و پس همه شما باید در اینجا فقط گره بالا است 892 00:44:42,390 --> 00:44:45,980 که به گره های دیگر، که نقطه به گره، و غیره و غیره. 893 00:44:45,980 --> 00:44:48,130 و بنابراین شما فقط باید شاخه تقسیم. 894 00:44:48,130 --> 00:44:53,255 این فقط یک راه متفاوتی برای سازماندهی این داده، و چون ما آن را یک درخت پاسخ، 895 00:44:53,255 --> 00:44:56,270 شما بچه ها just-- آن را فقط مدل به مانند یک درخت است. 896 00:44:56,270 --> 00:44:57,670 به همین دلیل است که ما آن را درختان. 897 00:44:57,670 --> 00:44:59,370 >> جدول هش به نظر می رسد مانند یک میز. 898 00:44:59,370 --> 00:45:01,310 درخت درست مثل یک درخت به نظر می رسد. 899 00:45:01,310 --> 00:45:03,300 همه آن است که یک جداگانه روش سازماندهی گره 900 00:45:03,300 --> 00:45:06,020 با توجه به آنچه نیاز خود هستند. 901 00:45:06,020 --> 00:45:11,810 >> بنابراین شما باید یک ریشه و سپس شما باید برگ. 902 00:45:11,810 --> 00:45:15,380 راه است که ما به خصوص می توانید فکر می کنم در مورد آن یک درخت دودویی است، 903 00:45:15,380 --> 00:45:18,150 یک درخت دودویی است که فقط یک نوع خاصی از یک درخت 904 00:45:18,150 --> 00:45:22,450 که در آن هر گره فقط نقطه به، در حداکثر، دو گره دیگر. 905 00:45:22,450 --> 00:45:25,434 و بنابراین در اینجا شما مشخص تقارن در درخت خود را 906 00:45:25,434 --> 00:45:28,600 که باعث می شود آن را آسان تر به نوع نگاه در چه ارزش شما چون شما هستند 907 00:45:28,600 --> 00:45:30,150 همیشه یک سمت چپ یا حق. 908 00:45:30,150 --> 00:45:33,150 هرگز مثل یک سوم سمت چپ وجود دارد در سمت چپ و یا یک چهارم از سمت چپ. 909 00:45:33,150 --> 00:45:36,358 آن را فقط شما یک چپ و راست و شما می توانید هر کدام از این دو را جستجو کنید. 910 00:45:36,358 --> 00:45:38,980 و چرا این مفید است؟ 911 00:45:38,980 --> 00:45:40,980 راه این است که مفید است اگر شما به دنبال 912 00:45:40,980 --> 00:45:42,890 برای جستجو از طریق ارزش، درست است؟ 913 00:45:42,890 --> 00:45:45,640 به جای اجرای باینری جستجو در یک آرایه خطا، 914 00:45:45,640 --> 00:45:49,260 اگر شما می خواهید قادر به وارد کردن گره و از بین بردن گره در اراده و همچنین 915 00:45:49,260 --> 00:45:52,185 حفظ جستجو ظرفیت های جستجوی دودویی. 916 00:45:52,185 --> 00:45:54,560 بنابراین در این روش، ما به نوعی هستیم tricking-- به یاد داشته باشید هنگامی که ما 917 00:45:54,560 --> 00:45:56,530 گفت لیست های پیوندی می تواند جستجوی دودویی؟ 918 00:45:56,530 --> 00:46:01,700 ما نوع ایجاد یک ساختار داده که کلاهبرداری است که به کار می کند. 919 00:46:01,700 --> 00:46:05,034 >> و لیست به دلیل مرتبط خطی هستند، آنها تنها یکی پس از دیگری را لینک کنید. 920 00:46:05,034 --> 00:46:06,950 ما به نوعی می تواند دارند نوع دیگری از اشاره گر 921 00:46:06,950 --> 00:46:09,408 آن نقطه به گره های مختلف است که می تواند ما را با جستجو کمک کند. 922 00:46:09,408 --> 00:46:12,590 و بنابراین در اینجا، اگر من می خواستم یک درخت جستجوی دودویی، 923 00:46:12,590 --> 00:46:14,090 من می دانم که اگر وسط من 55. 924 00:46:14,090 --> 00:46:18,280 من فقط رفتن ایجاد می کند که به عنوان وسط من، به عنوان ریشه من، 925 00:46:18,280 --> 00:46:20,770 و سپس من قصد دارم به ارزش را از آن بچرخد. 926 00:46:20,770 --> 00:46:25,610 >> بنابراین در اینجا، اگر من قصد دارم به جستجو برای ارزش 66، من می توانم در 55 شروع می شود. 927 00:46:25,610 --> 00:46:27,310 آن را 66 بیشتر از 55؟ 928 00:46:27,310 --> 00:46:30,970 بله از آن است، به طوری که من می دانم من دردعضلات جستجو من ñ اشاره گر راست این درخت. 929 00:46:30,970 --> 00:46:32,440 من به 77 است. 930 00:46:32,440 --> 00:46:35,367 OK، 66 کمتر از 77 یا بیشتر از؟ 931 00:46:35,367 --> 00:46:37,950 این کمتر از، بنابراین شما می دانید، آه، است که به گره است. 932 00:46:37,950 --> 00:46:41,410 >> و بنابراین در اینجا ما از حفظ همه چیزهایی که در مورد آرایه ها، 933 00:46:41,410 --> 00:46:44,420 بنابراین مانند تغییر اندازه پویا از اشیاء، بودن 934 00:46:44,420 --> 00:46:49,530 قادر به وارد کردن و حذف خواهد شد، بدون نیاز به ثابت نگران 935 00:46:49,530 --> 00:46:50,370 مقدار فضای. 936 00:46:50,370 --> 00:46:52,820 ما هنوز همه حفظ کسانی که همه چیز فوق العاده 937 00:46:52,820 --> 00:46:57,140 در حالی که همچنین قادر به حفظ بودن ورود به سیستم و زمان جستجوی دودویی جستجو 938 00:46:57,140 --> 00:47:00,450 که ما قبلا تنها قادر به گرفتن یک عبارت است. 939 00:47:00,450 --> 00:47:06,310 >> ساختار داده ها سرد، نوع پیچیده برای پیاده سازی، گره. 940 00:47:06,310 --> 00:47:08,311 که شما می توانید، تمام آن را ببینید ساختار گره است 941 00:47:08,311 --> 00:47:10,143 است که شما باید به سمت چپ و یک اشاره گر است. 942 00:47:10,143 --> 00:47:11,044 که همه آن است. 943 00:47:11,044 --> 00:47:12,960 بنابراین نه تنها داشتن یک X و یا قبلی است. 944 00:47:12,960 --> 00:47:15,920 شما باید یک سمت چپ یا راست، و سپس شما می توانید نوع آنها را به هم 945 00:47:15,920 --> 00:47:16,836 با این حال شما را انتخاب کنید. 946 00:47:16,836 --> 00:47:21,080 947 00:47:21,080 --> 00:47:24,270 >> OK، ما در واقع رفتن فقط چند دقیقه طول بکشد. 948 00:47:24,270 --> 00:47:25,790 بنابراین ما قصد داریم برای رفتن به عقب است. 949 00:47:25,790 --> 00:47:28,270 همانطور که گفتم پیش از این، من از نوع توضیح داد 950 00:47:28,270 --> 00:47:31,520 منطق چگونه ما از طریق این جستجو. 951 00:47:31,520 --> 00:47:33,860 ما قصد داریم به تلاش pseudocoding برای دیدن این 952 00:47:33,860 --> 00:47:38,000 اگر ما به نوعی می تواند اعمال منطق دودویی جستجو 953 00:47:38,000 --> 00:47:40,055 به یک نوع متفاوت از ساختار داده. 954 00:47:40,055 --> 00:47:45,049 اگر شما بچه ها می خواهید به مانند یک زن و شوهر را دقیقه فقط در مورد این فکر می کنم. 955 00:47:45,049 --> 00:48:45,927 956 00:48:45,927 --> 00:48:46,925 باشه. 957 00:48:46,925 --> 00:48:51,407 همه حق است، من قصد دارم به در واقع فقط به شما the-- هیچ، 958 00:48:51,407 --> 00:48:52,990 ما در مورد شبه صحبت می کنم. 959 00:48:52,990 --> 00:48:56,580 بنابراین آیا کسی می خواهید به یک چاقو در چه 960 00:48:56,580 --> 00:49:02,100 اولین چیزی که شما می خواهید برای انجام به هنگام شما در حال شروع کردن جستجو است؟ 961 00:49:02,100 --> 00:49:04,460 اگر ما به دنبال ارزش 66، چه 962 00:49:04,460 --> 00:49:07,940 اولین چیزی که ما می خواهیم کاری انجام دهید اگر ما می خواهیم به دودویی جستجو این درخت؟ 963 00:49:07,940 --> 00:49:10,760 >> رسید شما می خواهید به نگاه راست و نگاه چپ و ببینید [نامفهوم] 964 00:49:10,760 --> 00:49:11,230 تعداد بیشتر است. 965 00:49:11,230 --> 00:49:12,271 >> ANDI PENG: بله، دقیقا. 966 00:49:12,271 --> 00:49:15,350 بنابراین شما در حال رفتن به ریشه خود نگاه کنید. 967 00:49:15,350 --> 00:49:18,180 بسیاری از روش شما می توانید پاسخ وجود دارد آن، خود را از مردم گره پدر و مادر می گویند. 968 00:49:18,180 --> 00:49:21,317 من دوست دارم بگویم ریشه به دلیل که مانند ریشه درخت است. 969 00:49:21,317 --> 00:49:23,400 شما در حال رفتن به در نگاه کنید گره ریشه خود را، و شما 970 00:49:23,400 --> 00:49:26,940 رفتن به 66 بیشتر یا کمتر از 55. 971 00:49:26,940 --> 00:49:30,360 و اگر آن را بیش از، خوب، آن است بیشتر از، که در آن ما می خواهیم به نگاه می کنید؟ 972 00:49:30,360 --> 00:49:32,000 ما کجا باید به جستجو در حال حاضر، درست است؟ 973 00:49:32,000 --> 00:49:34,340 ما می خواهیم به جستجو در نیمه راست این درخت. 974 00:49:34,340 --> 00:49:38,390 >> بنابراین ما باید، به راحتی، یک اشاره گر است که اشاره به سمت راست. 975 00:49:38,390 --> 00:49:44,325 و به این ترتیب پس از آن ما می توانیم راه ریشه های جدید ما را به عنوان 77. 976 00:49:44,325 --> 00:49:46,450 ما فقط می توانید در هر کجا بروید به اشاره گر اشاره شده است. 977 00:49:46,450 --> 00:49:49,100 خوب، آه، در اینجا ما در حال شروع در 77، و ما فقط می توانید 978 00:49:49,100 --> 00:49:51,172 انجام این کار به صورت بازگشتی دوباره و دوباره. 979 00:49:51,172 --> 00:49:52,880 در این راه، شما نوع از یک تابع. 980 00:49:52,880 --> 00:49:57,430 شما باید یک راه از جستجو که شما می توانید فقط تکرار و بیش از بیش و بیش از، 981 00:49:57,430 --> 00:50:02,720 بسته به جایی که می خواهید به نگاه تا زمانی که شما در نهایت به ارزش گرفتن 982 00:50:02,720 --> 00:50:04,730 که شما در جستجوی. 983 00:50:04,730 --> 00:50:05,230 را حس؟ 984 00:50:05,230 --> 00:50:07,800 >> من در مورد به شما نشان می دهد واقعی هستم کد، و آن تعداد زیادی از کد است. 985 00:50:07,800 --> 00:50:08,674 بدون نیاز به دمدمی مزاجی. 986 00:50:08,674 --> 00:50:09,910 ما را از طریق آن صحبت کنید. 987 00:50:09,910 --> 00:50:13,410 988 00:50:13,410 --> 00:50:14,020 >> قطعا نه. 989 00:50:14,020 --> 00:50:15,061 که فقط شبه بود. 990 00:50:15,061 --> 00:50:17,860 OK، که فقط شبه بود، که مجموعه بیت، 991 00:50:17,860 --> 00:50:19,751 اما آن را کاملا خوب است. 992 00:50:19,751 --> 00:50:21,000 همه زیر همراه است؟ 993 00:50:21,000 --> 00:50:24,260 اگر ریشه تهی است، بازگشت نادرست این یعنی 994 00:50:24,260 --> 00:50:26,850 شما حتی چیزی وجود دارد. 995 00:50:26,850 --> 00:50:31,376 >> اگر ریشه n مقدار، بنابراین اگر آن را اتفاق می افتد به یکی از شما به دنبال در، 996 00:50:31,376 --> 00:50:34,000 پس از آن شما در حال رفتن به بازگشت واقعی چون شما می دانید که شما به آن شده است. 997 00:50:34,000 --> 00:50:36,250 اما اگر مقدار کمتر است از ریشه N، شما 998 00:50:36,250 --> 00:50:38,332 رفتن به جستجوی سمت چپ کودک و یا برگ سمت چپ، 999 00:50:38,332 --> 00:50:39,540 هر آنچه که شما می خواهید به آن تماس بگیرید. 1000 00:50:39,540 --> 00:50:41,750 و اگر مقدار بزرگتر از ریشه است، شما در حال رفتن به جستجو در درخت سمت راست، 1001 00:50:41,750 --> 00:50:44,610 پس از آن فقط تابع اجرا از طریق دوباره جستجو کنید. 1002 00:50:44,610 --> 00:50:48,037 >> و اگر ریشه تهی است، که به معنای پایان به شما رسیده ایم؟ 1003 00:50:48,037 --> 00:50:50,120 این بدان معناست که شما هیچ بیشتر برگ بیشتر برای جستجو، 1004 00:50:50,120 --> 00:50:52,230 سپس شما می دانید، آه، من حدس می زنم آن در اینجا نیست 1005 00:50:52,230 --> 00:50:55,063 چرا که بعد از من را از طریق نگاه همه چیز و آن را در اینجا نیست، 1006 00:50:55,063 --> 00:50:56,930 آن را نه تنها ممکن است در اینجا باشد. 1007 00:50:56,930 --> 00:50:58,350 >> آیا این را حس به همه؟ 1008 00:50:58,350 --> 00:51:03,230 بنابراین آن را مانند جستجوی دودویی حفظ است قابلیت های لیست های پیوندی. 1009 00:51:03,230 --> 00:51:09,200 سرد، و به طوری که نوع دوم ساختار داده شما بچه ها 1010 00:51:09,200 --> 00:51:13,180 می توانید سعی کنید در اجرای pset خود را، شما فقط باید به انتخاب یک روش. 1011 00:51:13,180 --> 00:51:19,430 اما شاید یک روش جایگزین برای جدول هش چیزی است که ما یک درخت پیشوندی پاسخ. 1012 00:51:19,430 --> 00:51:24,080 >> همه یک درخت پیشوندی است که یک نوع خاصی از درخت که 1013 00:51:24,080 --> 00:51:28,600 دارای ارزش است که به ارزش های دیگر بروید. 1014 00:51:28,600 --> 00:51:31,450 بنابراین به جای داشتن یک فایل باینری درخت به این معنا که تنها یک 1015 00:51:31,450 --> 00:51:35,940 چیزی که می تواند به دو مرحله، شما می توانید نقطه یک چیز را به بسیاری از چیزهای. 1016 00:51:35,940 --> 00:51:39,450 شما اساسا آرایه ها دارای که در داخل آن شما ذخیره 1017 00:51:39,450 --> 00:51:41,790 اشاره گر است که به دیگر آرایه اشاره می کنند. 1018 00:51:41,790 --> 00:51:45,210 1019 00:51:45,210 --> 00:51:49,460 >> بنابراین گره از اینکه چگونه ما یک درخت به تعریف 1020 00:51:49,460 --> 00:51:52,590 این است که ما می خواهیم به یک بولی، کلمه C، درست است؟ 1021 00:51:52,590 --> 00:51:54,920 بنابراین گره بولی است مانند درست یا غلط، 1022 00:51:54,920 --> 00:51:58,490 اول از همه در سر که آرایه، این یک کلمه است؟ 1023 00:51:58,490 --> 00:52:03,620 در مرحله دوم، شما می خواهید به اشاره گر به هر آنچه که بقیه از آنها هستند. 1024 00:52:03,620 --> 00:52:07,470 مجموعه بیتی، انتزاعی کمی است، اما من تمام آنچه که به معنی توضیح دهد. 1025 00:52:07,470 --> 00:52:13,800 >> بنابراین در اینجا، در بالا، اگر شما یک آرایه اعلام در حال حاضر، 1026 00:52:13,800 --> 00:52:17,040 یک گره در آن شما باید یک عبارت بولی مقدار ذخیره شده در جلو 1027 00:52:17,040 --> 00:52:19,490 که به شما می گوید این یک کلمه است؟ 1028 00:52:19,490 --> 00:52:20,520 آیا این یک کلمه نیست؟ 1029 00:52:20,520 --> 00:52:23,240 و پس از آن شما باید بقیه آرایه خود را که 1030 00:52:23,240 --> 00:52:26,040 در واقع ذخیره تمام فرصت از آنچه در آن می تواند باشد. 1031 00:52:26,040 --> 00:52:28,660 بنابراین، برای مثال، مانند در بالای شما 1032 00:52:28,660 --> 00:52:32,140 اولین چیزی که می گوید درست است یا نادرست، آری یا نه، این یک کلمه است. 1033 00:52:32,140 --> 00:52:38,130 >> و سپس شما را از 0 تا 26 حروف است که شما می توانید ذخیره کنید. 1034 00:52:38,130 --> 00:52:42,790 اگر من می خواستم به جستجو در اینجا برای خفاش، من به بالای صفحه بروید 1035 00:52:42,790 --> 00:52:49,200 و من برای B. نگاه من B در من آرایه، و بنابراین من می دانم، OK، B یک کلمه است؟ 1036 00:52:49,200 --> 00:52:53,010 B یک کلمه نیست، پس در نتیجه من باید جستجو شود. 1037 00:52:53,010 --> 00:52:56,410 من از B، و من به نگاه اشاره گر است که اشاره به سمت B 1038 00:52:56,410 --> 00:53:00,900 و من می بینم یک آرایه از اطلاعات، ساختار همان است که ما قبل بود. 1039 00:53:00,900 --> 00:53:05,240 >> و here-- آه، بعدی نامه را در [نامفهوم] A. است 1040 00:53:05,240 --> 00:53:07,210 بنابراین ما در آن آرایه است. 1041 00:53:07,210 --> 00:53:10,860 ما پیدا کردن مقدار هشتم، و سپس ما نگاه کنید تا ببینید، آه، 1042 00:53:10,860 --> 00:53:12,840 با سلام، این است که یک کلمه، B-A یک کلمه است؟ 1043 00:53:12,840 --> 00:53:13,807 آن است که یک کلمه نیست. 1044 00:53:13,807 --> 00:53:14,890 ما باید به دنبال حفظ. 1045 00:53:14,890 --> 00:53:17,850 >> و پس ما به آن نگاه اشاره گر از یک نقطه، 1046 00:53:17,850 --> 00:53:21,130 و آن را به یکی دیگر از راه در اشاره که ما آن را ارزش بیشتری ذخیره می شود. 1047 00:53:21,130 --> 00:53:24,150 و در نهایت، ما برای به دست آوردن B-A-T است، که یک کلمه است. 1048 00:53:24,150 --> 00:53:25,970 و تا زمان بعدی شما نگاه کنید، شما در حال رفتن 1049 00:53:25,970 --> 00:53:30,850 به که چک از، بله، این تابع بولی است. 1050 00:53:30,850 --> 00:53:35,450 و به این ترتیب به این معنا که ما مهربان هستید داشتن یک درخت با آرایه ها. 1051 00:53:35,450 --> 00:53:39,890 >> بنابراین پس از آن شما می توانید نوع جستجو است. 1052 00:53:39,890 --> 00:53:43,650 به جای یک تابع هش کردن و اختصاص دادن مقادیر شده توسط لیست پیوندی، 1053 00:53:43,650 --> 00:53:49,190 شما فقط می توانید پیاده سازی یک درخت که downwords جستجو می کند. 1054 00:53:49,190 --> 00:53:50,850 واقعا، واقعا چیزهای پیچیده است. 1055 00:53:50,850 --> 00:53:54,060 آسان نیست در مورد چون من دوست دارم فکر می کنم هستم تف بسیاری از ساختارهای داده 1056 00:53:54,060 --> 00:53:58,710 در شما، اما همه نوع درک چگونگی منطق این کار می کند؟ 1057 00:53:58,710 --> 00:54:01,920 >> باشه خوبه. 1058 00:54:01,920 --> 00:54:05,600 بنابراین B-A-T، و پس از آن شما در حال رفتن به جستجو. 1059 00:54:05,600 --> 00:54:07,940 دفعه بعد که شما در حال رفتن برای دیدن، آه، هی، این درست است، 1060 00:54:07,940 --> 00:54:09,273 بنابراین من می دانم این باید یک کلمه باشد. 1061 00:54:09,273 --> 00:54:12,030 1062 00:54:12,030 --> 00:54:13,770 >> همان چیزی که برای باغ وحش. 1063 00:54:13,770 --> 00:54:17,960 بنابراین در اینجا چیزی نیست در حال حاضر، اگر ما می خواستم به جستجو برای باغ وحش، در حال حاضر، 1064 00:54:17,960 --> 00:54:20,780 در حال حاضر باغ وحش است نه کلمه در فرهنگ لغت ما 1065 00:54:20,780 --> 00:54:25,300 زیرا، به عنوان شما بچه ها می توانید، را ببینید وهله اول که ما یک بولی 1066 00:54:25,300 --> 00:54:28,590 بازگشت درست است در پایان زوم. 1067 00:54:28,590 --> 00:54:30,430 ما Z-O-O-M. 1068 00:54:30,430 --> 00:54:33,900 >> و بنابراین در اینجا، ما نمی واقع کلمه، باغ وحش، در فرهنگ ما 1069 00:54:33,900 --> 00:54:36,070 به دلیل این جعبه چک چک نمی کند. 1070 00:54:36,070 --> 00:54:39,540 بنابراین کامپیوتر نمی کند مطمئن شوید که باغ وحش یک کلمه است 1071 00:54:39,540 --> 00:54:42,430 چون راه است که ما را ذخیره شده آن، تنها یک زوم در اینجا 1072 00:54:42,430 --> 00:54:44,920 در واقع تا به یک مقدار بولی این درست تبدیل شده است. 1073 00:54:44,920 --> 00:54:49,380 بنابراین اگر ما می خواهیم برای قرار دادن کلمه، باغ وحش، به فرهنگ لغت ما، 1074 00:54:49,380 --> 00:54:51,770 چگونه ما در مورد انجام می کنید؟ 1075 00:54:51,770 --> 00:54:55,960 چه چیزی ما را به انجام مطمئن شوید ما کامپیوتر می داند که Z-O-O یک کلمه است 1076 00:54:55,960 --> 00:54:58,130 و نه اولین کلمه Z-O-O-M است؟ 1077 00:54:58,130 --> 00:54:59,360 >> مخاطبان: [نامفهوم] 1078 00:54:59,360 --> 00:55:01,450 >> ANDI PENG: دقیقا، ما خواهید مطمئن شوید که این 1079 00:55:01,450 --> 00:55:07,890 در اینجا، که مقدار بولی است چک کردن که این درست است. 1080 00:55:07,890 --> 00:55:13,297 Z-O-O، پس از آن ما قصد داریم به بررسی کنید که، بنابراین ما می دانیم دقیقا، هی، باغ وحش یک کلمه است. 1081 00:55:13,297 --> 00:55:15,380 من قصد دارم که به کامپیوتر است که آن یک کلمه خیلی 1082 00:55:15,380 --> 00:55:18,000 که زمانی که چک کامپیوتر، می داند که باغ وحش یک کلمه است. 1083 00:55:18,000 --> 00:55:21,269 >> از آنجا که به یاد داشته باشید همه این داده ها سازه، آن را بسیار آسان برای ما 1084 00:55:21,269 --> 00:55:22,310 به می گویند، آه، خفاش یک کلمه است. 1085 00:55:22,310 --> 00:55:22,851 باغ وحش یک کلمه است. 1086 00:55:22,851 --> 00:55:23,611 زوم یک کلمه است. 1087 00:55:23,611 --> 00:55:25,860 اما زمانی که شما آن را ساخت، کامپیوتر هیچ ایده. 1088 00:55:25,860 --> 00:55:28,619 >> بنابراین شما باید آن را بگویید که دقیقا در چه نقطه این یک کلمه است؟ 1089 00:55:28,619 --> 00:55:29,910 در چه نقطه آن یک کلمه نیست؟ 1090 00:55:29,910 --> 00:55:31,784 و در چه نقطه من نیاز به جستجو چیزها، 1091 00:55:31,784 --> 00:55:34,000 و در چه نقطه من نیاز به به آینده؟ 1092 00:55:34,000 --> 00:55:37,010 همه روشن از که؟ 1093 00:55:37,010 --> 00:55:39,540 خنک. 1094 00:55:39,540 --> 00:55:42,530 >> و به این ترتیب پس از آن می آید مشکل چگونه باید می 1095 00:55:42,530 --> 00:55:45,560 در مورد قرار دادن چیزی به که در واقع وجود ندارد؟ 1096 00:55:45,560 --> 00:55:49,090 بنابراین اجازه دهید فقط می گویند ما می خواهیم برای قرار دادن کلمه، حمام، به درخت به ما است. 1097 00:55:49,090 --> 00:55:53,589 همانطور که شما بچه ها می تواند مانند در حال حاضر ببینید همه ما در حال حاضر است B-A-T، 1098 00:55:53,589 --> 00:55:55,630 و این ساختار داده های جدید حال یک پاینت وجود دارد که 1099 00:55:55,630 --> 00:55:59,740 به NULL اشاره آنجا که ما فرض که، آه، هیچ کلمات بعد از B-A-T وجود دارد، 1100 00:55:59,740 --> 00:56:02,530 چرا ما نیاز به نگه داشتن داشتن چیزهایی که T. 1101 00:56:02,530 --> 00:56:06,581 >> اما مشکل ناشی میشود اگر ما به شما انجام می خواهم به یک کلمه می آید که پس از 1102 00:56:06,581 --> 00:56:07,080 تی است. 1103 00:56:07,080 --> 00:56:09,500 اگر شما حمام، شما رفتن به می خواهم یک حق H. 1104 00:56:09,500 --> 00:56:13,290 و به این ترتیب راه ما قصد داریم به انجام این کار است ما قصد داریم برای ایجاد یک گره جداگانه. 1105 00:56:13,290 --> 00:56:16,840 ما هر مقدار در حال تخصیص نیست حافظه برای این آرایه جدید، 1106 00:56:16,840 --> 00:56:20,720 و ما قصد داریم برای جابهجا اشاره گر. 1107 00:56:20,720 --> 00:56:22,947 >> ما قصد داریم به او واگذار H، اول از همه، این تهی، 1108 00:56:22,947 --> 00:56:24,030 ما قصد داریم به خلاص شدن از شر. 1109 00:56:24,030 --> 00:56:26,590 ما در حال رفتن به رو به پایین نقطه H. 1110 00:56:26,590 --> 00:56:30,600 اگر ما H ببینید، ما آن را می خواهم برای رفتن به جایی دیگر. 1111 00:56:30,600 --> 00:56:33,910 >> در اینجا، ما پس از آن می توانید چک کردن بله. 1112 00:56:33,910 --> 00:56:38,170 اگر ما ساعت بعد از ضربه T، آه، پس ما می دانیم که این یک کلمه است. 1113 00:56:38,170 --> 00:56:41,110 بولی است که به بازگشت است. 1114 00:56:41,110 --> 00:56:42,950 هر کس در چگونه است که اتفاق افتاده روشن؟ 1115 00:56:42,950 --> 00:56:45,110 باشه. 1116 00:56:45,110 --> 00:56:47,214 >> بنابراین اساسا، تمام این ساختمان داده 1117 00:56:47,214 --> 00:56:50,130 که ما بیش از امروز رفته، من رفته بر آنها واقعا، واقعا به سرعت 1118 00:56:50,130 --> 00:56:52,192 و نه در بسیار جزئیات، و این خوب است. 1119 00:56:52,192 --> 00:56:53,900 هنگامی که شما شروع به خراب با آن، شما خواهید بود 1120 00:56:53,900 --> 00:56:55,733 پیگیری که در آن همه اشاره گر هستند، 1121 00:56:55,733 --> 00:56:58,060 چه خبر است در خود ساختمان داده ها، و غیره. 1122 00:56:58,060 --> 00:56:59,810 آنها خواهید بود بسیار مفید است، و آن را تا به شما 1123 00:56:59,810 --> 00:57:03,890 بچه ها را به طور کلی شکل و خارج چگونه شما می خواهید به پیاده سازی است. 1124 00:57:03,890 --> 00:57:07,650 >> و به این ترتیب pset4، از 5-- آه، که اشتباه است. 1125 00:57:07,650 --> 00:57:10,140 Pset5 غلط املائی است. 1126 00:57:10,140 --> 00:57:13,710 همانطور که قبلا گفتم، شما در حال رفتن به یک بار دوباره، دانلود کد منبع از ما. 1127 00:57:13,710 --> 00:57:16,210 رفتن وجود دارد به سه اصلی چیزهایی که شما دانلود می شود. 1128 00:57:16,210 --> 00:57:18,470 شما واژهنامهها دانلود، KERS، و متون. 1129 00:57:18,470 --> 00:57:21,660 >> تمام آن چیزهایی هستند هم از کلمات واژه نامه ها 1130 00:57:21,660 --> 00:57:25,190 که ما می خواهیم به شما برای بررسی یا تست از اطلاعات 1131 00:57:25,190 --> 00:57:26,930 که ما می خواهیم شما را به بررسی املا. 1132 00:57:26,930 --> 00:57:29,670 و به این ترتیب واژه نامه ها ما به شما می رویم 1133 00:57:29,670 --> 00:57:34,870 به شما کلمات واقعی که ما می خواهیم را شما برای ذخیره به نوعی در راه است که 1134 00:57:34,870 --> 00:57:36,530 کارآمد تر از یک آرایه. 1135 00:57:36,530 --> 00:57:38,470 و پس از آن متون رفتن به آنچه که ما 1136 00:57:38,470 --> 00:57:43,900 درخواست شما را به بررسی هجی مطمئن شوید همه کلمات کلمات واقعی وجود دارد. 1137 00:57:43,900 --> 00:57:47,970 >> و به این ترتیب سه بلوک از برنامه هایی که ما به شما می دهد 1138 00:57:47,970 --> 00:57:51,130 می dictionary.c نامیده می شود، dictionary.h و speller.c. 1139 00:57:51,130 --> 00:57:56,500 و به این ترتیب تمام dictionary.c کند است آنچه شما خواسته به پیاده سازی. 1140 00:57:56,500 --> 00:57:57,880 این بار کلمات. 1141 00:57:57,880 --> 00:58:02,000 آن را طلسم چک آنها، و آن اطمینان حاصل می کند که همه چیز به درستی وارد می شود. 1142 00:58:02,000 --> 00:58:05,180 >> diction.h فقط یک فایل کتابخانه است که اعلام تمام کسانی که توابع. 1143 00:58:05,180 --> 00:58:07,650 و speller.c، ما قصد داریم به شما بدهد. 1144 00:58:07,650 --> 00:58:09,290 شما لازم نیست برای تغییر هر یک از آن. 1145 00:58:09,290 --> 00:58:14,290 همه speller.c کند است را که، بارهای آن، چک سرعت آن، 1146 00:58:14,290 --> 00:58:19,190 آزمون معیار مانند که چگونه از به سرعت شما قادر به انجام کارهای است. 1147 00:58:19,190 --> 00:58:20,410 >> این یک هجی است. 1148 00:58:20,410 --> 00:58:23,920 فقط ظرف غذا نیست با آن، اما مطمئن مطمئن شوید که شما درک آنچه در آن انجام می دهند. 1149 00:58:23,920 --> 00:58:28,090 ما با استفاده از یک تابع به نام getrusage که تست عملکرد از طلسم خود را 1150 00:58:28,090 --> 00:58:28,590 جستجوگر. 1151 00:58:28,590 --> 00:58:32,200 همه آن کند است که اساسا تست زمان همه چیز را در فرهنگ لغت خود را، 1152 00:58:32,200 --> 00:58:33,680 بنابراین مطمئن شوید که شما آن را درک کنید. 1153 00:58:33,680 --> 00:58:36,660 مراقب باشید به ظرف غذا با آن و یا چیز دیگری نمی خواهد به درستی اجرا شود. 1154 00:58:36,660 --> 00:58:39,740 1155 00:58:39,740 --> 00:58:44,170 >> و بخش عمده ای از این چالش را برای شما بچه ها واقعا تغییر dictionary.c. 1156 00:58:44,170 --> 00:58:48,526 ما قصد داریم به شما بدهد 140،000 کلمات در یک فرهنگ لغت. 1157 00:58:48,526 --> 00:58:50,900 ما قصد داریم به شما یک متن را فایل است که این واژه ها، 1158 00:58:50,900 --> 00:58:54,840 و ما می خواهیم شما را به قادر به سازماندهی آنها را به یک جدول هش یا یک درخت پیشوندی 1159 00:58:54,840 --> 00:58:58,140 زیرا زمانی که ما از شما می خواهیم به طلسم check-- تصور کنید اگر شما طلسم هستید 1160 00:58:58,140 --> 00:59:00,690 چک کردن مانند ادیسه هومر. 1161 00:59:00,690 --> 00:59:03,010 این مثل این، آزمون بزرگ بزرگ است. 1162 00:59:03,010 --> 00:59:05,190 >> تصور کنید اگر هر کلمه ای که تا به حال نگاه 1163 00:59:05,190 --> 00:59:08,100 طریق مجموعه ای از ارزش 140،000. 1164 00:59:08,100 --> 00:59:10,350 که برای همیشه می کنند برای دستگاه خود را به اجرا. 1165 00:59:10,350 --> 00:59:14,490 به همین دلیل است که ما می خواهیم به سازماندهی ما داده ها را به ساختار کارآمد تر داده 1166 00:59:14,490 --> 00:59:17,270 مانند یک جدول هش یا یک درخت پیشوندی. 1167 00:59:17,270 --> 00:59:20,700 و سپس شما می توانید بچه ها نوع از زمانی که شما دسترسی به جستجو 1168 00:59:20,700 --> 00:59:22,570 همه چیز آسان تر و سریع تر. 1169 00:59:22,570 --> 00:59:24,934 >> و پس مراقب باشید به حل و فصل برخورد شود. 1170 00:59:24,934 --> 00:59:27,350 شما در حال رفتن به یک دسته از کلمات که شروع با A. 1171 00:59:27,350 --> 00:59:29,957 شما در حال رفتن به یک دسته کلمات که با B. شروع تا به شما 1172 00:59:29,957 --> 00:59:31,290 بچه ها چگونه می خواهید به آن را حل و فصل. 1173 00:59:31,290 --> 00:59:34,144 شاید بیشتر وجود دارد تابع هش کارآمد 1174 00:59:34,144 --> 00:59:36,810 از حرف اول چیزی، و به طوری که تا به شما 1175 00:59:36,810 --> 00:59:38,190 بچه ها به نوع انجام هر کاری که شما می خواهید. 1176 00:59:38,190 --> 00:59:40,148 >> شاید شما می خواهید برای اضافه کردن تمام حروف با هم. 1177 00:59:40,148 --> 00:59:43,410 شاید شما می خواهید خواهید انجام دهید چیزهای عجیب و غریب به حساب تعدادی از نامه ها، 1178 00:59:43,410 --> 00:59:43,970 هر چه. 1179 00:59:43,970 --> 00:59:45,386 تا به شما بچه ها چگونه می خواهید انجام دهید. 1180 00:59:45,386 --> 00:59:49,262 اگر شما می خواهید برای انجام یک جدول هش، اگر شما می خواهید یک درخت پیشوندی، کاملا به شما. 1181 00:59:49,262 --> 00:59:52,470 من به شما جلوتر از زمان که هشدار می دهند درخت معمولا کمی مشکل تر 1182 00:59:52,470 --> 00:59:54,520 فقط به خاطر اینکه در بسیاری وجود دارد راهنمایی های بیشتر به پیگیری. 1183 00:59:54,520 --> 00:59:55,645 اما کاملا به شما بچه ها. 1184 00:59:55,645 --> 00:59:58,742 آن را به دور کارآمد تر در اکثر موارد. 1185 00:59:58,742 --> 01:00:01,450 شما می خواهید به قادر به نگه داشتن باشد آهنگ از همه از اشاره گر خود را. 1186 01:00:01,450 --> 01:00:03,850 مانند همان چیزی که که کار می کنم. 1187 01:00:03,850 --> 01:00:06,871 هنگامی که شما در حال تلاش برای قرار دادن ارزش را به یک جدول هش یا حذف کنید، 1188 01:00:06,871 --> 01:00:08,620 مطمئن شوید که شما واقعا پیگیری 1189 01:00:08,620 --> 01:00:11,860 در آن همه چیز است، زیرا این واقعا برای اگر من آسان 1190 01:00:11,860 --> 01:00:14,727 تلاش برای وارد کردن مانند کلمه، اندی. 1191 01:00:14,727 --> 01:00:16,810 بیایید می گویند که یک کلمه واقعی، کلمه، اندی، 1192 01:00:16,810 --> 01:00:19,640 به یک لیست بزرگ از کلمات. 1193 01:00:19,640 --> 01:00:22,450 >> اگر من فقط اتفاق می افتد به جابهجا یک اشتباه اشاره گر، اوه، 1194 01:00:22,450 --> 01:00:24,940 می رود به طور کامل از وجود دارد بقیه لیست پیوندی است. 1195 01:00:24,940 --> 01:00:26,897 در حال حاضر تنها کلمه ای که اندی است، و در حال حاضر 1196 01:00:26,897 --> 01:00:29,230 تمام کلمات دیگر در فرهنگ لغت از دست داده اند. 1197 01:00:29,230 --> 01:00:31,370 و به این ترتیب شما می خواهید مطمئن شوید که شما پیگیری همه از اشاره گر خود را 1198 01:00:31,370 --> 01:00:33,661 یا دیگری به شما در حال رفتن به مشکلات بزرگ در کد خود را. 1199 01:00:33,661 --> 01:00:35,840 قرعه کشی مسائل را با دقت گام به گام. 1200 01:00:35,840 --> 01:00:37,870 این باعث می شود آن را بسیار آسان تر برای از فکر می کنم. 1201 01:00:37,870 --> 01:00:40,910 >> و در آخر، شما می خواهید قادر به تست عملکرد خود را از برنامه خود را 1202 01:00:40,910 --> 01:00:41,618 در هیئت مدیره بزرگ. 1203 01:00:41,618 --> 01:00:43,710 اگر شما بچه ها را در CS50 نگاه در حال حاضر، 1204 01:00:43,710 --> 01:00:45,210 ما باید آنچه را به نام هیئت مدیره بزرگ. 1205 01:00:45,210 --> 01:00:50,200 این ورق نمره از سریع ترین است طلسم بار چک کردن در تمام CS50 1206 01:00:50,200 --> 01:00:55,720 در حال حاضر، من فکر می کنم بالا مانند 10 بار من فکر می کنم هشت نفر از آنان کارکنان. 1207 01:00:55,720 --> 01:00:57,960 ما واقعا می خواهید شما بچه ها به ما ضرب و شتم. 1208 01:00:57,960 --> 01:01:00,870 >> همه ما در تلاش بودند برای پیاده سازی سریعترین کد که ممکن است. 1209 01:01:00,870 --> 01:01:04,880 ما می خواهیم شما بچه ها به سعی کنید به چالش ما و پیاده سازی سریع تر از همه ما 1210 01:01:04,880 --> 01:01:05,550 می توان. 1211 01:01:05,550 --> 01:01:07,970 و به این ترتیب این است که واقعا اولین بار است که ما 1212 01:01:07,970 --> 01:01:12,680 درخواست شما بچه ها برای انجام یک pset که شما واقعا می تواند در هر روش انجام 1213 01:01:12,680 --> 01:01:13,760 شما می خواهی. 1214 01:01:13,760 --> 01:01:17,730 >> من همیشه می گویم، این است که بیشتر شبیه به یک راه حل در زندگی واقعی، درست است؟ 1215 01:01:17,730 --> 01:01:19,550 من می گویم، با سلام، من باید شما را به انجام این کار. 1216 01:01:19,550 --> 01:01:21,380 ساخت یک برنامه است که این کار برای من. 1217 01:01:21,380 --> 01:01:22,630 آیا آن را با این حال شما می خواهید. 1218 01:01:22,630 --> 01:01:24,271 من فقط می دانم که من می خواهم به سرعت. 1219 01:01:24,271 --> 01:01:25,770 این چالش خود را برای این هفته است. 1220 01:01:25,770 --> 01:01:27,531 شما بچه ها، ما قصد داریم به شما یک کار است. 1221 01:01:27,531 --> 01:01:29,030 ما قصد داریم به شما یک چالش است. 1222 01:01:29,030 --> 01:01:31,559 و سپس آن را تا به شما بچه ها به طور کامل فقط شکل 1223 01:01:31,559 --> 01:01:34,100 چه سریعترین و ترین راه کارآمد برای اجرای این. 1224 01:01:34,100 --> 01:01:34,600 آره؟ 1225 01:01:34,600 --> 01:01:37,476 >> مخاطبان: آیا اگر ما اجازه می خواستم به تحقیق راه سریعتر 1226 01:01:37,476 --> 01:01:40,821 به انجام جداول هش آنلاین، می تواند ما را که استناد و کد شخص دیگری؟ 1227 01:01:40,821 --> 01:01:42,070 ANDI PENG: بله، کاملا خوب است. 1228 01:01:42,070 --> 01:01:44,320 بنابراین اگر شما بچه به عنوان خوانده شده تنظیمات، یک خط وجود دارد 1229 01:01:44,320 --> 01:01:48,310 در تنظیمات که می گوید شما بچه ها کاملا رایگان به تحقیق هش 1230 01:01:48,310 --> 01:01:51,070 توابع در چه هستند برخی از از توابع هش سریعتر 1231 01:01:51,070 --> 01:01:54,720 برای اجرای کارها از طریق به عنوان زمانی که شما استناد که کد. 1232 01:01:54,720 --> 01:01:57,220 بنابراین برخی از مردم در حال حاضر نمیفهمد روش های سریع 1233 01:01:57,220 --> 01:02:00,250 انجام چکرز طلسم، سریع راه های ذخیره سازی اطلاعات. 1234 01:02:00,250 --> 01:02:02,750 کاملا به شما اگر شما بچه ها می خواهم به فقط که، درست است؟ 1235 01:02:02,750 --> 01:02:04,045 مطمئن شوید که شما با استناد به. 1236 01:02:04,045 --> 01:02:06,170 چالش در اینجا واقعا که ما در حال تلاش برای آزمایش 1237 01:02:06,170 --> 01:02:09,750 است که مطمئن شوید که شما می دانید راه خود را در اطراف اشاره گر. 1238 01:02:09,750 --> 01:02:12,700 تا آنجا که شما اجرای تابع هش واقعی 1239 01:02:12,700 --> 01:02:15,070 و آینده با مانند ریاضی برای انجام این کار، 1240 01:02:15,070 --> 01:02:17,570 شما بچه ها می تواند تحقیق هر روش آنلاین شما بچه ها می خواهید. 1241 01:02:17,570 --> 01:02:17,996 آره؟ 1242 01:02:17,996 --> 01:02:19,700 >> مخاطبان: آیا ما می توانیم فقط استناد با استفاده از [نامفهوم]؟ 1243 01:02:19,700 --> 01:02:20,120 >> ANDI PENG: آره. 1244 01:02:20,120 --> 01:02:22,328 شما فقط می توانید، در نظر خود را، شما می توانید استناد مانند، آه، 1245 01:02:22,328 --> 01:02:26,127 گرفته شده از YADA، YADA، YADA، تابع هش. 1246 01:02:26,127 --> 01:02:27,210 هر کسی هر گونه سوال؟ 1247 01:02:27,210 --> 01:02:29,694 ما در واقع سرعت باد از طریق بخش امروز. 1248 01:02:29,694 --> 01:02:31,610 من خواهد بود تا در اینجا به سوالات پاسخ است. 1249 01:02:31,610 --> 01:02:36,570 >> همچنین، همانطور که گفتم، دفتر ساعت امشب و فردا. 1250 01:02:36,570 --> 01:02:40,307 تنظیمات این هفته است که در واقع فوق العاده آسان و فوق العاده کوتاه به خواندن. 1251 01:02:40,307 --> 01:02:43,140 من پیشنهاد گرفتن یک نگاه، فقط خواندن را از طریق تمامیت آن است. 1252 01:02:43,140 --> 01:02:45,730 >> و در واقع شما راه می رود Zamyla از طریق هر یک از توابع 1253 01:02:45,730 --> 01:02:49,796 شما نیاز به پیاده سازی، و پس از آن بسیار، بسیار روشن است که چگونه به انجام همه چیز. 1254 01:02:49,796 --> 01:02:51,920 فقط مطمئن شوید که شما پیگیری از اشاره گرها. 1255 01:02:51,920 --> 01:02:53,650 این pset بسیار چالش برانگیز است. 1256 01:02:53,650 --> 01:02:56,744 >> آن را به دلیل به چالش کشیدن نیست، آه، مفاهیم به خیلی بیشتر 1257 01:02:56,744 --> 01:02:59,160 دشوار، و یا شما باید برای یادگیری خیلی نحو جدید راه 1258 01:02:59,160 --> 01:03:00,650 که شما برای آخرین pset است. 1259 01:03:00,650 --> 01:03:03,320 این pset مشکل است زیرا بسیاری از اشاره گرها وجود دارد، 1260 01:03:03,320 --> 01:03:06,980 و سپس آن را بسیار، بسیار آسان برای یک بار شما یک اشکال در کد خود را نمی توانند 1261 01:03:06,980 --> 01:03:08,315 برای پیدا کردن جایی که اشکال است. 1262 01:03:08,315 --> 01:03:13,200 >> و به این ترتیب کامل و ایمان مطلق در شما بچه ها قادر به ضرب و شتم ما [نامفهوم] 1263 01:03:13,200 --> 01:03:13,700 املای. 1264 01:03:13,700 --> 01:03:16,640 من در واقع هر مینویسم نشده است، اما من در مورد به ارسال معدن هستم. 1265 01:03:16,640 --> 01:03:19,070 بنابراین در حالی که شما در حال نوشتن شما، من نوشتن من. 1266 01:03:19,070 --> 01:03:21,070 من قصد دارم به سعی کنید به معدن سریع تر از مال شما. 1267 01:03:21,070 --> 01:03:23,940 خواهیم دید که سریع ترین است. 1268 01:03:23,940 --> 01:03:27,340 >> و بله، من از تمام ببینید شما بچه ها در اینجا در روز سه شنبه. 1269 01:03:27,340 --> 01:03:29,510 من یک نوع مانند یک کارگاه pset اجرا خواهد شد. 1270 01:03:29,510 --> 01:03:32,640 همه از بخش های این هفته کارگاه pset، 1271 01:03:32,640 --> 01:03:36,690 پس شما بچه ها تعداد زیادی از فرصت های برای کمک، ساعات اداری مثل همیشه، 1272 01:03:36,690 --> 01:03:41,330 و من واقعا مشتاقانه منتظر خواندن تمام کد بچه خود را. 1273 01:03:41,330 --> 01:03:44,160 من آزمونها تا اینجا اگر شما بچه ها می خواهید به دریافت آن. 1274 01:03:44,160 --> 01:03:45,880 که تمام است. 1275 01:03:45,880 --> 01:03:48,180