[Powered by Google Translate] [بخش 6] [راحت تر] [راب Bowden] [دانشگاه هاروارد] [این CS50.] [CS50.TV] ما می توانیم به بخش ما را از سوالات سر. URL برای فضای قبل فرستاده شده. آغاز بخش از پرسش ها می گویند ظاهرا من به طور کامل نمی unsick یک سوال بسیار آسان است از تنها چیزی است که valgrind؟ چه valgrind انجام دهید؟ هر کس می خواهند به آنچه valgrind می کند؟ [دانشجو] چک حافظه نشت. آره، valgrind حافظه جستجوگر به طور کلی است. این، در پایان، به شما می گوید که اگر شما هر گونه نشت حافظه، است که بیشتر آنچه که ما در حال استفاده از آن برای چرا که اگر شما می خواهید به انجام این کار به خوبی در مجموعه مشکل و یا اگر شما می خواهید در هیئت مدیره بزرگ، شما نیاز به هیچ نشت حافظه آنچه، و در صورتی که شما دارای نشت حافظه است که شما نمی توانید، همچنین در نظر داشته باشید که حفظ هر زمان که شما برای باز کردن یک فایل و اگر شما آن را بسته نمی شود، که نشت حافظه است. بسیاری از مردم به دنبال برخی از گره که آنها آزاد نیست زمانی که واقعا، آنها فرهنگ لغت در اولین گام بسیار نزدیک نیست. این برنامه همچنین به شما می گوید که اگر شما هر گونه نامعتبر می خواند یا می نویسد، بدان معناست که اگر شما سعی می کنید و مجموعه ای از ارزش که فراتر از انتهای پشته و آن را به گسل SEG اتفاق نمی افتد اما valgrind آن جلب، شما در واقع نباید نوشتن وجود دارد، و بنابراین شما قطعا باید هر یک از کسانی که یا ندارد. چگونه می توانم به شما استفاده از valgrind؟ چگونه می توانم به شما استفاده از valgrind؟ این یک سوال کلی از نوع آن را اجرا کنید و به دنبال در خروجی. خروجی در حال غلبه بر بسیاری از اوقات. اشتباهات سرگرم کننده نیز وجود دارد که در آن اگر شما برخی چیز وحشتناکی اشتباه اتفاق می افتد در یک حلقه، و سپس آن را در نهایت خواهد شد، می گویند: "اشتباهات راه بیش از حد بسیاری از. من قصد دارم برای جلوگیری از شمارش در حال حاضر است. " اساسا خروجی متنی که شما را به تجزیه و تحلیل است. در پایان، آن را به شما را به هر گونه نشت حافظه است که شما باید بگویید، چگونه بسیاری از بلوک، که می تواند مفید باشد به دلیل اگر آن را یک بلوک unfreed، سپس آن را معمولا آسان تر برای پیدا کردن از 1،000 بلوک unfreed. 1000 بلوک unfreed احتمالا معنی است که شما آزادی نیست لیست های مرتبط با خود را مناسب و یا چیزی. که valgrind. در حال حاضر ما باید بخش ما را از سوالات، که شما نیازی به دانلود نیست. شما می توانید بر روی اسم من کلیک کنید و کشیدن آنها را در فضا است. در حال حاضر بر روی من کلیک کنید. ویرایشهای 1 خواهد بود پشته، که ما انجام می دهیم 1. ویرایشهای 2 خواهد بود، صف، و ویرایشهای 3 خواهد بود به تنهایی مرتبط فهرست. شروع کردن با پشته ما. همانطور آن را می گوید در اینجا، یک پشته یکی از اساسی ترین است، ساختارهای اساسی داده ها از علم کامپیوتر است. مثال نمونه پشته سینی در سالن غذاخوری. اساسا هر زمان که شما در حال معرفی به پشته، کسی در حال رفتن به می گویند، "اوه، مانند یک پشته از سینی. سینی پشته. سپس هنگامی که شما به جلو و یک سینی، اولین سینی که داره کشیده یکی از آخرین که در پشته قرار داده شده است. پشته نیز مانند آن را می گوید در اینجا در حال حاضر بخشی از حافظه به نام پشته است. و به همین دلیل است که آن را به نام پشته؟ از آنجا که مانند یک پشته ساختمان داده، آن را هل می دهد و باز فریم پشته در پشته، که در آن قاب پشته مانند یک تماس خاص از یک تابع. و مانند یک پشته، شما همیشه می خواهد به بازگشت به از فراخوانی تابع قبل از اینکه شما می توانید به فریم پایین پشته دوباره. شما می توانید تماس صنایع غذایی اصلی نوار تماس ها و بازگشت نوار به طور مستقیم به بخش اصلی آمار سایت ندارد. همیشه به دنبال پشته صحیح هل دادن و ظاهر. من می خواهم گفت، این دو عملیات، فشار و پاپ. اینها شرایط جهانی است. شما باید فشار و پاپ در پشته بدون توجه به آنچه می دانیم. خواهیم دید صف نوع های مختلف هستند. این واقعا یک اصطلاح جهانی، اما فشار و پاپ جهانی برای پشته. فشار فقط بر روی پشته قرار داده شده است. پاپ را خاموش پشته. و ما می بینیم که در اینجا ما باید ساختار پشته ما typedef، بنابراین ما باید رشته ** کاراکتر. آیا ترس با هر **. این است که برای پایان دادن به آرایه ای از رشته ها و یا آرایه ای از اشاره گرها به شخصیت ها، که در آن اشاره گر به کاراکتر تمایل به رشته. این را ندارد به رشته، اما در اینجا، آنها در حال رفتن به رشته است. ما باید آرایه ای از رشته ها. ما باید یک اندازه، که نشان دهنده که چگونه بسیاری از عناصر در حال حاضر بر روی پشته، و پس از آن ما باید از ظرفیت است، که چگونه بسیاری از عناصر را می توان در پشته. ظرفیت باید به عنوان چیزی بزرگتر از 1 شروع اما اندازه برای شروع کردن با 0 است. در حال حاضر، اساسا سه راه مختلف شما می توانید از یک پشته فکر می کنم وجود دارد. خب، احتمالا وجود دارد، اما دو روش اصلی عبارتند از شما می توانید آن را با استفاده از یک آرایه پیاده سازی، یا شما می توانید آن را با استفاده از پیاده سازی یک لیست پیوندی. لیست لینک نوع پیش پا افتاده را به پشته از. این بسیار آسان است برای ایجاد یک پشته با استفاده از لیست های پیوندی، بنابراین در اینجا ما قصد داریم به ایجاد یک پشته با استفاده از آرایه و پس از آن با استفاده از آرایه، همچنین شما می توانید در مورد آن فکر می کنم دو راه وجود دارد. پیش از این، زمانی که من گفت: ما باید ظرفیت پشته، بنابراین ما می توانیم یک عنصر در پشته مناسب. یکی از راه آن می تواند اتفاق می افتد این است که به زودی به شما به عنوان ضربه 10 عناصر، و سپس شما انجام می شود. شما ممکن است ندانید این است که بالاتر از 10 چیز در جهان محدود وجود دارد که شما بیش از 10 چیز را بر روی پشته خود را هرگز، که در این صورت شما می توانید یک کران بالا در اندازه پشته خود را داشته باشد. یا شما می توانید از پشته شما نامحدود، اما اگر شما در حال انجام یک آرایه، که بدان معنی است که هر وقت به شما ضربه 10 عنصر، سپس شما مجبور به رشد به 20 عنصر و 20 عنصر را در زمانی که شما ضربه، شما در حال رفتن به آرایه خود را به رشد تا 30 عناصر یا 40 عناصر است. شما در حال رفتن به نیاز به افزایش ظرفیت، که همان چیزی است که ما قصد داریم برای انجام این کار در اینجا. هر بار که ما در رسیدن به حداکثر اندازه پشته ما، زمانی که چیز دیگری بر روی ما قرار دهد، ما در حال رفتن به نیاز به افزایش ظرفیت. در اینجا، ما فشار به عنوان فشار بولی (کاراکتر * خ) اعلام شده است. خ * کاراکتر رشته ای که ما در حال هل دادن بر روی پشته، و بولی فقط می گوید که آیا ما موفق یا شکست خورده است. چگونه می تواند ما را شکست؟ است که شرایط است که شما می توانید از فکر می کنم. که در آن ما را نیاز به بازگشت غلط؟ آره. [دانشجو] اگر آن را پر و ما با استفاده از یک اجرای محدود است. آره، پس چگونه تعریف کنیم، او جواب داد: اگر آن را پر و ما با استفاده از یک اجرای محدود است. سپس ما قطعا بازگشت کاذب. به محض این که ما 10 همه چیز در آرایه، ما می توانیم 11 مناسب نیست، بنابراین ما بازگشت غلط. چه می شود اگر آن نامحدود است؟ آره. اگر شما می توانید مجموعه ای برای برخی از دلیل گسترش نیست. آره، پس حافظه یک منبع محدود است، و در نهایت، اگر ما در حفظ و هل دادن همه چیز را بر روی پشته را بارها و بارها، ما قصد داریم به تلاش و تخصیص یک آرایه بزرگتر به جا ظرفیت بزرگتر، و malloc یا هر چیز دیگری که ما با استفاده از رفتن به بازگشت غلط است. خب، malloc باز خواهد گشت تهی. به یاد داشته باشید، هر زمان شما تا کنون تماس malloc، شما باید چک کنید اگر آن را برمی گرداند تهی و یا دیگری است که یک کسر صحت است. از آنجا که ما می خواهیم به یک پشته بیکران، تنها مورد است که ما قصد داریم به بازگشت غلط است اگر ما سعی می کنیم به افزایش ظرفیت و malloc یا هر چه مقدار false برگرداند. سپس پاپ بدون استدلال، طول می کشد و این رشته ای است که در بالای پشته را بر می گرداند. هر آنچه که اخیرا در پشته رانده شد چه پاپ بازگشت، و همچنین آن را از پشته حذف. و توجه کنید که آن را تهی می گرداند اگر چیزی در پشته وجود دارد. این است که همیشه این امکان وجود دارد که پشته خالی است. در جاوا، اگر شما به آن، و یا زبان های دیگر استفاده می شود، تلاش برای از پشته خالی پاپ ممکن است یک استثنا و یا چیزی می شود. اما در C، تهی نوع در بسیاری از موارد که چگونه این مشکلات ما رسیدگی است. بازگشت به تهی، این است که چگونه ما در حال رفتن به دلالت که پشته خالی بود. ما ارائه کد است که قابلیت پشته خود را تست، پیاده سازی فشار و پاپ. این خواهد بود که تعداد زیادی از کد. من در واقع، قبل از ما انجام این کار، اشاره، اشاره، اگر شما آن را ندیده، malloc تنها تابع نمی باشد. که تخصیص حافظه در پشته برای شما. یک خانواده از توابع alloc وجود دارد. malloc، که شما استفاده می شود به. سپس calloc وجود دارد که همین کار را به عنوان malloc، اما آن را به همه چیز از صفر برای شما. اگر شما تا کنون به تنظیم همه چیز را به تهی پس از mallocing چیزی می خواستم شما باید فقط calloc در وهله اول به جای نوشتن استفاده می شود حلقه به صفر کردن تمام بلوک از حافظه است. بازتخصیص مثل malloc است و تعداد زیادی از موارد خاص، اما اساسا چه بازتخصیص می کند آن را طول می کشد یک اشاره گر است که در حال حاضر اختصاص داده شده است. بازتخصیص تابع شما می خواهید توجه به اینجا است. طول می کشد تا یک اشاره گر است که در حال حاضر از malloc برگردانده شده است. بیایید می گویند شما از malloc درخواست یک اشاره گر از 10 کلمه در ادامه متن. سپس شما متوجه شما می خواستم 20 بایت، بنابراین شما تماس بازتخصیص در آن اشاره گر با 20 کلمه در ادامه متن و بازتخصیص به طور خودکار بیش از همه چیز برای شما کپی می کند. اگر شما فقط به نام malloc دوباره، مثل من یک بلوک از 10 کلمه در ادامه متن. حالا من نیاز به یک بلوک از 20 بایت، بنابراین اگر من malloc 20 بایت، پس من باید به صورت دستی کپی کنید بیش از 10 کلمه در ادامه متن از اولین چیزی که به نکته دوم و پس از آن اولین چیزی که رایگان است. بازتخصیص خواهد شد که کار را برای شما اداره کند. متوجه امضا خواهد بود * از درجه اعتبار ساقط است که فقط بازگشت به یک اشاره گر به بلوک از حافظه، پس از آن از درجه اعتبار ساقط * PTR. شما می توانید از خالی * فکر می کنم به عنوان یک اشاره گر عمومی است. به طور کلی، شما با خالی * هرگز، اما malloc بازگشت به * از درجه اعتبار ساقط، و سپس آن را درست مثل استفاده می شود این است که در واقع به عنوان یک کاراکتر *. * باطل قبلی که توسط malloc برگشته بود در حال حاضر رفتن به بازتخصیص منتقل، و پس از آن اندازه شماره جدید از بایت می خواهید به تخصیص است، بنابراین ظرفیت جدید خود را. من به شما چند دقیقه به من بدهید، و آن را در فضای ما. شروع با نسخه 1. من شما را پس از متوقف امیدوارم در مورد زمان به اندازه کافی برای اجرای فشار، و سپس من شما را یکی دیگر از استراحت برای انجام پاپ را به من بدهید. اما آن واقعا که کد بسیار نیست در همه. ترین کد مسائل در حال گسترش است که احتمالا، گسترش ظرفیت. خوب، هیچ فشاری به طور کامل انجام می شود، اما تا زمانی که شما احساس می کنید که شما را در مسیر درست هستید، خوب است. آیا کسی که هر کد با من کشیدن تا آنها احساس راحتی؟ آره، من خواهد شد، اما هر کسی که هر کد می توانید بکشید تا؟ خوب، می تواند به شما شروع می کنید، آن را ذخیره کنید، هر آنچه در آن است؟ من همیشه این مرحله را فراموش کرده ام. خوب، به دنبال در فشار، آیا شما می خواهید به توضیح کد شما؟ [دانشجو] اول از همه، من افزایش اندازه. من حدس می زنم شاید من باید که به هر حال، افزایش اندازه، و من می بینم اگر آن را کمتر از ظرفیت است. و اگر کمتر از ظرفیت است، من به آرایه است که ما در حال حاضر اضافه کنید. و اگر این طور نیست، ظرفیت 2 ضرب، و من دوباره اختصاص آرایه رشته ها را به چیزی با اندازه بزرگتر ظرفیت در حال حاضر. و پس از آن در صورتی که با شکست مواجه، من به کاربر و بازگشت کاذب، و اگر آن را خوب است، پس از آن من رشته در نقطه ای جدید قرار داده است. [راب B.] نیز که ما با استفاده از یک عملگر بیتی زیبا اینجا متوجه 2 ضرب است. به یاد داشته باشید، از SHIFT سمت چپ همیشه با 2 ضرب شود. Shift سمت راست 2 تا زمانی تقسیم شده که شما را به یاد داشته باشید که به این معنی تقسیم 2 در یک عدد صحیح تقسیم بر 2. ممکن است 1 در اینجا وجود دارد و یا کوتاه. اما شیفت به چپ با 1 است همیشه در 2 ضرب شود، مگر اینکه شما سرریز مرزهای عدد صحیح، و سپس آن را نمی خواهد. یک نظر طرف. من می خواهم به انجام این است که رفتن به تغییر برنامه نویسی به هیچ وجه آنچه، اما من می خواهم به انجام این کار چیزی شبیه به این. در واقع در حال رفتن به آن را کمی طولانی تر است. شاید این مورد مناسب برای نشان دادن این است، اما من به بخش آن را می خواهم به این بلوک از خوب، در صورتی که اگر این اتفاق می افتد، پس از آن من قصد دارم برای انجام کاری، و پس از آن تابع انجام می شود. من نیازی به آن حرکت چشم من تمام راه را به پایین تابع ببینید که چه اتفاقی می افتد پس از دیگری است. در صورتی که اگر این اتفاق می افتد، پس من فقط بازگشت. این شهر همچنین دارای سود خوب اضافه شده است از همه چیز فراتر از این در حال حاضر یک بار به سمت چپ منتقل شده است. من دیگر نیازی به اگر شما همیشه در نزدیکی خطوط طولانی و مسخره، سپس آن 4 بایت می تواند کمک کند، و نیز چیزی بیش از چپ است، کمتر تحت الشعاع شما احساس می کنید اگر مثل خوب، من به یاد داشته باشید من در حال حاضر در حلقه در حالی که در داخل در داخل دیگری از حلقه for. در هر جایی که باشید می توانید این بازگشت را بلافاصله انجام دهید، من نوع مانند. این کاملا اختیاری است و به هیچ وجه انتظار نمی رود. [دانشجو] باید وجود داشته باشد اندازه - در شرایط شکست؟ شرط اشکال در اینجا است که ما به بازتخصیص شکست خورد، بله. دقت کنید که چگونه در شرایط شکست، احتمالا، مگر اینکه ما آزاد مسائل بعد از آن، ما همیشه به شکست بدون توجه به چند بار ما سعی می کنیم چیزی به فشار. اگر ما در حفظ و هل دادن، نگه می داریم اندازه افزایش، حتی اگر ما هر چیزی را بر روی پشته قرار دادن نیست. معمولا ما به اندازه تا افزایش پس از اینکه ما با موفقیت آن را در پشته قرار داده است. ما آن را می گویند، یا در اینجا و اینجا. و پس از آن به جای گفتن s.size ظرفیت ≤، آن را کمتر از ظرفیت، فقط به این دلیل که ما نقل مکان کرد که در آن همه چیز بود. و به یاد داشته باشید، تنها مکانی است که ما احتمالا می تواند بازگشت کاذب اینجا، جایی که بازتخصیص تهی بازگشت، و اگر شما اتفاق می افتد به یاد داشته باشید خطای استاندارد، شاید شما ممکن است این مورد را در نظر بگیرید که در آن شما می خواهید برای چاپ یک خطای استاندارد، stderr fprintf به جای چاپ به طور مستقیم به خارج از استاندارد است. باز هم، که انتظار می رود نیست، اما اگر آن را خطا، تایپ printf، و سپس شما ممکن است بخواهید آن را به خطا به جای استاندارد کردن استاندارد چاپ. هر کسی از هر چیز دیگری توجه داشته باشید؟ بله. [دانشجو] آیا می توانم شما را بیش از [نامفهوم]؟ [راب B.] بله، binariness واقعی از آن و یا فقط آنچه در آن است؟ [دانشجو] پس از آن شما را در 2 ضرب کنید؟ [راب B.] بله، اساسا. در سرزمین دودویی، ما همیشه مجموعه ای از ارقام را داشته باشد. تغییر این چپ توسط 1 اساسا آن را درج در اینجا در سمت راست است. به این، فقط یادآوری است که همه چیز را در باینری توانی از 2 است، به طوری که این نشان دهنده 2 تا 0، این 2 تا 1، این 2 تا از 2. با قرار دادن یک 0 به سمت راست در حال حاضر، ما فقط همه چیز را بیش از تغییر. چه استفاده می شود 2 به 0 است در حال حاضر 2 تا از شماره 1 است، 2 تا در 2. در سمت راست است که ما قرار داده شده لزوما رفتن به 0 باشد، که حس می کند. اگر شما همیشه ضرب یک عدد 2، آن را برای پایان دادن به عجیب و غریب، به طوری که 2 تا جای 0 باید 0، و این همان چیزی است که من به 1/2 قبل از هشدار داد اگر شما اتفاق می افتد به تغییر فراتر از تعداد بیت در یک عدد صحیح، پس از این (1) برای پایان دادن به رفتن کردن. تنها نگران باشید اگر شما اتفاق می افتد به خرید و فروش با ظرفیت های واقعا بزرگ است. اما در آن نقطه، و سپس شما برخورد با مجموعه ای از میلیاردها همه چیز، که ممکن است مناسب در حافظه به هر حال. در حال حاضر ما می توانیم به پاپ است، که حتی آسانتر می کند. شما می توانید این کار را انجام خواهم اگر شما اتفاق می افتد به ظاهر تمام یک دسته، و در حال حاضر شما را در نیمی از ظرفیت دوباره. شما می توانید بازتخصیص مقدار از حافظه شما را مجبور به کوچک، اما شما لازم نیست که به نگرانی در مورد آن، به طوری که تنها مورد بازتخصیص است برای رفتن به در حال رشد حافظه، کاهش هرگز حافظه، است که رفتن را به پاپ فوق العاده آسان است. در حال حاضر صف، که در حال رفتن به مانند پشته، اما این که همه چیز شما را معکوس شده است. به عنوان مثال نمونه از یک صف یک خط است، بنابراین من حدس می زنم اگر شما انگلیسی است، من می خواهم که گفت: یک مثال نمونه از یک صف به صف است. پس مانند یک خط، اگر شما اولین کسی باشید که در خط است، شما انتظار می رود تا اولین کسی باشید که از خط است. اگر شما آخرین نفر در خط، شما در حال رفتن به آخرین شخص سرویس. ما که الگوی FIFO، در حالی که الگوی پشته LIFO بود. این کلمات بسیار جهانی است. مانند پشته ها و بر خلاف آرایه ها، صف ها به طور معمول دسترسی به عناصر در وسط اجازه نمی دهد. در اینجا، پشته، ما باید فشار و پاپ. در اینجا، ما رخ می دهد به نام آنها enqueue و dequeue. من همچنین شنیده ام آنها را به نام شیفت و unshift. من شنیده ام که مردم می گویند فشار و پاپ نیز به صف درخواست شده است. من شنیده ام درج، حذف، و فشار، اگر شما در حال صحبت کردن در مورد پشته پاپ، شما در حال هل دادن و ظاهر. اگر شما در حال صحبت کردن در مورد صف، شما می توانید کلمات مورد نظر شما می خواهید به استفاده از انتخاب برای درج و حذف، و هیچ اجماع در مورد آنچه در آن باید به نام وجود دارد. اما در اینجا، ما باید enqueue و dequeue. در حال حاضر، ساختار تقریبا یکسان به نظر می رسد به ساختار پشته. اما ما باید به پیگیری از سر. من حدس می زنم آن را در اینجا می گوید، اما چرا ما نیاز به سر؟ نمونه اساسا یکسان به فشار و پاپ. شما می توانید از آن به عنوان فشار و پاپ فکر می کنم. تنها تفاوت این است پاپ بازگشت و به جای آن از آخرین، آن را بازگشت به اول است. 2، 1، 3، 4، و یا چیزی. و در اینجا آغاز شده است. صف ما این است که به طور کامل، به طوری که چهار عنصر در آن وجود دارد. پایان صف ما در حال حاضر 2، و در حال حاضر ما برای وارد کردن به چیز دیگری است. هنگامی که ما می خواهیم برای وارد کردن که چیز دیگری، چیزی است که ما برای نسخه پشته این است که ما در بلوک خود را از حافظه است. با این مشکل چیست؟ [دانشجو] شما حرکت 2. چیزی که من قبل از آخر صف گفت:، این معنی است که ما شروع به 1 را ندارد. پس از آن ما به dequeue 1 می خواهم، و سپس dequeue 3، و سپس dequeue 4، سپس dequeue 2، و سپس این یکی dequeue. ما می توانیم بازتخصیص استفاده نمی کند در حال حاضر، و یا حداقل، شما مجبور به استفاده از بازتخصیص در راه های مختلف. اما شما احتمالا فقط باید استفاده نمی بازتخصیص. شما در حال رفتن به حافظه خود را به صورت دستی کپی کنید. دو تابع باشند که برای کپی کردن حافظه وجود دارد. memcopy و memmove وجود دارد. من در حال حاضر به خواندن صفحات مرد را ببینید که کدام یک شما قصد دارید که مایل به استفاده از. خوب، در memcopy، تفاوت که memcopy و memmove، یک دسته مورد درستی که در آن شما در حال کپی کردن به منطقه ای که اتفاق می افتد با هم همپوشانی دارند منطقه شما در حال کپی برداری از. Memcopy آن را اداره می کند نیست. Memmove هم اینکار را در مورد شما نمی کنند. شما می توانید این مشکل را به عنوان فکر می کنم اجازه دهید بگویم من می خواهم برای کپی کردن این مرد، این چهار نفر را به این مرد بیش از. در پایان، چه آرایه باید مانند نگاه پس از نسخه 2، 1، 2، 1، 3، 4، و پس از آن برخی از مسائل در پایان است. اما این بستگی دارد که ما در واقع کپی، چرا که اگر ما به این واقعیت است که منطقه ما در حال کپی کردن به نظر نمی همپوشانی یکی از ما کپی کردن از، پس از آن ما ممکن است مانند شروع در اینجا، کپی کردن از 2 به جایی است که ما می خواهیم به آن بروید، سپس اشاره گر ما به جلو حرکت می کند. در حال حاضر ما در حال رفتن به اینجا و اینجا، و در حال حاضر ما می خواهید کپی کنید این مرد در طول این پسر و حرکت اشاره گر ما به جلو. ما قصد داریم برای پایان دادن به گرفتن 2، 1، 2، 1، 2، 1 به جای مناسب در 2، 1، 2، 1، 3، 4 به خاطر 2، 1 از 3 اصلی، 4 overrode. Memmove دسته که صحیح می باشد. در این مورد، اساسا فقط همیشه استفاده از memmove چون آن دسته صحیح می باشد. به طور کلی هیچ بدتر انجام دهد. ایده این است که به جای شروع از ابتدا و کپی کردن این راه مثل ما فقط در اینجا، آن را از پایان شروع می شود و کپی، و در آن صورت، شما می توانید مشکل را هرگز. عملکرد وجود دارد از دست داده است. همیشه memmove استفاده کنید. هرگز در مورد memcopy نگران. و این که در آن شما باید به طور جداگانه memmove بخش پیچیده در اطراف صف شما. هیچ نگرانی در صورتی که به طور کامل انجام می شود. این است که سخت تر از پشته، فشار، و موسیقی پاپ است. هر کس هر کد می تواند با کار؟ حتی اگر به طور کامل ناقص است؟ [دانشجو] آره، آن را کاملا ناقص است، هر چند. به طور کامل ناقص خوب است تا زمانی که ما می تواند تجدید نظر را ذخیره کنید؟ من را فراموش کرده ام که هر زمان. خوب، بدون در نظر گرفتن آنچه که اتفاق می افتد زمانی که ما نیاز به تغییر همه چیز می باشد. به طور کامل تصویر را نادیده گرفت. این کد را توضیح دهید. من دارم اول از همه اگر به اندازه کمتر از نسخه اول از همه و سپس بعد از آن، من وارد-I را سر + اندازه، و من مطمئن شوید که آن را در سراسر ظرفیت آرایه پیچد، و من وارد رشته جدید در آن موقعیت است. سپس به اندازه من افزایش و بازگشت واقعی است. [راب B.] این است که قطعا یکی از این موارد که در آن شما می خواهید با استفاده از وزارت دفاع است. هر نوع مورد جایی که شما کاغذ بسته بندی در اطراف، اگر شما فکر می کنم کاغذ بسته بندی در اطراف، فکر فوری باید وزارت دفاع. به عنوان یک بهینه سازی سریع / ایجاد کد یک خط کوتاه، شما توجه کنید که خط بلافاصله پس از این یکی فقط اندازه + +، بنابراین شما با یکدیگر ادغام می شوند که به این خط، اندازه + +. در حال حاضر را در اینجا، در حال حاضر مورد جایی که ما حافظه کافی نیست، بنابراین ما در حال افزایش ظرفیت و توانایی ما 2. من حدس می زنم شما می توانید مشکل مشابه داشته باشد، اما در حال حاضر ما می توانیم آن را نادیده گرفت، جایی که اگر شما موفق به افزایش ظرفیت خود را، پس از آن شما می خواهید به ظرفیت خود را به دوباره توسط 2 را کاهش می دهد. یکی دیگر از توجه داشته باشید کوتاه است که فقط شما می توانید انجام دهید + =، شما همچنین می توانید << = انجام دهد. تقریبا هر چیزی می تواند به قبل از برابر، + =، | =، =، << = کاراکتر * جدید بلوک جدید ما از حافظه است. آه، در اینجا. چه مردم در مورد نوع بلوک جدید خود را از حافظه فکر می کنم؟ [دانشجو] آن را باید ** کاراکتر است. فکر کردن به بازگشت به ساختار ما اینجا، رشته است آنچه ما reallocating. ما در حال ساخت یک کل جدید ذخیره سازی پویا برای عناصر موجود در صف است. آنچه که ما در حال رفتن به اختصاص به رشته شما همان چیزی است که ما در حال حاضر در حال mallocing، و آنقدر جدید است که رفتن به ** کاراکتر است. رفتن به آرایه ای از رشته ها است. پس چه شده است که تحت آن ما قصد داریم به بازگشت غلط؟ [دانشجو] باید به انجام * کاراکتر؟ [راب B.] بله، تماس خوب است. [دانشجو] چه بود؟ [راب B.] ما می خواستیم به انجام اندازه * کاراکتر زیرا ما دیگر این در واقع یک مشکل بسیار بزرگ خواهد بود چرا که sizeof (کاراکتر) خواهد بود 1. Sizeof * کاراکتر به 4، بنابراین تعداد زیادی از زمانی که شما در حال خرید و فروش با نوع داده int، شما تمایل به دور آن به دلیل اندازه int و اندازه * داده int در یک سیستم 32 بیتی در حال رفتن به همان چیزی. اما در اینجا، sizeof (کاراکتر) و sizeof (کاراکتر) در حال حاضر رفتن به همان چیزی. شرایطی که در آن ما بازگشت غلط چیست؟ [دانشجو] null است. بله، اگر جدید تهی، بازگشت کاذب، و من قصد دارم به پرتاب کردن در اینجا [دانشجو] [نامفهوم] [راب B.] آره، این خوب است. شما می توانید 2 بار ظرفیت و یا تغییر ظرفیت 1 و پس از آن تنها آن را در اینجا و یا هر آنچه را انجام دهد. ما می خواهیم آن را به عنوان ما آن را به حال انجام دهد. ظرفیت >> = 1. و تو هرگز نیازی به نگرانی در مورد از دست دادن جای 1 دلیل این که شما به سمت چپ منتقل شده توسط 1 است، بنابراین مکان 1 است لزوما یک 0، تا حق تغییر توسط 1، شما هنوز هم می شود خوب است. [دانشجو] آیا شما نیاز به انجام این کار قبل از بازگشت؟ [راب B.] بله، این باعث می شود به هیچ وجه حس است. حالا فرض ما قصد داریم برای پایان دادن به بازگشت واقعی به پایان است. راه ما قصد داریم برای انجام این memmoves، ما باید مراقب باشید که ما چگونه آنها را انجام دهید. آیا هر کسی هر گونه پیشنهادات خود را برای ما آنها را انجام دهید؟ در اینجا شروع ما است. به ناچار، ما می خواهیم در ابتدا شروع دوباره کپی و چیزهایی از آنجا، 1، 3، 4، 2. چگونه می توانم به شما انجام این کار؟ اول، من به مرد نگاه برای memmove دوباره. Memmove، منظور از استدلال همیشه مهم است. ما می خواهیم مقصد ما برای اولین بار، دومین منبع، سوم اندازه. بسیاری از توابع است که معکوس منبع و مقصد وجود دارد. مقصد، منبع، تمایل به سازگار باشد تا حدودی. حرکت، آنچه در آن است بازگشت؟ این تابع یک اشاره گر به مقصد، به هر دلیل شما ممکن است بخواهید که. من می توانم آن را بخواند، اما ما می خواهیم به مقصد خود حرکت می کند. مقصد ما باشد؟ [دانشجو]. [راب B.] بله، و جایی که ما از کپی کردن؟ اولین چیزی که ما در حال کپی کردن این، 1، 3، 4 است. این 1، 3، 4. آدرس این 1 چیست؟ آدرس که 1 چیست؟ [دانشجو] [نامفهوم] [راب B.] سر + آدرس عنصر اول است. چگونه اولین عنصر در آرایه را دریافت کنم؟ [دانشجو] صف. [راب B.] بله، q.strings. به یاد داشته باشید، در اینجا، سر ما 1 است. لعنتی آن است. من فقط فکر می کنم آن را جادویی در اینجا، سر ما 1 است. من قصد دارم به تغییر رنگ بیش از حد است. و در اینجا رشته ها است. این یا می توانید آن را به عنوان ما در اینجا نوشتن با سر + q.strings. بسیاری از مردم نیز به نوشتن آن و q.strings [سر]. این است که واقعا کمتر کارآمد است. شما ممکن است از آن فکر می کنم که شما آن را غیر مرجع و سپس با گرفتن آدرس، کامپایلر رفتن به ترجمه آن به آنچه که ما تا به حال به هر حال، q.strings + سر. در هر راه که می خواهید به آن فکر می کنم. و چگونه بسیاری از بایت می خواهیم برای کپی کردن؟ [دانشجو] ظرفیت - سر. ظرفیت - سر. و پس از آن شما همیشه می تواند خارج از نوشتن به عنوان مثال برای کشف کردن در صورتی که درست است. [دانشجو] به آن نیاز دارد به 2 سپس تقسیم شده است. آره، بنابراین من حدس می زنم ما می تواند اندازه استفاده کنید. ما هنوز هم به اندازه بودن با استفاده از اندازه، ما به اندازه برابر با 4 است. اندازه ما 4 است. سر ما 1 است. ما می خواهیم برای کپی کردن این 3 عنصر است. که سلامت عقل را بررسی کنید که حجم - سر درست 3 است. و آمدن به اینجا، ما قبل گفت: اگر ما با استفاده از ظرفیت، پس از آن ما می خواهم که به توسط 2 تقسیم از آنجا که ما در حال حاضر رشد ظرفیت و توانایی ما، تا به جای آن، ما در حال رفتن به استفاده از اندازه است. که نسخه های آن بخش است. در حال حاضر، ما نیاز به کپی کردن بخش دیگر، بخشی است که از سمت چپ شروع شده است. که به چه موقعیت memmove؟ [دانشجو] به همراه اندازه - سر. بله، بنابراین ما در حال حاضر در اندازه کپی - بایت سر، و تا جایی که ما می خواهیم برای کپی بایت باقی مانده است جدید و سپس اندازه منهای چاه، تعداد کلمه در ادامه متن ما قبلا کپی شوید. و پس از آن جایی که ما از کپی کردن؟ [دانشجو] Q.strings [0]. [راب B.] بله، q.strings. ما یا می تواند انجام دهد و q.strings [0]. این است که به طور قابل توجهی کمتر از این است. اگر آن را فقط به 0 باشد، سپس شما تمایل برای دیدن q.strings. این جایی است که ما در حال کپی برداری از. چند بایت را ترک کرده اند را کپی کنید؟ >> [دانشجو] 10. راست. [دانشجو] آیا ما باید به ضرب 5 - 10 برابر اندازه کلمه در ادامه متن و یا چیزی؟ آره، پس این است که در آن، آنچه که دقیقا کپی کردن؟ [دانشجو] [نامفهوم] چه نوع از چیزی که ما در حال کپی کردن؟ [دانشجو] [نامفهوم] آره، به طوری * کاراکتر است که ما در حال کپی کردن، ما نمی دانیم که در آن کسانی که از. خب، جایی که آنها با اشاره به، مانند رشته ها، ما تا پایان هل دادن آن بر روی صف enqueuing بر روی صف. که در آن کسانی را از آمدن، در حال حاضر هیچ نظری ندارم. ما فقط نیاز به پیگیری * کاراکتر های خود را. ما نمی خواهیم به اندازه کپی - بایت سر. ما می خواهیم به اندازه - سر کاراکتر * ها را کپی کنید، بنابراین ما در حال رفتن به ضرب توسط sizeof (کاراکتر). همان را در اینجا، سر * sizeof (کاراکتر). [دانشجو] در مورد [نامفهوم] این حق در اینجا؟ [دانشجو]، در زیر آن، به اندازه - سر. [راب B.] این حق در اینجا؟ ریاضی اشاره گر است. چگونه ریاضی اشاره گر در حال رفتن به محل کار آن را به طور خودکار اندازه از این نوع است که ما در حال برخورد با تکثیر. فقط مثل اینجا، جدید + (اندازه - سر) دقیقا معادل و اندازه - رئیس جدید تا زمانی که ما انتظار داریم که به درستی کار کند، چرا که اگر ما در حال برخورد با یک آرایه از نوع int، پس از آن ما انجام شده توسط INT-شاخص نیست یا اگر آن را از اندازه از 5 است و شما می خواهید این عنصر 4، پس از آن ما را به صفحه اول اعضای هیات آرایه [4]. شما don't-[4] * اندازه از نوع int است. که آن دسته به طور خودکار، و این مورد به معنای واقعی کلمه معادل است، بنابراین به نحو براکت فقط رفتن است به این تبدیل می شود به محض اینکه شما کامپایل شده است. این چیزی است که شما نیاز به مراقب باشید که هنگامی که شما در حال افزودن اندازه - سر شما در حال اضافه کردن یک بایت است. شما با اضافه کردن یک * کاراکتر، که می تواند یک بایت یا هر چیز دیگری. سوال دیگر؟ خوب، dequeue است برای رفتن به آسان تر است. من به شما یک دقیقه برای پیاده سازی را می دهد. اوه، و من حدس می زنم این است که وضعیت مشابه که در آن چه مورد enqueue، اگر ما در حال enqueuing تهی، شاید ما می خواهیم آن را اداره کند، شاید ما نمی کنند. ما این کار را انجام نمی دوباره در اینجا، اما به همان صورت پشته ما. اگر ما به تهی enqueue، ما ممکن است بخواهید به آن بی اعتنایی کند. هر کس کد می توانید بکشید تا برخی از؟ [دانشجو] من فقط باید dequeue. نسخه 2 است که درست است. شما می خواهید به توضیح؟ [دانشجو] اول از همه، شما مطمئن شوید که چیزی در صف وجود دارد و این که اندازه توسط 1. شما نیاز به انجام این کار، و سپس سر را به شما بازگشت و سپس سر تا 1 حرکت می کند. خوب، پس یک مورد گوشه ما باید در نظر وجود دارد. آره. [دانشجو] اگر سر خود را در آخرین عنصر، پس از آن شما نمی خواهید سر به خارج از آرایه اشاره. آره، به طوری که به زودی به عنوان رئیس بازدید آخر از آرایه های ما، در هنگامی که ما dequeue، سر ما باید تا 0، کامپیوتر. متاسفانه، ما می توانیم در یک مرحله انجام نیست. من حدس می زنم راه من احتمالا می خواهم حل آن است این است که رفتن به * کاراکتر، آنچه که ما در حال بازگشت، هر نام متغیر را می خواهد. سپس ما می خواهیم به وزارت دفاع سر ظرفیت ما و پس از آن RET بازگشت. بسیاری از مردم در اینجا ممکن است انجام دهند این مورد قرار گرفتند مردم انجام دهد اگر سر بیشتر از ظرفیت است، سر انجام - ظرفیت. و فقط در اطراف چه وزارت دفاع مشغول به کار است. سرپرست وزارت دفاع ظرفیت = بسیار تمیزتر از کاغذ بسته بندی در اطراف از سر بالاتر از سر ظرفیت - ظرفیت. پرسش و پاسخ؟ خوب، آخرین چیزی است که ما را ترک کرده اند، لیست پیوندی ما است. شما ممکن است به برخی از رفتار لیست پیوندی استفاده می شود که اگر شما را لیست های مرتبط در جداول هش خود را، اگر شما یک جدول هش. من به شدت انجام یک جدول هش را توصیه کند. شما ممکن است در حال حاضر انجام می شود یک درخت، اما تلاش آنها مشکل تر است. در تئوری، آنها مجانبی بهتر است. اما فقط در هیئت مدیره بزرگ نگاه کنید، و تلاش می کند هرگز بهتر است، و آنها را از حافظه است. همه چیز در مورد تلاش می کند به پایان می رسد تا اینکه بدتر برای کار بیشتر است. این چیزی است که راه حل دیوید مالان همیشه او همیشه پست ها راه حل های درخت خود را، و اجازه دهید را ببینید که در آن وی در حال حاضر است. چه بود که او تحت، دیوید J؟ او # 18 است، به طوری که وحشتناکی بد نیست، و است که برای رفتن به یکی از بهترین تلاش می کند شما می توانید از فکر می کنم و یا یکی از بهترین تلاش می کند از یک درخت. و حتی آن را راه حل اصلی خود را؟ من احساس می کنم مثل راه حل های درخت تمایل بیشتری را در این محدوده استفاده از RAM است. رفتن به پایین بسیار بالا، و استفاده از RAM در تک رقمی است. برو به پایین به سمت پایین، و پس از آن شما شروع به دیدن تلاش می کند که در آن شما می توانید استفاده کاملا عظیم RAM، و تلاش می کند آنها مشکل تر است. به طور کامل به ارزش آن، اما یک تجربه آموزشی اگر شما تا حالا دیدی کسی نیست. آخرین چیزی که لیست پیوندی ما است، و این چیزها سه، پشته، صف، و لیست های پیوندی، هر چیزی در آینده که شما تا به حال در علم کامپیوتر فرض شما باید آشنایی با این چیزها. آنها فقط تا به همه چیز اساسی است. لینک لیست ها، و در اینجا ما یک لیست به تنهایی در ارتباط است برای رفتن به اجرای ما. چه تنهایی مرتبط میانگین به عنوان مخالف به پیوند مضاعف؟ بله. [دانشجو] تنها به اشاره گر بعد به جای اشاره گر اشاره، مانند قبل از آن و بعد از آن. آره، بنابراین در قالب تصویر، چه من فقط کاری انجام دهید؟ من دو چیز است. من تصویر و تصویر. در قالب تصویر، تنهایی ما مرتبط با لیست ها، به ناچار، ما باید برخی از نوع اشاره گر به سر از لیست ما و پس از آن در لیست ما، ما فقط باید اشاره گر، و شاید این امتیاز به تهی. این رفتن را به رسم معمول خود را از یک فهرست به تنهایی در ارتباط است. لیست پیوند مضاعف، شما می توانید به عقب بروید. اگر من به تو هر گره در لیست می دهد، و سپس شما لزوما می تواند برای به دست آوردن هر گره دیگر در این لیست در صورتی که آن را به یک فهرست پیوند مضاعف است. اما اگر من به شما گره سوم در لیست و فهرست تنهایی مرتبط، هیچ راهی وجود ندارد که شما تا کنون برای رسیدن به گره اول و دوم است. و مزایا و detriments و یکی یکی آشکار وجود دارد است که شما را تا اندازه بیشتر، و شما را مجبور به پیگیری از جایی که این کارها با اشاره به در حال حاضر. اما ما فقط در مورد تنهایی مرتبط مراقبت. چند چیز ما در حال رفتن به برای به اجرا درآوردن. گره ساختار typedef شما، و من بین المللی: ساختار گره * بعد، گره. که typedef باید به ذهن خود را سوزانده است. مسابقه 1 باید خواهم typedef از یک گره لیست پیوندی، و شما باید قادر باشد که بلافاصله خط ناخوانا است که به پایین بدون حتی راجع به آن فکر می کند. من حدس می زنم چند سوال، چرا ما نیاز به ساختار در اینجا؟ چرا ما می گویند * گره نه؟ [دانشجو] [نامفهوم] آره. تنها چیزی که تعریف یک گره به عنوان یک چیز typedef خود است. اما در این نقطه، زمانی که ما نوع تجزیه را از طریق این تعریف ساختار گره، ما را typedef ما تمام نشده است با این حال، از آنجا که typedef تمام نشده است. گره وجود ندارد. اما ساختار گره می کند، و این گره در اینجا، این نیز می تواند نامیده می شود می شود هر چیز دیگری. این می تواند به نام N. این می تواند به نام گره لیست پیوندی. این می تواند هر چیزی. اما این ساختار گره نیاز به آن می شود همان چیزی که به عنوان گره در ساختار این است. چه با شما تماس نیز می تواند در اینجا، و به طوری که هم نکته دوم این سوال را پاسخ به همین دلیل است که بسیاری از بار زمانی که می بینید ساختمانها و تعریف نوعهای از ساختمانها، شما از ساختمانها ناشناس که در آن شما خواهید دید ساختار typedef را ببینید، پیاده سازی ساختار، فرهنگ لغت، یا هر چیز دیگری. چرا در اینجا ما نیاز به گفتن گره؟ چرا ساختار ناشناس می توانید آن را نمی شود؟ این تقریبا همان جواب است. [دانشجو] شما نیاز به مراجعه به آن را در درون ساختار. بله، در داخل ساختار، شما نیاز به مراجعه به ساختار خود است. اگر شما نمی دهد ساختار یک نام، اگر آن را ساختار ناشناس، شما نمی تواند به آن است. و آخرین اما حداقل این همه باید تا حدی سر راست، و آنها باید به شما کمک کند درک اگر شما در حال نوشتن این پایین که شما در حال انجام کاری اشتباه است اگر این چیزها حس را ندارد. تاریخ و زمان آخرین اما نه کم، چرا این باید به ساختار گره *؟ چرا می توانید آن را نه تنها ساختار شود گره بعدی؟ [دانشجو] اشاره گر به ساختار بعدی. که به ناچار چیزی است که ما می خواهیم. چرا می تواند آن را هرگز گره ساختار بعدی؟ چرا آن را باید در ساختار گره * بعدی؟ آره. [دانشجو] آن را مانند یک حلقه بی نهایت است. آره. [دانشجو] این همه را در یکی خواهد بود. آره، فقط فکر می کنم که ما چگونه می اندازه و یا چیزی. اندازه ساختار است که اساسا + یا - برخی از الگوی اینجا و آنجا. این اساسا رفتن به مجموع اندازه از چیزهایی که در ساختار است. این حق در اینجا، بدون تغییر هر چیز، به اندازه است که برای رفتن به آسان. حجم از ساختار گره است برای رفتن به اندازه من اندازه + بعدی. اندازه از من در حال رفتن به 4. حجم بعدی به 4. حجم از ساختار گره به 8 است. اگر ما نمی * را نداشته باشند، به فکر sizeof، سپس sizeof (من) در حال رفتن به 4. حجم از ساختار گره بعدی این است که رفتن به اندازه از من + اندازه از گره ساختار بعدی + اندازه از من + اندازه از گره ساختار بعدی. این امر می تواند بازگشت نامتناهی از گره است. این است که چرا این است که چه چیزهایی را می شود. دوباره، قطعا که حفظ، یا حداقل آن را به اندازه کافی است که شما می توانید قادر به درک دلیل را از طریق آنچه در آن باید مانند نگاه کنند. چیزهایی که ما در حال رفتن به خواهید برای به اجرا درآوردن. اگر طول لیست شما می توانید از تقلب و در حدود طول و یا چیزی جهانی است، اما ما قصد داریم برای انجام این کار است. ما قصد داریم به شمارش طول از لیست. در حال حاضر به وجود دارد، به طوری که اساسا مانند یک جستجو، بنابراین ما باید یک لیست پیوندی از اعداد صحیح را به دیدن اگر این عدد صحیح در لیست پیوندی. Prepend رفتن به در ابتدای لیست قرار دادن. افزودنپرونده رفتن به درج در پایان. Insert_sorted در حال رفتن به سمت طبقه بندی شده اند در لیست قرار دادن. نوع Insert_sorted از فرض بر این است که شما prepend استفاده می شود هرگز و یا در راه های بد اضافه شده است. Insert_sorted زمانی که شما در حال اجرای insert_sorted اجازه دهید می گویند ما با ما فهرست. این همان چیزی است که در حال حاضر، 2، 4، 5 به نظر می رسد. من می خواهم برای وارد کردن 3 است، بنابراین تا زمانی که لیست خود را در حال حاضر طبقه بندی شده اند، آن آسان برای پیدا کردن جایی که 3 تعلق دارد. من در 2 شروع می شود. خوب، 3 از 2 بیشتر است، بنابراین من می خواهم به رفتن ادامه دهید. آه، 4 بیش از حد بزرگ است، به طوری که من می دانم 3 رفتن به در بین 2 و 4، و من باید به تعمیر اشاره گرها و تمام چیزهای که. اما اگر ما به شدت استفاده نمی insert_sorted می خواهم اجازه دهید فقط می گویند من prepend 6، سپس لیست پیوندی من می خواهم برای تبدیل شدن به. در حال حاضر باعث می شود بدون معنا، به طوری برای insert_sorted، شما فقط می توانید فرض فهرست طبقه بندی شده اند، حتی اگر عملیات وجود دارد است که می تواند باعث شود که آن را به نه طبقه بندی شده اند، و این از آن است. یافتن درج مفید پس آن چیزهایی هستند که شما قصد به پیاده سازی. در حال حاضر، یک دقیقه به طول و شامل و کسانی که باید نسبتا سریع است. نزدیک شدن زمان بسته شدن، تا هر کسی هر چیزی در طول و یا شامل؟ آنها در حال رفتن به تقریبا یکسان است. [دانشجو] طول. بیایید ببینید، تجدید نظر. باشه. شما می خواهید به توضیح؟ [دانش آموز] من فقط ایجاد یک گره اشاره گر و مقداردهی اولیه آن را به اول، است که متغیر جهانی ما، و سپس چک کنید و ببینید اگر آن را تهی، بنابراین من می توانم در یک گسل SEG می کنید و بازگشت 0 در صورتی که این مورد. در غیر این صورت، من حلقه را از طریق، پیگیری در داخل عدد صحیح چند بار من دسترسی به عنصر بعدی از لیست و در همان عمل افزایش نیز که عنصر واقعی دسترسی داشته باشید. و پس از آن من به طور مداوم چک تا ببینید که آیا آن را به تهی، و اگر آن را تهی، سپس آن را aborts و فقط تعدادی از عناصر من دیده را بر می گرداند. [راب B.] آیا هر کسی هر گونه نظر در مورد هر چیزی؟ این به نظر می رسد صحت خوب عاقلانه است. [دانشجو] من فکر نمی کنم شما نیاز به گره == تهی. آره، بنابراین اگر گره == 0 تهی بازگشت. اما اگر گره == تهی سپس این-OH، یک مسئله صحت وجود دارد. این بود که فقط شما به من باز می گردد، اما آن را در محدوده در حال حاضر است. شما فقط نیاز به دانشنامه هوشمند من است، پس من = 0. اما اگر گره صفر است، پس از آن من است هنوز هم به 0 باشد، و ما قصد داریم به بازگشت 0 است، بنابراین این مورد یکسان است. چیز دیگری که رایج است که برای حفظ اعلامیه از داخل گره از حلقه for. شما می توانید می گویند آه، نه. اجازه دهید آن را به عنوان این است. من احتمالا من بین المللی = 0 در اینجا قرار دهید، سپس گره * گره = برای اولین بار در اینجا. و این است که احتمالا چگونه به خلاص شدن از این در حال حاضر. این است که احتمالا چگونه من می خواهم که آن نوشته شده است. همچنین شما می توانید از نگاه کردن به آن مثل این. این ساختار حلقه در اینجا باید تقریبا به عنوان به شما طبیعی به عنوان اعضای هیات من = 0 من کمتر از طول آرایه + +. در صورتی که شما بیش از یک آرایه تکرار، این است که چگونه شما را بیش از یک لیست پیوندی تکرار. این باید طبیعت دوم در برخی از نقطه. با توجه به آن، این است که تقریبا همان چیزی خواهد بود. شما در حال رفتن به می خواهم به تکرار بیش از یک لیست پیوندی. اگر گره من هیچ ایده چه چیزی ارزش نامیده می شود. گره i است. اگر مقدار که در آن گره = بازگشت من درست باشد، و این از آن است. توجه داشته باشید که تنها راهی که ما تا به حال بازگشت غلط اگر ما بر سر لیست کل مرتبط تکرار و بازگشت واقعی، به طوری که چه می کند این است. به عنوان یک طرف توجه ما احتمالا نمی خواهد برای اضافه و یا prepend. آخرین میانبر توجه داشته باشید. اگر کلمه کلیدی استاتیک می بینید، به طوری که می گویند استاتیک تعداد اعضای هیات = 0، پس از آن ما به حساب + +، شما اساسا می تواند از آن به عنوان یک متغیر جهانی فکر می کنم، حتی اگر من فقط گفت، این است که چگونه ما در حال رفتن به پیاده سازی طول نه. من برای انجام این کار در اینجا، و سپس تعداد دفعات مشاهده + +. به هر حال ما می توانیم یک گره در لیست پیوندی ما در حال افزایش تعداد را وارد کنید. نقطه از این است که چه کلمه کلیدی استاتیک به معنای. اگر من فقط به حال تعداد نوع int = 0 خواهد بود که به طور منظم قدیمی متغیر جهانی است. چه معنی تعداد اعضای هیات تحریریه استاتیک آن است که یک متغیر جهانی برای این فایل. این غیر ممکن است برای برخی از فایل های دیگر، از pset 5 فکر می کنم، اگر شما را شروع کرده اند. شما باید هر دو speller.c، و شما باید dictionary.c، و اگر شما فقط یک چیز جهانی، اعلام کرد پس از آن هر چیزی را در speller.c می توان در dictionary.c و بالعکس قابل دسترسی است. متغیر های جهانی در دسترس هستند با هر فایل C، اما متغیرهای استاتیک فقط از درون خود فایل قابل دسترسی، بنابراین داخل املا و یا در داخل dictionary.c، این نوع چگونه من می خواهم متغیر برای اندازه آرایه من اعلام یا به اندازه تعداد کلمات موجود در فرهنگ لغت است. از آنجا که من نمی خواهم یک متغیر جهانی به اعلام است که هر کسی برای دسترسی به، من واقعا در مورد آن را برای مقاصد خود من اهمیت می دهند. چیز خوبی در این مورد نیز کل نام مسائل برخورد. اگر برخی از فایل های دیگر تلاش می کند به استفاده از یک متغیر سراسری به نام شمارش، همه چیز به بسیار، بسیار اشتباه است، بنابراین این سادگی چیزهایی را ایمن نگه می دارد، و تنها شما می توانید به آن دسترسی داشته باشید. و هیچ کس دیگری نمی تواند، و اگر شخص دیگری اعلام کرد که یک متغیر سراسری به نام شمارش، پس آن را نمی خواهد دخالت با متغیر استاتیک خود را به نام شمارش. این چیزی است که استاتیک می باشد. این فایل یک متغیر جهانی است. سوالات مطرح شده در هر چیز؟ تمام مجموعه. خداحافظ. [CS50.TV]