1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] بخش 6: کمتر راحت] 2 00:00:02,730 --> 00:00:05,040 [مقابله Hardison] [دانشگاه هاروارد] 3 00:00:05,040 --> 00:00:07,320 [این CS50.] [CS50.TV] 4 00:00:07,320 --> 00:00:11,840 بسیار خوب. خوش آمدید به بخش 6. 5 00:00:11,840 --> 00:00:14,690 این هفته، ما قصد داریم به صحبت کردن در مورد ساختمان های داده شده در بخش 6 00:00:14,690 --> 00:00:19,780 در درجه اول به دلیل مشکل این هفته در spellr 7 00:00:19,780 --> 00:00:24,410 آیا یک دسته کامل از اکتشاف ساختار داده های مختلف است. 8 00:00:24,410 --> 00:00:26,520 یک دسته از راه های مختلف شما می توانید با مجموعه ای مشکل وجود دارد، 9 00:00:26,520 --> 00:00:31,570 و ساختمان های داده بیشتر شما می دانید در مورد چیزهایی که سرد است که شما می توانید انجام دهید. 10 00:00:31,570 --> 00:00:34,990 >> بنابراین اجازه گرفتن آغاز شده است. در ابتدا ما قصد داریم به صحبت در مورد پشته، 11 00:00:34,990 --> 00:00:37,530 پشته و صف به ساختارهای داده ای است که ما قصد داریم به صحبت کردن در مورد. 12 00:00:37,530 --> 00:00:40,560 پشته ها و صف ها واقعا مفید است هنگامی که ما شروع به صحبت کردن در مورد نمودار ها 13 00:00:40,560 --> 00:00:44,390 که ما قصد داریم برای انجام خیلی از حق در حال حاضر. 14 00:00:44,390 --> 00:00:52,820 اما آنها واقعا خوب به درک یکی از سازه های بزرگ داده های اساسی CS. 15 00:00:52,820 --> 00:00:54,880 شرح در مشخصات مجموعه مشکل، 16 00:00:54,880 --> 00:00:59,260 اگر شما آن را بالا بکشد، مذاکرات در مورد پشته به عنوان شبیه به 17 00:00:59,260 --> 00:01:05,239 توده ای از سینی های ناهار خوری است که شما را در کافه تریا در سالن ناهار خوری 18 00:01:05,239 --> 00:01:09,680 که در آن زمانی که کارکنان غذاخوری می آید و قرار می دهد سینی های غذاخوری پس از آنها آنها را تمیز، 19 00:01:09,680 --> 00:01:12,000 آنها را یکی در بالای دیگر پشته. 20 00:01:12,000 --> 00:01:15,050 و پس از آن زمانی که بچه ها برای گرفتن غذا می آیند، 21 00:01:15,050 --> 00:01:19,490 آنها جلو و سینی های خاموش، برای اولین بار در بالای یک، و سپس زیر آن، پس از آن که در زیر. 22 00:01:19,490 --> 00:01:25,190 بنابراین، در واقع، اولین سینی که کارکنان غذاخوری قرار داده است پایین یکی از آخرین که می شود گرفته شده است. 23 00:01:25,190 --> 00:01:32,330 یکی از آخرین که کارکنان غذاخوری قرار داده و در یکی از اولین بار است که می شود برای صرف شام گرفته شده است. 24 00:01:32,330 --> 00:01:38,100 در تنظیمات مجموعه ای از مشکل است، جایی که شما می توانید دانلود کنید اگر شما در حال حاضر نه، 25 00:01:38,100 --> 00:01:46,730 ما در مورد مدل سازی پشته ساختار داده ها با استفاده از این نوع از ساختارها (struct) صحبت می کنند. 26 00:01:46,730 --> 00:01:51,070 >> بنابراین آنچه ما باید در اینجا، این است که شبیه به آنچه که در سخنرانی ارائه شد. 27 00:01:51,070 --> 00:01:58,120 به جز در سخنرانی ما این کار را با نوع داده int به عنوان مخالف به کاراکتر * ها ارائه شده است. 28 00:01:58,120 --> 00:02:06,250 این است که برای رفتن به یک پشته که فروشگاه چه؟ 29 00:02:06,250 --> 00:02:09,009 دانیل؟ چه هستند که ما در این پشته ذخیره؟ 30 00:02:09,009 --> 00:02:15,260 [دانیال] رشته؟ >> ما در حال ذخیره سازی رشته ها در این پشته، دقیقا. 31 00:02:15,260 --> 00:02:20,950 همه شما نیاز به منظور ایجاد یک پشته یک آرایه است 32 00:02:20,950 --> 00:02:23,920 ظرفیت خاص، که در این مورد، 33 00:02:23,920 --> 00:02:28,020 ظرفیت در همه کلاه است به خاطر آن ثابت است. 34 00:02:28,020 --> 00:02:36,340 و پس از آن در علاوه بر این به آرایه، همه ما باید به دنبال اندازه آرایه است. 35 00:02:36,340 --> 00:02:38,980 یک چیز را به یاد داشته باشید که در اینجا نوع سرد 36 00:02:38,980 --> 00:02:47,060 این است که ما در حال ایجاد ساختار داده ها انباشته شده در بالا یکی دیگر از ساختمان داده، آرایه است. 37 00:02:47,060 --> 00:02:50,110 راه های مختلفی را برای پیاده سازی پشته وجود دارد. 38 00:02:50,110 --> 00:02:54,250 ما این کار را انجام نمی کاملا رتبهدهی نشده است، اما امیدوارم پس از انجام این کار از مشکلات مربوط به لیست 39 00:02:54,250 --> 00:03:00,520 شما خواهید دید که چگونه می توانید به راحتی پیاده سازی پشته در بالای یک لیست پیوندی را به عنوان. 40 00:03:00,520 --> 00:03:02,640 اما در حال حاضر، ما به آرایه ها می چسبد. 41 00:03:02,640 --> 00:03:06,350 تا دوباره، همه ما نیاز داریم که یک آرایه است و ما فقط نیاز به پیگیری اندازه آرایه است. 42 00:03:06,350 --> 00:03:09,850 [سام] با عرض پوزش، به همین دلیل است که به شما گفت که این پشته در بالای رشته؟ 43 00:03:09,850 --> 00:03:13,440 به نظر من این به نظر می رسد مانند رشته در پشته می باشد. 44 00:03:13,440 --> 00:03:16,790 [Hardison] آره. ما در حال ایجاد، ما در حال گرفتن آرایه ما ساختار داده ها - 45 00:03:16,790 --> 00:03:22,130 این یک سوال بزرگ است. بنابراین سوال این است که چرا، برای افرادی که در حال تماشای این آنلاین 46 00:03:22,130 --> 00:03:24,140 چرا به ما گفت که پشته است که در بالا از رشته ها، 47 00:03:24,140 --> 00:03:27,990 چرا که در اینجا به نظر می رسد مانند رشته داخل پشته هستند؟ 48 00:03:27,990 --> 00:03:31,050 است که کاملا مورد. 49 00:03:31,050 --> 00:03:34,660 چیزی که من اشاره به این بود که ما باید یک آرایه ساختار داده است. 50 00:03:34,660 --> 00:03:39,290 ما باید آرایه ای از کاراکتر * ها، آرایه ای از رشته ها، 51 00:03:39,290 --> 00:03:45,300 و ما می خواهیم برای اضافه کردن به آن به منظور ایجاد ساختار داده ها انباشته شده است. 52 00:03:45,300 --> 00:03:48,620 >> بنابراین یک پشته است کمی پیچیده تر از یک آرایه است. 53 00:03:48,620 --> 00:03:51,890 ما می توانیم یک آرایه یک پشته برای ساخت استفاده کنید. 54 00:03:51,890 --> 00:03:55,810 به طوری که که در آن ما می گویند که پشته در بالای یک آرایه ساخته شده است. 55 00:03:55,810 --> 00:04:02,510 به همین ترتیب، مثل من که قبلا گفته شد، ما می توانیم یک پشته در بالای یک لیست پیوندی ساخت. 56 00:04:02,510 --> 00:04:04,960 به جای استفاده از یک آرایه برای نگهداری عناصر، 57 00:04:04,960 --> 00:04:10,070 ما می توانیم یک لیست پیوندی برای نگه داشتن عناصر و ایجاد پشته اطراف آن استفاده کنید. 58 00:04:10,070 --> 00:04:12,420 اجازه راه رفتن را از طریق چند مثال، به دنبال در برخی از کد، 59 00:04:12,420 --> 00:04:14,960 برای دیدن آنچه که در واقع اتفاق می افتد در اینجا. 60 00:04:14,960 --> 00:04:23,400 در سمت چپ، من آنچه که ساختار پشته در حافظه نگاه پرتاب 61 00:04:23,400 --> 00:04:28,330 اگر ظرفیت # تعریف شد به چهار. 62 00:04:28,330 --> 00:04:33,490 ما باید چهار عنصر آرایه * کاراکتر است. 63 00:04:33,490 --> 00:04:38,110 ما باید رشته ها [0]، رشته [1]، رشته [2]، رشته [3] 64 00:04:38,110 --> 00:04:43,800 و پس از آن فضا برای عدد صحیح اندازه ما. 65 00:04:43,800 --> 00:04:46,270 آیا این را حس؟ باشه. 66 00:04:46,270 --> 00:04:48,790 این همان چیزی است که اتفاق می افتد اگر چه من در سمت راست، 67 00:04:48,790 --> 00:04:55,790 خواهد شد که کد من، این است که فقط اعلام یک ساختار، یک ساختار انباشته نامیده میشود. 68 00:04:55,790 --> 00:05:01,270 این چیزی است که ما را دریافت کنید. این می گذارد این نشانه ها در حافظه است. 69 00:05:01,270 --> 00:05:05,590 اولین سوال در اینجا این است که محتویات این ساختار پشته ها چه هستند؟ 70 00:05:05,590 --> 00:05:09,250 در حال حاضر آنها هیچ چیز، اما آنها کاملا هیچ چیز نیست. 71 00:05:09,250 --> 00:05:13,300 آنها این نوع از زباله است. در حال حاضر هیچ ایده چه چیزی در آنها. 72 00:05:13,300 --> 00:05:17,000 وقتی S پشته ما اعلام می کنیم، ما فقط پرتاب که در بالای حافظه است. 73 00:05:17,000 --> 00:05:19,840 این نوع مانند اعلام اعضای هیات من و مقدار دهی اولیه آن. 74 00:05:19,840 --> 00:05:21,730 شما نمی دانید که چه چیزی در آن وجود دارد. شما می توانید به خواندن آنچه در آن وجود دارد، 75 00:05:21,730 --> 00:05:27,690 اما آن را نمی ممکن است فوق العاده مفید است. 76 00:05:27,690 --> 00:05:32,680 یکی از چیزی که شما می خواهید برای همیشه به یاد داشته باشید برای انجام این کار است مقداردهی اولیه هر چه نیاز به مقداردهی اولیه می شود. 77 00:05:32,680 --> 00:05:35,820 در این مورد، ما قصد داریم به مقداردهی اولیه به اندازه صفر باشد، 78 00:05:35,820 --> 00:05:39,960 چرا که به نوبه خود می شود برای ما بسیار مهم است. 79 00:05:39,960 --> 00:05:43,450 ما می تواند پیش برود و مقداردهی اولیه اشاره گر، همه S * کاراکتر، 80 00:05:43,450 --> 00:05:49,670 به برخی از ارزش قابل درک است، احتمالا تهی. 81 00:05:49,670 --> 00:05:58,270 اما این کاملا لازم است که ما انجام می دهیم که نه. 82 00:05:58,270 --> 00:06:04,200 >> در حال حاضر، دو عملیات اصلی بر روی پشته هستند؟ 83 00:06:04,200 --> 00:06:07,610 هر کسی به یاد داشته باشید از سخنرانی چیزی است که شما با پشته انجام می دهید؟ بله؟ 84 00:06:07,610 --> 00:06:09,700 [استلا] هل دادن و ظاهر؟ >> دقیقا. 85 00:06:09,700 --> 00:06:13,810 هل دادن و ظاهر دو عملیات اصلی بر روی پشته. 86 00:06:13,810 --> 00:06:17,060 و چه فشار کاری انجام دهید؟ >> آن را قرار می دهد چیزی را بر روی بالای صفحه 87 00:06:17,060 --> 00:06:19,300 از پشته، و سپس کشیدن آن طول می کشد خاموش. 88 00:06:19,300 --> 00:06:23,150 [Hardison] دقیقا. بنابراین هل دادن هل چیزی در بالای پشته است. 89 00:06:23,150 --> 00:06:27,700 مثل کارکنان ناهار خوری قرار دادن یک سینی غذاخوری در مقابله. 90 00:06:27,700 --> 00:06:33,630 و ظاهر است گرفتن یک سینی غذاخوری از پشته. 91 00:06:33,630 --> 00:06:36,460 بیایید راه رفتن را از طریق یک زن و شوهر نمونه هایی از آنچه اتفاق می افتد 92 00:06:36,460 --> 00:06:39,720 هنگامی که چیزهایی که ما فشار را به پشته. 93 00:06:39,720 --> 00:06:45,110 اگر ما به فشار رشته 'سلام' را بر روی پشته ما 94 00:06:45,110 --> 00:06:49,760 این همان چیزی است که نمودار ما در حال حاضر می خواهم. 95 00:06:49,760 --> 00:06:53,410 ببینید چه اتفاقی می افتد؟ 96 00:06:53,410 --> 00:06:56,530 ما به عنصر اول از آرایه رشته ما را تحت فشار قرار دادند 97 00:06:56,530 --> 00:07:01,420 و ما upped تعداد اندازه ما می شود (1). 98 00:07:01,420 --> 00:07:05,340 بنابراین اگر ما در تفاوت بین دو اسلاید نگاه کنید، در اینجا 0 بود، در اینجا قبل از فشار است. 99 00:07:05,340 --> 00:07:08,690 در اینجا است که پس از فشار است. 100 00:07:08,690 --> 00:07:13,460 قبل از فشار، پس از فشار است. 101 00:07:13,460 --> 00:07:16,860 و در حال حاضر ما باید یک عنصر در پشته ما. 102 00:07:16,860 --> 00:07:20,970 این رشته "سلام" است، و این از آن است. 103 00:07:20,970 --> 00:07:24,440 هر چیز دیگری در آرایه در آرایه رشته ها، هنوز هم زباله. 104 00:07:24,440 --> 00:07:27,070 ما آن را مقداردهی اولیه نیست. 105 00:07:27,070 --> 00:07:29,410 بیایید می گویند ما یک رشته دیگر فشار را بر روی پشته ما. 106 00:07:29,410 --> 00:07:32,210 ما قصد داریم به فشار "جهان" در این زمان است. 107 00:07:32,210 --> 00:07:35,160 بنابراین شما می توانید ببینید "جهان" در اینجا در بالا "سلام" می رود، 108 00:07:35,160 --> 00:07:40,040 و تعداد اندازه بالا می رود تا 2. 109 00:07:40,040 --> 00:07:44,520 در حال حاضر ما می توانیم "CS50"، و آن را در بالا دوباره هل داد. 110 00:07:44,520 --> 00:07:51,110 اگر ما به عقب، شما می توانید ببینید که چگونه ما در حال هل دادن چیزهایی در بالای پشته است. 111 00:07:51,110 --> 00:07:53,320 و در حال حاضر ما به موسیقی پاپ. 112 00:07:53,320 --> 00:07:58,910 هنگامی که ما چیزی از پشته ظهور، چه اتفاقی افتاد؟ 113 00:07:58,910 --> 00:08:01,540 هر کسی تفاوت؟ این خیلی ظریف است. 114 00:08:01,540 --> 00:08:05,810 [دانشجو] اندازه. >> آره، به اندازه تغییر کرده است. 115 00:08:05,810 --> 00:08:09,040 >> چه چیز دیگری که شما انتظار می رود را تغییر دهید؟ 116 00:08:09,040 --> 00:08:14,280 [دانشجو] رشته ها، بیش از حد. >> راست. رشته بیش از حد. 117 00:08:14,280 --> 00:08:17,110 به نظر می رسد که زمانی که شما در حال انجام آن به این ترتیب، 118 00:08:17,110 --> 00:08:21,960 از آنجا که ما در حال عناصر را به پشته ما کپی کردن نیست، 119 00:08:21,960 --> 00:08:24,670 ما در واقع لازم نیست تا هر کاری را انجام دهند، ما فقط می تواند با استفاده از اندازه 120 00:08:24,670 --> 00:08:28,630 برای پیگیری تعدادی از چیزهایی در آرایه ما 121 00:08:28,630 --> 00:08:33,780 به طوری که هنگامی که ما در موسیقی پاپ دوباره، دوباره ما فقط اندازه ما را واحد کم به 1. 122 00:08:33,780 --> 00:08:39,440 بدون نیاز به رفتن به در و بازنویسی هر چیزی وجود دارد. 123 00:08:39,440 --> 00:08:41,710 نوع بد بو. 124 00:08:41,710 --> 00:08:46,520 به نظر می رسد که ما به طور معمول فقط به ترک همه چیز تنهایی، زیرا این کار کمتر برای ما انجام است. 125 00:08:46,520 --> 00:08:50,060 اگر ما لازم نیست برای رفتن به عقب و بازنویسی چیزی، پس چرا آن را انجام دهد؟ 126 00:08:50,060 --> 00:08:54,150 بنابراین، هنگامی که ما از پشته پاپ دو بار خاموش، که می کند این است واحد کم به اندازه چند بار. 127 00:08:54,150 --> 00:08:59,120 و باز هم، این است که فقط به این دلیل که ما چیزها را به پشته ما کپی کردن نیست. 128 00:08:59,120 --> 00:09:01,320 بله؟ پیش بروید. 129 00:09:01,320 --> 00:09:04,460 [دانشجو، ناخوانا] >> و پس از آن چه اتفاقی می افتد هنگامی که چیزی به شما فشار دوباره؟ 130 00:09:04,460 --> 00:09:08,570 هنگامی که شما فشار چیزی دوباره، کجا برود؟ 131 00:09:08,570 --> 00:09:12,390 آن را از کجا بروید، ریحان؟ >> به رشته [1]؟ >> راست. 132 00:09:12,390 --> 00:09:14,530 چرا به رشته ها [3] آن را به رفتن نیست؟ 133 00:09:14,530 --> 00:09:19,410 [ریحان] از آنجا که آن را فراموش کرده که هر چیزی که در رشته ها وجود دارد [1] و [2] 134 00:09:19,410 --> 00:09:24,040 [Hardison] دقیقا. پشته ما، در اصل، "فراموش شده" بود که نگه داشتن به هر چیزی 135 00:09:24,040 --> 00:09:29,480 در رشته [1] و یا رشته های [2]، تا زمانی که "woot" ما فشار، 136 00:09:29,480 --> 00:09:36,670 آن را قرار می دهد که به این عنصر در رشته [1]. 137 00:09:36,670 --> 00:09:41,590 آیا هر گونه سوال در مورد چگونگی این کار، در یک سطح پایه؟ 138 00:09:41,590 --> 00:09:45,160 [سام] این است که در هر راه پویا، از نظر مقدار 139 00:09:45,160 --> 00:09:47,620 و یا در از نظر اندازه از پشته؟ 140 00:09:47,620 --> 00:09:56,750 [Hardison] دقیقا. این است - این نقطه بود که این یک پشته به صورت پویا growning. 141 00:09:56,750 --> 00:10:02,850 این پشته است که می تواند نگه دارید، در، چهار کاراکتر * S، در اکثر چهار چیز است. 142 00:10:02,850 --> 00:10:07,580 اگر ما را امتحان کنید و فشار یک چیز پنجم، شما چه فکر میکنید باید اتفاق می افتد؟ 143 00:10:07,580 --> 00:10:11,870 [دانش آموزان، ناخوانا] 144 00:10:11,870 --> 00:10:14,600 [Hardison] دقیقا. تعدادی از چیزهایی است که می تواند اتفاق می افتد وجود دارد. 145 00:10:14,600 --> 00:10:19,330 این احتمالا می تواند SEG گسل، با توجه به آنچه که ما - 146 00:10:19,330 --> 00:10:22,530 دقیقا چگونه ما اجرای به عقب پایان است. 147 00:10:22,530 --> 00:10:31,740 این می تواند بازنویسی. این که می تواند سرریز بافر است که ما در مورد کلاس صحبت داشته باشد. 148 00:10:31,740 --> 00:10:35,240 چه خواهد بود بارز ترین چیز این است که ممکن است رونویسی 149 00:10:35,240 --> 00:10:42,370 اگر ما سعی به فشار یک چیز اضافی بر روی پشته ما؟ 150 00:10:42,370 --> 00:10:44,550 بنابراین شما ذکر سرریز بافر. 151 00:10:44,550 --> 00:10:47,870 آنچه که ممکن است چیزی که گرفتن نوشته شده است و یا بیش از در stomped 152 00:10:47,870 --> 00:10:52,320 اگر ما به طور تصادفی با تلاش به فشار یک چیز اضافی سرریز؟ 153 00:10:52,320 --> 00:10:54,730 [دانیل، ناخوانا] >> ممکن است. 154 00:10:54,730 --> 00:10:58,440 اما در ابتدا، آنچه ممکن است اتفاق می افتد؟ چه می شود اگر ما سعی به فشار یک چیز چهارم؟ 155 00:10:58,440 --> 00:11:06,220 این ممکن است به اندازه، بازنویسی حداقل با نمودار حافظه این است که ما داریم. 156 00:11:06,220 --> 00:11:10,880 >> در خصوصیات مجموعه مشکل، که همان چیزی است که ما قصد داریم به اجرای امروز، 157 00:11:10,880 --> 00:11:16,030 چه کار می کنیم می خواهید برای انجام شده است فقط بازگشت کاذب. 158 00:11:16,030 --> 00:11:20,030 روش فشار ما این است که برای بازگشت به یک مقدار بولی، 159 00:11:20,030 --> 00:11:22,920 و آن مقدار بولی درست خواهد بود اگر فشار موفق 160 00:11:22,920 --> 00:11:29,730 و نادرست اگر ما می توانیم هر چیزی را هل داد به این دلیل که پشته پر است. 161 00:11:29,730 --> 00:11:33,620 اجازه راه رفتن را از طریق یک کمی از این کد در حال حاضر. 162 00:11:33,620 --> 00:11:36,400 در اینجا تابع فشار است. 163 00:11:36,400 --> 00:11:40,380 تابع فشار ما برای پشته در رشته را بر روی پشته قرار داده است. 164 00:11:40,380 --> 00:11:45,820 این درست به بازگشت اگر رشته با موفقیت رانده شد 165 00:11:45,820 --> 00:11:51,820 در غیر این صورت پشته و نادرست است. 166 00:11:51,820 --> 00:11:59,740 هر گونه پیشنهادات در مورد آنچه که ممکن است چیز خوبی برای انجام این کار در اینجا؟ 167 00:11:59,740 --> 00:12:20,630 [سام] اگر اندازه برابر ظرفیت و سپس بازگشت کاذب؟ 168 00:12:20,630 --> 00:12:23,320 [Hardison] یکنوع بازی شبیه لوتو. کار نیس. 169 00:12:23,320 --> 00:12:26,310 اگر به اندازه ظرفیت، ما قصد داریم به بازگشت غلط است. 170 00:12:26,310 --> 00:12:29,270 ما می توانیم هر چیزی را در پشته قرار داده است. 171 00:12:29,270 --> 00:12:36,900 در غیر این صورت، ما می خواهم برای قرار دادن چیزی در بالای پشته است. 172 00:12:36,900 --> 00:12:41,670 "بالای پشته،" در ابتدا؟ 173 00:12:41,670 --> 00:12:43,650 [دانیال] اندازه 0؟ >> اندازه 0. 174 00:12:43,650 --> 00:12:49,990 بالای پشته پس از یک چیز در پشته وجود دارد چیست؟ دختر خانم، آیا می دانید؟ 175 00:12:49,990 --> 00:12:52,720 [دختر خانم]. حجم >> یکی است، دقیقا. شما در حفظ و اضافه کردن به اندازه، 176 00:12:52,720 --> 00:13:01,690 و هر زمانی که شما در حال قرار دادن عنصر جدید در اندازه شاخص در آرایه. 177 00:13:01,690 --> 00:13:05,470 ما می توانیم آن را با این نوع از یک بوش انجام دهد، اگر آن را حس می کند. 178 00:13:05,470 --> 00:13:11,910 بنابراین ما باید آرایه ما رشته، ما در حال رفتن به آن را در شاخص اندازه دسترسی داشته باشید. 179 00:13:11,910 --> 00:13:14,780 و ما در حال رفتن به مغازه * کاراکتر ما در آن وجود دارد. 180 00:13:14,780 --> 00:13:19,340 توجه داشته باشید که چگونه بدون کپی کردن رشته وجود دارد که در اینجا، 181 00:13:19,340 --> 00:13:29,680 هیچ تخصیص پویا از حافظه؟ 182 00:13:29,680 --> 00:13:34,440 و پس از آن دختر خانم به ارمغان آورد تا آنچه که ما در حال حاضر باید به انجام این کار، 183 00:13:34,440 --> 00:13:40,570 چرا که ما از رشته در محل مناسب در آرایه ذخیره شده، 184 00:13:40,570 --> 00:13:49,230 و او گفت که ما تا به حال به افزایش اندازه به طوری که ما برای فشار بعدی آماده است. 185 00:13:49,230 --> 00:13:53,950 بنابراین ما می توانیم که با s.size + +. 186 00:13:53,950 --> 00:13:59,330 در این مرحله، ما را به آرایه ما تحت فشار قرار دادند. آخرین چیزی که ما باید انجام دهیم؟ 187 00:13:59,330 --> 00:14:10,110 [دانشجو] [بازگشت درست است. >> بازگشت درست است. 188 00:14:10,110 --> 00:14:14,690 پس از آن بسیار ساده است، یک کد بسیار ساده است. بیش از حد نه. 189 00:14:14,690 --> 00:14:17,070 هنگامی که شما سر خود را در اطراف پشته چگونه کار می کند پیچیده شده، 190 00:14:17,070 --> 00:14:21,910 این بسیار ساده است برای پیاده سازی است. 191 00:14:21,910 --> 00:14:26,390 >> در حال حاضر، بخش بعدی این است که ظاهر یک رشته از پشته. 192 00:14:26,390 --> 00:14:29,410 من قصد دارم به شما بچه ها برخی از زمان به کار بر روی این بیت کمی. 193 00:14:29,410 --> 00:14:34,320 این تقریبا در اصل معکوس از آنچه که ما انجام داده ایم در اینجا در فشار است. 194 00:14:34,320 --> 00:14:38,510 آنچه من انجام داده ام، در واقع - اوه. 195 00:14:38,510 --> 00:14:48,160 من بوت دستگاه در اینجا، و در دستگاه، 196 00:14:48,160 --> 00:14:53,600 من کشیده تا این مشکل را 5 مشخصات. 197 00:14:53,600 --> 00:15:02,560 اگر ما در اینجا زوم، ما می توانید ببینید که من در cdn.cs50.net/2012/fall/psets/pset5.pdf هستم. 198 00:15:02,560 --> 00:15:08,590 شما بچه ها دریافت این کد که در اینجا واقع شده، section6.zip؟ 199 00:15:08,590 --> 00:15:15,030 بسیار خوب. اگر شما انجام داده اند نیست که انجام این کار در حال حاضر، واقعا سریع است. 200 00:15:15,030 --> 00:15:22,130 من آن را در پنجره ترمینال من انجام دهد. 201 00:15:22,130 --> 00:15:25,090 من در واقع آن را انجام داد تا در اینجا. آره. 202 00:15:25,090 --> 00:15:34,730 بله، سام؟ >> من یک سوال در مورد چرا براکت s.string 'از اندازه به شما می گویند = STR؟ 203 00:15:34,730 --> 00:15:42,910 STR چیست؟ این است که در جایی قبل از تعریف، و یا - اوه، در خ * کاراکتر؟ 204 00:15:42,910 --> 00:15:47,160 [Hardison] بله، دقیقا. این استدلال بود. >> آه، درست است. متأسفم. 205 00:15:47,160 --> 00:15:49,470 [Hardison] ما در حال تعیین رشته به فشار شوید. 206 00:15:49,470 --> 00:15:55,220 سوال دیگری که ممکن است که ما در اینجا واقعا صحبت بود 207 00:15:55,220 --> 00:15:58,810 در زمان ما برای مسلم است که ما تا به حال این متغیر به نام های 208 00:15:58,810 --> 00:16:02,710 بود که در دامنه و در دسترس به ما. 209 00:16:02,710 --> 00:16:06,960 در زمان ما برای مسلم است که این ساختار پشته بود. 210 00:16:06,960 --> 00:16:08,930 پس نگاهی به این کد فشار، 211 00:16:08,930 --> 00:16:13,450 شما می توانید ببینید که ما در حال انجام چیزهای با این رشته که در منتقل می کردم 212 00:16:13,450 --> 00:16:19,210 اما بعد از آن همه به طور ناگهانی، ما دسترسی به s.size، مانند، که در آن ها آمده اند؟ 213 00:16:19,210 --> 00:16:23,020 در کد است که ما قصد داریم تا نگاهی به در بایگانی بخش 214 00:16:23,020 --> 00:16:27,100 و پس از آن چیزهای است که شما انجام می شود در مشکل شما این مجموعه ها، 215 00:16:27,100 --> 00:16:32,440 پشته ما ساخته ایم، ساختار یک متغیر جهانی 216 00:16:32,440 --> 00:16:36,380 به طوری که ما می توانیم دسترسی به آن را در همه توابع مختلف ما 217 00:16:36,380 --> 00:16:40,630 بدون نیاز به صورت دستی آن را منتقل می کند و با تصویب آن توسط مرجع، 218 00:16:40,630 --> 00:16:44,870 آیا همه این نوع از مسائل به آن. 219 00:16:44,870 --> 00:16:52,280 ما فقط کمی تقلب، اگر شما خواهد شد، تا همه چیز بهتر است. 220 00:16:52,280 --> 00:16:57,430 و این چیزی است که ما در اینجا به دلیل آن را برای تفریح، آن را آسانتر می کند. 221 00:16:57,430 --> 00:17:02,800 اغلب، شما خواهید دید که مردم این کار را در صورتی که یکی از بزرگ ساختمان داده 222 00:17:02,800 --> 00:17:07,750 که در درون برنامه خود اداره می شود. 223 00:17:07,750 --> 00:17:09,560 >> اجازه بازگشت را به دستگاه. 224 00:17:09,560 --> 00:17:15,240 آیا همه موفقیت section6.zip؟ 225 00:17:15,240 --> 00:17:20,440 همه آن را از حالت زیپ خارج با استفاده از section6.zip جدا کردن؟ 226 00:17:20,440 --> 00:17:27,200 اگر شما را به بخش 6 دایرکتوری - 227 00:17:27,200 --> 00:17:29,220 aah، همه جا - 228 00:17:29,220 --> 00:17:32,840 و شما فهرستی از آنچه در اینجا، شما می بینید که شما رو سه متفاوت است. فایل C. 229 00:17:32,840 --> 00:17:38,350 شما باید یک صف، یک SLL است که به تنهایی مرتبط با لیست و پشته. 230 00:17:38,350 --> 00:17:44,600 اگر شما باز کردن stack.c، 231 00:17:44,600 --> 00:17:47,330 شما می توانید ببینید که ما باید این ساختار تعریف شده برای ما، 232 00:17:47,330 --> 00:17:51,330 ساختار دقیق است که ما فقط در مورد اسلاید صحبت کردیم. 233 00:17:51,330 --> 00:17:56,340 ما متغیر جهانی خود را برای پشته کردم، 234 00:17:56,340 --> 00:18:00,110 ما باید تابع فشار ما، 235 00:18:00,110 --> 00:18:04,230 و پس از آن ما باید تابع پاپ ما است. 236 00:18:04,230 --> 00:18:08,320 من کد برای عقب براند تا بر روی اسلاید در اینجا قرار دهید، 237 00:18:08,320 --> 00:18:10,660 اما آنچه که من می خواهم به شما بچه ها را به انجام است، به بهترین توانایی خود را، 238 00:18:10,660 --> 00:18:13,790 بروید و پیاده سازی تابع پاپ. 239 00:18:13,790 --> 00:18:18,480 هنگامی که شما آن را اجرا کنید، می توانید این کار را با ایجاد پشته کامپایل، 240 00:18:18,480 --> 00:18:22,540 و پس از آن پشته حاصل اجرایی اجرا شود، 241 00:18:22,540 --> 00:18:28,390 و این همه از این کد آزمون را در اینجا است که در اصلی اجرا شود. 242 00:18:28,390 --> 00:18:31,060 و اصلی طول می کشد مراقبت از فشار و تماس های پاپ 243 00:18:31,060 --> 00:18:33,220 و مطمئن شوید که همه چیز می رود از طریق همه حق است. 244 00:18:33,220 --> 00:18:36,820 همچنین این مقدار دهی اولیه به اندازه پشته 245 00:18:36,820 --> 00:18:39,780 بنابراین شما لازم نیست که به نگرانی در مورد مقدار دهی اولیه که. 246 00:18:39,780 --> 00:18:42,310 شما می توانید فرض کنید که آن را به درستی مقداردهی اولیه شده است 247 00:18:42,310 --> 00:18:48,000 آن زمان است که شما دسترسی آن را در تابع پاپ. 248 00:18:48,000 --> 00:18:53,530 آیا این را حس؟ 249 00:18:53,530 --> 00:19:00,100 بنابراین در اینجا ما بروید. کد فشار وجود دارد. 250 00:19:00,100 --> 00:19:13,210 من به شما بچه 5 یا 10 دقیقه به من بدهید. 251 00:19:13,210 --> 00:19:15,690 اگر شما هر گونه سوال در این فاصله در حالی که شما در حال برنامه نویسی، 252 00:19:15,690 --> 00:19:17,710 لطفا از آنها بخواهید با صدای بلند. 253 00:19:17,710 --> 00:19:23,080 بنابراین اگر شما به نقطه چسبیده کنید، فقط بپرسید. 254 00:19:23,080 --> 00:19:26,030 اجازه بدهید من می دانم، اجازه دهید هر کس دیگری می دانم. 255 00:19:26,030 --> 00:19:28,160 با همسایه خود را بیش از حد. 256 00:19:28,160 --> 00:19:30,360 [دانیال] ما فقط به اجرای موسیقی پاپ در حال حاضر؟ >> فقط پاپ. 257 00:19:30,360 --> 00:19:34,200 هر چند شما می توانید پیاده سازی از فشار اگر می خواهید کپی کنید 258 00:19:34,200 --> 00:19:37,780 به طوری که تست کار خواهد کرد. 259 00:19:37,780 --> 00:19:41,940 از آنجا که آن را سخت برای تست چیزهای از وارد شدن به - 260 00:19:41,940 --> 00:19:49,030 و یا، آن را سخت برای تست چیزهای به ظاهر از پشته اگر هر چیزی را در پشته برای شروع وجود ندارد. 261 00:19:49,030 --> 00:19:55,250 >> پاپ قرار است از بازگشت چیست؟ این عنصر از بالای پشته است. 262 00:19:55,250 --> 00:20:01,260 قرار است برای به دست آوردن این عنصر بالای پشته 263 00:20:01,260 --> 00:20:05,780 و پس از آن واحد کم اندازه پشته، 264 00:20:05,780 --> 00:20:07,810 و در حال حاضر شما از دست داده ایم عنصر در بالای صفحه است. 265 00:20:07,810 --> 00:20:11,420 و سپس این عنصر به شما در بالا بازگشت. 266 00:20:11,420 --> 00:20:20,080 [دانشجو، ناخوانا] 267 00:20:20,080 --> 00:20:28,810 [Hardison] پس چه اتفاقی می افتد اگر شما انجام این کار؟ [دانشجو، ناخوانا] 268 00:20:28,810 --> 00:20:34,000 به پایان می رسد تا اتفاق می افتد به احتمال زیاد شما دسترسی به هر دو 269 00:20:34,000 --> 00:20:37,350 یک عنصر که مقداردهی اولیه نشده است با این حال، تا محاسبات خود را 270 00:20:37,350 --> 00:20:39,990 از جایی که آخرین عنصر است خاموش است. 271 00:20:39,990 --> 00:20:46,260 بنابراین در اینجا، اگر شما متوجه است، در فشار، ما دسترسی به رشته ها در عنصر s.size 272 00:20:46,260 --> 00:20:48,560 چرا که آن را به یک شاخص جدید. 273 00:20:48,560 --> 00:20:51,460 بالای پشته است. 274 00:20:51,460 --> 00:21:01,100 در حالی که در موسیقی پاپ، s.size است برای رفتن به فضای بعدی، 275 00:21:01,100 --> 00:21:05,210 فضایی که در بالا از تمام عناصر موجود در پشته خود را. 276 00:21:05,210 --> 00:21:10,050 پس بالا ترین عنصر در s.size نیست، 277 00:21:10,050 --> 00:21:14,930 اما در عوض، آن را در زیر آن است. 278 00:21:14,930 --> 00:21:19,640 >> چیز دیگر را به انجام زمانی که شما - در موسیقی پاپ، 279 00:21:19,640 --> 00:21:22,030 این است که شما باید به اندازه واحد کم. 280 00:21:22,030 --> 00:21:28,750 اگر شما به یاد داشته باشید به نمودار کوچک ما اینجا، 281 00:21:28,750 --> 00:21:30,980 در واقع، تنها چیزی که ما دیدیم اتفاق می افتد زمانی که ما به نام موسیقی پاپ 282 00:21:30,980 --> 00:21:36,150 این بود که این اندازه کاهش یافته است، برای اولین بار به 2 و سپس به 1. 283 00:21:36,150 --> 00:21:42,620 سپس هنگامی که ما تحت فشار قرار دادند یک عنصر جدید در، آن را بروید در نقطه ای مناسب است. 284 00:21:42,620 --> 00:21:49,610 [ریحان] اگر s.size 2، پس از آن که به عنصر 2 رفتن نیست، 285 00:21:49,610 --> 00:21:54,400 و پس از آن شما می خواهم می خواهم که این عنصر به ظاهر خاموش؟ 286 00:21:54,400 --> 00:21:59,510 بنابراین اگر ما به رفت - >> اجازه دهید نگاهی به این دوباره. 287 00:21:59,510 --> 00:22:07,730 اگر این پشته ما این است که در این نقطه 288 00:22:07,730 --> 00:22:12,130 و ما به پاپ، 289 00:22:12,130 --> 00:22:16,150 که در آن شاخص بالا ترین عنصر است؟ 290 00:22:16,150 --> 00:22:19,300 [ریحان] در 2 است، اما آن را به پاپ 3. >> راست. 291 00:22:19,300 --> 00:22:24,220 به طوری که که در آن اندازه ما 3 است، اما ما می خواهیم به پاپ این عنصر در صفحه اول 2. 292 00:22:24,220 --> 00:22:29,900 این است که نوع معمولی از خارج توسط یکی است که شما را با صفر نمایه سازی آرایه است. 293 00:22:29,900 --> 00:22:36,430 بنابراین شما می خواهید به موسیقی پاپ عنصر سوم، اما عنصر سوم این است که در اول 3. 294 00:22:36,430 --> 00:22:39,430 و به همین دلیل ما لازم نیست که برای انجام این کار 1 منهای زمانی که ما در حال هل دادن 295 00:22:39,430 --> 00:22:44,120 چون در حال حاضر، شما متوجه است که بالا ترین عنصر، 296 00:22:44,120 --> 00:22:47,600 اگر ما به فشار چیز دیگری را بر روی پشته در این نقطه، 297 00:22:47,600 --> 00:22:50,360 ما می خواهیم آن را در اول 3 فشار. 298 00:22:50,360 --> 00:23:03,550 و این فقط اتفاق می افتد که اندازه و شاخص خط تا زمانی که شما در حال هل دادن است. 299 00:23:03,550 --> 00:23:06,960 >> چه کسی رو پیاده سازی پشته کار؟ 300 00:23:06,960 --> 00:23:09,690 شما یک پشته کار یکی است. آیا شما موسیقی پاپ کار نشده است؟ 301 00:23:09,690 --> 00:23:11,890 [دانیال] بله. من فکر می کنم تا. 302 00:23:11,890 --> 00:23:14,610 برنامه >> در حال اجرا و SEG گسلش، آن را چاپ می شود؟ 303 00:23:14,610 --> 00:23:17,520 آیا آن را چاپ از "موفقیت" هنگامی که شما آن را اجرا کنید؟ 304 00:23:17,520 --> 00:23:22,630 آره. را پشته، آن را اجرا کنید، اگر آن را چاپ از "موفقیت" می کند و رونق رفتن نیست، 305 00:23:22,630 --> 00:23:26,000 پس از آن همه خوب است. 306 00:23:26,000 --> 00:23:34,070 بسیار خوب. بیایید به دستگاه واقعا به سرعت، 307 00:23:34,070 --> 00:23:46,100 و ما از طریق این راه رفتن. 308 00:23:46,100 --> 00:23:51,110 اگر ما در چه خبر است در اینجا با پاپ، 309 00:23:51,110 --> 00:23:55,220 دانیل، اولین چیزی است که شما چه بود؟ 310 00:23:55,220 --> 00:23:58,850 [دانیال] اگر s.size بزرگتر از 0. 311 00:23:58,850 --> 00:24:03,120 [Hardison] باشه. و چرا شما کار را کرد؟ 312 00:24:03,120 --> 00:24:05,610 [دانیال] برای اینکه مطمئن شوید که چیزی در داخل پشته وجود دارد. 313 00:24:05,610 --> 00:24:10,950 [Hardison] راست. شما می خواهید برای تست تا مطمئن شوید که s.size بزرگتر از 0؛ 314 00:24:10,950 --> 00:24:13,280 در غیر این صورت، چه چیزی می خواهید به اتفاق می افتد؟ 315 00:24:13,280 --> 00:24:16,630 [دانیال] بازگشت پوچ؟ >> بازگشت به تهی، دقیقا. 316 00:24:16,630 --> 00:24:20,740 بنابراین اگر s.size بزرگتر از 0 بود. پس چه می خواهیم کاری انجام دهید؟ 317 00:24:20,740 --> 00:24:25,890 چه کنیم اگر پشته خالی نیست؟ 318 00:24:25,890 --> 00:24:31,210 [استلا] اندازه شما واحد کم؟ >> اندازه واحد کم، درست است. 319 00:24:31,210 --> 00:24:34,440 پس چگونه شما انجام دهد را انجام داد؟ >> s.size -. 320 00:24:34,440 --> 00:24:37,030 [Hardison] بزرگ است. و پس از آن چه شما باید انجام دهید؟ 321 00:24:37,030 --> 00:24:44,140 [استلا] و پس از آن به من گفت: بازگشت s.string [s.size]. 322 00:24:44,140 --> 00:24:48,560 [Hardison] بزرگ است. 323 00:24:48,560 --> 00:24:51,940 در غیر این صورت شما بازگشتی NULL است. بله، سام؟ 324 00:24:51,940 --> 00:24:55,510 [سام] چرا به آن نیاز دارند نمی شود s.size + 1؟ 325 00:24:55,510 --> 00:24:58,430 [Hardison] به علاوه 1؟ >> آره. >> آن را کردم. 326 00:24:58,430 --> 00:25:00,980 [سام] من فکر می کنم به دلیل این که شما در حال گرفتن 1 از، 327 00:25:00,980 --> 00:25:04,290 پس از آن شما برای رفتن به بازگرداندن این است که آنها را برای خواسته است. 328 00:25:04,290 --> 00:25:09,400 [Hardison] و این تنها چیزی است که ما با صحبت کردن در مورد این موضوع از 0 شاخص. 329 00:25:09,400 --> 00:25:11,380 بنابراین اگر ما زوم در اینجا. 330 00:25:11,380 --> 00:25:15,650 اگر ما به این مرد نگاه کنید در اینجا شما می توانید ببینید که زمانی که ما در موسیقی پاپ، 331 00:25:15,650 --> 00:25:19,340 ما در حال ظاهر این عنصر در صفحه اول 2. 332 00:25:19,340 --> 00:25:25,200 >> بنابراین اندازه ما کاهش اول، و سپس اندازه ما مطابقت شاخص ما. 333 00:25:25,200 --> 00:25:39,650 اگر ما به اندازه واحد کم اولین بار نیست، پس ما باید برای انجام اندازه -1 و پس از آن کاهشی است. 334 00:25:39,650 --> 00:25:45,270 بزرگ است. همه خوب است؟ 335 00:25:45,270 --> 00:25:47,530 هر گونه سوال در مورد این؟ 336 00:25:47,530 --> 00:25:54,050 تعدادی از روش های مختلف برای نوشتن این عنوان به خوبی وجود دارد. 337 00:25:54,050 --> 00:26:03,290 در واقع، ما می توانیم چیزی حتی - ما می توانیم یک بوش انجام دهد. 338 00:26:03,290 --> 00:26:05,770 ما می توانیم یک خط بازگشت را انجام دهد. 339 00:26:05,770 --> 00:26:12,980 بنابراین، ما در واقع می تواند قبل از ما با انجام این که بازگشت کاهشی. 340 00:26:12,980 --> 00:26:18,320 بنابراین قرار دادن - قبل از s.size. 341 00:26:18,320 --> 00:26:22,060 که باعث می شود خط واقعا متراکم است. 342 00:26:22,060 --> 00:26:30,940 جایی که تفاوت بین - اندازه و s.size - 343 00:26:30,940 --> 00:26:40,130 است که این پسوند - آنها آن را پسوند به این دلیل که - می آید پس از s.size - 344 00:26:40,130 --> 00:26:47,430 بدان معنی است که s.size به منظور پیدا کردن شاخص مورد ارزیابی قرار 345 00:26:47,430 --> 00:26:50,410 آن را به عنوان در حال حاضر زمانی که این خط اجرا شده است، 346 00:26:50,410 --> 00:26:54,290 و پس از آن این - اتفاقی می افتد بعد از خط می شود اجرا می شود. 347 00:26:54,290 --> 00:27:00,340 پس از این عنصر در s.size اول دیده است. 348 00:27:00,340 --> 00:27:07,260 و این چیزی است که ما می خواهیم نیست، چرا که ما می خواهیم کاهشی اتفاق می افتد 1. 349 00:27:07,260 --> 00:27:10,990 در Othewise، ما قصد داریم به دسترسی به آرایه، به طور موثر، به خارج از مرزهای. 350 00:27:10,990 --> 00:27:16,850 ما در حال رفتن به دسترسی به این عنصر بالا است که ما در واقع می خواهید برای دسترسی به. 351 00:27:16,850 --> 00:27:23,840 آره، سام؟ >> آن را سریع یا استفاده از RAM کمتری را در یک خط است یا نه را؟ 352 00:27:23,840 --> 00:27:29,620 [Hardison] راستش، آن را واقعا بستگی دارد. 353 00:27:29,620 --> 00:27:34,220 [سام، ناخوانا] >> بله، بستگی دارد. شما می توانید از حقه کامپایلر 354 00:27:34,220 --> 00:27:41,580 برای دریافت کامپایلر را به رسمیت شناخته است که، معمولا، من قابل تصور است. 355 00:27:41,580 --> 00:27:44,840 >> بنابراین ما از یک کمی در مورد این مسائل بهینه سازی کامپایلر ذکر شده 356 00:27:44,840 --> 00:27:47,400 که شما می توانید انجام دهید، در تدوین 357 00:27:47,400 --> 00:27:50,580 و این نوع از چیزی است که یک کامپایلر ممکن است قادر به کشف کردن است، 358 00:27:50,580 --> 00:27:54,710 مانند اوه، سلام، شاید من می تواند این همه در یک عملیات انجام دهید، 359 00:27:54,710 --> 00:27:59,420 به عنوان مخالف به بارگذاری متغیر اندازه از RAM، 360 00:27:59,420 --> 00:28:03,770 طرح ساده آن، ذخیره سازی آن را به عقب، و سپس آن را در حال بارگذاری دوباره 361 00:28:03,770 --> 00:28:08,000 به روند بقیه این عملیات است. 362 00:28:08,000 --> 00:28:10,710 اما به طور معمول، نه، این نوع از چیزی که نمی باشد. 363 00:28:10,710 --> 00:28:20,770 که رفتن را به برنامه های خود را به میزان قابل توجهی سریعتر. 364 00:28:20,770 --> 00:28:26,000 سوالات بیشتر در مورد پشته؟ 365 00:28:26,000 --> 00:28:31,360 >> بنابراین هل دادن و ظاهر است. اگر شما بچه ها می خواهید سعی کنید از نسخه هکر، 366 00:28:31,360 --> 00:28:33,660 آنچه ایم در نسخه هکر انجام می شود در واقع رفته 367 00:28:33,660 --> 00:28:37,670 و رشد در این پشته به صورت پویا. 368 00:28:37,670 --> 00:28:43,190 چالش این است که در درجه اول وجود دارد در اینجا در تابع فشار، 369 00:28:43,190 --> 00:28:48,820 تا بفهمند که چگونه به رشد که آرایه 370 00:28:48,820 --> 00:28:52,450 که شما در حفظ و هل دادن عناصر بیشتر و بیشتر بر روی پشته. 371 00:28:52,450 --> 00:28:56,000 در واقع این کد اضافی بیش از حد نیست. 372 00:28:56,000 --> 00:29:00,080 فقط یک تماس - شما باید به خاطر داشته باشید برای دریافت تماس به malloc در آن وجود دارد به درستی، 373 00:29:00,080 --> 00:29:03,310 و پس از آن شکل زمانی که شما در حال رفتن به تماس بازتخصیص. 374 00:29:03,310 --> 00:29:06,090 این یک چالش سرگرم کننده است اگر شما علاقه مند است. 375 00:29:06,090 --> 00:29:11,550 >> اما در حال حاضر، اجازه دهید، و اجازه دهید بحث در مورد صف. 376 00:29:11,550 --> 00:29:15,680 رفته از اینجا. 377 00:29:15,680 --> 00:29:19,340 صف یک خواهر و برادر نزدیک از پشته است. 378 00:29:19,340 --> 00:29:25,380 بنابراین در پشته، چیزهایی که در گذشته قرار گرفتند 379 00:29:25,380 --> 00:29:28,810 اولین چیزهایی که به آن قابل بازیابی بودند. 380 00:29:28,810 --> 00:29:33,600 ما باید این گذشته در، ابتدا، و یا LIFO، سفارش. 381 00:29:33,600 --> 00:29:38,390 در حالی که در صف، به عنوان شما می خواهم از زمانی که شما در حال ایستاده در صف انتظار، 382 00:29:38,390 --> 00:29:41,980 اولین کسی باشید که برای به دست آوردن در خط، اولین چیزی که به صف، 383 00:29:41,980 --> 00:29:47,630 اولین چیزی که می شود از صف بازیابی است. 384 00:29:47,630 --> 00:29:51,490 صف نیز اغلب استفاده می شود زمانی که ما در حال برخورد با نمودار ها 385 00:29:51,490 --> 00:29:55,560 ما در مورد صحبت کردیم به طور خلاصه با پشته، 386 00:29:55,560 --> 00:30:00,260 ها و صف ها نیز در دسترس است که برای یک دسته از چیزهای دیگر. 387 00:30:00,260 --> 00:30:06,180 یکی از چیزهایی است که می آید تا اغلب تلاش برای حفظ، برای مثال، 388 00:30:06,180 --> 00:30:12,310 یک لیست مرتب شده از عناصر. 389 00:30:12,310 --> 00:30:17,650 و شما می توانید این کار را با یک آرایه انجام دهید. شما می توانید لیستی از چیزهایی که طبقه بندی شده اند در یک آرایه نگهداری، 390 00:30:17,650 --> 00:30:20,650 اما جایی است که می شود روی حیله و تزویر است و سپس شما همیشه باید برای پیدا کردن 391 00:30:20,650 --> 00:30:26,160 محل مناسب برای قرار دادن چیزی که بعد از. 392 00:30:26,160 --> 00:30:28,250 بنابراین اگر شما یک آرایه از اعداد 1 تا 10، 393 00:30:28,250 --> 00:30:31,630 و پس از آن شما می خواهید به گسترش است که به تمام اعداد 1 در 100، 394 00:30:31,630 --> 00:30:33,670 و شما این اعداد را در صورت تصادفی و تلاش برای نگه داشتن همه چیز 395 00:30:33,670 --> 00:30:40,650 طبقه بندی شده اند به عنوان شما را از طریق، شما را تا پایان نیاز به انجام بسیاری از تغییر است. 396 00:30:40,650 --> 00:30:43,910 با انواع خاصی از صف ها و انواع خاصی از ساختمان داده های اساسی، 397 00:30:43,910 --> 00:30:46,670 شما در واقع می توانید آن را نسبتا ساده نگه دارید. 398 00:30:46,670 --> 00:30:50,640 شما لازم نیست برای اضافه کردن چیزی و سپس زدن همه چیز در هر زمان. 399 00:30:50,640 --> 00:30:56,770 نه می توانم شما را برای انجام بسیاری از تغییر از عناصر داخلی در اطراف. 400 00:30:56,770 --> 00:31:02,990 هنگامی که ما در یک صف نگاه کنید، که به شما مراجعه کنید - همچنین در queue.c کد بخش - 401 00:31:02,990 --> 00:31:10,950 ساختار ایم که به شما داده شده است واقعا شبیه به ساختار است که ما شما را برای یک پشته داد. 402 00:31:10,950 --> 00:31:13,770 >> یک استثناء به این وجود دارد، و آن یک استثنا 403 00:31:13,770 --> 00:31:21,700 این است که ما باید این عدد صحیح به نام سر، 404 00:31:21,700 --> 00:31:28,120 و سر در اینجا این است که برای پیگیری از سر صف، 405 00:31:28,120 --> 00:31:32,160 یا اولین عنصر در صف. 406 00:31:32,160 --> 00:31:37,470 با استفاده از پشته، ما قادر به نگه داشتن مسیر از عنصر را که ما برای بازیابی، 407 00:31:37,470 --> 00:31:40,800 و یا در بالای پشته، فقط با استفاده به اندازه، 408 00:31:40,800 --> 00:31:44,220 در حالی که با یک صف، ما نیاز به مقابله با به پایان می رسد مخالف است. 409 00:31:44,220 --> 00:31:49,000 ما در حال تلاش برای رویه همه چیز در پایان است، اما پس از آن بازگشت همه چیز از جلو. 410 00:31:49,000 --> 00:31:54,640 بنابراین به طور موثر، با سر، در حال حاضر شاخص از ابتدای صف، 411 00:31:54,640 --> 00:31:58,920 و به اندازه ما می دهد شاخص در انتهای صف 412 00:31:58,920 --> 00:32:03,730 به طوری که ما می توانیم همه چیز را از سر بازیابی و اضافه کردن چیزهایی به دم. 413 00:32:03,730 --> 00:32:06,890 در حالی که با پشته، ما فقط با بالای پشته خرید و فروش. 414 00:32:06,890 --> 00:32:08,900 ما تا به حال برای دسترسی به پایین پشته است. 415 00:32:08,900 --> 00:32:12,220 ما فقط همه چیز را به بالا و در زمان همه چیز را از بالا 416 00:32:12,220 --> 00:32:17,470 بنابراین ما که فیلد اضافی در داخل ساختار ما نیاز ندارد. 417 00:32:17,470 --> 00:32:20,590 کند که به طور کلی احساس را؟ 418 00:32:20,590 --> 00:32:27,670 بسیار خوب. بله، شارلوت؟ [شارلوت، ناخوانا] 419 00:32:27,670 --> 00:32:32,660 [Hardison] این یک سوال بزرگ، که یکی بود که در سخنرانی آمد. 420 00:32:32,660 --> 00:32:36,290 شاید راه رفتن را از طریق چند مثال نشان می دهد چرا 421 00:32:36,290 --> 00:32:41,400 ما نمی خواهیم که به استفاده از رشته ها [0] عنوان سر صف. 422 00:32:41,400 --> 00:32:46,770 >> بنابراین تصور کنید که در حال حاضر صف ما، ما در حال رفتن به آن صف. 423 00:32:46,770 --> 00:32:49,210 در ابتدا، زمانی که ما فقط آن را نمونه، 424 00:32:49,210 --> 00:32:53,330 زمانی که ما فقط آن را اعلام کرد، ما را به هر چیزی مقداردهی اولیه نشده است. 425 00:32:53,330 --> 00:32:56,790 این همه زباله است. پس البته که ما می خواهیم مطمئن شوید که ما مقداردهی اولیه 426 00:32:56,790 --> 00:33:00,950 هر دو اندازه و زمینه های سر به 0، چیزی معقول است. 427 00:33:00,950 --> 00:33:05,770 ما همچنین می تواند به جلو بروید و تهی از عناصر موجود در صف ما. 428 00:33:05,770 --> 00:33:09,930 و مناسب نمودار را به این توجه کنید که در حال حاضر صف ما تنها می تواند برگزاری سه عنصر؛ 429 00:33:09,930 --> 00:33:13,150 در حالی که پشته ما می تواند چهار نگه دارید، صف ما فقط می تواند سه نگه دارد. 430 00:33:13,150 --> 00:33:18,680 و این فقط به تناسب نمودار است. 431 00:33:18,680 --> 00:33:26,150 اولین چیزی که اتفاق می افتد در اینجا این رشته است enqueue ما "سلام". 432 00:33:26,150 --> 00:33:30,380 و درست مثل ما با پشته بود، هیچ چیز وحشتناکی های مختلف در اینجا، 433 00:33:30,380 --> 00:33:39,230 ما با پرتاب این رشته در در رشته ها [0] و افزایش اندازه ما با 1. 434 00:33:39,230 --> 00:33:42,720 ما enqueue "خداحافظ"، آن را قرار داده است. 435 00:33:42,720 --> 00:33:45,870 پس این به نظر می رسد مانند یک پشته برای اکثر بخش است. 436 00:33:45,870 --> 00:33:53,230 ما آغاز شده اینجا، عنصر، عنصر جدید، اندازه را نگه می دارد در حال بالا رفتن است. 437 00:33:53,230 --> 00:33:56,330 چه اتفاقی می افتد در این نقطه زمانی که ما می خواهیم به dequeue چیزی؟ 438 00:33:56,330 --> 00:34:01,280 هنگامی که ما می خواهیم به dequeue، که این عنصر است که ما می خواهیم به dequeue است؟ 439 00:34:01,280 --> 00:34:04,110 [ریحان] رشته [0]. >> صفر. دقیقا حق، ریحان. 440 00:34:04,110 --> 00:34:10,960 ما می خواهیم از رشته اول، این یکی، "سلام" را به خلاص شدن از شر. 441 00:34:10,960 --> 00:34:13,170 پس چه چیز دیگری که تغییر؟ 442 00:34:13,170 --> 00:34:17,010 توجه داشته باشید که زمانی که ما چیزی از پشته ظهور، ما فقط به تغییر اندازه، 443 00:34:17,010 --> 00:34:22,080 اما در اینجا، ما یک زن و شوهر از چیزهایی که تغییر کردم. 444 00:34:22,080 --> 00:34:27,440 نه تنها تغییر اندازه، اما سر. 445 00:34:27,440 --> 00:34:31,020 این است که بازگشت به نقطه شارلوت زودتر: 446 00:34:31,020 --> 00:34:38,699 چرا این سر ما که به عنوان خوبی؟ 447 00:34:38,699 --> 00:34:42,110 معنی آن را در حال حاضر، شارلوت؟ نوع >>. 448 00:34:42,110 --> 00:34:47,500 [Hardison] نوع؟ پس چه رخ داده هنگامی که ما dequeued؟ 449 00:34:47,500 --> 00:34:54,340 چه سر انجام بود که در حال حاضر جالب است؟ 450 00:34:54,340 --> 00:34:56,449 [شارلوت] آه، چرا که آن را تغییر - درست است. متوجه هستم. 451 00:34:56,449 --> 00:35:02,090 از آنجا که سر - که در آن سر با اشاره به تغییر در قوانین و مقررات از محل. 452 00:35:02,090 --> 00:35:07,200 این دیگر همواره یکی از شاخص صفر است. >> بله، دقیقا. 453 00:35:07,200 --> 00:35:17,660 چه اتفاقی می افتد اگر dequeueing عنصر بالا 454 00:35:17,660 --> 00:35:20,590 انجام شد و ما در این زمینه سر ندارد 455 00:35:20,590 --> 00:35:26,880 چرا که ما همیشه خواستار شدند و این رشته در 0 شاخص سر صف ما، 456 00:35:26,880 --> 00:35:30,170 پس از آن ما می خواهم بقیه صف برای تغییر کردن. 457 00:35:30,170 --> 00:35:36,010 ما می خواهم برای تغییر "خداحافظ" از از رشته ها [1] به رشته ها [0]. 458 00:35:36,010 --> 00:35:38,760 و رشته ها [2] پایین به رشته [1]. 459 00:35:38,760 --> 00:35:43,050 و ما می خواهم که برای انجام این کار برای لیست کامل از عناصر، 460 00:35:43,050 --> 00:35:45,110 مجموعه ای کامل از عناصر. 461 00:35:45,110 --> 00:35:50,490 و هنگامی که ما در حال انجام این کار با یک آرایه، که می شود واقعا پرهزینه است. 462 00:35:50,490 --> 00:35:53,340 بنابراین در اینجا، این یک معامله بزرگ است. ما فقط باید سه عنصر در آرایه. 463 00:35:53,340 --> 00:35:57,230 اما اگر ما تا به حال یک صف از هزار عنصر یا یک میلیون عناصر، 464 00:35:57,230 --> 00:36:00,060 و سپس به طور ناگهانی، ما شروع به ساخت یک دسته از dequeue می نامد، همه در یک حلقه، 465 00:36:00,060 --> 00:36:03,930 همه چیز در حال واقعا به کم کردن سرعت آن را به عنوان شیفت همه چیز پایین به طور مداوم. 466 00:36:03,930 --> 00:36:07,320 شما می دانید، با 1 تغییر مکان، تغییر 1، از SHIFT 1، از SHIFT توسط 1. 467 00:36:07,320 --> 00:36:13,650 در عوض، ما از این سر، ما اسمش را "اشاره گر" حتی اگر آن را واقعا یک اشاره گر 468 00:36:13,650 --> 00:36:16,430 در معنای دقیق، آن را یک نوع اشاره گر نیست. 469 00:36:16,430 --> 00:36:19,410 این نوع int * یا * کاراکتر یا هر چیزی شبیه به آن نیست. 470 00:36:19,410 --> 00:36:28,930 اما آن را به اشاره و یا نشان می دهد سر از صف ما. آره؟ 471 00:36:28,930 --> 00:36:38,800 >> [دانشجو] چگونه dequeue می دانم که فقط به ظاهر آنچه در سر؟ 472 00:36:38,800 --> 00:36:43,620 [Hardison] چگونه dequeue می دانم که چگونه به موسیقی پاپ آنچه در سر؟ حق >>، آره. 473 00:36:43,620 --> 00:36:49,050 >> آنچه در آن نگاه کردن به این است که فقط هر زمینه سر قرار است به. 474 00:36:49,050 --> 00:36:52,710 بنابراین در این مورد اول، اگر ما نگاه حق در اینجا، 475 00:36:52,710 --> 00:36:55,690 سر ما، 0، 0 اول است. >> راست. 476 00:36:55,690 --> 00:37:00,500 [Hardison] پس از آن فقط می گوید: خوب، خوب، این عنصر در اندیس 0، رشته "سلام"، 477 00:37:00,500 --> 00:37:03,050 عنصر در سر صف ما است. 478 00:37:03,050 --> 00:37:05,570 بنابراین ما در حال رفتن به dequeue که مرد. 479 00:37:05,570 --> 00:37:09,800 خواهد شد که این عنصر می شود که به تماس گیرنده. 480 00:37:09,800 --> 00:37:14,540 بله، سعد؟ >> پس سر اساسا مجموعه - که در آن شما در حال رفتن به صفحه اول آن است؟ 481 00:37:14,540 --> 00:37:17,750 این بود که شروع از آن؟ >> آره. >> درست است. 482 00:37:17,750 --> 00:37:22,900 [Hardison] که این تبدیل شدن به پیمان جدید استارت را برای آرایه است. 483 00:37:22,900 --> 00:37:28,930 بنابراین، هنگامی که شما dequeue چیزی، همه شما باید انجام دهید این است که دسترسی به عنصر اول q.head، 484 00:37:28,930 --> 00:37:32,240 و خواهد بود که عنصر را که شما می خواهید به dequeue. 485 00:37:32,240 --> 00:37:34,930 همچنین شما می توانید به واحد کم حجم. 486 00:37:34,930 --> 00:37:39,430 ما را در یک بیت که در آن همه چیز کمی از روی حیله و تزویر با این. 487 00:37:39,430 --> 00:37:46,520 ما dequeue، و در حال حاضر، اگر ما دوباره enqueue، 488 00:37:46,520 --> 00:37:51,300 جایی که ما enqueue؟ 489 00:37:51,300 --> 00:37:55,000 عنصر بعدی در صف ما کجا برود؟ 490 00:37:55,000 --> 00:37:57,980 می گویند که ما می خواهیم به enqueue رشته "CS". 491 00:37:57,980 --> 00:38:02,240 که به صفحه اول آن را؟ [] دانشجویان رشته های [2]. >> دو. 492 00:38:02,240 --> 00:38:04,980 چرا 2 و 0؟ 493 00:38:04,980 --> 00:38:13,570 [ریحان] از آنجا که در حال حاضر سر 1، به طوری که مانند آغاز از لیست؟ 494 00:38:13,570 --> 00:38:21,220 [Hardison] راست. و آنچه بیانگر گزینه ای است که پاسخ دادن به آن پایان از لیست؟ 495 00:38:21,220 --> 00:38:23,290 چیزی که ما با استفاده از به معنی انتهای صف ما؟ 496 00:38:23,290 --> 00:38:25,970 سر، سر صف ما، در آغاز از صف ما است. 497 00:38:25,970 --> 00:38:29,530 پایان صف ما چیست؟ [دانش آموزان] حجم. >> حجم، دقیقا. 498 00:38:29,530 --> 00:38:36,360 بنابراین عناصر جدید ما در اندازه، و عناصری که ما را به خاموش کردن در سر. 499 00:38:36,360 --> 00:38:45,390 هنگامی که ما enqueue عنصر بعدی، ما در حال قرار دادن آن در اندازه است. 500 00:38:45,390 --> 00:38:48,530 [دانشجو] قبل از اینکه شما قرار داده است که در هر چند، اندازه 1 بود، درست است؟ 501 00:38:48,530 --> 00:38:55,690 [Hardison] راست. بنابراین نه کاملا در اندازه. + حجم، +1 نیست، اما سر +. 502 00:38:55,690 --> 00:38:59,990 از آنجا که ما همه چیز را با مقدار سر منتقل. 503 00:38:59,990 --> 00:39:14,270 بنابراین در اینجا، در حال حاضر ما باید یک صف از اندازه 1 شروع می شود که در اندیس 1. 504 00:39:14,270 --> 00:39:20,730 دم اول 2 است. بله؟ 505 00:39:20,730 --> 00:39:25,780 >> [دانشجو] چه اتفاقی می افتد زمانی که شما dequeue رشته [0]، و شیارهای رشته در حافظه 506 00:39:25,780 --> 00:39:29,420 فقط خالی شو، در واقع، یا فقط فراموش؟ 507 00:39:29,420 --> 00:39:34,700 [Hardison] آره. در این معنا، ما فقط آنها را به فراموش کردن. 508 00:39:34,700 --> 00:39:42,640 اگر ما ذخیره سازی کپی از آنها - 509 00:39:42,640 --> 00:39:46,310 بسیاری از ساختمان های داده، اغلب به نسخه خود را از عناصر ذخیره 510 00:39:46,310 --> 00:39:51,760 به طوری که فرد مدیریت ساختار داده ها را ندارد به نگران 511 00:39:51,760 --> 00:39:53,650 در مورد که در آن همه کسانی که اشاره گر در حال رفتن است. 512 00:39:53,650 --> 00:39:56,000 ساختار داده نگه می دارد به همه چیز، نگه می دارد بر روی تمام نسخه، 513 00:39:56,000 --> 00:39:59,580 اطمینان حاصل کنید که همه چیز ادامه یابد مناسب. 514 00:39:59,580 --> 00:40:03,140 با این حال، در این مورد، این ساختمان های داده، برای سادگی، 515 00:40:03,140 --> 00:40:05,580 کپی از هر چیزی که ما در آنها ذخیره نمی کند. 516 00:40:05,580 --> 00:40:08,630 [دانشجو] این است که یک آرایه مداوم -؟ >> بله. 517 00:40:08,630 --> 00:40:14,350 اگر ما نگاه چه تعریف از این ساختار آن است. 518 00:40:14,350 --> 00:40:19,110 این فقط یک آرایه استاندارد مثل شما دیده ام، 519 00:40:19,110 --> 00:40:24,280 آرایه ای از کاراکتر * S. 520 00:40:24,280 --> 00:40:26,340 کند که - >> آره، من فقط تعجب بود 521 00:40:26,340 --> 00:40:29,130 اگر شما در نهایت خواهید از حافظه اجرا شود، تا حدودی، 522 00:40:29,130 --> 00:40:32,330 اگر شما تمام این نقاط خالی در آرایه شما؟ 523 00:40:32,330 --> 00:40:36,390 [Hardison] آره، که یک نقطه خوب است. 524 00:40:36,390 --> 00:40:41,530 >> اگر ما در آنچه اتفاق افتاده، در حال حاضر در این نقطه، نگاه 525 00:40:41,530 --> 00:40:46,350 ایم پر از صف ما، آن را مانند به نظر می رسد. 526 00:40:46,350 --> 00:40:50,390 اما ما واقعا نمی پر تا صف ما 527 00:40:50,390 --> 00:40:57,710 چرا که ما یک صف است که به اندازه 2 است، اما آن را در اندیس 1 شروع می شود، 528 00:40:57,710 --> 00:41:02,160 چرا که جایی که اشاره گر سر ما است. 529 00:41:02,160 --> 00:41:08,400 مثل شما می گفتند، که در رشته عنصر [0]، در اول 0 است، واقعا وجود ندارد. 530 00:41:08,400 --> 00:41:10,450 در صف ما ندارد. 531 00:41:10,450 --> 00:41:16,460 ما فقط زحمت نیست برای رفتن و بازنویسی آن زمانی که ما آن را dequeued. 532 00:41:16,460 --> 00:41:18,700 بنابراین حتی اگر به نظر می رسد که ما از حافظه ام است، ما واقعا وجود ندارد. 533 00:41:18,700 --> 00:41:23,270 آن نقطه در دسترس است برای ما برای استفاده از. 534 00:41:23,270 --> 00:41:29,310 رفتار مناسب، اگر ما را امتحان کنید و برای اولین بار dequeue چیزی 535 00:41:29,310 --> 00:41:34,420 مانند "خداحافظ"، که پاپ خداحافظی کردن. 536 00:41:34,420 --> 00:41:38,460 در حال حاضر صف ما آغاز می شود در شاخص 2 و از اندازه 1 است. 537 00:41:38,460 --> 00:41:42,240 و حالا اگر ما سعی می کنیم و enqueue چیزی دوباره، می گویند 50، 538 00:41:42,240 --> 00:41:47,880 50 باید در این نقطه در اندیس 0 539 00:41:47,880 --> 00:41:51,270 به دلیل آن را برای ما هنوز در دسترس است. بله، سعد؟ 540 00:41:51,270 --> 00:41:53,630 [سعد] آیا اتفاق می افتد که به طور خودکار؟ 541 00:41:53,630 --> 00:41:56,150 [Hardison] این اتفاق نمی افتد کاملا به صورت خودکار. شما باید برای انجام محاسبات ریاضی 542 00:41:56,150 --> 00:42:00,380 آن را به کار می کنند اما اساسا آنچه که ما انجام داده ایم این است که ما فقط در اطراف پیچیده است. 543 00:42:00,380 --> 00:42:04,070 [سعد] و آن درست است در صورتی که این است یک سوراخ در وسط آن؟ 544 00:42:04,070 --> 00:42:08,720 [Hardison] این است که اگر ما می توانیم ریاضی کار درستی است. 545 00:42:08,720 --> 00:42:15,470 >> و معلوم که در واقع که سخت به با عملگر وزارت دفاع انجام نیست. 546 00:42:15,470 --> 00:42:20,040 بنابراین درست مثل ما با سزار و مسائل رمزنگاری، 547 00:42:20,040 --> 00:42:25,190 با استفاده از وزارت دفاع، ما می توانیم همه چیز را به پوشش در اطراف و نگه داشتن رفتن 548 00:42:25,190 --> 00:42:28,090 در اطراف و در اطراف و در اطراف با صف ما، 549 00:42:28,090 --> 00:42:32,180 نگه داشتن که اشاره گر سر حرکت در اطراف. 550 00:42:32,180 --> 00:42:38,840 توجه کنید که اندازه است که همیشه احترام به تعدادی از عناصر در واقع در درون صف است. 551 00:42:38,840 --> 00:42:43,110 و آن را فقط به اشاره گر سر نگه می دارد که دوچرخه سواری را از طریق. 552 00:42:43,110 --> 00:42:49,660 اگر ما در آنچه رخ داده نگاه کنید، اگر ما به بازگشت به آغاز، 553 00:42:49,660 --> 00:42:55,020 و شما فقط چیزی که اتفاق می افتد به سر تماشا 554 00:42:55,020 --> 00:42:58,240 هنگامی که ما enqueue چیزی، هیچ چیز به سر اتفاق افتاده است. 555 00:42:58,240 --> 00:43:00,970 هنگامی که ما enqueued چیز دیگری، هیچ چیز به سر اتفاق افتاده است. 556 00:43:00,970 --> 00:43:04,130 محض این که ما dequeued چیزی، سر می رود تا به یک. 557 00:43:04,130 --> 00:43:06,600 ما enqueued چیزی، هیچ چیز اتفاق می افتد به سر می شود. 558 00:43:06,600 --> 00:43:11,060 هنگامی که ما چیزی dequeue، ناگهان همه از یک سر می شود افزایش مییابد. 559 00:43:11,060 --> 00:43:14,660 هنگامی که ما enqueue چیزی، هیچ چیز اتفاق می افتد به سر می شود. 560 00:43:14,660 --> 00:43:20,240 >> چه چیزی را در این مرحله اتفاق می افتد اگر ما به dequeue چیزی دوباره؟ 561 00:43:20,240 --> 00:43:23,240 هر گونه افکار؟ چه به سر اتفاق می افتد؟ 562 00:43:23,240 --> 00:43:27,190 چه چیزهایی را باید به سر اتفاق می افتد 563 00:43:27,190 --> 00:43:32,990 اگر ما چیز دیگری به dequeue؟ 564 00:43:32,990 --> 00:43:35,400 سر حق در حال حاضر در صفحه اول 2. 565 00:43:35,400 --> 00:43:38,920 که بدان معنی است که سر صف رشته ها [2]. 566 00:43:38,920 --> 00:43:44,280 [دانشجو] که برمی گرداند 0؟ >> باید به 0. باید بسته بندی اطراف، دقیقا. 567 00:43:44,280 --> 00:43:48,440 تا کنون، هر بار که ما به نام dequeue، ما شده ایم افزودن به سر، 568 00:43:48,440 --> 00:43:50,960 اضافه کردن یک به سر، اضافه کردن یک به سر، اضافه کردن یک به سر. 569 00:43:50,960 --> 00:43:58,400 به محض این که اشاره گر سر می شود به شاخص در آرایه ما، 570 00:43:58,400 --> 00:44:05,650 پس از آن ما باید آن را بپیچید بازگشت به اطراف به آغاز، به عقب برگردید تا 0. 571 00:44:05,650 --> 00:44:09,900 [شارلوت] تعیین ظرفیت صف در پشته؟ 572 00:44:09,900 --> 00:44:13,120 [Hardison] در این مورد، ما فقط شده است با استفاده از ثابت # تعریف شده است. >> درست است. 573 00:44:13,120 --> 00:44:19,590 [Hardison] در واقعی فایل C، شما می توانید بروید و در پهن کردن با آن را کمی 574 00:44:19,590 --> 00:44:21,710 و آن را به عنوان بزرگ و یا بصورت کمی که شما می خواهید. 575 00:44:21,710 --> 00:44:25,310 [شارلوت] بنابراین زمانی که شما آن را به صف، چگونه می توانم شما را کامپیوتر می دانیم 576 00:44:25,310 --> 00:44:29,120 چقدر بزرگ است که شما می خواهید به پشته؟ 577 00:44:29,120 --> 00:44:31,700 [Hardison] این یک سوال بزرگ است. 578 00:44:31,700 --> 00:44:34,800 یک زن و شوهر از راه وجود دارد. یکی این است که فقط آن را تعریف جلو 579 00:44:34,800 --> 00:44:42,050 و می گویند این است که برای رفتن به یک صف است که دارای 4 عنصر یا 50 عناصر یا 10،000. 580 00:44:42,050 --> 00:44:45,430 راه دیگر این است که برای انجام آنچه هکر مردمی نسخه در حال انجام 581 00:44:45,430 --> 00:44:52,310 و ایجاد توابع به صف شما رشد می کنند به صورت پویا به عنوان کارهای بیشتری اضافه شوید. 582 00:44:52,310 --> 00:44:54,740 >> [شارلوت] بنابراین با گزینه اول، به چه نحو می توانم به شما استفاده از 583 00:44:54,740 --> 00:44:57,830 که به برنامه چه اندازه از صف؟ 584 00:44:57,830 --> 00:45:04,780 [Hardison] ه. پس از این. 585 00:45:04,780 --> 00:45:12,650 من هنوز در stack.c در اینجا، بنابراین من فقط رفتن برای حرکت به بالا در اینجا. 586 00:45:12,650 --> 00:45:17,920 آیا این حق را به شما اینجا را ببینید؟ این است که # تعریف 10 ظرفیت. 587 00:45:17,920 --> 00:45:24,600 و این تقریبا به نحو دقیق همان است که ما برای صف می باشد. 588 00:45:24,600 --> 00:45:28,390 به جز در صف، ما این زمینه ساختار اضافی در اینجا کردم. 589 00:45:28,390 --> 00:45:32,760 [شارلوت] آه، من فکر می کردم ظرفیت به معنای ظرفیت برای رشته. 590 00:45:32,760 --> 00:45:36,770 [Hardison] ه. >> که آن را حداکثر طول کلمه است. >> آن را کردم. 591 00:45:36,770 --> 00:45:41,180 آره. ظرفیت اینجا - که یک نقطه بزرگ است. 592 00:45:41,180 --> 00:45:44,000 و این چیزی است که از روی حیله و تزویر است 593 00:45:44,000 --> 00:45:49,480 زیرا آنچه که ما انجام داده ایم، اعلام کرد که در اینجا یک آرایه ای از کاراکتر * S است. 594 00:45:49,480 --> 00:45:52,770 آرایه ای از اشاره گرها. 595 00:45:52,770 --> 00:45:56,690 این آرایه ای از کاراکتر است. 596 00:45:56,690 --> 00:46:01,690 این است که احتمالا دیده اید زمانی که شما در بافر اعلام شده خود را برای فایل های I / O، 597 00:46:01,690 --> 00:46:06,840 هنگامی که شما ایجاد شده است رشته دستی بر روی پشته. 598 00:46:06,840 --> 00:46:09,090 با این حال، آنچه ما باید در اینجا یک آرایه ای از کاراکتر * S است. 599 00:46:09,090 --> 00:46:13,400 پس از آن یک آرایه ای از اشاره گرها. 600 00:46:13,400 --> 00:46:18,350 در واقع، اگر ما زوم به عقب و ما در نگاه چه خبر در اینجا 601 00:46:18,350 --> 00:46:23,140 در ارائه، شما می بینید که عناصر واقعی، شخصیت داده 602 00:46:23,140 --> 00:46:26,180 است که در داخل خود آرایه ذخیره می شود. 603 00:46:26,180 --> 00:46:42,690 چه در داخل آرایه ذخیره می شود در اینجا اشاره گر به داده های شخصیت. 604 00:46:42,690 --> 00:46:52,560 باشه. بنابراین، ما دیده ایم که چگونه اندازه صف فقط با پشته، 605 00:46:52,560 --> 00:46:58,670 اندازه همیشه احترام به تعدادی از عناصر که در حال حاضر در صف. 606 00:46:58,670 --> 00:47:02,720 پس از ساخت 2 enqueues، به اندازه 2 است. 607 00:47:02,720 --> 00:47:07,110 پس از ساخت dequeue اندازه در حال حاضر 1. 608 00:47:07,110 --> 00:47:09,330 به پس از دیگری enqueue اندازه برگشت تا 2. 609 00:47:09,330 --> 00:47:12,340 بنابراین اندازه قطعا احترام به تعدادی از عناصر در صف، 610 00:47:12,340 --> 00:47:15,580 و پس از آن سر و دوچرخه سواری را نگه می دارد. 611 00:47:15,580 --> 00:47:20,210 آن را از 0-1-2، 0-1-2، 0-1-2 می رود. 612 00:47:20,210 --> 00:47:25,620 و هر وقت ما تماس بگیرید dequeue، اشاره گر به سر می شود به شاخص بعدی افزایش مییابد. 613 00:47:25,620 --> 00:47:29,930 و اگر سر به بیش، این حلقه در اطراف تا 0. 614 00:47:29,930 --> 00:47:34,870 بنابراین با آن، ما می توانیم تابع dequeue ارسال. 615 00:47:34,870 --> 00:47:40,200 و ما قصد داریم به ترک تابع enqueue برای شما بچه ها برای پیاده سازی به جای. 616 00:47:40,200 --> 00:47:45,880 >> هنگامی که ما dequeue یک عنصر از صف ما، 617 00:47:45,880 --> 00:47:55,490 اولین چیزی که دانیل زمانی که ما شروع به نوشتن تابع پاپ برای پشته بود؟ 618 00:47:55,490 --> 00:48:00,490 اجازه بدهید من از کسی که صحبت کرده است هنوز رتبهدهی نشده است را بشنود. 619 00:48:00,490 --> 00:48:06,710 بیایید ببینید، سعد، آیا شما به یاد داشته باشید آنچه که دانیل را به عنوان اولین چیزی که زمانی که او نوشت: پاپ؟ 620 00:48:06,710 --> 00:48:08,860 [سعد] شد، آن بود - >> او برای چیزی مورد آزمایش قرار گرفته است. 621 00:48:08,860 --> 00:48:12,140 [سعد] اگر اندازه بزرگتر از 0. >> دقیقا. 622 00:48:12,140 --> 00:48:14,390 و چه شد که برای تست؟ 623 00:48:14,390 --> 00:48:19,090 [سعد] بود که آزمایش برای دیدن اگر هر چیزی در داخل آرایه وجود دارد. 624 00:48:19,090 --> 00:48:23,210 [Hardison] آره. دقیقا. بنابراین شما می توانید هر چیزی را از پشته پاپ نیست اگر آن را خالی. 625 00:48:23,210 --> 00:48:26,510 به همین ترتیب، شما می توانید هر چیزی از یک صف dequeue نیست اگر آن را خالی. 626 00:48:26,510 --> 00:48:30,420 اولین چیزی که ما باید در عملکرد dequeue ما را در اینجا چیست، آیا شما فکر می کنید؟ 627 00:48:30,420 --> 00:48:33,860 [سعد] اگر اندازه بزرگتر از 0؟ >> آره. 628 00:48:33,860 --> 00:48:37,710 در این مورد، من در واقع فقط تست شده برای دیدن آن 0 است. 629 00:48:37,710 --> 00:48:42,240 اگر آن 0 است، ما می توانیم تهی بازگشت. 630 00:48:42,240 --> 00:48:45,280 اما دقیق همان منطق است. 631 00:48:45,280 --> 00:48:49,110 و اجازه ادامه این. 632 00:48:49,110 --> 00:48:54,600 اگر به اندازه 0 است، که در آن عنصر است که ما می خواهیم به dequeue؟ 633 00:48:54,600 --> 00:48:58,550 [سعد] در سر؟ >> دقیقا. 634 00:48:58,550 --> 00:49:01,720 ما فقط می تواند از کنار این عنصر برای اولین بار در صف ما 635 00:49:01,720 --> 00:49:07,040 دسترسی به این عنصر در سر. 636 00:49:07,040 --> 00:49:14,630 هیچ چیز دیوانه. 637 00:49:14,630 --> 00:49:19,620 پس از آن، چه باید کرد؟ آنچه که اتفاق می افتد؟ 638 00:49:19,620 --> 00:49:23,740 چیز دیگری که ما در مورد در dequeue صحبت چه بود؟ 639 00:49:23,740 --> 00:49:28,130 دو چیز اتفاق می افتد، زیرا صف ما تغییر کرده است. 640 00:49:28,130 --> 00:49:35,640 [دانیال] کاهش حجم. >> ما باید به منظور کاهش حجم و افزایش سر؟ دقیقا. 641 00:49:35,640 --> 00:49:40,600 برای افزایش سر، ما فقط نمی تواند کورکورانه سر، افزایش به یاد داشته باشید. 642 00:49:40,600 --> 00:49:45,080 ما می توانیم نه فقط انجام queue.head + +. 643 00:49:45,080 --> 00:49:51,630 ما نیز شامل این وزارت دفاع با ظرفیت. 644 00:49:51,630 --> 00:49:54,740 و چرا ما از ظرفیت وزارت دفاع، استلا؟ 645 00:49:54,740 --> 00:49:58,680 [استلا] از آنجا که آن را به پوشش در اطراف. >> دقیقا. 646 00:49:58,680 --> 00:50:04,750 ما با ظرفیت وزارت دفاع به دلیل آن است به بسته بندی کردن در اطراف را به 0. 647 00:50:04,750 --> 00:50:07,400 بنابراین در حال حاضر، در این مرحله، ما می توانیم انجام آنچه دانیل گفت. 648 00:50:07,400 --> 00:50:12,700 ما می توانیم به اندازه کاهشی. 649 00:50:12,700 --> 00:50:29,170 و پس از آن ما فقط می تواند این عنصر بود که در ابتدای صف را برگرداند. 650 00:50:29,170 --> 00:50:34,000 به نظر می رسد نوع gnarly در ابتدا. شما ممکن است یک سوال را داشته باشد. ببخشید؟ 651 00:50:34,000 --> 00:50:37,260 >> [سام] چرا در ابتدای صف؟ کجا برود؟ 652 00:50:37,260 --> 00:50:42,480 [Hardison] آن را از خط چهارم از پایین می آید. 653 00:50:42,480 --> 00:50:46,060 بعد از آزمایش می کنیم تا مطمئن شوید که صف ما خالی نیست، 654 00:50:46,060 --> 00:50:54,100 ما بیرون بکشد * کاراکتر برای اولین بار، ما بیرون بکشد عنصر را که در صفحه اول سر نشسته 655 00:50:54,100 --> 00:50:58,680 از آرایه از رشته ها آرایه ما >> و تماس که برای اولین بار؟ 656 00:50:58,680 --> 00:51:04,500 [Hardison] و ما تماس بگیرید برای اولین بار. آره. 657 00:51:04,500 --> 00:51:09,850 فقط به دنبال آن، چرا شما فکر می کنم که ما تا به حال به انجام این کار؟ 658 00:51:09,850 --> 00:51:18,270 [سام] هر اولین بار است که در راه بازگشت q.strings [q.head؟ >> آره. 659 00:51:18,270 --> 00:51:23,830 >> از آنجا که ما در حال انجام این کار در حال تغییر از q.head با تابع وزارت دفاع، 660 00:51:23,830 --> 00:51:27,810 و هیچ راهی برای انجام این کار در داخل خط بازگشت نیز وجود دارد. 661 00:51:27,810 --> 00:51:31,640 [Hardison] دقیقا. تو نقطه در. سام کاملا در نقطه. 662 00:51:31,640 --> 00:51:36,800 به این دلیل که ما تا به حال به این عنصر برای اولین بار در صف ما بیرون بکشد و آن را در یک متغیر ذخیره 663 00:51:36,800 --> 00:51:43,030 زیرا این خط که در آن ما فقط q.head بود، 664 00:51:43,030 --> 00:51:47,030 عملگر وزارت دفاع در آنجا وجود دارد چیزی است که ما می توانیم انجام دهیم 665 00:51:47,030 --> 00:51:51,230 و اثر بر روی سر آن را بدون - در یک خط است. 666 00:51:51,230 --> 00:51:54,480 بنابراین، ما در واقع باید به جلو و از عنصر اول، و سپس سر را تنظیم کنید، 667 00:51:54,480 --> 00:52:00,430 تنظیم اندازه، و سپس بازگشت عنصر را که ما را از جیبش در آورد. 668 00:52:00,430 --> 00:52:02,680 و این چیزی است که خواهیم دید آمد تا بعد از آن با 669 00:52:02,680 --> 00:52:04,920 مرتبط با لیست ها، به عنوان ما در سراسر بازی با آنها. 670 00:52:04,920 --> 00:52:08,410 اغلب زمانی که شما آزادی و یا خلاصی از لیست های پیوندی 671 00:52:08,410 --> 00:52:13,500 شما نیاز دارید به خاطر داشته باشید که این عنصر بعدی، اشاره گر بعد از یک لیست پیوندی 672 00:52:13,500 --> 00:52:16,330 قبل از دفع از یک جریان است. 673 00:52:16,330 --> 00:52:23,580 از آنجا که در غیر این صورت شما دور انداختن اطلاعات از آنچه در فهرست باقی مانده است. 674 00:52:23,580 --> 00:52:34,160 در حال حاضر، اگر شما به دستگاه شما، شما باز کردن queue.c-X از این است. 675 00:52:34,160 --> 00:52:39,390 بنابراین اگر من باز کردن queue.c، اجازه دهید به من زوم در اینجا، 676 00:52:39,390 --> 00:52:44,970 شما خواهید دید که شما یک فایل مشابه به دنبال. 677 00:52:44,970 --> 00:52:49,200 به دنبال فایل مشابه به آنچه که ما تا به حال پیش از آن با stack.c. 678 00:52:49,200 --> 00:52:54,690 ما ساختار خود را برای صف تعریف شده فقط به عنوان ما بر روی اسلاید دیدم شدم. 679 00:52:54,690 --> 00:52:59,870 >> ما باید تابع enqueue ما است که شما را به انجام. 680 00:52:59,870 --> 00:53:04,340 و ما باید تابع dequeue در اینجا. 681 00:53:04,340 --> 00:53:06,870 این تابع dequeue در فایل اجرا نشده، 682 00:53:06,870 --> 00:53:13,230 اما من آن را به عقب قرار داده تا در پاورپوینت به طوری که شما می توانید آن را در نوع، اگر شما می خواهم. 683 00:53:13,230 --> 00:53:16,690 پس از 5 دقیقه یا بیشتر در کنار شما بچه ها در enqueue کار 684 00:53:16,690 --> 00:53:22,570 است که تقریبا فقط در مقابل dequeue. 685 00:53:22,570 --> 00:53:29,560 شما لازم نیست برای تنظیم سر زمانی که شما در حال enqueueing، اما چه چیزی شما باید برای تنظیم؟ 686 00:53:29,560 --> 00:53:38,920 اندازه. بنابراین، هنگامی که شما enqueue، سر دست نخورده باقی می ماند، به اندازه تغییر می شود. 687 00:53:38,920 --> 00:53:46,920 اما این کار را کمی از - شما باید به بازی در اطراف با آن وزارت دفاع 688 00:53:46,920 --> 00:53:57,560 برای کشف کردن دقیقا چه شاخص این عنصر جدید را باید در قرار داده شده است. 689 00:53:57,560 --> 00:54:03,080 بنابراین من به شما بچه ها یک کمی، قرار داده dequeue به بالا بر روی اسلاید 690 00:54:03,080 --> 00:54:05,200 و شما بچه ها سوالی دارید، آنها را فریاد به طوری که ما می توانیم 691 00:54:05,200 --> 00:54:09,220 همه بحث در مورد آنها را به عنوان یک گروه است. 692 00:54:09,220 --> 00:54:13,960 همچنین، با اندازه don't - زمانی که شما تنظیم اندازه، شما می توانید همیشه فقط - 693 00:54:13,960 --> 00:54:18,720 آیا شما باید به اندازه وزارت دفاع تا کنون؟ [دانیال] شماره >> شما لازم نیست که به وزارت دفاع، به اندازه درست است. 694 00:54:18,720 --> 00:54:24,260 از آنجا که اندازه همیشه، اگر you're - فرض شما مدیریت همه چیز مناسب، 695 00:54:24,260 --> 00:54:30,840 اندازه همیشه بین 0 و 3 می شود. 696 00:54:30,840 --> 00:54:38,680 از کجا می توانم شما را به وزارت دفاع در هنگامی که شما در حال انجام enqueue؟ 697 00:54:38,680 --> 00:54:41,060 [دانشجویی] فقط سر. >> فقط برای سر، دقیقا. 698 00:54:41,060 --> 00:54:44,620 و چرا شما باید در همه وزارت دفاع در enqueue؟ 699 00:54:44,620 --> 00:54:48,830 هنگامی که یک وضعیت که در آن شما می خواهم به وزارت دفاع است؟ 700 00:54:48,830 --> 00:54:53,630 [دانشجو] اگر شما چیزهای در فضاهای، مانند در فضای 1 و 2، 701 00:54:53,630 --> 00:54:55,950 و سپس شما نیاز به اضافه کردن چیزی در 0. 702 00:54:55,950 --> 00:55:02,570 [Hardison] بله، دقیقا. بنابراین اگر اشاره گر سر خود را در پایان، 703 00:55:02,570 --> 00:55:14,210 و یا در صورتی که اندازه خود را به همراه سر خود بزرگتر است، و یا به جای است، رفتن به اطراف صف بپیچید. 704 00:55:14,210 --> 00:55:17,830 >> بنابراین در این شرایط که ما رو تا اینجا بر روی اسلاید در حال حاضر، 705 00:55:17,830 --> 00:55:24,370 اگر من می خواهم به enqueue چیزی در حال حاضر، 706 00:55:24,370 --> 00:55:31,110 ما می خواهیم به enqueue چیزی در اندیس 0. 707 00:55:31,110 --> 00:55:35,450 بنابراین اگر شما در جایی که در 50 می رود نگاه کنید، و من اسمش enqueue 50، 708 00:55:35,450 --> 00:55:40,840 آن پایین می رود وجود دارد در پایین. این در 0 شاخص می رود. 709 00:55:40,840 --> 00:55:44,160 آن را جایگزین "سلام" که در حال حاضر dequeued شد. 710 00:55:44,160 --> 00:55:46,210 [دانیال] آیا شما را مراقبت از آن در dequeue در حال حاضر؟ 711 00:55:46,210 --> 00:55:50,550 چرا هر چیزی این کار را انجام با سر در enqueue؟ 712 00:55:50,550 --> 00:55:55,770 [Hardison] اوه، پس شما سر اصلاح نیست، متاسفم. 713 00:55:55,770 --> 00:56:02,310 اما شما مجبور به استفاده از عملگر وزارت دفاع در زمانی که شما به 714 00:56:02,310 --> 00:56:04,250 عنصر را که شما می خواهید به enqueue زمانی که شما به 715 00:56:04,250 --> 00:56:06,960 عنصر بعدی در صف شما. 716 00:56:06,960 --> 00:56:10,960 [ریحان] من که انجام نمی، من و "موفقیت" وجود دارد. 717 00:56:10,960 --> 00:56:13,370 [دانیال] آه، من درک می کنم چه می گویید. 718 00:56:13,370 --> 00:56:16,240 [Hardison] بنابراین شما didn't - شما فقط در q.size بود؟ 719 00:56:16,240 --> 00:56:20,670 [ریحان] آره. من فقط تغییر طرف، من هر چیزی را با سر انجام نیست. 720 00:56:20,670 --> 00:56:24,300 [Hardison] شما در واقع نه سر به بازنشانی به هر چیزی باشد، 721 00:56:24,300 --> 00:56:31,650 اما زمانی که شما را به آرایه رشته اول، 722 00:56:31,650 --> 00:56:39,500 شما در واقع باید به جلو بروید و محاسبه است که در آن عنصر بعدی این است که، 723 00:56:39,500 --> 00:56:44,230 زیرا withe پشته، عنصر بعدی در پشته خود را همیشه 724 00:56:44,230 --> 00:56:48,740 در شاخص مربوط به اندازه. 725 00:56:48,740 --> 00:56:55,850 اگر ما نگاه به بالا در عملکرد پشته ما فشار، 726 00:56:55,850 --> 00:57:03,100 ما همیشه می تواند در عنصر جدید ما در اندازه شاخص قار قار کردن. 727 00:57:03,100 --> 00:57:06,710 در حالی که با صف، ما می توانیم آن را انجام ندهید 728 00:57:06,710 --> 00:57:10,340 چرا که اگر ما در این وضعیت هستیم، 729 00:57:10,340 --> 00:57:18,130 اگر ما enqueued 50 رشته جدید ما در رشته های [1] 730 00:57:18,130 --> 00:57:20,540 که ما نمی خواهیم به انجام. 731 00:57:20,540 --> 00:57:41,200 ما می خواهیم به رشته جدید در اول 0. 732 00:57:41,200 --> 00:57:44,320 >> کسی آیا - بله؟ [دانشجو] من یک سوال اما واقعا مربوط نیست. 733 00:57:44,320 --> 00:57:48,160 به چه معنی است وقتی که کسی فقط خواستار چیزی شبیه به اشاره گر pred؟ 734 00:57:48,160 --> 00:57:51,260 چه شده است که نام کوتاه برای؟ من می دانم که این فقط یک نام است. 735 00:57:51,260 --> 00:57:59,110 [Hardison] Pred اشاره گر؟ اجازه دهید را ببینید. در چه زمینه؟ 736 00:57:59,110 --> 00:58:01,790 [دانشجو] برای قرار دادن. من می توانم به شما بعد بپرسید که آیا شما می خواهید 737 00:58:01,790 --> 00:58:03,920 چرا که آن را واقعا مربوط نیست، اما من فقط - 738 00:58:03,920 --> 00:58:07,300 Hardison] کد قرار دادن دیوید از سخنرانی؟ 739 00:58:07,300 --> 00:58:10,860 ما می توانیم آن را بکشید و در مورد آن صحبت کنید. 740 00:58:10,860 --> 00:58:15,550 ما می خواهیم که در مورد بعد، زمانی که ما را به لیست های پیوندی صحبت کنید. 741 00:58:15,550 --> 00:58:21,440 >> بنابراین اجازه دهید واقعا به سرعت به دنبال چه تابع enqueue به نظر می رسد مانند. 742 00:58:21,440 --> 00:58:26,530 اولین چیزی که مردم سعی به در خط enqueue شما چه بود؟ به این صف؟ 743 00:58:26,530 --> 00:58:29,960 شبیه به آنچه که شما برای پشته هل دادن بود. 744 00:58:29,960 --> 00:58:32,080 چه شما باید انجام دهید، استلا؟ 745 00:58:32,080 --> 00:58:35,050 [استلا، ناخوانا] 746 00:58:35,050 --> 00:58:45,700 [Hardison] دقیقا. اگر (q.size ظرفیت ==) - 747 00:58:45,700 --> 00:58:54,720 من نیاز به قرار دادن پرانتز در جای مناسب - بازگشت نادرست است. 748 00:58:54,720 --> 00:59:01,370 زوم کمی. باشه. 749 00:59:01,370 --> 00:59:03,800 در حال حاضر آنچه نکته بعدی که ما تا به حال برای انجام این کار؟ 750 00:59:03,800 --> 00:59:11,370 فقط با پشته مانند، و در جای مناسب قرار داده شده است. 751 00:59:11,370 --> 00:59:16,010 و به این ترتیب جای مناسب برای وارد کردن که چه بود؟ 752 00:59:16,010 --> 00:59:23,170 با استفاده از پشته حجم شاخص بود، با این که نه کاملا که. 753 00:59:23,170 --> 00:59:30,210 [دانیال] من q.head یا - q.strings >>؟ >> آره. 754 00:59:30,210 --> 00:59:40,470 q.strings [q.head + q.size وزارت دفاع ظرفیت؟ 755 00:59:40,470 --> 00:59:42,740 [Hardison] ما احتمالا می خواهید برای قرار دادن پرانتز در اطراف این 756 00:59:42,740 --> 00:59:48,830 به طوری که ما در حال گرفتن اولویت مناسب و به همین ترتیب که به همه cleart. 757 00:59:48,830 --> 00:59:55,800 و مجموعه ای است که برابر است؟ >> به خ؟ >> به خ. بزرگ است. 758 00:59:55,800 --> 01:00:00,160 و در حال حاضر آنچه که این آخرین چیزی است که ما باید انجام دهیم؟ 759 01:00:00,160 --> 01:00:06,780 درست مثل ما در پشته بود. >> افزایش اندازه؟ >> افزایش اندازه. 760 01:00:06,780 --> 01:00:13,830 بوم. و سپس، از آنجا که کد استارت نادرست به طور پیش فرض بازگشت، 761 01:00:13,830 --> 01:00:27,460 ما می خواهیم برای تغییر این درست است اگر همه می رود و از طریق همه به خوبی می رود. 762 01:00:27,460 --> 01:00:33,050 بسیار خوب. این یک مقدار زیادی از اطلاعات را در بخش. 763 01:00:33,050 --> 01:00:39,480 ما کاملا بیش از حد نیست. ما می خواهیم به صحبت واقعا به سرعت به تنهایی مرتبط با لیست. 764 01:00:39,480 --> 01:00:44,010 من این را قرار داده به طوری که ما می تواند به آن بعد. 765 01:00:44,010 --> 01:00:50,850 اما اجازه بازگشت به ارائه ما فقط چند اسلاید. 766 01:00:50,850 --> 01:00:53,790 پس enqueue TODO است، در حال حاضر آن را انجام داده ایم. 767 01:00:53,790 --> 01:00:57,430 >> حالا اجازه دهید نگاهی در تنهایی مرتبط با لیست. 768 01:00:57,430 --> 01:01:00,040 ما در مورد این کمی در سخنرانی صحبت کردیم. 769 01:01:00,040 --> 01:01:02,540 چند نفر از شما بچه ها نسخه ی نمایشی را دیدم که در آن ما تا به حال مردم 770 01:01:02,540 --> 01:01:08,220 ناشیانه با اشاره به هر یک از شماره های دیگر و برگزاری؟ >> من در آن بود. 771 01:01:08,220 --> 01:01:16,620 >> چه شما بچه ها فکر می کنم؟ را انجام داد، امیدوارم این کمی کمی demystify؟ 772 01:01:16,620 --> 01:01:25,990 با یک لیست، که معلوم است که ما با این نوع برخورد است که ما قصد داریم تا با یک گره است. 773 01:01:25,990 --> 01:01:32,520 در حالی که با صف و پشته ما تا به حال ساختمانها که ما می خواهم صف در پشته تماس بگیرید، 774 01:01:32,520 --> 01:01:34,860 ما تا به حال این صف در انواع پشته، 775 01:01:34,860 --> 01:01:39,240 در اینجا یک لیست است که واقعا فقط یک دسته از گره ها ساخته شده است. 776 01:01:39,240 --> 01:01:45,920 در راه همان است که رشته ها فقط یک دسته از کاراکتر اندود شده تا در کنار یکدیگر است. 777 01:01:45,920 --> 01:01:50,650 فهرست مرتبط با فقط یک گره و گره دیگر و یکی دیگر از گره و گره دیگر است. 778 01:01:50,650 --> 01:01:55,080 و به جای فوق العاده تمام گره ها با یکدیگر و ذخیره سازی آنها را متوالی 779 01:01:55,080 --> 01:01:58,090 همه حق در کنار یکدیگر در حافظه، 780 01:01:58,090 --> 01:02:04,470 داشتن اشاره گر بعد به ما اجازه می دهد تا به ذخیره گره در هر کجا، در تصادفی. 781 01:02:04,470 --> 01:02:10,500 و سپس نوع سیم همه آنها را با هم به از یکی به بعدی. 782 01:02:10,500 --> 01:02:15,850 >> و مزیت بزرگ این بود که تا به حال بیش از یک آرایه؟ 783 01:02:15,850 --> 01:02:21,680 بیش از همه چیز ذخیره متوالی بعدی به یکدیگر گیر کرده است؟ 784 01:02:21,680 --> 01:02:24,190 به خاطر داشتن؟ آره؟ >> تخصیص حافظه پویا؟ 785 01:02:24,190 --> 01:02:27,220 >> تخصیص حافظه دینامیکی در چه معنا است؟ 786 01:02:27,220 --> 01:02:31,780 [دانشجو] در آن شما می توانید نگه دارید و آن را بزرگتر و شما لازم نیست که کل آرایه خود را به حرکت می کند؟ 787 01:02:31,780 --> 01:02:40,940 [Hardison] دقیقا. بنابراین با یک آرایه، زمانی که شما می خواهید برای قرار دادن عنصر جدید را در وسط آن، 788 01:02:40,940 --> 01:02:45,320 شما باید برای تغییر همه چیز را به فضا. 789 01:02:45,320 --> 01:02:47,880 و مثل ما در مورد با صف صحبت کردیم، 790 01:02:47,880 --> 01:02:50,080 به همین دلیل است که اشاره گر سر ما را، 791 01:02:50,080 --> 01:02:52,050 به طوری که ما دائما در حال تغییر همه چیز است. 792 01:02:52,050 --> 01:02:54,520 از آنجا که گران می شود اگر شما یک آرایه بزرگ 793 01:02:54,520 --> 01:02:57,130 و شما به طور مداوم انجام این اضافه تصادفی. 794 01:02:57,130 --> 01:03:00,820 در حالی که با یک لیست، همه شما باید انجام دهید این است که پرتاب آن بر روی یک گره جدید 795 01:03:00,820 --> 01:03:06,330 تنظیم اشاره گر، و شما انجام می شود. 796 01:03:06,330 --> 01:03:10,940 در این مورد چه بمکد؟ 797 01:03:10,940 --> 01:03:16,830 گذشته از این واقعیت است که آن را به عنوان کار آسانی نیست به کار به عنوان یک آرایه؟ آره؟ 798 01:03:16,830 --> 01:03:22,980 [دانیال] خوب، من حدس می زنم آن را به مراتب سخت تر برای دسترسی به یک عنصر خاص در لیست پیوندی؟ 799 01:03:22,980 --> 01:03:30,470 [Hardison] شما فقط به یک عنصر دلخواه در وسط خود را از لیست پیوندی می تواند به پرش. 800 01:03:30,470 --> 01:03:33,800 چگونه می توانم شما باید آن را به جای؟ >> شما را از طریق تمام چیزی که گام. 801 01:03:33,800 --> 01:03:35,660 [Hardison] آره. شما باید از طریق یکی در یک زمان، در یک زمان. 802 01:03:35,660 --> 01:03:38,480 بزرگ است - این یک درد است. 803 01:03:38,480 --> 01:03:41,550 چه دیگر - یکی دیگر از سقوط به این وجود دارد. 804 01:03:41,550 --> 01:03:45,340 [ریحان] شما نمی توانید به جلو و عقب؟ شما باید برای رفتن به یک جهت؟ 805 01:03:45,340 --> 01:03:48,570 [Hardison] آره. پس چگونه است که ما را حل کند، گاهی اوقات؟ 806 01:03:48,570 --> 01:03:53,370 [ریحان] مضاعف مرتبط با لیست؟ >> دقیقا. مضاعف مرتبط با لیست وجود دارد. 807 01:03:53,370 --> 01:03:55,540 نیز وجود دارد - با عرض پوزش؟ 808 01:03:55,540 --> 01:03:57,620 >> [سام] است که همان را با استفاده از چیزی که pred که - 809 01:03:57,620 --> 01:04:01,090 من فقط به یاد میآورد، این است که چه چیزی pred؟ 810 01:04:01,090 --> 01:04:05,850 این است که نه در بین مضاعف و تنهایی؟ 811 01:04:05,850 --> 01:04:10,020 نگاه [Hardison] بیایید در آنچه که دقیقا او انجام شده بود. 812 01:04:10,020 --> 01:04:15,760 بنابراین در اینجا ما بروید. در اینجا لیست کد. 813 01:04:15,760 --> 01:04:25,620 در اینجا ما باید predptr، در اینجا. این چیزی است که شما صحبت کردن در مورد؟ 814 01:04:25,620 --> 01:04:30,750 بنابراین این بود - او آزاد کردن یک لیست و او در تلاش برای ذخیره یک اشاره گر به آن است. 815 01:04:30,750 --> 01:04:35,000 این مضاعف، به تنهایی مرتبط لیست نمی باشد. 816 01:04:35,000 --> 01:04:40,090 ما می توانیم اطلاعات بیشتری در این مورد بعدا صحبت از آنجایی که این صحبت کردن در مورد آزادی فهرست 817 01:04:40,090 --> 01:04:42,900 و من می خواهم به برخی از چیزهای دیگر برای اولین بار نشان می دهد. 818 01:04:42,900 --> 01:04:51,480 اما آن را فقط - به خاطر سپردن ارزش PTR 819 01:04:51,480 --> 01:04:54,170 [دانشجو] آه، آن اشاره گر preceeding؟ >> آره. 820 01:04:54,170 --> 01:05:04,070 به طوری که ما پس از آن می توانید PTR خود را قبل از ما پس از آن آزاد چه predptr نمود. 821 01:05:04,070 --> 01:05:09,130 از آنجا که ما می توانیم آزاد PTR و سپس تماس بگیرید PTR = و PTR بعدی، درست است؟ 822 01:05:09,130 --> 01:05:11,260 این خیلی بد است. 823 01:05:11,260 --> 01:05:20,940 بنابراین اجازه دهید را ببینید، به این مرد. 824 01:05:20,940 --> 01:05:23,900 >> چیز بد دیگر در مورد لیست است که در حالی که با یک آرایه 825 01:05:23,900 --> 01:05:26,520 ما فقط باید همه عناصر خود را روی هم چیده شده در کنار یکدیگر، 826 01:05:26,520 --> 01:05:29,050 در اینجا ما نیز به معرفی این اشاره گر است. 827 01:05:29,050 --> 01:05:34,060 بنابراین تکه های اضافی از حافظه است که ما نیاز به استفاده از وجود دارد 828 01:05:34,060 --> 01:05:37,910 برای هر عنصر است که ما در حال ذخیره در لیست ما. 829 01:05:37,910 --> 01:05:40,030 ما انعطاف پذیری، اما آن را در هزینه می آید. 830 01:05:40,030 --> 01:05:42,230 آن را با هزینه این زمان می آید، 831 01:05:42,230 --> 01:05:45,270 و آن را با هزینه این حافظه می آید بیش از حد است. 832 01:05:45,270 --> 01:05:47,800 زمان به این معنا است که ما در حال حاضر از طریق هر عنصر در آرایه 833 01:05:47,800 --> 01:05:58,670 برای پیدا کردن یکی در اول 10، یا که می توانست اول 10 را در یک آرایه شده است. 834 01:05:58,670 --> 01:06:01,230 >> واقعا به سرعت، هنگامی که ما نمودار از این لیست، 835 01:06:01,230 --> 01:06:05,980 به طور معمول ما را بر روی سر از لیست یا اشاره گر برای اولین بار از این فهرست 836 01:06:05,980 --> 01:06:08,010 و توجه داشته باشید که این یک اشاره گر واقعی است. 837 01:06:08,010 --> 01:06:11,100 فقط 4 بایت است. این یک گره واقعی خود نیست. 838 01:06:11,100 --> 01:06:17,120 بنابراین می بینید که آن را ندارد ارزش int در آن، هیچ اشاره گر آینده در آن است. 839 01:06:17,120 --> 01:06:20,790 این به معنای واقعی کلمه فقط یک اشاره گر است. 840 01:06:20,790 --> 01:06:23,550 این برای اشاره به چیزی است که ساختار گره واقعی. 841 01:06:23,550 --> 01:06:28,480 [سام] یک اشاره گر به نام گره؟ >> این است - نه. این یک اشاره گر به چیزی از نوع گره است. 842 01:06:28,480 --> 01:06:32,540 این یک اشاره گر به ساختار گره است. >> آه، درست است. 843 01:06:32,540 --> 01:06:36,870 نمودار در سمت چپ، کد در سمت راست است. 844 01:06:36,870 --> 01:06:42,190 ما می توانیم آن را به تهی است، که یک راه خوب برای شروع تنظیم کنید. 845 01:06:42,190 --> 01:06:49,850 هنگامی که شما به آن نمودار است، شما هم آن را به عنوان تهی نوشتن و یا به شما یک خط را از طریق آن قرار داده است که می خواهم. 846 01:06:49,850 --> 01:06:53,910 >> یکی از ساده ترین راه برای کار با لیست ها، 847 01:06:53,910 --> 01:06:57,430 و ما از شما هر دو prepend و الحاق برای دیدن تفاوت بین این دو، 848 01:06:57,430 --> 01:07:01,320 اما prepending قطعا آسان تر است. 849 01:07:01,320 --> 01:07:05,790 هنگامی که شما prepend، این است که شما - که شما prepend (7) 850 01:07:05,790 --> 01:07:10,050 شما بروید و ایجاد ساختار گره 851 01:07:10,050 --> 01:07:13,870 و شما را برای اولین بار به اشاره به آن است، چرا که در حال حاضر، از آنجایی که ما به آن اضافه شده، 852 01:07:13,870 --> 01:07:17,240 آن را در آغاز از لیست. 853 01:07:17,240 --> 01:07:22,540 اگر ما prepend (3)، که باعث ایجاد گره دیگر است، اما در حال حاضر 3 می آید قبل از 7 می باشد. 854 01:07:22,540 --> 01:07:31,130 بنابراین ما اساسا هل دادن چیزهایی را بر روی لیست ما است. 855 01:07:31,130 --> 01:07:34,720 در حال حاضر، شما می توانید ببینید که prepend، گاهی اوقات مردم به آن فشار، 856 01:07:34,720 --> 01:07:39,600 دلیل این که شما در حال هل دادن عنصر جدید را بر روی لیست شما. 857 01:07:39,600 --> 01:07:43,270 آن آسان به در جلو از لیست حذف کنید. 858 01:07:43,270 --> 01:07:45,650 بنابراین مردم اغلب خواهد شد که پاپ تماس بگیرید. 859 01:07:45,650 --> 01:07:52,200 و به این ترتیب، شما می توانید یک پشته با استفاده از لیست پیوندی شبیه سازی کنید. 860 01:07:52,200 --> 01:07:57,880 متأسفیم. با عرض پوزش، در حال حاضر ما در حال وارد شدن به افزودنپرونده. بنابراین در اینجا ما اضافه شده (7)، در حال حاضر ما prepend (3). 861 01:07:57,880 --> 01:08:02,600 اگر ما چیز دیگری را بر روی این لیست اضافه شده است، اگر ما اضافه شده (4) 862 01:08:02,600 --> 01:08:06,540 پس از آن ما می 4 و سپس 3 و سپس 7. 863 01:08:06,540 --> 01:08:14,220 بنابراین پس از آن ما می تواند پاپ و حذف 4، حذف 3، حذف 7. 864 01:08:14,220 --> 01:08:16,500 اغلب راه بصری بیشتر به فکر می کنم در این مورد این است که با الحاق است. 865 01:08:16,500 --> 01:08:20,310 پس من diagrammed از آنچه در آن می خواهم با الحاق اینجا نگاه کنید. 866 01:08:20,310 --> 01:08:23,380 در اینجا، اضافه (7) هیچ به نظر نمی آید 867 01:08:23,380 --> 01:08:25,160 چرا که تنها یک عنصر در لیست وجود دارد. 868 01:08:25,160 --> 01:08:28,620 و الحاق (3) آن را در پایان قرار می دهد. 869 01:08:28,620 --> 01:08:31,020 شاید شما می توانید ببینید که در حال حاضر این ترفند با افزودنپرونده 870 01:08:31,020 --> 01:08:36,600 این است که از آنجایی که ما فقط می دانیم که در آن ابتدا از لیست است، 871 01:08:36,600 --> 01:08:39,450 اضافه به لیست شما را به تمام راه را از طریق لیست 872 01:08:39,450 --> 01:08:46,500 برای رسیدن به پایان، توقف، و سپس گره خود و همه چیز را با صدای تلپ پایین ساخت. 873 01:08:46,500 --> 01:08:50,590 سیم همه چیز. 874 01:08:50,590 --> 01:08:55,170 بنابراین با prepend، به عنوان ما فقط از طریق این پاره پاره واقعا به سرعت، 875 01:08:55,170 --> 01:08:58,170 هنگامی که شما به یک لیست prepend، آن را نسبتا ساده است. 876 01:08:58,170 --> 01:09:02,960 >> شما را به گره جدید خود را، شامل برخی از تخصیص حافظه پویا است. 877 01:09:02,960 --> 01:09:09,830 بنابراین در اینجا ما در حال ساخت یک ساختار گره با استفاده از malloc. 878 01:09:09,830 --> 01:09:14,710 بنابراین malloc ما با استفاده از به دلیل که به حافظه برای ما کنار گذاشته برای بعد 879 01:09:14,710 --> 01:09:20,350 چرا که ما این کار را می خواهید نیست - ما می خواهیم این حافظه برای مدت زمان طولانی باقی بماند. 880 01:09:20,350 --> 01:09:25,350 و ما یک اشاره گر به فضا در حافظه است که ما فقط اختصاص داده شده است. 881 01:09:25,350 --> 01:09:29,260 ما با استفاده از اندازه گره، ما زمینه خلاصه نمی شود. 882 01:09:29,260 --> 01:09:31,899 ما دستی تولید تعدادی از کلمه در ادامه متن، 883 01:09:31,899 --> 01:09:39,750 به جای آن ما با استفاده از sizeof به طوری که ما می دانیم که ما در حال گرفتن تعداد مناسب از کلمه در ادامه متن. 884 01:09:39,750 --> 01:09:43,660 ما مطمئن شوید که برای تست که تماس malloc ما موفق است. 885 01:09:43,660 --> 01:09:47,939 این چیزی است که شما می خواهید برای انجام این کار به طور کلی است. 886 01:09:47,939 --> 01:09:52,590 در ماشین های مدرن، در حال اجرا از حافظه چیزی است که آسان نیست 887 01:09:52,590 --> 01:09:56,610 مگر اینکه شما در حال اختصاص یک تن از مسائل و ساخت یک لیست بزرگ، 888 01:09:56,610 --> 01:10:02,220 اما اگر شما در حال ایجاد مسائل، می گویند، مانند آی فون یا آندروید، 889 01:10:02,220 --> 01:10:05,230 شما مجبور منابع حافظه محدود، به خصوص اگر شما در حال انجام کاری شدید. 890 01:10:05,230 --> 01:10:08,300 بنابراین آن را خوب به عمل آورید. 891 01:10:08,300 --> 01:10:10,510 >> توجه کنید که من با استفاده از توابع مختلف زن و شوهر در اینجا 892 01:10:10,510 --> 01:10:12,880 که شما دیده می شود که از نوع جدید. 893 01:10:12,880 --> 01:10:15,870 تا fprintf است فقط printf دوست 894 01:10:15,870 --> 01:10:21,320 به جز آرگومان اول آن جریان است که در آن شما می خواهید برای چاپ می باشد. 895 01:10:21,320 --> 01:10:23,900 در این مورد، ما می خواهیم به رشته خطای استاندارد چاپ 896 01:10:23,900 --> 01:10:29,410 outStream با استاندارد متفاوت است. 897 01:10:29,410 --> 01:10:31,620 به طور پیش فرض، آن را نشان می دهد تا در همان محل است. 898 01:10:31,620 --> 01:10:34,600 این نیز چاپ به ترمینال، اما شما می توانید - 899 01:10:34,600 --> 01:10:38,790 با استفاده از آن دستورات به شما آموخته، تکنیک تغییر مسیر 900 01:10:38,790 --> 01:10:42,290 شما در مورد ویدیو تامی برای مجموعه مشکل 4 آموخته، شما می توانید آن را به طور مستقیم 901 01:10:42,290 --> 01:10:47,900 به مناطق مختلف و پس از آن، خروج از حق در اینجا، خروجی برنامه شما. 902 01:10:47,900 --> 01:10:50,440 این اساسا مانند بازگشت از اصلی، 903 01:10:50,440 --> 01:10:53,600 به جز خروج استفاده می کنیم چرا که در اینجا بازگشت هیچ کاری انجام نمی. 904 01:10:53,600 --> 01:10:57,140 ما اصلی هستیم، به طوری که بازگشت به این برنامه را مانند ما می خواهیم خارج نیست. 905 01:10:57,140 --> 01:11:03,020 بنابراین، ما با استفاده از تابع خروجی و یک کد خطا را به آن بدهید. 906 01:11:03,020 --> 01:11:11,890 و سپس در اینجا ما مجموعه ای گره جدید در زمینه ارزش، رشته من آن را به صورت برابر به من، و سپس آن را به ما سیم. 907 01:11:11,890 --> 01:11:15,530 ما مجموعه ای اشاره گر به گره جدید به نقطه اول، 908 01:11:15,530 --> 01:11:20,460 و در ابتدا به گره جدید است. 909 01:11:20,460 --> 01:11:25,120 این خط اول کد ما در واقع ساخت گره جدید است. 910 01:11:25,120 --> 01:11:27,280 تاریخ و زمان آخرین دو خط از این تابع، اما نخستین کسانی بودند. 911 01:11:27,280 --> 01:11:30,290 در واقع شما می توانید از جلو و به یک تابع را به یک تابع کمکی. 912 01:11:30,290 --> 01:11:32,560 که اغلب به آنچه که من انجام می دهند این است، من آن را بیرون بکشد به یک تابع، 913 01:11:32,560 --> 01:11:36,040 من اسمش را چیزی شبیه به گره ساخت، 914 01:11:36,040 --> 01:11:40,410 و نگه می دارد که تابع prepend بسیار کوچک است، آن را فقط 3 خط بعد از آن است. 915 01:11:40,410 --> 01:11:48,710 من را از یک تماس به تابع گره من ساخت، و پس از آن من همه چیز سیم. 916 01:11:48,710 --> 01:11:51,970 >> آخرین چیزی که من می خواهم به شما نشان دهد، 917 01:11:51,970 --> 01:11:54,030 و من به شما اجازه می اضافه نماییم و آنچه را که در را آن گونه که مایلید تغییر دهید، 918 01:11:54,030 --> 01:11:57,500 این است که چگونه می توان به تکرار بیش از یک لیست است. 919 01:11:57,500 --> 01:12:00,780 یک دسته از راه های مختلف به تکرار بیش از یک لیست وجود دارد. 920 01:12:00,780 --> 01:12:03,140 در این مورد، ما قصد داریم برای پیدا کردن طول یک لیست است. 921 01:12:03,140 --> 01:12:06,570 بنابراین ما با طول = 0 شروع می شود. 922 01:12:06,570 --> 01:12:11,580 این است که بسیار شبیه به نوشتن strlen برای یک رشته است. 923 01:12:11,580 --> 01:12:17,780 این همان چیزی است که من می خواهم به شما نشان می دهد، این حلقه for در اینجا می باشد. 924 01:12:17,780 --> 01:12:23,530 این به نظر می رسد نیمه بد بو است، آن را معمول نیست من بین المللی = 0، I <هر چیز دیگری، من + +. 925 01:12:23,530 --> 01:12:34,920 در عوض آن را مقدار دهی اولیه N متغیر ما را به ابتدای فهرست. 926 01:12:34,920 --> 01:12:40,620 و سپس در حالی که متغیر تکرارکننده ما تهی نیست، نگه می داریم. 927 01:12:40,620 --> 01:12:46,340 دلیلش این است که توسط کنوانسیون، به انتهای لیست ما null خواهد بود. 928 01:12:46,340 --> 01:12:48,770 و سپس به افزایش است، و نه از انجام + +، 929 01:12:48,770 --> 01:12:57,010 مرتبط معادل لیستی از + + N = N-بعدی>. 930 01:12:57,010 --> 01:13:00,410 >> من اجازه دهید شما را در پر کردن شکاف در اینجا چون ما از زمان. 931 01:13:00,410 --> 01:13:09,300 اما این را در ذهن به عنوان شما را در psets spellr شما کار می کنند. 932 01:13:09,300 --> 01:13:11,650 لینک لیست ها، اگر شما در حال اجرای یک جدول هش، 933 01:13:11,650 --> 01:13:14,010 قطعا در بسیار سودمند هستند. 934 01:13:14,010 --> 01:13:21,780 و این اصطلاح را برای حلقه بیش از همه چیز زندگی را بسیار ساده تر را، امیدوارم. 935 01:13:21,780 --> 01:13:25,910 هر گونه سؤال، به سرعت؟ 936 01:13:25,910 --> 01:13:28,920 [سام] شما ارسال SLL تکمیل و SC؟ 937 01:13:28,920 --> 01:13:38,360 [Hardison] آره. من ارسال اسلاید تکمیل شده و به اتمام SLL پشته و queue.cs. 938 01:13:38,360 --> 01:13:41,360 [CS50.TV]