1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [6 ہفتہ] 2 00:00:02,000 --> 00:00:04,000 [ڈیوڈ J. Malan] [ہارورڈ یونیورسٹی] 3 00:00:04,000 --> 00:00:08,000 [یہ CS50 ہے.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> یہ CS50 ہے، اور یہ 6 ہفتہ کے آغاز ہے، 5 00:00:12,000 --> 00:00:16,000 تاکہ نئے ٹولز کا ایک جوڑے اب دستیاب ہیں کے لئے آپ سے فائدہ اٹھانے، 6 00:00:16,000 --> 00:00:19,000 جن میں سے سب سے پہلے CS50 انداز کہا جاتا ہے. 7 00:00:19,000 --> 00:00:22,000 مشکلات ہیں اگر آپ کو آپ کے وزٹرز کا ریکارڈ رکھا یا تعلیم ساتھیوں میں سے کسی ایک کی طرح ہو، 8 00:00:22,000 --> 00:00:26,000 آپ کو شاید ایک پروگرام جس انداز میں اس طرح کچھ لگتا ہے دیکھا ہے. 9 00:00:26,000 --> 00:00:30,000 شاید آپ کچھ رات کو دیر سے کونے کونے کاٹنے شروع، یا آپ کو اس سے نمٹنے کے بعد میں کریں گے، 10 00:00:30,000 --> 00:00:32,000 اور پھر ایک TF یا CA دفتری اوقات کے دوران ختم ہو آتا ہے. 11 00:00:32,000 --> 00:00:34,000 تو یہ مشکل ہے ہمارے لئے پڑھنے کے لئے ہے. 12 00:00:34,000 --> 00:00:38,000 ٹھیک ہے، یہ کوڈ syntactically درست ہے، اور اس کی تیاری گا، اور یہ اصل میں چلایا جائے گا. 13 00:00:38,000 --> 00:00:40,000 لیکن یہ یقینی طور پر نہیں ہے سٹائل کے لیے ایک 5. 14 00:00:40,000 --> 00:00:45,000 >> لیکن اب یہاں، اگر ہم اس ڈائریکٹری میں 15 00:00:45,000 --> 00:00:48,000 نوٹس اور کہ میں conditions2.c ہے 16 00:00:48,000 --> 00:00:55,000 اور میں اس نئی کمانڈ، style50، اس فائل conditions2.c پر چلاتے ہیں، درج کریں، 17 00:00:55,000 --> 00:00:57,000 نوٹس کہ اس نے مجھے بتایا کہ یہ stylized گیا ہے. 18 00:00:57,000 --> 00:01:00,000 Gedit نے محسوس کیا ہے کہ فائل ڈسک پر تبدیل کر دیا گیا کیا گیا ہے، 19 00:01:00,000 --> 00:01:08,000 اور اگر میں دوبارہ لوڈ کریں پر کلک کریں، اب تمہاری تمام مسائل خود کار طریقے سے کر رہے ہیں. 20 00:01:08,000 --> 00:01:15,000 [تعریف] 21 00:01:15,000 --> 00:01:17,000 یہ چیزیں ہم نے اس ہفتے کے آخر میں کیا میں سے ایک ہے. 22 00:01:17,000 --> 00:01:20,000 احساس ہے کہ یہ نامکمل ہے کیونکہ کچھ کوڈ ہیں 23 00:01:20,000 --> 00:01:23,000 کہ یہ صرف بالکل stylize کے قابل نہیں کرے گا، 24 00:01:23,000 --> 00:01:26,000 لیکن احساس اب یہ ایک آلہ ہے جو آپ کا فائدہ لے سکتے ہیں 25 00:01:26,000 --> 00:01:33,000 کو صاف errantly رکھ دیا گھوبگھرالی منحنی خطوط وحدانی میں سے کچھ اس طرح صرف اس صورت میں جب کہ. 26 00:01:33,000 --> 00:01:36,000 >> لیکن زیادہ مجبور اب CS50 چیک ہے. 27 00:01:36,000 --> 00:01:39,000 CS50 چیک کے ساتھ، آپ کو ایک ہی درست ٹیسٹ بھی انجام دے سکتا ہے 28 00:01:39,000 --> 00:01:42,000 اپنا خود کا کوڈ ہے کہ تعلیم کے ساتھیوں کرنے کے قابل ہیں. 29 00:01:42,000 --> 00:01:44,000 یہ ایک کمانڈ لائن افادیت ہے جو آلے میں آئے ہے 30 00:01:44,000 --> 00:01:46,000 جیسے ہی آپ کے مطابق ایک update50 کرتے ہیں 31 00:01:46,000 --> 00:01:49,000 pset 4 ونیردیشوں، اور تم نے اسے اس طرح بنیادی طور پر استعمال کرتے ہیں. 32 00:01:49,000 --> 00:01:51,000 آپ کو کمانڈ check50 چلاتے ہیں. 33 00:01:51,000 --> 00:01:56,000 اس کے بعد آپ کو ایک کمانڈ لائن کی دلیل میں گزرتے ہیں، یا عام طور پر ایک سوئچ یا ایک پرچم کے طور پر جانا جاتا ہے. 34 00:01:56,000 --> 00:01:58,000 عام طور پر، چیزیں جو ڈیش کی علامت ہے سوئچ کہا جاتا ہے 35 00:01:58,000 --> 00:02:02,000 ایک کمانڈ لائن پروگرام، تو سی وضاحت کرتا ہے 36 00:02:02,000 --> 00:02:04,000 چیک ہے کہ آپ کو چلانا چاہتے ہیں. 37 00:02:04,000 --> 00:02:07,000 >> ٹیسٹ ہے کہ آپ کو چلانا چاہتے منفرد میں اس جملے کی طرف سے نشاندہی کی ہے، 38 00:02:07,000 --> 00:02:10,000 2012/pset4/resize. 39 00:02:10,000 --> 00:02:13,000 دوسرے الفاظ میں، یہ صرف ایک صوابدیدی لیکن منفرد سٹرنگ ہے 40 00:02:13,000 --> 00:02:18,000 کہ ہم pset 4 درست ٹیسٹ کی منفرد شناخت کے لئے استعمال کرتے ہیں. 41 00:02:18,000 --> 00:02:21,000 اور پھر آپ کو فائلوں کی ایک اسپیس سے الگ کردہ فہرست کی وضاحت کریں کہ آپ اپ لوڈ کرنا چاہتے ہیں 42 00:02:21,000 --> 00:02:24,000 تجزیہ کے لئے CS50 چیک. 43 00:02:24,000 --> 00:02:29,000 مثال کے طور پر، اگر میں اپنے حل میں میں جانے کے لئے یہاں resize.c 44 00:02:29,000 --> 00:02:31,000 مجھے ایک بڑی کھڑکی کے ٹرمینل کھول 45 00:02:31,000 --> 00:02:42,000 اور میں آگے بڑھو اور چلو چلانے 2012/pset4/resize check50 C-کہتے ہیں، 46 00:02:42,000 --> 00:02:46,000 اور پھر میں آگے بڑھو اور فائلوں کے نام کی وضاحت، 47 00:02:46,000 --> 00:02:49,000 resize.c، اور پھر درج کریں مارا، اس compresses، 48 00:02:49,000 --> 00:02:53,000 یہ اپ لوڈ، چیک کرتا ہے، اور میں صرف ٹیسٹ کی ایک پوری چڑھانے میں ناکام رہے. 49 00:02:53,000 --> 00:02:59,000 سب سے اوپر بائیں میں سرخ رنگ میں ایک کا کہنا ہے کہ resize.c اور BMP کہ موجود ہے. 50 00:02:59,000 --> 00:03:01,000 وہ ٹیسٹ تھا. یہ سوال ہم سے پوچھا تھا. 51 00:03:01,000 --> 00:03:04,000 اور اس سے ناخوش ہے کیونکہ جواب غلط ہے. 52 00:03:04,000 --> 00:03:08,000 اس کے نیچے سفید متن کا کہنا ہے کہ وجود bmp.h امید کی جاتی ہے، اور یہ کہ صرف میری غلطی ہے. 53 00:03:08,000 --> 00:03:11,000 میں اسے اپ لوڈ کرنے کی بھول گیا، تو میں دونوں فائلوں کو اپ لوڈ کرنے کی ضرورت ہے، 54 00:03:11,000 --> 00:03:14,000 resize.c اور bmp.h. 55 00:03:14,000 --> 00:03:17,000 لیکن اب دوسرے ٹیسٹ کے پیلے رنگ میں ہیں کیونکہ وہ نہیں چلانے ہیں، محسوس 56 00:03:17,000 --> 00:03:21,000 اور جذباتیہ عمودی ہے کیونکہ وہ نہ تو خوش نہ ہی دکھ کی بات ہے، 57 00:03:21,000 --> 00:03:25,000 لیکن ہم سرخ رنگ میں اس معاملے پر ان دیگر چیک سے پہلے چلے گا تلافی ہے. 58 00:03:25,000 --> 00:03:27,000 >> مجھے اسے درست ہے. 59 00:03:27,000 --> 00:03:30,000 مجھے باہر زوم اور اس rerun bmp.h کے ساتھ، اس وقت بھی 60 00:03:30,000 --> 00:03:34,000 کمانڈ لائن پر، اور اب درج کریں اگر سب کچھ اچھی طرح سے جاتا ہے، 61 00:03:34,000 --> 00:03:38,000 اور پھر واپس اس کے نتیجے چیک کرنے کے لیے آپ کی پکڑ ہو رہا ہے سانس 62 00:03:38,000 --> 00:03:42,000 تمام سبز، جس کا مطلب ہے کہ میں 4 pset پر واقعی میں بہت اچھا کر رہا ہوں اب تک. 63 00:03:42,000 --> 00:03:44,000 آپ دیکھ اور وضاحتی متن سے نتیجہ نکالنا یہاں کر سکتے ہیں 64 00:03:44,000 --> 00:03:47,000 بالکل کہ وہ کیا ہے ہم ٹیسٹ. 65 00:03:47,000 --> 00:03:49,000 ہم سب سے پہلے تجربہ کیا فائلوں وجود نہیں ہے؟ 66 00:03:49,000 --> 00:03:51,000 اس وقت ہم نے تجربہ کیا resize.c تالیف کرتا ہے؟ 67 00:03:51,000 --> 00:03:58,000 اس وقت ہم نے تجربہ کیا ہے یہ ایک BMP 1x1 پکسل کا سائز تبدیل نہیں جب (ن)، بازسائز عنصر، 1. 68 00:03:58,000 --> 00:04:01,000 اب، اگر آپ کو کوئی خیال نہیں کیا (ن) ہے ہے، تو آپ 4 pset میں ایک بار کودو گا، 69 00:04:01,000 --> 00:04:04,000 لیکن یہ صرف ایک وویک چیک کرنے کے لیے اس بات کا یقین کر لیں کہ آپ نیا سائز کرنا نہیں ہو 70 00:04:04,000 --> 00:04:08,000 بالکل ایک تصویر ہے اگر بازسائز عنصر 1 ہے. 71 00:04:08,000 --> 00:04:14,000 اگر اس کے برعکس کی طرف سے، یہ درست طریقے سے 2x2 1x1 ایک 1x1 پکسل BMP پکسل resizes 72 00:04:14,000 --> 00:04:19,000 جب (ن) 2 ہے، تو اسی طرح میری کے مطابق بناتا ہے. 73 00:04:19,000 --> 00:04:22,000 >> مختصر میں، یہ، ایک مقصد ہے، حد سے تجاوز کر انگلیاں لے 74 00:04:22,000 --> 00:04:25,000 ٹھیک ہے، تم سے پہلے مساوات سے باہر اپنا pset پیش کریں. 75 00:04:25,000 --> 00:04:28,000 آپ کو پتہ ہے بالکل وہی جو آپ کی TF جلد ہی پتہ چل جائے گا 76 00:04:28,000 --> 00:04:30,000 ، جب آپ کو یہ مسئلہ سیٹ میں سے کچھ جمع کرانے کے بارے میں 77 00:04:30,000 --> 00:04:34,000 اور بھی pedagogical حوصلہ افزائی کو واقعی ہے ڈال 78 00:04:34,000 --> 00:04:37,000 آپ کے سامنے میں تاکہ موقع جب تم نے ایک priori جانتے 79 00:04:37,000 --> 00:04:39,000 ہے کہ آپ کے کوڈ میں کیڑے اور ٹیسٹ ہے جو منظور نہیں کیا جا رہا ہے، 80 00:04:39,000 --> 00:04:43,000 زیادہ مؤثر وقت میں آپ کو سامنے ان مسائل کو حل کرنے کے لئے رکھ سکتے ہیں 81 00:04:43,000 --> 00:04:45,000 بجائے پوائنٹس کھو TF سے رائے حاصل کریں، 82 00:04:45,000 --> 00:04:48,000 اور پھر جا "آہ،" جیسے میں نے کہ باہر سوچا جانا چاہئے. 83 00:04:48,000 --> 00:04:50,000 اب کم از کم میں آپ کی مدد ہے کہ تلاش کرنے کے لئے ایک آلہ ہے. 84 00:04:50,000 --> 00:04:52,000 یہ جہاں بگ ہے کی طرف اشارہ نہیں ہے، لیکن یہ آپ کو بتائے گا 85 00:04:52,000 --> 00:04:54,000 اس کی کیا روگسوچک ہے. 86 00:04:54,000 --> 00:04:57,000 >> اب احساس ٹیسٹ ضروری جامع نہیں ہیں. 87 00:04:57,000 --> 00:04:59,000 صرف اس لئے کہ آپ کو ایک سبز سمائلی چہروں کی مکمل سکرین 88 00:04:59,000 --> 00:05:02,000 کا مطلب یہ نہیں ہے آپ کے کوڈ کو کامل ہے، لیکن اس کا مطلب یہ ہے 89 00:05:02,000 --> 00:05:06,000 کہ اس رپورٹ کی طرف سے مقرر بعض ٹیسٹ منظور کر دیا ہے. 90 00:05:06,000 --> 00:05:08,000 کبھی کبھی ہم نے چیک جاری نہیں کرے گا. 91 00:05:08,000 --> 00:05:10,000 مثال کے طور پر،، whodunit، 4 pset کے پہلوؤں میں سے ایک 92 00:05:10,000 --> 00:05:15,000 مایوس کن کی قسم اگر ہم آپ کو دے دیں 93 00:05:15,000 --> 00:05:18,000 یہ کیا ہے، اور ظاہر طریقوں کی ایک بڑی تعداد ہے جواب 94 00:05:18,000 --> 00:05:21,000 جو شخص اس سرخ شور میں ہے. 95 00:05:21,000 --> 00:05:24,000 رپورٹ pset 5 آگے کے لئے مستقبل میں ہمیشہ کی وضاحت گا 96 00:05:24,000 --> 00:05:26,000 جو آپ کے وجود کی جانچ کرے گا. 97 00:05:26,000 --> 00:05:28,000 آپ کو نوٹس کے نیچے دیے گئے اس سفید URL گے. 98 00:05:28,000 --> 00:05:30,000 ابھی کے لئے، یہ صرف تشخیصی پیداوار ہے. 99 00:05:30,000 --> 00:05:33,000 اگر آپ اس یو آر ایل کا دورہ کرنے کے لئے، آپ کو پاگل، خفیہ پیغامات کی ایک پوری چڑھانے ملے گی 100 00:05:33,000 --> 00:05:36,000 ہے کہ آپ کے ذریعے تلاش کرنے کا استقبال ہے، لیکن اس کے عملے کے لئے زیادہ تر ہے 101 00:05:36,000 --> 00:05:41,000 تو ہم اس کی تشخیص کر سکتے ہیں اور check50 میں ہی کیڑے ڈیبگ کر سکتے ہیں. 102 00:05:41,000 --> 00:05:46,000 >> ado کے بغیر، جہاں ہم نے بائیں منتقل کریں. 103 00:05:46,000 --> 00:05:48,000 CS50 لائبریری ہم نے کے لئے کچھ ہفتوں کے لئے حاصل کی جاچکی ہے، 104 00:05:48,000 --> 00:05:52,000 لیکن پھر گزشتہ ہفتے، ہم واپس اس کی تہوں میں سے ایک چھیلنے کرنا شروع کر دیا ہے. 105 00:05:52,000 --> 00:05:55,000 ہم ایک طرف بجائے کیا کے حق میں ڈال سٹرنگ شروع کر دیا؟ 106 00:05:55,000 --> 00:05:57,000 [طلباء] چار. 107 00:05:57,000 --> 00:05:59,000 چار *، جو ایک چار * اس وقت کیا گیا ہے، 108 00:05:59,000 --> 00:06:03,000 لیکن اب ہم ڈرامہ ہے کہ یہ ایک حقیقی اعداد و شمار کی قسم سٹرنگ ہے کی ضرورت نہیں ہے. 109 00:06:03,000 --> 00:06:06,000 بلکہ یہ چار * کے لئے ایک طرح کے مترادف ہے، 110 00:06:06,000 --> 00:06:09,000 اور کرداروں میں سے ایک سٹرنگ میں ایک ہی تسلسل ہے، 111 00:06:09,000 --> 00:06:14,000 تو یہ احساس کیوں چار * کے طور پر تاروں کی نمائندگی کرتا ہے؟ 112 00:06:14,000 --> 00:06:20,000 کیا حروف * ایک تار کے اس تصور کے تناظر میں کی نمائندگی کرتا ہے؟ 113 00:06:20,000 --> 00:06:23,000 جی ہاں >> [Student کی]. پہلا کردار 114 00:06:23,000 --> 00:06:25,000 اچھا، پہلے کردار نہیں بلکہ بہت پہلے کردار ہے. 115 00:06:25,000 --> 00:06:27,000 یہ [طلباء] پتہ ہے. 116 00:06:27,000 --> 00:06:29,000 اچھا، پہلے کردار کا پتہ ہے. 117 00:06:29,000 --> 00:06:33,000 وہ سب کے کمپیوٹر کی میموری میں ایک تار کی نمائندگی ضروری ہے 118 00:06:33,000 --> 00:06:36,000 صرف اس کے بہت پہلے بائٹ کی منفرد پتہ ہے. 119 00:06:36,000 --> 00:06:38,000 آپ کو معلوم ہے کہ کتنی دیر تک یہ بھی نہیں ہے 120 00:06:38,000 --> 00:06:42,000 وجہ سے ہے کہ آپ کس طرح متحرک طور پر اعداد و شمار کر سکتے ہیں؟ 121 00:06:42,000 --> 00:06:44,000 [طالب علم کو] جملہ لمبائی. 122 00:06:44,000 --> 00:06:48,000 آپ کو سٹرنگ کی حد کے، بہترین، لیکن کس طرح سٹرنگ کی حد کا کام کرتا ہے کہہ سکتے ہیں؟ 123 00:06:48,000 --> 00:06:50,000 اس کا کیا کرنا ہے؟ جی ہاں. 124 00:06:50,000 --> 00:06:52,000 [Student کی] جب تک آپ شہوت انگیز null کردار ملے گا رکھیں. 125 00:06:52,000 --> 00:06:54,000 جی ہاں، بالکل، یہ صرف لوپ کے لئے ایک کے ساتھ iterates، لوپ جبکہ 126 00:06:54,000 --> 00:06:57,000 * سے آخر تک جو بھی ہو، اور آخر نمائندگی ہے 127 00:06:57,000 --> 00:07:01,000 0 \،، نام نہاد nul کردار، nul 128 00:07:01,000 --> 00:07:05,000 شہوت انگیز null، جس میں ایک پوائنٹر ہے کے ساتھ الجھن میں رکھا جائے، 129 00:07:05,000 --> 00:07:07,000 جو بات چیت میں آج پھر سے آئے گا. 130 00:07:07,000 --> 00:07:11,000 >> ہم واپس GetInt کی ایک پرت کھلی، اور پھر ہم نے GetString پر ایک نظر لیا، 131 00:07:11,000 --> 00:07:14,000 اور یہ کہ ان کے افعال میں سے دونوں، واقعی یا یاد 132 00:07:14,000 --> 00:07:18,000 GetString، ایک خاص تقریب کا استعمال کرتے ہوئے 133 00:07:18,000 --> 00:07:21,000 اصل کا تجزیہ کرنے کے لئے، یہ، یا کا تجزیہ ہے پڑھ، صارف کی ان پٹ. 134 00:07:21,000 --> 00:07:25,000 اور کیا اس نئے تقریب تھی؟ 135 00:07:25,000 --> 00:07:27,000 Scanf یا sscanf. یہ اصل میں کچھ مختلف ذائقوں میں آتا ہے. 136 00:07:27,000 --> 00:07:31,000 آمدید scanf ہے، وہاں sscanf ہے، وہاں fscanf ہے. 137 00:07:31,000 --> 00:07:35,000 ابھی کے لئے، تاہم، سب سے زیادہ آسانی سے سچتر پر توجہ مرکوز، 138 00:07:35,000 --> 00:07:38,000 اور آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور آلات میں کھول 139 00:07:38,000 --> 00:07:41,000 اس طرح ایک فائل، scanf1.c. 140 00:07:41,000 --> 00:07:43,000 یہ ایک سپر آسان پروگرام ہے، 141 00:07:43,000 --> 00:07:46,000 لیکن یہ ایک ایسی چیز ہے جس پر ہم نے کبھی نہیں کیا ہے کرتا ہے 142 00:07:46,000 --> 00:07:48,000 CS50 لائبریری کی مدد کے بغیر. 143 00:07:48,000 --> 00:07:51,000 یہ ایک صارف کی طرف سے ایک int ملتا ہے. یہ کس طرح کام کرتا ہے؟ 144 00:07:51,000 --> 00:07:53,000 ٹھیک ہے، وہاں 16 سطر میں 145 00:07:53,000 --> 00:07:56,000 دیکھیں گے کہ ہم نامی ایک int ایکس کا اعلان کہانی میں اس وقت، اور، 146 00:07:56,000 --> 00:07:58,000 X کی قدر کیا ہے؟ 147 00:07:58,000 --> 00:08:00,000 [اشراوی طالب علم کے جواب] 148 00:08:00,000 --> 00:08:02,000 [ڈیوڈ M.] حق، کون جانتا ہے، کچھ ردی کی ٹوکری کی قدر ممکنہ طور پر 17 میں، تو، ہم صرف صارف بتا 149 00:08:02,000 --> 00:08:06,000 مجھے ایک نمبر دے، تو براہ مہربانی، اور 18 قدم ہے جہاں اسے دلچسپ ہو جاتا ہے. 150 00:08:06,000 --> 00:08:11,000 Scanf printf کی طرف سے ایک خیال ہے کہ میں اس کی قیمت درج کرنے میں ان کی شکل کوڈ کا استعمال کیا جاتا ہے قرضے لے لگتا ہے. 151 00:08:11,000 --> 00:08:13,000 ٪ D کورس کے ایک دشملو تعداد ہے. 152 00:08:13,000 --> 00:08:21,000 لیکن میں کیوں اور عمومی کے بجائے X صرف ایکس میں گزر رہا ہوں؟ 153 00:08:21,000 --> 00:08:24,000 سابق صحیح ہے. جی ہاں. 154 00:08:24,000 --> 00:08:26,000 [اشراوی طالب علم کے جواب] 155 00:08:26,000 --> 00:08:31,000 بالکل، اگر اس پروگرام کا مقصد، تقریب GetInt ہی کی طرح 156 00:08:31,000 --> 00:08:34,000 صارف کی جانب سے ایک int حاصل کرنے میں افعال منتقل کر سکتی ہیں 157 00:08:34,000 --> 00:08:38,000 تمام متغیر میں چاہتا ہوں، لیکن اگر میں حوالے کے طور پر ان کے پاس نہیں ہے 158 00:08:38,000 --> 00:08:41,000 یا ایڈریس کی طرف سے یا اس کی طرف سے پوائنٹر، آج کل کے مقاصد کے لئے تمام متبادل 159 00:08:41,000 --> 00:08:46,000 تو یہ تقریب اس متغیر کی کو تبدیل کرنے کی صلاحیت نہیں ہے. 160 00:08:46,000 --> 00:08:49,000 ایک کاپی میں یہ صرف سویپ کی چھوٹی گاڑی ورژن کی طرح گزرتا ہے 161 00:08:49,000 --> 00:08:51,000 کہ اب ہم چند بار کے بارے میں بات کی ہے. 162 00:08:51,000 --> 00:08:54,000 >> بلکہ اس کی بجائے، کر اور عمومی X، میں لفظی کیا میں گزر رہا ہوں؟ 163 00:08:54,000 --> 00:08:57,000 [Student کی] پتہ. ایکس کا ایڈریس. >> 164 00:08:57,000 --> 00:09:01,000 یہ کہا جاتا scanf کے جشن کے لئے ایک نقشہ کے ڈرائنگ اور یہاں کہہ رہے جیسا ہے، 165 00:09:01,000 --> 00:09:04,000 یہ کمپیوٹر میں میموری کا ایک حصہ ہدایات ہیں 166 00:09:04,000 --> 00:09:07,000 کہ تم اندر کچھ عددی ذخیرہ جا سکتے ہیں 167 00:09:07,000 --> 00:09:10,000 حکم میں sscanf کے لئے اب وہ کرنا 168 00:09:10,000 --> 00:09:13,000 کیا آپریٹر، نحو کیا ٹکڑا استعمال کرنے کے لئے جا رہا ہے 169 00:09:13,000 --> 00:09:19,000 اگرچہ ہم اسے دیکھ نہیں ہے کیونکہ کسی اور نے اس تقریب کو لکھا جا سکتا ہے؟ 170 00:09:19,000 --> 00:09:21,000 - دوسرے لفظوں میں وہ کیا ہے؟ 171 00:09:21,000 --> 00:09:23,000 [Student کی] پڑھا X. 172 00:09:23,000 --> 00:09:27,000 کچھ پڑھنے جا رہا ہے، لیکن صرف X یہاں کے حوالے سے ہے. 173 00:09:27,000 --> 00:09:30,000 اگر scanf ایکس کا پتہ منظور کیا جا رہا ہے، 174 00:09:30,000 --> 00:09:35,000 syntactically، کیا آپریٹر کہیں موجود پابند ہے 175 00:09:35,000 --> 00:09:38,000 اندر scanf عملدرآمد تاکہ scanf 176 00:09:38,000 --> 00:09:42,000 2 نمبر واقعی میں نے اس پتے پر لکھ سکتے ہیں؟ 177 00:09:42,000 --> 00:09:44,000 جی ہاں، اس لئے *. 178 00:09:44,000 --> 00:09:47,000 کو یاد ہوگا کہ * ہماری dereference آپریٹر ہے، جو بنیادی طور پر کا مطلب ہے کہ وہاں جانا ہے ہے. 179 00:09:47,000 --> 00:09:50,000 >> ایک بار جب آپ نے پتہ کے حوالے، کے طور پر معاملہ یہاں ہے، 180 00:09:50,000 --> 00:09:53,000 scanf شاید اگر ہم واقعی اس کے ذرائع کے ارد گرد دیکھا کوڈ 181 00:09:53,000 --> 00:09:59,000 X * یا واقعی میں اس ایڈریس پر جاؤ اور وہاں کچھ قدر ڈال برابر کر ہے. 182 00:09:59,000 --> 00:10:02,000 اب، کے لئے کس طرح scanf بورڈ سے ان پٹ ہو جاتا ہے، 183 00:10:02,000 --> 00:10:04,000 ہم آج کے لئے ہمارے ہاتھ لہر لیں گے. 184 00:10:04,000 --> 00:10:07,000 بس فرض ہے کہ آپریٹنگ سسٹم بات sscanf کی اجازت دیتا ہے 185 00:10:07,000 --> 00:10:11,000 صارف کے کی بورڈ پر، لیکن اب یہ 19 سطر میں نقطہ پر، 186 00:10:11,000 --> 00:10:14,000 جب ہم صرف ایکس پرنٹ، معاملہ لگتا ہے 187 00:10:14,000 --> 00:10:17,000 کہ scanf X میں ایک int ڈال دیا ہے. 188 00:10:17,000 --> 00:10:19,000 یہ کس طرح scanf کام ہے، اور گزشتہ ہفتے یاد 189 00:10:19,000 --> 00:10:25,000 کہ کس طرح GetString اور GetInt اور اس کے افعال میں سے اس کے خاندان کے دوسرے 190 00:10:25,000 --> 00:10:28,000 حتمی طور پر کام کرتا ہے، sscanf طرح تھوڑا سا مختلف کے ساتھ ہی سہی، 191 00:10:28,000 --> 00:10:31,000 جس کا مطلب ہے کہ بورڈ کے بجائے ایک تار اسکین. 192 00:10:31,000 --> 00:10:33,000 لیکن اس کا ایک چھوٹا سا بادبانی پر ایک نظر لے. 193 00:10:33,000 --> 00:10:37,000 scanf2 میں، میں واقعی میں خراب ہے. 194 00:10:37,000 --> 00:10:42,000 کیا غلط ہوا اور میں تبصرہ ہے کہ زیادہ سے زیادہ کی وضاحت کرتا ہے چھپا کریں گے 195 00:10:42,000 --> 00:10:47,000 ہے کہ اس پروگرام کے ساتھ غلط ہے، ورژن 2؟ 196 00:10:47,000 --> 00:10:55,000 ممکن ہو سکے کے طور پر اس وقت کے طور پر تکنیکی. 197 00:10:55,000 --> 00:10:57,000 یہ بہت اچھا لگ رہا ہے. 198 00:10:57,000 --> 00:11:03,000 یہ اچھی طرح سے، پوٹ دار ہے لیکن 199 00:11:03,000 --> 00:11:07,000 ٹھیک ہے، کے بارے میں ہم کس طرح یہ چھوٹا سوالات prune؟ 200 00:11:07,000 --> 00:11:17,000 16 لائن. 16 لائن عین مطابق لیکن تکنیکی انگریزی میں کیا کر رہے کیا کیا ہے؟ 201 00:11:17,000 --> 00:11:20,000 تھوڑا عجیب ہو رہی ہے. جی ہاں، مائیکل. 202 00:11:20,000 --> 00:11:25,000 [Student کی] یہ ایک تار کے پہلے حرف کو کی طرف اشارہ کرتے ہوئے ہے. 203 00:11:25,000 --> 00:11:27,000 >> ٹھیک ہے، قریب ہے. مجھے یہ تھوڑا سا موافقت. 204 00:11:27,000 --> 00:11:33,000 ایک تار کے پہلے حرف کو کے کی طرف اشارہ کرتے ہوئے، آپ کو ایک متغیر کہا جاتا بفر اعلان کر رہے ہیں 205 00:11:33,000 --> 00:11:36,000 کہ ایک تار کا پہلا ایڈریس کی طرف اشارہ کریں گے، 206 00:11:36,000 --> 00:11:39,000 یا بلکہ یہ زیادہ خاص طور پر ایک چار کی طرف اشارہ کریں گے. 207 00:11:39,000 --> 00:11:42,000 نوٹس اسے کہیں بھی اصل میں نہیں ہے کی طرف اشارہ کرتے ہوئے کیونکہ کوئی تفویض آپریٹر ہے. 208 00:11:42,000 --> 00:11:46,000 کوئی برابر علامت ہے، ہم سب کر رہے ہیں متغیر نام نہاد بفر آونٹن ہے. 209 00:11:46,000 --> 00:11:49,000 یہ 32 بٹیں ہوتا ہے کیونکہ یہ ایک پوائنٹر ہے، 210 00:11:49,000 --> 00:11:52,000 اور بفر کے مندرجات شاید بالاخر 211 00:11:52,000 --> 00:11:57,000 حروف کے ایک پتے پر مشتمل ہے، لیکن اب کے لیے، بفر کیا شامل ہے؟ 212 00:11:57,000 --> 00:11:59,000 بس کچھ جعلی ہے، کون جانتا ہے، کچھ ردی کی ٹوکری میں قدر 213 00:11:59,000 --> 00:12:03,000 کیونکہ ہم اسے واضح طور پر نہیں کیا ہے initialized، تو ہم کچھ فرض نہیں کرنا چاہیے. 214 00:12:03,000 --> 00:12:06,000 ٹھیک ہے، تو اب 17 لائن کیا ہے 17 لائن کرتے ہیں؟ 215 00:12:06,000 --> 00:12:08,000 ہو سکتا ہے کہ یہ گرم جائے گا. 216 00:12:08,000 --> 00:12:10,000 یہ ایک سٹرنگ پرنٹ، ٹھیک ہے؟ 217 00:12:10,000 --> 00:12:12,000 یہ پرنٹ جملہ براہ مہربانی. 218 00:12:12,000 --> 00:12:15,000 >> 18 لائن واقف کی طرح اب میں یہ ہے کہ ہم صرف اس کی ایک متنوع دیکھا 219 00:12:15,000 --> 00:12:18,000 لیکن ایک مختلف شکل کوڈ کے ساتھ، تو، 18 لائن میں 220 00:12:18,000 --> 00:12:23,000 ہم scanf کہہ رہے میموری کا ایک حصہ کا پتہ ہے. 221 00:12:23,000 --> 00:12:27,000 میں آپ کو ایک تار میں، فون کے٪ کی طرف سے تقاضا کرنا چاہتے ہیں، 222 00:12:27,000 --> 00:12:32,000 لیکن مسئلہ یہ ہے کہ ہم کے ایک جوڑے کی چیزیں نہیں کیا ہے یہاں. 223 00:12:32,000 --> 00:12:35,000 کیا مسائل میں سے ایک ہے؟ 224 00:12:35,000 --> 00:12:38,000 [Student کی] یہ شہوت انگیز null پوائنٹر dereference کی کوشش کر رہا ہے. 225 00:12:38,000 --> 00:12:41,000 اچھا، شہوت انگیز null یا دوسری صورت میں نامعلوم اشارہ. 226 00:12:41,000 --> 00:12:45,000 تم scanf حوالے پتہ رہے ہیں، لیکن آپ صرف ایک لمحے پہلے نے کہا کہ 227 00:12:45,000 --> 00:12:49,000 کہ وہ کچھ ردی کی ٹوکری کی قدر پتہ ہے کیونکہ ہم یہ اصل میں کچھ بھی نہیں تفویض، 228 00:12:49,000 --> 00:12:53,000 اور تو آپ کو کہہ رہا ہوں scanf مؤثر طریقے سے ایک تار یہاں ڈال رہے ہیں، 229 00:12:53,000 --> 00:12:56,000 لیکن ہم جانتے ہیں کہ کہاں ابھی تک یہاں نہیں ہے، 230 00:12:56,000 --> 00:12:59,000 تو ہم بفر کے لئے یاد کیا واقعی نہیں مختص ہے. 231 00:12:59,000 --> 00:13:03,000 اس کے علاوہ، کیا آپ بھی ہیں scanf بھی نہیں کہہ؟ 232 00:13:03,000 --> 00:13:06,000 اگر یہ میموری کا ایک حصہ تھا، اور یہ ردی کی ٹوکری کی قدر نہیں تھی، 233 00:13:06,000 --> 00:13:09,000 لیکن آپ اب بھی کہہ scanf رہے ہیں کچھ اہم نہیں ہے. 234 00:13:09,000 --> 00:13:12,000 [Student کی] یہ اصل میں کہاں ہے، ایمپرسینڈ. 235 00:13:12,000 --> 00:13:15,000 ایمپرسینڈ، تو اس صورت میں، یہ ٹھیک ہے. 236 00:13:15,000 --> 00:13:18,000 کیونکہ بفر پہلے ہی ایک پوائنٹر کے طور پر اعلان کیا جاتا ہے 237 00:13:18,000 --> 00:13:22,000 نحو * ٹکڑا کے ساتھ، ہم نے ایمپرسینڈ استعمال کرنے کی ضرورت نہیں ہے 238 00:13:22,000 --> 00:13:25,000 کیونکہ اس کے پاس پہلے سے ہی پتہ ہے، لیکن مجھے لگتا ہے کہ میں اسے یہاں سنا. 239 00:13:25,000 --> 00:13:27,000 [Student کی] کتنا بڑا ہے؟ 240 00:13:27,000 --> 00:13:29,000 اچھا، ہم scanf کہہ نہیں کر رہے ہیں اس بفر کتنا بڑا ہے، 241 00:13:29,000 --> 00:13:32,000 جس کا مطلب ہے کہ یہاں تک کہ اگر بفر پوائنٹر تھے، 242 00:13:32,000 --> 00:13:35,000 ہم scanf کہہ رہے ہیں، ایک تار کو یہاں رکھتے، 243 00:13:35,000 --> 00:13:38,000 لیکن یہاں 2 بائٹس ہو سکتا ہے، 10 بائٹس ہو سکتا ہے، یہ ایک میگا بائٹ ہو سکتی ہے. 244 00:13:38,000 --> 00:13:41,000 Scanf کوئی اندازہ نہیں ہے، اور کیونکہ اس میموری کا ایک حصہ ہے 245 00:13:41,000 --> 00:13:43,000 شاید، یہ ابھی تک سٹرنگ نہیں ہے. 246 00:13:43,000 --> 00:13:48,000 یہ صرف ایک تار ہے ایک بار تم نے حروف اور ایک \ میموری کا حصہ 0 لکھتے ہیں. 247 00:13:48,000 --> 00:13:51,000 اب یہ صرف میموری کا کچھ حصہ ہے. 248 00:13:51,000 --> 00:13:55,000 Scanf پتہ نہیں جب اس پتے پر لکھ کو روکنے کے لئے جائے گا. 249 00:13:55,000 --> 00:13:59,000 >> اگر آپ ماضی میں کچھ مثالیں ہیں جہاں میں تصادفی کی بورڈ پر ٹائپ یاد 250 00:13:59,000 --> 00:14:03,000 بفر اتپرواہ کی کوشش کر رہا ہے، اور ہم بالکل اس کے بارے میں جمعہ کو بات کی. 251 00:14:03,000 --> 00:14:07,000 اگر کوئی مخالف کسی بھی طرح سے آپ کے پروگرام میں ایک بہت بڑا لفظ کے طور پر کام کرنے کے لئے ہوئے injects 252 00:14:07,000 --> 00:14:10,000 جملہ یا یا فقرہ تو آپ توقع کر رہے تھے آپ overrun کر سکتے ہیں 253 00:14:10,000 --> 00:14:13,000 میموری کا ایک حصہ ہے، جو برے انجام ہو سکتا ہے، 254 00:14:13,000 --> 00:14:15,000 سارا پروگرام خود پر لے. 255 00:14:15,000 --> 00:14:17,000 ہم اس کو کسی نہ کسی طرح طے کرنے کی ضرورت ہے. 256 00:14:17,000 --> 00:14:20,000 آپ کے وزٹرز کا ریکارڈ رکھا باہر زوم اور اس پروگرام کے 3 ورژن میں جانے دو 257 00:14:20,000 --> 00:14:22,000 وہ تھوڑا سا بہتر ہے. 258 00:14:22,000 --> 00:14:24,000 اس ورژن میں، فرق محسوس کریں. 259 00:14:24,000 --> 00:14:27,000 اوپر 16 میں، میں پھر نامی ایک متغیر بفر کا اعلان کر رہا ہوں، 260 00:14:27,000 --> 00:14:29,000 لیکن اب یہ کیا ہے؟ 261 00:14:29,000 --> 00:14:33,000 یہ 16 حروف کا ایک صف ہے. 262 00:14:33,000 --> 00:14:36,000 یہ اچھا ہے کیونکہ اس کا مطلب میں نے scanf اب بتا سکتے ہیں 263 00:14:36,000 --> 00:14:39,000 میموری کا ایک حقیقی حصہ ہے. 264 00:14:39,000 --> 00:14:42,000 آپ کو اشارہ کے طور پر arrays تقریبا سوچ سکتے ہیں، 265 00:14:42,000 --> 00:14:44,000 اگرچہ وہ اصل کے برابر نہیں ہو. 266 00:14:44,000 --> 00:14:47,000 انہوں نے مختلف سبصورنسوں میں مختلف طریقے سے برتاؤ کریں گے. 267 00:14:47,000 --> 00:14:50,000 لیکن اس بات کو یقینی طور سے معاملہ ہے کہ بفر حوالہ کر رہا ہے 268 00:14:50,000 --> 00:14:53,000 16 ملحق حروف وجہ سے ہے کہ جو ایک صف ہے 269 00:14:53,000 --> 00:14:55,000 اور اب کچھ ہفتوں کے لئے کیا گیا ہے. 270 00:14:55,000 --> 00:14:59,000 >> یہاں، میں scanf یہاں کہہ رہا ہوں میموری کا ایک حصہ ہے. 271 00:14:59,000 --> 00:15:01,000 اس وقت، یہ اصل میں میموری کا ایک حصہ ہے، 272 00:15:01,000 --> 00:15:07,000 لیکن کیوں اس پروگرام اب بھی ہے exploitable؟ 273 00:15:07,000 --> 00:15:11,000 کیا ہوا ابھی تک؟ 274 00:15:11,000 --> 00:15:14,000 میں نے کہا کہ آپ کے وزٹرز کا ریکارڈ رکھا لیکن 16 بائٹس دے ہے 275 00:15:14,000 --> 00:15:16,000 [Student کی] اگر وہ 16 سے زائد میں ٹائپ کیا؟ 276 00:15:16,000 --> 00:15:20,000 بالکل، کیا اگر 17 حروف یا 1700 حروف میں صارف کی اقسام؟ 277 00:15:20,000 --> 00:15:23,000 سچ تو یہ ہے، دیکھتے ہیں اگر ہم اس غلطی پر سفر نہیں کر سکتے ہیں اب. 278 00:15:23,000 --> 00:15:25,000 یہ بہتر ہے لیکن کامل نہیں ہے. 279 00:15:25,000 --> 00:15:28,000 آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور چلانے scanf3 اس پروگرام مرتب کرنے کے دو 280 00:15:28,000 --> 00:15:34,000 مجھے scanf3 چلانے، سٹرنگ کریں: ہیلو، اور ہم ٹھیک ہو جائے لگ رہے ہو. 281 00:15:34,000 --> 00:15:37,000 مجھے تھوڑا طویل ہے کرنے کی کوشش کریں، خوش آمدید. 282 00:15:37,000 --> 00:15:42,000 ٹھیک ہے، ہیلو ہم وہاں کس طرح آج تم ہو، درج کریں. 283 00:15:42,000 --> 00:15:54,000 خوش قسمت کی طرح یہاں سے حاصل دو، خوش آمدید، کا کہنا ہے کہ تم کیسی ہو. 284 00:15:54,000 --> 00:15:56,000 لات ہے. 285 00:15:56,000 --> 00:16:03,000 ٹھیک ہے، تو ہم خوش قسمت ہے. چلو دیکھتے ہیں اگر ہم اس کو ٹھیک نہیں کر سکتے. 286 00:16:03,000 --> 00:16:06,000 نہیں، یہ مجھے کاپی نہیں ہے. 287 00:16:06,000 --> 00:16:09,000 چلو، پھر سے کوشش کریں. 288 00:16:09,000 --> 00:16:12,000 ٹھیک ہے، کی طرف سے کھڑے رہو. 289 00:16:12,000 --> 00:16:20,000 ہم دیکھتے ہیں کہ میں کس طرح دیر کو بھی یہ کر رہی توجہ مرکوز کرنے کا دکھاوا کر سکتے ہیں کریں گے. 290 00:16:20,000 --> 00:16:23,000 لات ہے. یہ بجائے مناسب ہے، اصل میں. 291 00:16:23,000 --> 00:16:26,000 ہم وہاں جا رہے ہیں. 292 00:16:26,000 --> 00:16:30,000 پوائنٹ بنا دیا. 293 00:16:30,000 --> 00:16:34,000 >> یہ اگرچہ یہ بھی ہے شرمندا، یہ بھی بڑی الجھن کے ذرائع میں سے ایک ہے 294 00:16:34,000 --> 00:16:38,000 پروگرام جو کیڑے ہے لکھنے جب کیونکہ وہ اپنے لگتے 295 00:16:38,000 --> 00:16:40,000 کبھی کبھی دیر میں صرف ایک بار. 296 00:16:40,000 --> 00:16:43,000 حقیقت یہ ہے کہ یہاں تک کہ اگر آپ کوڈ مکمل طور پر ٹوٹ گیا ہے، 297 00:16:43,000 --> 00:16:46,000 یہ صرف مکمل طور پر ہو سکتا ہے تھوڑی دیر میں ایک بار ٹوٹ 298 00:16:46,000 --> 00:16:49,000 کیونکہ کبھی کبھی، بنیادی طور پر کیا ہوتا ہے آپریٹنگ سسٹم مختص ہے 299 00:16:49,000 --> 00:16:52,000 آپ سے ایک چھوٹی سی میموری اصل میں کسی بھی وجہ سے کی ضرورت ہے، 300 00:16:52,000 --> 00:16:57,000 اور اسی طرح کی کوئی اور 16 حروف کے اپنے حصہ کے بعد میموری استعمال کر رہا ہے، 301 00:16:57,000 --> 00:17:01,000 اگر ایسا ہے تو آپ کو 17، 18، 19، جو کچھ بھی، یہ اتنا بڑا سودا نہیں ہے. 302 00:17:01,000 --> 00:17:04,000 اب، کمپیوٹر، یہاں تک کہ اگر یہ اس نقطہ پر کریش نہیں ہوتا 303 00:17:04,000 --> 00:17:09,000 بائٹ تعداد 17 یا 18 یا 19 آخر میں کچھ اور کے لئے استعمال کر سکتے ہیں، 304 00:17:09,000 --> 00:17:14,000 جس میں آپ کے ڈیٹا کا کہنا ہے کہ تم وہاں رکھ کب ضرورت سے زیادہ ہی سہی، 305 00:17:14,000 --> 00:17:18,000 ادلیکھت کسی اور تقریب کی طرف سے ممکنہ طور پر حاصل کی جا رہی ہے. 306 00:17:18,000 --> 00:17:21,000 یہ برقرار رہنے کے لئے ضروری نہیں ہے چل رہا ہے، 307 00:17:21,000 --> 00:17:23,000 لیکن یہ ضروری seg غلطی نہیں کا سبب بن جائے گا. 308 00:17:23,000 --> 00:17:26,000 لیکن اس معاملے میں، میں نے کافی حروف فراہم 309 00:17:26,000 --> 00:17:29,000 کہ میں بنیادی طور پر میموری کا طبقہ سے تجاوز کر گئی، اور بام، 310 00:17:29,000 --> 00:17:33,000 آپریٹنگ سسٹم نے کہا کہ، "معاف کیجئے گا، یہ اچھا نہیں، انقطاع کی غلطی ہے." 311 00:17:33,000 --> 00:17:38,000 >> اور اب اگر میرا میں یہاں رہتا ڈائرکٹری 312 00:17:38,000 --> 00:17:40,000 نوٹس ہے کہ میں نے یہ فائل یہاں ہے، کور. 313 00:17:40,000 --> 00:17:42,000 یاد رکھیں کہ یہ دوبارہ کور ڈمپ کہا جاتا ہے. 314 00:17:42,000 --> 00:17:46,000 یہ بنیادی طور پر ایک فائل ہے جو کہ آپ کے پروگرام کی میموری کے مواد پر مشتمل ہے 315 00:17:46,000 --> 00:17:48,000 نقطہ جس میں گر کر تباہ ہوگیا، 316 00:17:48,000 --> 00:17:51,000 ایک چھوٹی سی مثال کے طور پر کرنے کی کوشش صرف اور کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں 317 00:17:51,000 --> 00:17:57,000 اور scanf3 پر gdb اور پھر چلانے نامی ایک تہائی بنیادی دلیل کی وضاحت کریں، 318 00:17:57,000 --> 00:18:01,000 اور یہاں دیکھیں گے کہ اگر میں کوڈ کی فہرست، 319 00:18:01,000 --> 00:18:06,000 ہم gdb کے ساتھ معمول کے مطابق قابل ہو جائے اس پروگرام کے ذریعے چلنا شروع کریں گے، 320 00:18:06,000 --> 00:18:10,000 اور میں اسے چلائیں اور جیسے ہی جیسا کہ میں نے مارا میں قدم کمانڈ کے ساتھ کر سکتے ہیں gdb 321 00:18:10,000 --> 00:18:13,000 جیسے ہی مجھے ایک بہت بڑا سٹرنگ میں ٹائپ کرنے کے بعد ممکنہ طور پر چھوٹی گاڑی لائن مارا، 322 00:18:13,000 --> 00:18:16,000 میں اصل میں یہاں کی شناخت کرنے کے قابل ہو جائے گا. 323 00:18:16,000 --> 00:18:19,000 ، تاہم، اس پر بنیادی dumps کے لحاظ سے حصے میں 324 00:18:19,000 --> 00:18:22,000 اور پسند تا کہ آپ کے ارد گرد اصل میں اندر بنیادی ڈمپ کے پرہار کر سکتے ہیں 325 00:18:22,000 --> 00:18:27,000 اور کیا لائن پروگرام آپ ناکام رہے. 326 00:18:27,000 --> 00:18:32,000 تو اشارہ پر اور پتے پر کوئی سوال؟ 327 00:18:32,000 --> 00:18:36,000 کیونکہ آج، ہم نے کے لئے حاصل کی جاچکی ہے کہ ان چیزوں کا کوئی وجود لینے شروع کرنے جا رہے ہیں 328 00:18:36,000 --> 00:18:40,000 اور ہم جانتے ہیں کہ بالکل کہ وہ کیا ہیں. 329 00:18:40,000 --> 00:18:42,000 جی ہاں. 330 00:18:42,000 --> 00:18:46,000 >> [Student کی] کیسے آئے ایمپرسینڈ اگلے ڈال حصہ نہیں تھا 331 00:18:46,000 --> 00:18:48,000 اچھا سوال ہے. 332 00:18:48,000 --> 00:18:51,000 میں آیا کیسے ایک ایمپرسینڈ کردار صف کے ساتھ ڈال جیسا کہ میں نے پہلے کیا نہیں ہے 333 00:18:51,000 --> 00:18:53,000 ہمارے مثالوں کی سب سے زیادہ کے ساتھ؟ 334 00:18:53,000 --> 00:18:55,000 مختصر جواب یہ ہے arrays تھوڑا خاص ہو. 335 00:18:55,000 --> 00:18:59,000 تم نے واقعی میں ایک ایڈریس کے طور پر تقریبا ایک بفر سوچ سکتے ہیں، 336 00:18:59,000 --> 00:19:03,000 اور یہ صرف اس لئے معاملہ ہوتا ہے کہ مربع بریکٹ سنکیتن 337 00:19:03,000 --> 00:19:06,000 ایک سہولت ہے تاکہ ہم کو بریکٹ 0، 1 بریکٹ میں جا سکتے ہیں، 338 00:19:06,000 --> 00:19:10,000 2 * سنکیتن کا استعمال کرنے کے لئے بغیر بریکٹ،. 339 00:19:10,000 --> 00:19:13,000 یہ ایک سفید جھوٹ کے تھوڑا سا ہے کیونکہ arrays اور اشارہ 340 00:19:13,000 --> 00:19:17,000 حقیقت میں ہیں، تھوڑا سا مختلف ہے، لیکن وہ ہمیشہ اکثر نہیں بلکہ interchangeably استعمال کیا جا سکتا ہے. 341 00:19:17,000 --> 00:19:21,000 مختصر میں، جب ایک تقریب میموری کا ایک حصہ پوائنٹر توقع ہے 342 00:19:21,000 --> 00:19:24,000 کیا تم یہ یا تو ایک ایڈریس ہے جو کہ آپ نے malloc کی طرف سے واپس کیا گیا ہے وہ یہ کہ یہ منتقل کر سکتی ہیں، 343 00:19:24,000 --> 00:19:29,000 اور ہم malloc بہت پہلے دوبارہ دیکھ، یا گے تم نے یہ ایک صف کے نام پر منتقل کر سکتی ہیں. 344 00:19:29,000 --> 00:19:32,000 آپ arrays کے ساتھ ایمپرسینڈ کرنا نہیں ہے، کیونکہ وہ پہلے سے ہی ہیں 345 00:19:32,000 --> 00:19:34,000 بنیادی طور پر پتے کی طرح. 346 00:19:34,000 --> 00:19:36,000 یہ ایک رعایت ہے. 347 00:19:36,000 --> 00:19:39,000 مربع بریکٹ انہیں خصوصی بنا. 348 00:19:39,000 --> 00:19:41,000 >> ایک ایمپرسینڈ آپ بفر پر آگے ڈال سکتے ہیں؟ 349 00:19:41,000 --> 00:19:43,000 اس معاملے میں نہیں. 350 00:19:43,000 --> 00:19:46,000 یہ اس لئے کہ ایک بار پھر، اس کونے کیس کی کام نہیں کریں گے 351 00:19:46,000 --> 00:19:49,000 جہاں arrays بہت اصل میں نہیں ہیں پتے. 352 00:19:49,000 --> 00:19:54,000 لیکن ہم واپس کی دیگر مثالوں کے ساتھ شاید اس سے پہلے کہ طویل آئے گی. 353 00:19:54,000 --> 00:19:56,000 چلو، یہاں ایک مسئلہ کو حل کرنے کی کوشش کریں. 354 00:19:56,000 --> 00:20:00,000 ہم ایک آنکڑا ڈھانچہ ہے کہ ہم نے کچھ وقت کے لئے ایک صف کے طور پر جانا جاتا کا استعمال کرتے ہوئے ہے. 355 00:20:00,000 --> 00:20:02,000 پوائنٹ میں کیس ہے جو ہم نے ابھی تھا. 356 00:20:02,000 --> 00:20:04,000 لیکن arrays کچھ upsides اور downsides ہے. 357 00:20:04,000 --> 00:20:06,000 Arrays اچھے کیوں ہو؟ 358 00:20:06,000 --> 00:20:11,000 ایک بات یہ ہے کہ آپ کی پسند کی حد تک آپ چاہیں arrays arrays کے بارے میں کیا ہے؟ 359 00:20:11,000 --> 00:20:13,000 ان کے بارے میں آسان کیا ہے؟ مجبور کیا ہے؟ 360 00:20:13,000 --> 00:20:18,000 ہم پہلی جگہ میں کیوں ان کے متعارف کرانے کیا؟ 361 00:20:18,000 --> 00:20:20,000 جی ہاں. 362 00:20:20,000 --> 00:20:27,000 [Student کی] انہوں نے اعداد و شمار کے ایک بہت محفوظ ہے، اور آپ کو ایک پوری چیز کا استعمال کرنے کی ضرورت نہیں ہے کر سکتے ہیں. 363 00:20:27,000 --> 00:20:29,000 آپ ایک حصے کو استعمال کر سکتے ہیں. 364 00:20:29,000 --> 00:20:32,000 اچھا، ایک صف آپ کو ڈیٹا کی ایک بہت محفوظ کر سکتے ہیں کے ساتھ 365 00:20:32,000 --> 00:20:35,000 اور آپ اس کا استعمال کرنے کے لئے ضروری نہیں ہے، تو آپ overallocate کر سکتے ہیں، 366 00:20:35,000 --> 00:20:39,000 جو آسان ہو گا اگر آپ پہلے سے نہیں جانتے کہ کس طرح کچھ کرنے کی توقع کے بہت سے تو ہو سکتا ہے. 367 00:20:39,000 --> 00:20:41,000 >> GetString کی ایک بہترین مثال ہے. 368 00:20:41,000 --> 00:20:44,000 GetString، ہماری طرف سے لکھا گیا ہے، کوئی خیال نہیں ہے کتنے حروف کی توقع ہے، 369 00:20:44,000 --> 00:20:48,000 حقیقت یہ ہے کہ ہم ملحق میموری کی مقدار مختص کر سکتے ہیں تو اچھا ہے. 370 00:20:48,000 --> 00:20:51,000 Arrays بھی ایک مسئلہ ہے اب ہم ایک جوڑے ہفتے پہلے دیکھا کو حل 371 00:20:51,000 --> 00:20:54,000 جہاں آپ کا کوڈ بہت کم ڈیزائن کیا کچھ میں devolve شروع ہوتا ہے. 372 00:20:54,000 --> 00:20:57,000 کو یاد ہوگا کہ میں ایک طالب علم کہتے ڈیوڈ ڈھانچے، 373 00:20:57,000 --> 00:21:00,000 اور پھر اصل میں ایک متبادل تھا، تاہم، 374 00:21:00,000 --> 00:21:04,000 نامی ایک متغیر کا نام اور دوسرے گھر، مجھے لگتا ہے کہ، نامی متغیر، 375 00:21:04,000 --> 00:21:08,000 اور ایک دوسرے سے ملاقات کی ID کیونکہ میں نے اس کہانی میں تو کچھ اور متعارف کرانے کے لئے چاہتا تھا متغیر 376 00:21:08,000 --> 00:21:11,000 پروگرام میں روب پسند ہے، تو میں ایک منٹ انتظار کرنے کا فیصلہ کیا، 377 00:21:11,000 --> 00:21:13,000 میں ان متغیرات میں نام تبدیل کرنے کی ضرورت ہے. 378 00:21:13,000 --> 00:21:16,000 چلو NAME1 میری، ID1، house1 کہتے ہیں. 379 00:21:16,000 --> 00:21:20,000 چلو روب NAME2، house2، ID2 کہتے ہیں. 380 00:21:20,000 --> 00:21:22,000 لیکن اس وقت کیا ٹومی کے بارے میں ایک منٹ انتظار ہے؟ 381 00:21:22,000 --> 00:21:24,000 اس کے بعد ہم نے تین متغیر تھا. 382 00:21:24,000 --> 00:21:27,000 ہم کسی اور متغیرات میں سے چار سیٹ متعارف کرائی ہے. 383 00:21:27,000 --> 00:21:30,000 دنیا گندا بہت جلد حاصل کرنے کے لئے شروع کر دیا، 384 00:21:30,000 --> 00:21:33,000 تو ہم structs متعارف کرایا، اور جو ایک struct کے بارے میں مجبور ہے؟ 385 00:21:33,000 --> 00:21:39,000 C struct کیا آپ کو کیا کرتا ہے؟ 386 00:21:39,000 --> 00:21:42,000 آج یہ واقعی عجیب ہے. 387 00:21:42,000 --> 00:21:44,000 کیا >> [اشراوی طالب علم کے جواب] 388 00:21:44,000 --> 00:21:47,000 جی ہاں، خاص طور پر، typedef آپ کو ایک نئے اعداد و شمار کی قسم کی تخلیق کرنے کی اجازت دیتا ہے، 389 00:21:47,000 --> 00:21:51,000 اور struct، struct مطلوبہ الفاظ، آپ encapsulate کرنے کی اجازت دیتا ہے ہے 390 00:21:51,000 --> 00:21:54,000 ڈیٹا کے conceptually سے متعلق ایک ساتھ مل کر ٹکڑے ٹکڑے 391 00:21:54,000 --> 00:21:56,000 اور اس کے بعد ان کے ایک طالب علم کی طرح کچھ فون کریں. 392 00:21:56,000 --> 00:21:58,000 >> وہ اچھا تھا کیونکہ اب ہم مثال کر سکتے ہیں 393 00:21:58,000 --> 00:22:03,000 ایک متغیر میں ایک طالب علم کی بہت زیادہ قسم کی conceptually مسلسل تصور 394 00:22:03,000 --> 00:22:07,000 بجائے منمانے ایک تار کے لئے ایک، ایک ID کے لئے ایک ہے، اور وغیرہ. 395 00:22:07,000 --> 00:22:10,000 Arrays اچھے ہیں کیونکہ وہ ہمیں اپنے کوڈ کو صفائی شروع کرنے کے لئے کی اجازت دیتے ہیں. 396 00:22:10,000 --> 00:22:13,000 لیکن ایک کمی ایک صف کی کیا ہے؟ 397 00:22:13,000 --> 00:22:15,000 تم کیا نہیں کر سکتے ہیں؟ جی ہاں. 398 00:22:15,000 --> 00:22:17,000 [Student کی] آپ کو معلوم ہے کہ کتنا بڑا ہے. 399 00:22:17,000 --> 00:22:19,000 تاکہ آپ کو معلوم ہے کہ کتنا بڑا ہے ہے، یہ درد کی طرح ہے. 400 00:22:19,000 --> 00:22:21,000 تم میں سے وہ لوگ پہلے پروگرامنگ کے تجربے کے ساتھ یہ جانتے ہو، زبانوں کا ایک بہت میں 401 00:22:21,000 --> 00:22:24,000 جاوا کی طرح، آپ کو میموری کا ایک حصہ ہے، خاص طور پر ایک صف پوچھ سکتے ہیں، 402 00:22:24,000 --> 00:22:28,000 آپ کتنا بڑا ہے، لمبائی، جائداد، اس سے بات کرنے کے ساتھ، اور یہ واقعی بہت آسان ہے. 403 00:22:28,000 --> 00:22:32,000 C میں، آپ ایک کلی صف پر بھی strlen نہیں کہہ سکتے ہیں 404 00:22:32,000 --> 00:22:35,000 strlen کیونکہ لفظ کا مطلب ہے، صرف ڈور کے لئے ہے، 405 00:22:35,000 --> 00:22:39,000 اور آپ کو اس انسانی کنونشن کی وجہ سے ایک تار کی لمبائی اعداد و شمار کر سکتے ہیں 406 00:22:39,000 --> 00:22:43,000 ایک \ 0، لیکن ایک صف ہونے کے زیادہ generically، میموری کا ایک حصہ ہے. 407 00:22:43,000 --> 00:22:46,000 اگر یہ ints کی ایک صف ہے، وہاں کوئی خاص کردار نہیں ہے 408 00:22:46,000 --> 00:22:48,000 آخر میں آپ کے لئے انتظار کر رہے ہیں. 409 00:22:48,000 --> 00:22:50,000 تم نے ایک صف کی لمبائی یاد ہے. 410 00:22:50,000 --> 00:22:54,000 ایک صف کی ایک اور کمی خود GetString میں اس کا سر پالا. 411 00:22:54,000 --> 00:22:59,000 ایک صف کی ایک اور منفی پہلو کیا ہے؟ 412 00:22:59,000 --> 00:23:01,000 سر، صرف میں اور تم مجھے آج. 413 00:23:01,000 --> 00:23:04,000 [اشراوی طالب علم کے جواب] >> یہ کیا ہے؟ 414 00:23:04,000 --> 00:23:06,000 یہ اسٹیک اعلان کیا ہے. 415 00:23:06,000 --> 00:23:09,000 ٹھیک ہے، اسٹیک کا اعلان کر دیا. ہے کہ آپ کو پسند کیوں نہیں کرتے؟ 416 00:23:09,000 --> 00:23:13,000 [Student کی] کیونکہ یہ reused ہو جاتا ہے. 417 00:23:13,000 --> 00:23:15,000 یہ reused ہو جاتا ہے. 418 00:23:15,000 --> 00:23:18,000 ٹھیک ہے، اگر آپ کو ایک صف میموری مختص کرنے کے لئے استعمال، 419 00:23:18,000 --> 00:23:21,000 آپ، مثال کے طور پر نہیں، اس کو واپس کر سکتے ہیں کیونکہ یہ اسٹیک ہے. 420 00:23:21,000 --> 00:23:23,000 ٹھیک ہے، یہ ایک نقصان ہے. 421 00:23:23,000 --> 00:23:25,000 اور کس طرح ایک کے بارے میں ایک صف کے ساتھ دوسرے میں کیا خیال ہے؟ 422 00:23:25,000 --> 00:23:28,000 ایک بار جب آپ اسے مختص، آپ کی قسم اگر آپ کو مزید جگہ کی ضرورت ہے خراب ہے 423 00:23:28,000 --> 00:23:30,000 سے کہ صف ہے. 424 00:23:30,000 --> 00:23:34,000 >> پھر ہم نے متعارف کرایا، یاد malloc، جو ہمیں کو متحرک طور پر میموری مختص کرنے کی صلاحیت دے دی. 425 00:23:34,000 --> 00:23:37,000 لیکن کیا اگر ہم ایک مختلف دنیا مکمل طور پر کرنے کی کوشش کی؟ 426 00:23:37,000 --> 00:23:40,000 کیا ہوگا اگر ہم ان مسائل کے ایک جوڑے کو حل کرنے چاہتے تھے 427 00:23:40,000 --> 00:23:45,000 تو ہم بجائے میرا قلم سو یہاں گر گیا ہے 428 00:23:45,000 --> 00:23:51,000 کیا ہوا اگر ہم بجائے بنیادی طور پر ایک ایسی دنیا ہے کہ اس طرح نہیں رہ گیا ہے پیدا کرنا چاہتا تھا؟ 429 00:23:51,000 --> 00:23:56,000 یہ ایک صف ہے، اور ظاہر کی، اس قسم کی خراب ایک بار ہم نے صف کے آخر کو مارا، 430 00:23:56,000 --> 00:24:00,000 اور اب میں نہیں، دوسرے عددی یا دوسرے کردار کے لئے جگہ ہے. 431 00:24:00,000 --> 00:24:03,000 کیا ہوگا اگر ہم قسم کی preemptively اچھی طرح کہنا، ہم آرام نہیں کیوں 432 00:24:03,000 --> 00:24:07,000 اس کی ضرورت ہے کہ تمام میموری کے ان حصوں کو واپس ملحق کی حمایت، 433 00:24:07,000 --> 00:24:10,000 اور کیوں نہیں کرتے ہیں، جب میں ایک int یا چار کی ضرورت ہے، 434 00:24:10,000 --> 00:24:12,000 صرف کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ان میں سے ایک کے لئے جگہ دیتے ہیں؟ 435 00:24:12,000 --> 00:24:14,000 اور جب میں نے ایک دوسرے کی ضرورت ہے، مجھے کسی دوسرے کی جگہ دے، 436 00:24:14,000 --> 00:24:16,000 اور جب میں نے ایک دوسرے کی ضرورت ہے، مجھے کسی دوسرے کی جگہ دے. 437 00:24:16,000 --> 00:24:19,000 جس کا فائدہ اب کہ کسی اور اگر ہے 438 00:24:19,000 --> 00:24:21,000 یہاں میموری، کوئی بڑی بات نہیں لیتا ہے. 439 00:24:21,000 --> 00:24:25,000 میں میموری کی اس اضافی حصہ یہاں اور پھر اس سے لے لیں گے. 440 00:24:25,000 --> 00:24:28,000 >> اب، صرف یہاں پکڑنے ہے کہ یہ تقریبا جیسے میں نے محسوس ہوتا ہے 441 00:24:28,000 --> 00:24:30,000 مختلف متغیرات میں سے ایک مکمل جھوبڈ. 442 00:24:30,000 --> 00:24:33,000 یہ پانچ مختلف ممکنہ طور پر متغیر کی طرح لگ رہا ہے. 443 00:24:33,000 --> 00:24:36,000 لیکن کیا اگر ہم ڈور سے ایک خیال کی چوری 444 00:24:36,000 --> 00:24:41,000 ہم کسی نہ کسی طرح جس ان چیزوں کو ایک ساتھ conceptually لنک، اور کیا ہوا اگر میں نے یہ کیا ہے؟ 445 00:24:41,000 --> 00:24:44,000 یہ میری بہت غیر تسلی بخش تیار تیر ہے. 446 00:24:44,000 --> 00:24:46,000 مان لیں لیکن اس میموری کے ان حصوں میں سے ہر ایک 447 00:24:46,000 --> 00:24:52,000 دوسرے کی طرف اشارہ کیا ہے، اور اس آدمی کو، جو اس کے حق میں نہیں بھائی ہے، 448 00:24:52,000 --> 00:24:54,000 ایسی کوئی تیر ہے. 449 00:24:54,000 --> 00:24:56,000 یہ حقیقت یہ ہے کہ ایک سے منسلک فہرست کہتے ہیں میں ہے. 450 00:24:56,000 --> 00:25:00,000 یہ ایک نئے اعداد و شمار کا ڈھانچہ ہے کہ ہمیں میموری کا ایک حصہ مختص کرنے کی اجازت دیتا ہے ہے، 451 00:25:00,000 --> 00:25:03,000 تو دوسرے تو دوسرے تو دوسرے کسی بھی وقت ہم چاہتے ہیں 452 00:25:03,000 --> 00:25:07,000 ایک پروگرام کے دوران، اور ہمیں یاد ہے کہ انہوں نے یہ سب کسی نہ کسی طرح متعلقہ 453 00:25:07,000 --> 00:25:11,000 لفظی chaining کی طرف سے ان کے ساتھ مل کر، اور ہم اس pictorially یہاں ایک تیر کے ساتھ کیا تھا. 454 00:25:11,000 --> 00:25:15,000 لیکن، کیا کوڈ میں طریقہ کار ہے جس کے ذریعے آپ کسی نہ کسی طرح سے رابطہ قائم کر سکتے ہیں کریں گے، 455 00:25:15,000 --> 00:25:20,000 تقریبا سکریچ کی طرح، ایک دوسرے حصہ حصہ ہے؟ 456 00:25:20,000 --> 00:25:22,000 ہم نے ایک پوائنٹر استعمال، ٹھیک کر سکتا تھا؟ 457 00:25:22,000 --> 00:25:25,000 کیونکہ، واقعی تیر جو سب سے اوپر بائیں مربع سے جا رہا ہے 458 00:25:25,000 --> 00:25:31,000 اس سے اس لڑکے کو اس مربع کے اندر شامل کر سکتے ہیں 459 00:25:31,000 --> 00:25:34,000 کچھ نہ صرف ints، کچھ نہ صرف چار، لیکن کیا ہوا اگر میں واقعی مختص 460 00:25:34,000 --> 00:25:37,000 ایک چھوٹی سی اضافی جگہ، تاکہ اب 461 00:25:37,000 --> 00:25:41,000 میموری کا میری حصوں میں سے ہر ایک، اگرچہ یہ آپ کے وزٹرز کا ریکارڈ رکھا لاگت کی جا رہی ہے، 462 00:25:41,000 --> 00:25:45,000 اب تھوڑا زیادہ آئتاکار لگتا ہے جہاں میموری کی مقدار میں سے ایک 463 00:25:45,000 --> 00:25:47,000 ایک نمبر کے لئے استعمال کیا جاتا ہے، نمبر 1 کی طرح 464 00:25:47,000 --> 00:25:50,000 اور پھر اگر اس آدمی کو نمبر 2 ذخیرہ، 465 00:25:50,000 --> 00:25:52,000 میموری کی یہ دوسری حصہ ایک تیر کے لئے استعمال کیا جاتا ہے، 466 00:25:52,000 --> 00:25:54,000 یا اس سے زیادہ concretely پوائنٹر ہے. 467 00:25:54,000 --> 00:25:59,000 لگتا ہے کہ اور میں یہاں پر نمبر 3 جب میں یہ اس آدمی کی طرف اشارہ کرنے کے لئے استعمال کرتے ہیں جمع، 468 00:25:59,000 --> 00:26:02,000 اور اب اس آدمی کو، لگتا ہے میں صرف میموری کے تین ایسے حصوں کی ضرورت ہے. 469 00:26:02,000 --> 00:26:05,000 میں اس کے ذریعے ایک لکیر کھینچنا، شہوت انگیز null اشارہ کریں گے. 470 00:26:05,000 --> 00:26:07,000 کوئی اضافی کردار ہے. 471 00:26:07,000 --> 00:26:10,000 >> درحقیقت یہ ہے کہ ہم کس طرح عمل درآمد کے بارے میں جا سکتے ہیں 472 00:26:10,000 --> 00:26:12,000 کچھ ہے کہ ایک سے منسلک فہرست کہتے ہیں. 473 00:26:12,000 --> 00:26:18,000 ایک لنک کی فہرست میں ایک نیا آنکڑا ڈھانچہ ہے، اور یہ ایک نکلنے کی طرف پتھر ہے 474 00:26:18,000 --> 00:26:21,000 بہت fancier ڈیٹا ڈھانچے ہے کہ مسائل کو حل کرنے کی شروع 475 00:26:21,000 --> 00:26:23,000 مسائل فیس بک کی قسم کی لائنیں اور گوگل قسم کے مسائل کے ساتھ ساتھ 476 00:26:23,000 --> 00:26:26,000 آپ کو بڑی ڈیٹا سیٹ کہاں سے ہے، اور یہ اب کوئی یہ کاٹتا ہے 477 00:26:26,000 --> 00:26:29,000 سب کچھ کو contiguously جمع اور لکیری تلاش کی طرح کچھ کا استعمال 478 00:26:29,000 --> 00:26:31,000 یا بائنری تلاش کی طرح کچھ بھی ہے. 479 00:26:31,000 --> 00:26:33,000 آپ کے پاس بھی بہتر چلانے اوقات چاہتے ہیں. 480 00:26:33,000 --> 00:26:37,000 اصل میں، ہم نے اس ہفتے کے آخر یا آئندہ کے بارے میں مقدس Grails میں سے ایک سے بات کروں گا 481 00:26:37,000 --> 00:26:41,000 ایک الگورتھم چل رہا جن کا وقت مسلسل جاری ہے. 482 00:26:41,000 --> 00:26:44,000 دوسرے الفاظ میں، وہ ہمیشہ وقت کے اسی رقم کوئی بات نہیں لیتا ہے 483 00:26:44,000 --> 00:26:47,000 ان پٹ کتنا بڑا ہے، اور یہ کہ مجبور یقینا ہو گی، 484 00:26:47,000 --> 00:26:49,000 سے بھی زیادہ لوگارتمی کچھ سے. 485 00:26:49,000 --> 00:26:51,000 سکرین پر کیا ہے؟ 486 00:26:51,000 --> 00:26:55,000 rectangles میں سے ہر ایک بالکل وہی ہے جو میں صرف ہاتھ سے متوجہ. 487 00:26:55,000 --> 00:26:59,000 لیکن بات بائیں طرف ایک خاص متغیر ہے. 488 00:26:59,000 --> 00:27:02,000 یہ ایک واحد پوائنٹر ہو جائے گا کیونکہ ایک پکڑ لیا ہے 489 00:27:02,000 --> 00:27:04,000 ایک لنک کی فہرست کے ساتھ کے طور پر ان چیزوں کو کہا جاتا ہے، 490 00:27:04,000 --> 00:27:09,000 یہ ہے کہ آپ کو منسلک فہرست کے ایک سرے پر پھانسی پر ہے. 491 00:27:09,000 --> 00:27:13,000 >> صرف ایک تار کے ساتھ پسند ہے، آپ کو پہلے چار کا پتہ معلوم ہے. 492 00:27:13,000 --> 00:27:15,000 منسلک کی فہرست کے لئے ایک ہی بات ہے. 493 00:27:15,000 --> 00:27:19,000 آپ میموری کے پہلے حصہ کا پتہ معلوم ہے 494 00:27:19,000 --> 00:27:25,000 کیونکہ وہاں سے، آپ کو ہر ایک دوسرے تک رسائی حاصل کر سکتے ہیں. 495 00:27:25,000 --> 00:27:27,000 کمی. 496 00:27:27,000 --> 00:27:30,000 ہم کو متحرک رکھنے کے اس استرتا کے لئے کیا قیمت ادا کر رہے ہیں 497 00:27:30,000 --> 00:27:34,000 کافی ڈیٹا ڈھانچہ ہے کہ اگر ہم پہلے سے کہیں زیادہ میموری کی ضرورت ہے، ٹھیک ہے 498 00:27:34,000 --> 00:27:37,000 صرف ایک حصہ مختص اور پوائنٹر کی طرف سے اپنی طرف متوجہ 499 00:27:37,000 --> 00:27:39,000 فہرست کے نئے دم ہے؟ 500 00:27:39,000 --> 00:27:41,000 جی ہاں. 501 00:27:41,000 --> 00:27:43,000 [Student کی] اس کے بارے میں دو بار سے زیادہ کے طور پر جگہ لیتا ہے. 502 00:27:43,000 --> 00:27:45,000 یہ دو بار زیادہ سے زیادہ جگہ لیتا ہے، تو ضرور ایک کمی ہے، اور ہم نے یہ دیکھا ہے 503 00:27:45,000 --> 00:27:48,000 وقت اور جگہ اور لچک کے درمیان پہلے tradeoff 504 00:27:48,000 --> 00:27:51,000 اب تک، جہاں ہم نے ان کی تعداد میں سے ہر ایک کے لئے 32 بٹیں نہیں کی ضرورت ہے. 505 00:27:51,000 --> 00:27:57,000 ہم واقعی 64، 32 نمبر کے لئے اور منحصر ہے اور اس کی 32 کی ضرورت ہے. 506 00:27:57,000 --> 00:27:59,000 لیکن ارے، میں رام کی 2 گیگا ہے. 507 00:27:59,000 --> 00:28:02,000 دوسرے 32 یہاں اور یہاں بٹس کو شامل کرنے سے ہے کہ ایک معاہدے کے بڑے نہیں لگتا ہے. 508 00:28:02,000 --> 00:28:05,000 لیکن بڑی ڈیٹا سیٹ کے لئے، یہ ضرور لفظی دو بار زیادہ سے زیادہ جوڑتا ہے. 509 00:28:05,000 --> 00:28:09,000 اب ایک اور منفی پہلو کیا ہے، یا ہم کیا خصوصیت دیتے، 510 00:28:09,000 --> 00:28:12,000 اگر ہم ایک لنک کی فہرست اور ایک صف کے ساتھ نہیں چیزوں کی فہرست کی نمائندگی کرتی ہیں؟ 511 00:28:12,000 --> 00:28:14,000 [Student کی] آپ اسے گزرنا نہیں پیچھے کی طرف کر سکتے ہیں. 512 00:28:14,000 --> 00:28:16,000 تو تم اس کے پیچھے کی طرف نہیں گزرنا کر سکتے ہیں، آپ کو اس قسم کی مصیبت میں ہیں اگر تم چل رہے ہو 513 00:28:16,000 --> 00:28:19,000 بائیں سے دائیں لوپ یا دیر لوپ کے لئے ایک کا استعمال کرتے ہوئے 514 00:28:19,000 --> 00:28:21,000 اور پھر آپ کو احساس ہوتا ہے "اوہ، میں فہرست کے آغاز پر واپس جانا چاہتے ہیں." 515 00:28:21,000 --> 00:28:26,000 آپ کیونکہ یہ اشارہ نہ صرف بائیں سے دائیں جانب جا سکتے ہیں کے طور پر تیر سے ظاہر ہوتا ہے. 516 00:28:26,000 --> 00:28:29,000 >> اب، آپ کو دوسرے متغیر کے ساتھ فہرست کے آغاز کو یاد کر سکتے ہیں، 517 00:28:29,000 --> 00:28:31,000 لیکن اس کو ذہن میں رکھنے کے لئے پیچیدگی ہے. 518 00:28:31,000 --> 00:28:35,000 ایک صف، کوئی بات نہیں آپ کس حد تک جا، آپ ہمیشہ بغیر، بغیر، بغیر، بغیر کر سکتے ہیں 519 00:28:35,000 --> 00:28:37,000 اور جہاں سے تم آئے واپس چلے جاؤ. 520 00:28:37,000 --> 00:28:40,000 یہاں ایک اور منفی پہلو کیا ہے؟ جی ہاں. 521 00:28:40,000 --> 00:28:43,000 [اشراوی طالب علم سوال] 522 00:28:43,000 --> 00:28:47,000 تم بہت، آپ کر سکتے تھے اصل میں صرف ایک ڈیٹا بلایا دوگنا منسلک کی فہرست ڈھانچے کی تجویز پیش کی، 523 00:28:47,000 --> 00:28:50,000 اور بیشک آپ کو ان rectangles میں سے ہر ایک دوسرے پوائنٹر شامل کریں گے 524 00:28:50,000 --> 00:28:53,000 جن میں سے میں سے ہے جو دوسری سمت جاتا ہے، الٹا 525 00:28:53,000 --> 00:28:55,000 اب آپ آگے اور پیچھے گزرنا کر سکتے ہیں، 526 00:28:55,000 --> 00:28:59,000 جن میں سے کمی اب تم زیادہ میموری کے طور پر تین بار کا استعمال کرتے ہوئے جیسا کہ ہم کرتے تھے 527 00:28:59,000 --> 00:29:04,000 اور کوڈ کے معاملے میں پیچیدگی انہوں نے مزید کہا آپ اسے حق حاصل کرنے کے لئے لکھنے کے لئے ہے. 528 00:29:04,000 --> 00:29:08,000 لیکن یہ سب شاید بہت مناسب tradeoffs ہیں، اگر الٹ زیادہ اہم ہے. 529 00:29:08,000 --> 00:29:10,000 جی ہاں. 530 00:29:10,000 --> 00:29:12,000 [Student کی] آپ بھی ایک 2D منسلک فہرست کی ضرورت نہیں کر سکتے ہیں. 531 00:29:12,000 --> 00:29:16,000 اچھا، تم نے واقعی میں ایک 2D منسلک فہرست نہیں ہے کر سکتے ہیں. 532 00:29:16,000 --> 00:29:18,000 آپ کر سکتے ہیں. یہ تقریبا ایک صف کے طور پر کے طور پر آسان نہیں ہے. 533 00:29:18,000 --> 00:29:21,000 ایک صف کی طرح، آپ کو کھلی بریکٹ، بند بریکٹ، کھلی بریکٹ، بریکٹ بند کرتے ہیں، 534 00:29:21,000 --> 00:29:23,000 اور آپ کو کچھ 2 جہتی ساخت ملتا ہے. 535 00:29:23,000 --> 00:29:26,000 آپ کو ایک 2 جہتی منسلک فہرست پر عملدرآمد کر سکتے ہیں 536 00:29:26,000 --> 00:29:29,000 اگر آپ کو اضافہ کے طور پر آپ ان چیزوں میں سے ہر ایک تیسری پوائنٹر ایک تجویز پیش کی کیا 537 00:29:29,000 --> 00:29:34,000 اور اگر آپ کو دوسرے کی فہرست کے بارے میں لگتا ہے کہ آپ میں 3D انداز آنے 538 00:29:34,000 --> 00:29:40,000 اسکرین سے ہم سب کے لئے، جس میں صرف کسی قسم کی ایک اور سلسلہ ہے. 539 00:29:40,000 --> 00:29:45,000 ہم اسے کرتے ہیں، لیکن یہ اوپن بریکٹ، مربع بریکٹ ٹائپ کے طور پر کے طور پر آسان نہیں ہے کر سکتے ہیں. جی ہاں. 540 00:29:45,000 --> 00:29:48,000 [اشراوی طالب علم سوال] 541 00:29:48,000 --> 00:29:50,000 اچھا، تو یہ ایک حقیقی ککر ہے. 542 00:29:50,000 --> 00:29:54,000 >> یہ الگورتھم کہ ہم سے زیادہ ہے، جو اس طرح اوہ، بائنری تلاش pined ہے، 543 00:29:54,000 --> 00:29:57,000 آپ بورڈ پر اعداد کی ایک صف کو تلاش کر سکتے ہیں 544 00:29:57,000 --> 00:30:01,000 یا فون کی کتاب اتنی زیادہ تیزی سے اگر آپ استعمال کرتے ہیں اور فتح کی تقسیم 545 00:30:01,000 --> 00:30:05,000 اور ایک بائنری تلاش الگورتھم، لیکن بائنری تلاش دو مفروضات کی ضرورت ہے. 546 00:30:05,000 --> 00:30:09,000 ایک، کہ اعداد و شمار کے مطابق کیا گیا تھا. 547 00:30:09,000 --> 00:30:11,000 اب، ہم اس کے مطابق شاید رکھ سکتے ہیں، 548 00:30:11,000 --> 00:30:14,000 تو شاید ہے جو ایک تشویش کی بات نہیں ہے، لیکن بائنری تلاش بھی فرض کیا گیا ہے 549 00:30:14,000 --> 00:30:18,000 کہ آپ کو بے ترتیب نمبروں کی فہرست تک رسائی تھی، 550 00:30:18,000 --> 00:30:21,000 اور ایک صف آپ کو بے ترتیب کو رسائی حاصل ہے کرنے کی اجازت دیتا ہے ہے، اور بے ترتیب تک رسائی کی طرف سے، 551 00:30:21,000 --> 00:30:24,000 میرا مطلب ہے کہ اگر آپ نے ایک صف دیا رہے ہیں، کتنا وقت تمہیں لے 552 00:30:24,000 --> 00:30:26,000 0 بریکٹ میں حاصل کرنے کے لئے؟ 553 00:30:26,000 --> 00:30:29,000 ایک آپریشن آپ [0] استعمال کرتے ہیں اور تم وہیں ہو. 554 00:30:29,000 --> 00:30:33,000 کتنے قدم یہ 10 مقام پر حاصل کرنے کے لئے کرتا ہے؟ 555 00:30:33,000 --> 00:30:36,000 ایک قدم، تم صرف [10] جاؤ اور تم وہاں ہو. 556 00:30:36,000 --> 00:30:40,000 کے برعکس کی طرف سے، آپ کو ایک لنک کی فہرست میں 10th عددی کس طرح حاصل کرتے ہیں؟ 557 00:30:40,000 --> 00:30:42,000 آپ کو شروع میں شروع کرنے کے لئے ہے کیونکہ آپ نے صرف یاد کر رہے ہیں 558 00:30:42,000 --> 00:30:45,000 ایک لنک کی فہرست کے ایک تار کی طرح شروع ہے، یاد کیا جا رہا ہے 559 00:30:45,000 --> 00:30:48,000 اپنے پہلے چار کے ایڈریس کی طرف سے، اور یہ کہ 10th int تلاش کرنے کے لئے 560 00:30:48,000 --> 00:30:53,000 یا کہ ایک تار میں 10th کردار آپ پوری چیز کو تلاش کرنے کے لئے ہے. 561 00:30:53,000 --> 00:30:55,000 >> ایک بار پھر، ہم نے ہمارے مسائل کو حل کرنے نہیں رہے ہیں. 562 00:30:55,000 --> 00:31:00,000 ہم نئے متعارف کروا رہے ہیں، لیکن یہ واقعی میں جو آپ کے لئے ڈیزائن کرنے کی کوشش کر رہے ہیں پر منحصر ہے. 563 00:31:00,000 --> 00:31:04,000 اس کو لاگو کرنے کے معاملے میں، ہم نے اس طالب علم کی ساخت سے ایک خیال قرضے لے سکتے ہیں. 564 00:31:04,000 --> 00:31:07,000 خیال نحو اب بہت ہی سوائے ہے، تھوڑا زیادہ تجریدی ہے 565 00:31:07,000 --> 00:31:09,000 سے گھر اور نام اور ID. 566 00:31:09,000 --> 00:31:13,000 لیکن میری تجویز ہے کہ ہم C میں ایک آنکڑا ڈھانچہ کر سکتے ہیں 567 00:31:13,000 --> 00:31:17,000 وہ نوڈ کہا جاتا ہے، سلائڈ پر آخری لفظ تجویز ہے، 568 00:31:17,000 --> 00:31:21,000 ایک نوڈ کے اندر اور ایک نوڈ صرف کمپیوٹر سائنس میں ایک عام کنٹینر ہے. 569 00:31:21,000 --> 00:31:25,000 یہ عام طور پر ایک حلقہ میں یا ایک مربع یا مستطیل جیسا کہ ہم نے کیا کیا ہے کے طور پر تیار کی ہے. 570 00:31:25,000 --> 00:31:27,000 اور اس آنکڑا ڈھانچہ میں، ہم نے ایک int، ن ہے، 571 00:31:27,000 --> 00:31:29,000 تاکہ تعداد میں ذخیرہ کرنا چاہتے ہیں. 572 00:31:29,000 --> 00:31:36,000 لیکن کیا اس دوسری لائن، struct نوڈ اگلے * ہے؟ 573 00:31:36,000 --> 00:31:40,000 یہی وجہ ہے کہ درست ہے، یا اس بات کا کھیل کیا کردار ادا کرتا ہے، 574 00:31:40,000 --> 00:31:42,000 اگرچہ یہ پہلی نظر میں تھوڑا خفیہ ہے؟ 575 00:31:42,000 --> 00:31:44,000 جی ہاں. 576 00:31:44,000 --> 00:31:46,000 [اشراوی طالب علم کے جواب] 577 00:31:46,000 --> 00:31:50,000 بالکل، * لوٹ کی طرح ہے کہ وہ کسی قسم کی ایک پوائنٹر ہے. 578 00:31:50,000 --> 00:31:53,000 اس پوائنٹر کے نام پر منمانے اگلے ہے، 579 00:31:53,000 --> 00:32:00,000 لیکن ہم نے اسے کچھ ہم چاہتے ہیں کہا جاتا ہے، لیکن جو اس پوائنٹر نقطہ کرتا ہے؟ 580 00:32:00,000 --> 00:32:03,000 [Student کی] ایک اور نوڈ >> بالکل، یہ ایک اور اس طرح نوڈ. دکھاتا ہے. 581 00:32:03,000 --> 00:32:05,000 >> اب، یہ سی کے تجسس کی طرح ہے 582 00:32:05,000 --> 00:32:09,000 کو یاد ہوگا کہ C نیچے ایک سنکلک سب سے اوپر کی طرف سے پڑھا ہے، بائیں سے دائیں، 583 00:32:09,000 --> 00:32:13,000 جس کا مطلب ہے کہ اگر یہ جو ہم طالب علم کے ساتھ کیا کیا سے تھوڑا مختلف ہے. 584 00:32:13,000 --> 00:32:16,000 جب ہم نے ایک طالب علم کی وضاحت، ہم اصل میں ایک لفظ نہیں ڈال تھا وہاں. 585 00:32:16,000 --> 00:32:18,000 یہ صرف typedef ہے. 586 00:32:18,000 --> 00:32:20,000 پھر ہم int کی شناخت، سٹرنگ، نام، سٹرنگ گھر تھا، 587 00:32:20,000 --> 00:32:23,000 اور پھر struct کے سب سے نیچے دیئے گئے طالب علم ہے. 588 00:32:23,000 --> 00:32:26,000 یہ اعلان تھوڑا مختلف ہے، کیونکہ 589 00:32:26,000 --> 00:32:28,000 پھر، C کمپائلر تھوڑا گونگا ہے. 590 00:32:28,000 --> 00:32:30,000 یہ صرف اوپر سے نیچے کو پڑھنے کے لئے جا رہا ہے، 591 00:32:30,000 --> 00:32:33,000 اگر ایسا ہے تو یہ 2nd لائن یہاں تک پہنچ 592 00:32:33,000 --> 00:32:37,000 جہاں آئندہ قرار دیا ہے اور اس کو دیکھتا ہے، اوہ، یہاں کے نام سے اگلے متغیر ہے. 593 00:32:37,000 --> 00:32:39,000 یہ struct نوڈ پوائنٹر ہے. 594 00:32:39,000 --> 00:32:42,000 سنکلک احساس کیا struct نوڈ ہے کی جا رہی ہے؟ 595 00:32:42,000 --> 00:32:44,000 میں نے کبھی بھی اس سے پہلے بات کے بارے میں سنا نہیں ہے، 596 00:32:44,000 --> 00:32:47,000 کیونکہ لفظ نوڈ دوسری صورت میں ظاہر نہیں ہو سکتا ہے 597 00:32:47,000 --> 00:32:49,000 نیچے تک، تو اس فالتوپن ہے. 598 00:32:49,000 --> 00:32:53,000 آپ یہاں struct نوڈ کا کہنا ہے، جس سے آپ بعد میں تو قصر کر سکتے ہیں 599 00:32:53,000 --> 00:32:56,000 کیونکہ typedef نیچے یہاں شکریہ، لیکن یہ ہے 600 00:32:56,000 --> 00:33:02,000 ہم اندر ڈھانچے کی ساخت بذات خود حوالہ کر رہے ہیں. 601 00:33:02,000 --> 00:33:05,000 یہ ایک وہاں پکڑ لیا ہے. 602 00:33:05,000 --> 00:33:07,000 >> کچھ دلچسپ مسائل پیدا جا رہے ہیں. 603 00:33:07,000 --> 00:33:09,000 ہم نے اعداد کی ایک فہرست ہے. ہم اس میں کس طرح داخل ہے؟ 604 00:33:09,000 --> 00:33:11,000 ہم اس کو کیسے تلاش کر سکتا ہوں؟ ہم اس سے کس طرح خارج کروں؟ 605 00:33:11,000 --> 00:33:13,000 خاص طور پر اب جب کہ ہم یہ اشارہ کو منظم کرنے کی ہے. 606 00:33:13,000 --> 00:33:15,000 تم نے سوچا کہ اشارہ ذہن موڑنے کی طرح تھے 607 00:33:15,000 --> 00:33:17,000 جب آپ نے ان میں سے صرف ایک ایک int کو پڑھنے کی کوشش کر رہا ہے. 608 00:33:17,000 --> 00:33:20,000 اب ہم ایک مکمل فہرست کی مالیت جوڑتوڑ ہے. 609 00:33:20,000 --> 00:33:22,000 ہماری 5 منٹ کے وقفے کے ہم کیوں نہیں یہاں لے، اور پھر ہم لے کر آتا ہوں 610 00:33:22,000 --> 00:33:34,000 مرحلے پر کچھ لوگ بالکل ایسا. 611 00:33:34,000 --> 00:33:36,000 >> C بہت زیادہ مزہ آئے جب وہ باہر کام کیا ہے ہے. 612 00:33:36,000 --> 00:33:39,000 کون پہلے لفظی کرنا چاہتے ہیں؟ 613 00:33:39,000 --> 00:33:41,000 ٹھیک ہے، پر آئے. آپ پہلے ہیں. 614 00:33:41,000 --> 00:33:44,000 9 کون پسند کریں گے؟ ٹھیک ہے، 9. 615 00:33:44,000 --> 00:33:46,000 9 کے بارے میں کیسے رہے گا؟ 17؟ 616 00:33:46,000 --> 00:33:51,000 ایک چھوٹا سا گروہ ہے. 22 اور اس کے سامنے قطار میں 26. 617 00:33:51,000 --> 00:33:53,000 اور پھر کس طرح کسی کے بارے میں وہاں کی طرف اشارہ کیا جا رہا ہے. 618 00:33:53,000 --> 00:33:57,000 تم 34 ہیں. ٹھیک ہے، 34، آو. 619 00:33:57,000 --> 00:33:59,000 پہلے وہاں ہے. ٹھیک ہے، سب لوگ تم میں سے چار. 620 00:33:59,000 --> 00:34:01,000 اور جو ہم نے 9 کے لئے کہا؟ 621 00:34:01,000 --> 00:34:04,000 جو ہمارے 9 ہے؟ 622 00:34:04,000 --> 00:34:07,000 جو واقعی 9 کرنا چاہتا ہے؟ ٹھیک ہے، آو، 9 ہو. 623 00:34:07,000 --> 00:34:10,000 یہاں ہم چلے. 624 00:34:10,000 --> 00:34:13,000 34، ہم آپ سے ملنے وہاں کریں گے. 625 00:34:13,000 --> 00:34:17,000 پہلا حصہ اپنے آپ کو اس طرح دیکھنے کی ہے. 626 00:34:17,000 --> 00:34:21,000 26، 22، 17، اچھی. 627 00:34:21,000 --> 00:34:25,000 اگر آپ کی طرف سے دور کھڑے رہو، کیونکہ ہم آپ کو ایک لمحے میں malloc جا رہے ہیں کر سکتے ہیں. 628 00:34:25,000 --> 00:34:29,000 >> اچھا، اچھا ہے. 629 00:34:29,000 --> 00:34:32,000 ٹھیک ہے، بہت اچھا، تو سوال کے ایک جوڑے کے یہاں پوچھنا. 630 00:34:32,000 --> 00:34:34,000 اور اصل میں، آپ کا نام کیا >> انیتا ہے؟ ہے. 631 00:34:34,000 --> 00:34:37,000 انیتا، ٹھیک ہے، یہاں پر آئے. 632 00:34:37,000 --> 00:34:41,000 انیتا ہمیں پہلے کی طرح ایک کافی آسان سوال کو حل میں مدد کی جا رہی ہے، 633 00:34:41,000 --> 00:34:44,000 جس طرح آپ کو تلاش ہے یا نہیں ایک قیمت کی فہرست میں ہے؟ 634 00:34:44,000 --> 00:34:48,000 نوٹس، کہ سب سے پہلے، یہاں لوکاس کی طرف سے نمائندگی کی، 635 00:34:48,000 --> 00:34:52,000 تھوڑا مختلف ہے، اور اس کاغذ کے اس ٹکڑے کو جان بوجھ کر sideways ہے 636 00:34:52,000 --> 00:34:55,000 کیونکہ یہ بہت لمبا نہیں ہے اور ہے کئی بٹس کے طور پر نہیں لے، 637 00:34:55,000 --> 00:34:58,000 اگرچہ تکنیکی طور پر وہ کاغذ کے ایک ہی سائز صرف گھمایا ہے. 638 00:34:58,000 --> 00:35:01,000 لیکن اس نے تھوڑا سا مختلف ہے کہ وہ ایک پوائنٹر کے لئے صرف 32 بٹس ہے، 639 00:35:01,000 --> 00:35:05,000 اور ان لوگوں کے تمام 64 بٹس، جن میں سے نصف تعداد نصف جن میں سے ایک پوائنٹر ہیں. 640 00:35:05,000 --> 00:35:08,000 لیکن پوائنٹر کو دکھائے جانے والے تاثر نہیں ہے، اگر ایسا ہے تو آپ لوگ awkwardly کسی حد تک کر سکتے تھے 641 00:35:08,000 --> 00:35:12,000 اپنے بائیں ہاتھ کو آپ کے اگلے شخص کی طرف اشارہ کرنے کے لئے استعمال کریں. 642 00:35:12,000 --> 00:35:14,000 اور آپ کو 34 نمبر ہو. آپ کا نام کیا ہے؟ 643 00:35:14,000 --> 00:35:16,000 ایری. 644 00:35:16,000 --> 00:35:19,000 ایری، آپ کے دائیں ہاتھ میں اصل میں، کاغذ پکڑو، اور بائيں ہاتھ براہ راست نیچے جاتا ہے. 645 00:35:19,000 --> 00:35:21,000 آپ کو بائیں جانب، شہوت انگیز null کی نمائندگی کرتے ہیں. 646 00:35:21,000 --> 00:35:24,000 >> اب ہمارے انسانی کی تصویر بہت یکساں ہے. 647 00:35:24,000 --> 00:35:26,000 یہ اصل میں ہے کہ کس طرح اشارہ کام ہے. 648 00:35:26,000 --> 00:35:29,000 اور اگر آپ تھوڑا سا اس طرح scrunch تو میں تمہارے راستے میں نہیں ہوں کر سکتے ہیں. 649 00:35:29,000 --> 00:35:34,000 یہاں انیتا، مجھے 22 نمبر حاصل کرتے ہیں، 650 00:35:34,000 --> 00:35:40,000 لیکن، تک انسان نہیں کاغذ کے ٹکڑے پر فائز کی رکاوٹ فرض 651 00:35:40,000 --> 00:35:43,000 لیکن یہ ایک فہرست ہے، اور آپ کو صرف لوکاس کے ساتھ شروع کرنے کے لئے ہے 652 00:35:43,000 --> 00:35:46,000 کیونکہ وہ لفظی پہلا پوائنٹر ہے. 653 00:35:46,000 --> 00:35:51,000 آپ کو لگتا ہے اپنے آپ کو ایک پوائنٹر ہیں، اور تم بھی کچھ کی طرف اشارہ کرنے کی صلاحیت ہے. 654 00:35:51,000 --> 00:35:56,000 تم بالکل وہی جو لوکاس طرف اشارہ ہے کی طرف اشارہ کرتے ہوئے کی طرف سے کیوں نہیں شروع کرتے؟ 655 00:35:56,000 --> 00:35:58,000 اچھا ہے، اور کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں اس سے نافذ ہے. 656 00:35:58,000 --> 00:36:04,000 بحث کے لیے، مجھے یہاں ایک خالی صفحے ھیںچو. 657 00:36:04,000 --> 00:36:06,000 آپ کو اپنے نام کو کس طرح جادو کرتے ہیں >> انیتا؟ 658 00:36:06,000 --> 00:36:08,000 ٹھیک ہے، انیتا. 659 00:36:08,000 --> 00:36:18,000 چلو میں نوڈ * انیتا = لوکاس کا کہنا ہے کہ. 660 00:36:18,000 --> 00:36:22,000 ٹھیک ہے، ہم آپ کو لوکاس فون نہیں کرنا چاہئے. ہم آپ کو پہلے سے رابطہ کرنا چاہئے. 661 00:36:22,000 --> 00:36:25,000 یہاں حقیقت کے مطابق حقیقت میں ایسا کیوں ہے؟ 662 00:36:25,000 --> 00:36:27,000 ، ایک سب سے پہلے پہلے سے ہی موجود ہے. 663 00:36:27,000 --> 00:36:30,000 پہلا ہے شاید کہیں یہاں مختص. 664 00:36:30,000 --> 00:36:35,000 گھنڈی سب سے پہلے *، اور یہ رہا ایک فہرست کسی نہ کسی طرح مختص. 665 00:36:35,000 --> 00:36:37,000 مجھے نہیں معلوم کہ وہ کس طرح ہوا ہے. یہ ہوا سے پہلے کلاس شروع. 666 00:36:37,000 --> 00:36:40,000 انسانوں کا یہ منسلک کی فہرست بنا دیا گیا ہے. 667 00:36:40,000 --> 00:36:44,000 اور اب بعد میں کہانی یہ فیس بک پر سب جا رہا ہے بظاہر میں اس وقت 668 00:36:44,000 --> 00:36:49,000 کہانی میں اس وقت، انیتا کیا گیا ہے پہلے سے برابر ہو initialized 669 00:36:49,000 --> 00:36:51,000 جس کا مطلب یہ نہیں ہے کہ لوکاس میں انیتا پوائنٹس ہے. 670 00:36:51,000 --> 00:36:53,000 بلکہ وہ جو اس نے اشارہ میں اشارہ 671 00:36:53,000 --> 00:36:57,000 کیونکہ اسی ایڈریس لوکاس 32 بٹس کے اندر ہے - 1، 2، 3 - 672 00:36:57,000 --> 00:37:01,000 اب بھی انیتا 32 بٹس کے اندر - 1، 2، 3. 673 00:37:01,000 --> 00:37:05,000 >> اب 22 پر تلاش کریں. آپ کو ایسا کرنے کے بارے میں کیسے جا سکتا ہے؟ 674 00:37:05,000 --> 00:37:07,000 کہ >>؟ جو کچھ بھی کی طرف اشارہ کیا ہے. 675 00:37:07,000 --> 00:37:11,000 جو کچھ بھی کی طرف اشارہ ہے، تو آگے بڑھیں اور اسے سب سے بہترین آپ یہاں کر سکتے باہر کام ہے. 676 00:37:11,000 --> 00:37:15,000 اچھا، اچھا، اور اب آپ کی طرف اشارہ کر رہے ہیں میں کیا 22 کے ساتھ آپ کا نام ہے؟ 677 00:37:15,000 --> 00:37:18,000 Ramon. >> Ramon تو، Ramon انعقاد 22 ہے. 678 00:37:18,000 --> 00:37:20,000 اب آپ نے چیک کیا ہے. 679 00:37:20,000 --> 00:37:24,000 کیا Ramon 22 == اگر ایسا ہے تو، اور، ہم مثال کے طور پر صحیح واپس آ سکتے ہیں. 680 00:37:24,000 --> 00:37:26,000 آپ کے وزٹرز کا ریکارڈ رکھا جبکہ یہ لوگ یہاں کھڑے ہیں کسی حد تک awkwardly 681 00:37:26,000 --> 00:37:32,000 مجھے کچھ bool طرح تیزی سے تلاش کریں. 682 00:37:32,000 --> 00:37:37,000 میں آگے بڑھو اور کہنے جا (نوڈ * فہرست، int ن) رہا ہوں. 683 00:37:37,000 --> 00:37:39,000 میں تم لوگوں کے ساتھ واپس ہو جائے گا. میں صرف کچھ کوڈ لکھنے ہے. 684 00:37:39,000 --> 00:37:45,000 اور اب میں آگے جانے کے لئے اور یہ نوڈ * انیتا = فہرست کرو جا رہا ہوں. 685 00:37:45,000 --> 00:37:51,000 اور میں آگے بڑھو اور کہنے جا رہے ہیں. (انیتا = نل!) رہا ہوں 686 00:37:51,000 --> 00:37:57,000 >> یہاں تشبیہ پھیل تھوڑا ہو رہی ہے، لیکن جبکہ (انیتا = نل!) کیا میں کرنا چاہتے ہیں؟ 687 00:37:57,000 --> 00:38:03,000 میں حوالہ کے کچھ طریقہ کی ضرورت ہے 688 00:38:03,000 --> 00:38:05,000 عددی ہے کہ انیتا میں اشارہ کر رہا ہے. 689 00:38:05,000 --> 00:38:08,000 ماضی میں، جب ہم ڈھانچے تھا، جس میں ایک نوڈ ہے 690 00:38:08,000 --> 00:38:11,000 ہم ڈاٹ سنکیتن کا استعمال کیا، اور ہم جیسے کچھ کہیں گے 691 00:38:11,000 --> 00:38:15,000 anita.n، لیکن مسئلہ یہ ہے کہ انیتا ایک struct SE فی نہیں ہے. 692 00:38:15,000 --> 00:38:17,000 وہ کیا ہے؟ 693 00:38:17,000 --> 00:38:21,000 وہ ایک پوائنٹر ہے، تو سچ میں، اگر ہم اس نقطہ کو استعمال کرنے کے لئے چاہتے ہیں سنکیتن 694 00:38:21,000 --> 00:38:23,000 اور یہ جان بوجھ کر ایک چھوٹی سی لگتی جا رہی ہے خفیہ 695 00:38:23,000 --> 00:38:28,000 ہم جو انیتا بائیں ہاتھ کی طرح کچھ کرنا پڑے طرف اشارہ ہے 696 00:38:28,000 --> 00:38:31,000 اور پھر کہا جاتا ن میدان. 697 00:38:31,000 --> 00:38:35,000 انیتا پوائنٹر ہے، لیکن * انیتا کیا ہے؟ 698 00:38:35,000 --> 00:38:38,000 کیا آپ کو تلاش ہے جب آپ کو کیا انیتا میں اشارہ کر رہا ہے؟ 699 00:38:38,000 --> 00:38:42,000 A struct، ایک نوڈ، اور ایک نوڈ یاد نامی این فیلڈ ہے 700 00:38:42,000 --> 00:38:47,000 کیونکہ یہ یاد، ہے،، ان 2 شعبوں، اگلے اور این 701 00:38:47,000 --> 00:38:50,000 کہ ہم پہلے ایک لمحے کے یہاں دیکھا. 702 00:38:50,000 --> 00:38:53,000 >> اصل میں کوڈ میں اس کی نقل، 703 00:38:53,000 --> 00:39:02,000 ہم یہ کرتے ہیں اور کہہ سکتے ہیں اگر ((* انیتا ن.) ن ==)، ن کہ میں دیکھ رہا ہوں. 704 00:39:02,000 --> 00:39:04,000 نوٹس ہے کہ تقریب میں تعداد کے بارے میں دیکھ بھال میں منظور کیا گیا تھا. 705 00:39:04,000 --> 00:39:10,000 پھر میں آگے بڑھو اور واپسی کی طرح کچھ صحیح کر سکتے ہیں. 706 00:39:10,000 --> 00:39:12,000 دوسری صورت میں، اگر ایسی بات نہیں ہے، کہ میں کیا کرنا چاہتے ہیں؟ 707 00:39:12,000 --> 00:39:19,000 میں کوڈ کیا انیتا فہرست کے ذریعے چلنے کی طرف سے ایسا intuitively کیا کس طرح ترجمہ کر سکتا ہوں؟ 708 00:39:19,000 --> 00:39:26,000 کیا ہوا میں یہاں انکرن انیتا بائیں قدم اٹھانے، اس قدم کو بائیں کیا کرنا چاہیے؟ 709 00:39:26,000 --> 00:39:28,000 [اشراوی طالب علم کے جواب] >> یہ کیا ہے؟ 710 00:39:28,000 --> 00:39:30,000 [اشراوی طالب علم کے جواب] 711 00:39:30,000 --> 00:39:34,000 اچھا ہے، برا خیال نہیں ہے، لیکن ماضی میں، جب ہم نے یہ کیا ہے، ہم نے کیا ہے انیتا + + 712 00:39:34,000 --> 00:39:37,000 کیونکہ وہ انیتا نمبر 1 کا اضافہ کریں گے، 713 00:39:37,000 --> 00:39:40,000 جو اگلے شخص کو عام طور پر، Ramon کی طرح کی طرف اشارہ کریں گے، 714 00:39:40,000 --> 00:39:44,000 یا اس سے اگلے شخص یا اگلے اس سے نیچے لائن شخص ہے. 715 00:39:44,000 --> 00:39:49,000 لیکن یہ بہت اچھا نہیں ہے اس لیے کہ یہ بات یاد میں کیسی لگتی ہے؟ 716 00:39:49,000 --> 00:39:54,000 وہ نہیں. ہم نے اس کو غیر فعال کرنے کی ہے. 717 00:39:54,000 --> 00:40:00,000 یہ یاد میں اس طرح لگ رہا ہے، اور اگرچہ میں 1 اور 2 اور 3 کے قریب ایک دوسرے سے تیار کی ہے، 718 00:40:00,000 --> 00:40:03,000 اگر ہم واقعی انکرن آپ اس کرسکتے ہیں لوگ جبکہ اب بھی وہی لوگ کی طرف اشارہ کرتے ہوئے، 719 00:40:03,000 --> 00:40:07,000 ایک بے ترتیب قدم پیچھے، تم میں سے بعض ایک بے ترتیب قدم آگے تم میں سے کچھ لے سکتے ہیں؟ 720 00:40:07,000 --> 00:40:10,000 >> یہ گندگی اب بھی ایک سے منسلک فہرست ہے، 721 00:40:10,000 --> 00:40:13,000 لیکن یہ لوگ یاد میں کہیں بھی ہو سکتا ہے، 722 00:40:13,000 --> 00:40:15,000 تو انیتا + جا + کام کیوں نہیں ہے؟ 723 00:40:15,000 --> 00:40:19,000 مقام انیتا میں کیا ہے + +؟ 724 00:40:19,000 --> 00:40:21,000 کون جانتا ہے. 725 00:40:21,000 --> 00:40:24,000 یہ کسی دوسرے قدر ہے کہ بہت interposed پر ہوتا ہے 726 00:40:24,000 --> 00:40:28,000 موقع کی طرف سے ان مراکز کی درمیان کیونکہ ہم ایک صف کا استعمال نہیں کر رہے ہیں. 727 00:40:28,000 --> 00:40:30,000 ہم نے ان مراکز میں سے ہر ایک انفرادی طور پر مختص. 728 00:40:30,000 --> 00:40:32,000 ٹھیک ہے، اگر آپ لوگ اپنے آپ کو صاف بیک اپ کر سکتے ہیں. 729 00:40:32,000 --> 00:40:37,000 مجھے تجویز ہے کہ انیتا + انیتا +، ہم بجائے بجائے ہو جاتا ہے 730 00:40:37,000 --> 00:40:42,000 ٹھیک ہے، ہم نے جو کچھ بھی انیتا طرف اشارہ ہے کیوں نہیں کرتے اور پھر جا کر اگلے؟ 731 00:40:42,000 --> 00:40:45,000 دوسرے الفاظ میں، ہم Ramon، جو 22 نمبر منعقد کر رہا ہے، 732 00:40:45,000 --> 00:40:51,000 اور پھر اگلے جیسے انیتا اس کے بائیں ہاتھ پوائنٹر رکھا جائے کاپی کریں گے. 733 00:40:51,000 --> 00:40:54,000 لیکن وہ Ramon سے دور نہیں جانا کیونکہ ہم 22 پایا. 734 00:40:54,000 --> 00:40:56,000 لیکن یہ خیال کیا جائے گا. اب، یہ ایک گندگی خدا خوفناک ہے. 735 00:40:56,000 --> 00:40:59,000 سچ میں، کوئی بھی کبھی بھی اس نحو، اور تاکہ شکر یاد کروں گا، 736 00:40:59,000 --> 00:41:04,000 یہ اصل میں ایک چھوٹی سی جان بوجھ کر اوہ، آپ اصل میں نہیں ہے جو میں نے لکھا دیکھا ہے. 737 00:41:04,000 --> 00:41:08,000 یہ اگر آپ کر سکتے مجبور ہو جائے گی. Voila! 738 00:41:08,000 --> 00:41:10,000 >> پردے کے پیچھے، میں مسئلہ کو حل کرنے کے اس طرح کیا گیا تھا. 739 00:41:10,000 --> 00:41:14,000 انیتا، بائیں قدم اٹھانے کے لئے 740 00:41:14,000 --> 00:41:18,000 سب سے پہلے، ہم پتہ پر جانا کہ انیتا میں اشارہ کر رہا ہے. 741 00:41:18,000 --> 00:41:23,000 اور وہ مل نہ صرف جہاں (ن)، جو ہم صرف موازنہ خاطر کی جانچ پڑتال کرے گا، 742 00:41:23,000 --> 00:41:25,000 - اور اس صورت میں، لیکن آپ آئندہ بھی مل جائے گا 743 00:41:25,000 --> 00:41:28,000 Ramon کے بائیں ہاتھ کی فہرست میں اگلے نوڈ کی طرف اشارہ کرتے ہوئے. 744 00:41:28,000 --> 00:41:32,000 لیکن یہ گندگی خدا خوفناک ہے جو میں نے پہلے کہا جاتا ہے، 745 00:41:32,000 --> 00:41:34,000 لیکن اس کا بدل جاتا ہے باہر C اجازت دیتا ہے ہمیں اس کو آسان بنانے. 746 00:41:34,000 --> 00:41:40,000 بجائے تحریری (انیتا *)، ہم صرف اس کی بجائے انیتا ہے> n لکھ سکتے ہیں، 747 00:41:40,000 --> 00:41:45,000 اور یہ بالکل وہی بات فعل ہے، لیکن یہ بہت بدیہی ہے، 748 00:41:45,000 --> 00:41:48,000 اور اس کے بہت سے زیادہ مسلسل ہے کہ ہم ڈرائنگ 749 00:41:48,000 --> 00:41:50,000 یہ سب وقت تیر کا استعمال کرتے ہوئے. 750 00:41:50,000 --> 00:41:57,000 >> آخر میں، جو ہم نے اس پروگرام کے آخر میں کرنے کی ضرورت ہے؟ 751 00:41:57,000 --> 00:42:00,000 باقی کے کوڈ کا ایک لائن ہے. 752 00:42:00,000 --> 00:42:02,000 کیا واپس؟ 753 00:42:02,000 --> 00:42:05,000 جھوٹی کیونکہ اگر ہم پورے کے ذریعے حاصل ہے جبکہ لوپ 754 00:42:05,000 --> 00:42:10,000 اور انیتا ہے، اصل میں، شہوت انگیز null، اس کا مطلب ہے کہ وہ فہرست کے اختتام پر ہر طرف گئے 755 00:42:10,000 --> 00:42:12,000 جہاں وہ کی طرف اشارہ کیا گیا تھا میں تمہارا نام کیا ہے پھر؟ 756 00:42:12,000 --> 00:42:15,000 ایری >>. ایری کے بائیں ہاتھ، جس شہوت انگیز null ہے. 757 00:42:15,000 --> 00:42:18,000 انیتا اب، شہوت انگیز null، اور مجھے احساس ہے تم صرف یہاں کھڑے ہو limbo میں awkwardly 758 00:42:18,000 --> 00:42:21,000 کیونکہ میں ایک monologue پر جا رہا ہوں. یہاں 759 00:42:21,000 --> 00:42:23,000 لیکن ہم آپ کو صرف ایک لمحے میں دوبارہ شامل کر دیں گے. 760 00:42:23,000 --> 00:42:27,000 انیتا کہانی میں اس وقت شہوت انگیز null ہے، جبکہ لوپ ختم، 761 00:42:27,000 --> 00:42:30,000 اور ہم جھوٹے واپس کرنا ہے کیونکہ اگر وہ ایری شہوت انگیز null پوائنٹر ہے 762 00:42:30,000 --> 00:42:34,000 تو کوئی نمبر ہے کہ وہ فہرست میں کرنے کی کوشش کی تھی. 763 00:42:34,000 --> 00:42:39,000 ہم یہ صاف بھی سکتے ہیں لیکن یہ ایک بہت اچھا عمل درآمد ہے تو 764 00:42:39,000 --> 00:42:43,000 ایک traversal تقریب کی، ایک ایک لنک کی فہرست کے لئے کام کی تلاش ہے. 765 00:42:43,000 --> 00:42:48,000 یہ اب بھی لکیری تلاش ہے، لیکن یہ + + ایک پوائنٹر کے طور پر کے طور پر آسان نہیں ہے 766 00:42:48,000 --> 00:42:52,000 یا + + میں متغیر کی وجہ سے اب ہم نہیں اندازہ لگا سکتے ہیں 767 00:42:52,000 --> 00:42:54,000 ان مراکز میں سے ہر ایک یاد میں کہاں ہیں. 768 00:42:54,000 --> 00:42:57,000 ہم لفظی breadcrumbs کے پگڈنڈی کی پیروی ہے یا خاص طور پر 769 00:42:57,000 --> 00:43:00,000 اشارہ، ایک نوڈ سے دوسرے حاصل کرنے کے لئے. 770 00:43:00,000 --> 00:43:02,000 >> اب ہم ایک دوسرے کی کوشش کریں. انیتا، آپ یہاں واپس آنا چاہتی ہے؟ 771 00:43:02,000 --> 00:43:06,000 ہم آگے کیوں نہیں چلے جاتے اور سامعین سے ایک دوسرے شخص کو مختص ہے؟ 772 00:43:06,000 --> 00:43:08,000 Malloc تمہارا نام کیا ہے؟ >> ربیکا. 773 00:43:08,000 --> 00:43:10,000 ربیکا. ربیکا سامعین سے malloced 774 00:43:10,000 --> 00:43:13,000 اور اب وہ 55 تعداد میں ذخیرہ کرنے کا ہے. 775 00:43:13,000 --> 00:43:17,000 اور ہاتھ میں مقصد ہے انیتا داخل کرنے کے لئے 776 00:43:17,000 --> 00:43:22,000 اس کی مناسب جگہ میں منسلک فہرست میں ربیکا. 777 00:43:22,000 --> 00:43:24,000 یہاں پر ایک لمحے کے لئے آو. 778 00:43:24,000 --> 00:43:28,000 میں کچھ اس طرح کیا ہے. 779 00:43:28,000 --> 00:43:32,000 میں نوڈ * کیا ہے. اور تمہارا نام کیا ہے پھر؟ 780 00:43:32,000 --> 00:43:34,000 ربیکا. >> ربیککا، ٹھیک ہے. 781 00:43:34,000 --> 00:43:41,000 ربیکا malloc ((نوڈ) sizeof) ہو جاتا ہے. 782 00:43:41,000 --> 00:43:44,000 جیسا کہ ہم نے ماضی میں طلباء اور whatnot کی طرح چیزوں کو مختص کیا ہے، 783 00:43:44,000 --> 00:43:46,000 ہم نوڈ کے سائز کی ضرورت ہے، تو اب ربیکا 784 00:43:46,000 --> 00:43:49,000 ہے جو طرف اشارہ ہے؟ 785 00:43:49,000 --> 00:43:52,000 ربیکا اس کے اندر دو شعبوں، جن میں سے ایک 55 ہے ہے. 786 00:43:52,000 --> 00:43:55,000 چلو کہ کیا کرنا ہے، ربیکا> 55 = 787 00:43:55,000 --> 00:44:00,000 لیکن پھر ربیکا> اس کے ہاتھ کو اگلے چاہئے رکھا جائے پسند، کون جانتا ہے کہ اس قسم کی ہے؟ 788 00:44:00,000 --> 00:44:03,000 یہ کچھ ردی کی ٹوکری کی قدر کی طرف اشارہ ہے، تو کیوں اچھا اقدام کے لئے نہیں 789 00:44:03,000 --> 00:44:07,000 کم سے کم ہم یہ کرتے ہیں تا کہ بائيں ہاتھ اب اس کی طرف ہے. 790 00:44:07,000 --> 00:44:09,000 اب یہاں سے انیتا، اسے لے لو. 791 00:44:09,000 --> 00:44:11,000 تم نے ربیکا ہے مختص کیا گیا ہے. 792 00:44:11,000 --> 00:44:20,000 آگے بڑھو اور جہاں ہم ربیکا رکھنا چاہئے تلاش. 793 00:44:20,000 --> 00:44:25,000 اچھا، بہت اچھا. 794 00:44:25,000 --> 00:44:28,000 ٹھیک ہے، اچھا، اور اب ہم آپ کو سمت تھوڑا سا کو فراہم کرنے کے لئے کی ضرورت ہے، 795 00:44:28,000 --> 00:44:30,000 لہذا آپ کو ایری پہنچ چکے ہیں. 796 00:44:30,000 --> 00:44:33,000 ان کے بائیں ہاتھ خالی ہے، لیکن ربیکا واضح طور پر حق ہے، 797 00:44:33,000 --> 00:44:36,000 تو ہم اس منسلک فہرست کو تبدیل کرنے کے لئے کس طرح کر سکتا ہوں 798 00:44:36,000 --> 00:44:38,000 کے لئے مناسب جگہ میں ربیکا شامل کرنے کے لئے ہے؟ 799 00:44:38,000 --> 00:44:42,000 اگر آپ کو ضرورت کے مطابق بھر میں لوگوں کے بائیں ہاتھ لفظی منتقل کر سکتے ہیں، 800 00:44:42,000 --> 00:44:48,000 ہم اس مسئلے کو اس طرح سے ٹھیک کر دونگا. 801 00:44:48,000 --> 00:44:52,000 ٹھیک ہے اچھا، اور اس دوران، ربیکا کے بائیں ہاتھ اب اس کی طرف کی طرف سے ہے. 802 00:44:52,000 --> 00:44:54,000 >> یہ بہت آسان تھا. 803 00:44:54,000 --> 00:44:57,000 چلو کوشش کرتے ہیں آونٹن we're تقریبا ہو چکا ہے، 20. 804 00:44:57,000 --> 00:44:59,000 ٹھیک ہے، پر آئے. 805 00:44:59,000 --> 00:45:04,000 20 ہے مختص کر دیا گیا ہے، تو ہم آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور پھر یہاں کہنا 806 00:45:04,000 --> 00:45:07,000 ہم صرف نوڈ * سعد نے کیا ہے. 807 00:45:07,000 --> 00:45:11,000 ہم malloc ہے (sizeof (نوڈ)). 808 00:45:11,000 --> 00:45:16,000 پھر ہم اسی عین مطابق نحو کے طور پر ہم نے 20 کے لئے پہلے کیا کرتے ہیں، 809 00:45:16,000 --> 00:45:20,000 اور میں اگلے = نل کرتے ہیں، اور اب یہ انیتا پر منحصر ہے. 810 00:45:20,000 --> 00:45:23,000 آپ کو منسلک فہرست میں داخل، اگر تم نے وہ بالکل وہی کردار ادا کر سکتا ہے. 811 00:45:23,000 --> 00:45:30,000 ایگزیکیوٹ کریں. 812 00:45:30,000 --> 00:45:32,000 ٹھیک ہے، اچھا ہے. 813 00:45:32,000 --> 00:45:38,000 اب احتیاط سے لگتا ہے کہ قبل اس کے کہ آپ نے بائیں ہاتھ کے ارد گرد منتقل شروع. 814 00:45:38,000 --> 00:45:46,000 تم نے اب تک آج سب سے زیادہ عجیب کردار ہے. 815 00:45:46,000 --> 00:45:59,000 جس کے ہاتھ میں سب سے پہلے منتقل کیا جانا چاہئے؟ 816 00:45:59,000 --> 00:46:02,000 ٹھیک ہے، انتظار کرو، میں کچھ نہیں سن رہا ہوں. 817 00:46:02,000 --> 00:46:07,000 اگر کچھ لوگ ایک عجیب صورتحال کو حل کرنے میں مدد شائستگی سے کرنا چاہتے ہیں. 818 00:46:07,000 --> 00:46:11,000 کس بائیں ہاتھ کو پہلے شاید اپ ڈیٹ کیا جانا چاہئے؟ جی ہاں. 819 00:46:11,000 --> 00:46:13,000 [Student کی] سعد. 820 00:46:13,000 --> 00:46:15,000 ٹھیک ہے، سعد، کیوں، اگرچہ؟ 821 00:46:15,000 --> 00:46:17,000 [اشراوی طالب علم کے جواب] 822 00:46:17,000 --> 00:46:19,000 اچھا ہے، کیونکہ اگر ہم منتقل تمہارا نام کیا ہے؟ >> مارشل. 823 00:46:19,000 --> 00:46:22,000 مارشل، اگر ہم نے اس کا ہاتھ سب سے پہلے نیچے منتقل کرنے کے لئے، شہوت انگیز null 824 00:46:22,000 --> 00:46:25,000 اب ہم لفظی اس فہرست میں چار افراد کو یتیم 825 00:46:25,000 --> 00:46:29,000 کیونکہ وہ صرف بات کی طرف اشارہ کرتے ہوئے میں Ramon اور بائیں سب میں تھا، 826 00:46:29,000 --> 00:46:31,000 تاکہ پوائنٹر پہلے اپ ڈیٹ کرنے کے خراب تھا. 827 00:46:31,000 --> 00:46:33,000 چلو کہ کالعدم. 828 00:46:33,000 --> 00:46:37,000 اچھا ہے، اور اب آگے بڑھیں اور Ramon میں مناسب بائیں کی طرف اشارہ کرتے ہوئے ہاتھ میں منتقل. 829 00:46:37,000 --> 00:46:39,000 یہ ایک چھوٹا سا بے کار محسوس ہوتا ہے. 830 00:46:39,000 --> 00:46:41,000 اب دو لوگوں کی Ramon طرف اشارہ ہے، لیکن یہ اچھا ہے 831 00:46:41,000 --> 00:46:43,000 کیونکہ اب اور ہم کس طرح کی فہرست کو اپ ڈیٹ کرتے ہیں؟ 832 00:46:43,000 --> 00:46:48,000 کیا دوسری طرف منتقل ہے؟ 833 00:46:48,000 --> 00:46:53,000 بہت اچھا، اب ہم کسی بھی میموری کھو دیا ہے؟ 834 00:46:53,000 --> 00:46:57,000 نہیں، بہت اچھا، دیکھو، اگر ہم نے یہ ایک بار نہیں توڑ سکتے. 835 00:46:57,000 --> 00:47:00,000 >> ایک آخری بار Mallocing نمبر 5. 836 00:47:00,000 --> 00:47:04,000 پیٹھ میں تمام طرح، نیچے آو. 837 00:47:04,000 --> 00:47:08,000 یہ بہت دلچسپ ہے. 838 00:47:08,000 --> 00:47:15,000 [تعریف] 839 00:47:15,000 --> 00:47:17,000 آپ کا نام کیا >> رون ہے؟ 840 00:47:17,000 --> 00:47:19,000 رون، ٹھیک ہے، آپ کو نمبر 5 کے طور پر malloced کر رہے ہیں. 841 00:47:19,000 --> 00:47:23,000 ہم صرف کوڈ کو پھانسی کیا ہے کہ تقریبا ان جیسی ہے 842 00:47:23,000 --> 00:47:26,000 صرف ایک مختلف نام کے ساتھ. 843 00:47:26,000 --> 00:47:28,000 بہترین. 844 00:47:28,000 --> 00:47:38,000 اب، انیتا، خوش قسمتی کی فہرست میں نمبر 5 اب داخل ہے. 845 00:47:38,000 --> 00:47:43,000 اچھا ہے، اور؟ 846 00:47:43,000 --> 00:47:47,000 بہت اچھا، تو یہ واقعی میں تین کل مقدمات کی تیسری ہے. 847 00:47:47,000 --> 00:47:49,000 ہم سب سے پہلے آخر میں کسی تھا، ربیکا. 848 00:47:49,000 --> 00:47:51,000 پھر ہم درمیان میں کسی کا بھی تھا. 849 00:47:51,000 --> 00:47:53,000 اب ہم شروع میں، اور اس مثال میں کوئی ہے، 850 00:47:53,000 --> 00:47:56,000 اب ہم پہلی بار کے لئے لوکاس اپ ڈیٹ تھا 851 00:47:56,000 --> 00:48:00,000 کیونکہ فہرست میں پہلا عنصر اب ایک نیا نوڈ میں اشارہ ہے، 852 00:48:00,000 --> 00:48:03,000 جو کے نتیجے میں، نوڈ 9 نمبر پر اشارہ کر رہا ہے. 853 00:48:03,000 --> 00:48:06,000 >> یہ ایک انتہائی عجیب مظاہرہ تھا، مجھے یقین ہے، 854 00:48:06,000 --> 00:48:08,000 تو ان لوگوں کے لئے ایک تعریف کے بڑے دور اگر تم کر سکتے تھے. 855 00:48:08,000 --> 00:48:11,000 اچھی طرح سے کیا ہے. 856 00:48:11,000 --> 00:48:17,000 وہ سب ہے. آپ ایک چھوٹی سی میموری کے طور پر کاغذ کے ٹکڑوں پر رکھ سکتے ہیں. 857 00:48:17,000 --> 00:48:22,000 یہ پتہ چلا ہے کہ کوڈ میں یہ کر رہے 858 00:48:22,000 --> 00:48:26,000 صرف ہاتھوں کو منتقل کے طور پر بہت ہی آسان نہیں ہے 859 00:48:26,000 --> 00:48:28,000 اور مختلف چیزوں کو اشارہ کی طرف اشارہ کرتے ہوئے. 860 00:48:28,000 --> 00:48:31,000 لیکن احساس ہے کہ جب تم میں سے کسی ایک کو اس جیسی کسی چیز کو لاگو کرنے کے لئے وقت آتا ہے 861 00:48:31,000 --> 00:48:34,000 ایک لنک کی فہرست یا اس کا ایک مختلف اگر آپ واقعی پر توجہ مرکوز 862 00:48:34,000 --> 00:48:38,000 ان بنیادی اصولوں، کاٹنے سائز کے مسائل میں سمجھ ہے، 863 00:48:38,000 --> 00:48:43,000 احساس یہ اس کے ہاتھ یا اس ہاتھ ہے، اس کا کیا دوسری صورت میں کافی پیچیدہ پروگرام ہے 864 00:48:43,000 --> 00:48:47,000 اصل میں، کافی آسان اس طرح عمارت کے بلاکس کو کم کیا جا سکتا ہے. 865 00:48:47,000 --> 00:48:51,000 >> چلو ایک سے زیادہ بہتر سمت میں چیزوں کو اب بھی لے. 866 00:48:51,000 --> 00:48:53,000 اب ہم منسلک فہرست کے تصور ہے. 867 00:48:53,000 --> 00:48:57,000 ہم نے بھی واپس تجویز وہاں دوگنا منسلک کی فہرست ہے، شکریہ 868 00:48:57,000 --> 00:49:01,000 جو تقریبا ایک ہی لگ رہا ہے، لیکن اب ہم struct کے اندر دو اشارہ ہے 869 00:49:01,000 --> 00:49:05,000 ایک کی بجائے، اور ہم ان اشارہ پچھلے اور اگلے شاید کہہ سکتے ہیں 870 00:49:05,000 --> 00:49:08,000 یا بائیں یا دائیں، لیکن ہم حقیقت میں، ان میں سے دو کی ضرورت ہے. 871 00:49:08,000 --> 00:49:10,000 کوڈ تھوڑا شامل ہو جائے گی. 872 00:49:10,000 --> 00:49:12,000 انیتا یہاں فورم پر زیادہ کام کرنا ہوتا ہے. 873 00:49:12,000 --> 00:49:15,000 لیکن ہم ساخت اس طرح کی بات کو یقینی طور پر عملدرآمد کر سکتے ہیں. 874 00:49:15,000 --> 00:49:19,000 وقت چلانے کے حوالے سے، اگرچہ، رننگ ٹائم کیا ہو گا 875 00:49:19,000 --> 00:49:24,000 ایک لنک کی فہرست میں ایک بڑی تعداد ن کو تلاش کرنے کے لئے انیتا کے لئے؟ 876 00:49:24,000 --> 00:49:27,000 ن ابھی تک بڑی O، تو اس کا کوئی لکیری تلاش سے بہتر ہے. 877 00:49:27,000 --> 00:49:29,000 ہم بائنری تلاش نہیں، لیکن کر سکتے ہیں، ایک بار پھر. 878 00:49:29,000 --> 00:49:34,000 اس صورت میں کیوں تھا؟ آپ کے ارد گرد کود نہیں کر سکتے ہیں. 879 00:49:34,000 --> 00:49:36,000 اگرچہ ہم ظاہر مرحلے پر تمام انسانوں کو دیکھ، 880 00:49:36,000 --> 00:49:39,000 اور انیتا نے eyeballed سکتا ہے اور کہا، "فہرست کے درمیان میں ہے،" 881 00:49:39,000 --> 00:49:42,000 کہ وہ پتہ نہیں ہے اگر وہ کمپیوٹر پروگرام تھے 882 00:49:42,000 --> 00:49:47,000 کیونکہ صرف ایک ہی چیز انہوں نے جائزہ کے آغاز پر سٹکنی پر 883 00:49:47,000 --> 00:49:50,000 لوکاس، جو پہلی پوائنٹر تھا تھا. 884 00:49:50,000 --> 00:49:53,000 وہ ان کے لنکس کی پیروی کرنے کے ضروری ہوگا، 885 00:49:53,000 --> 00:49:56,000 اپنے راستے میں گنتی تک وہ تقریبا وسط مل گیا، 886 00:49:56,000 --> 00:49:58,000 اور پھر بھی، وہ جب وہ وسط تک پہنچ جاننا نہیں 887 00:49:58,000 --> 00:50:01,000 جب تک وہ آخر تک تمام راستہ جاتا ہے اعداد و شمار کتنے ہیں، 888 00:50:01,000 --> 00:50:05,000 backtracks تو، کہ اور بھی مشکل ہو گا جب تک آپ تھا 889 00:50:05,000 --> 00:50:07,000 کسی قسم کی دوگنا منسلک فہرست. 890 00:50:07,000 --> 00:50:10,000 >> آج کچھ مسائل کو حل کرنے، لیکن دوسروں کو متعارف کرانے. 891 00:50:10,000 --> 00:50:12,000 ایک مختلف ڈیٹا مکمل طور پر ساخت کے بارے میں کیا خیال ہے؟ 892 00:50:12,000 --> 00:50:15,000 یہ Mather ہاؤس میں ٹرے کے ایک تصویر ہے، 893 00:50:15,000 --> 00:50:19,000 اور اس صورت میں، ہم نے ایک آنکڑا ڈھانچہ ہم بھی کی قسم پہلے ہی کیا گیا ہے کے بارے میں بات کر ہے. 894 00:50:19,000 --> 00:50:22,000 ہم نے میموری کے تناظر میں اسٹیک کے بارے میں بات کی، 895 00:50:22,000 --> 00:50:26,000 اور اس طرح کی جان بوجھ کر نام ہے کیونکہ میموری کی شرائط میں ایک اسٹیک 896 00:50:26,000 --> 00:50:31,000 مؤثر طریقے سے ایک آنکڑا ڈھانچہ ہے کہ زیادہ سے زیادہ اس کے سب سے اوپر پر پرتوں سامان ہے ہے. 897 00:50:31,000 --> 00:50:35,000 لیکن ایک اسٹیک کے بارے میں دلچسپ بات ہے، جیسا کہ حقیقت میں معاملہ ہے، 898 00:50:35,000 --> 00:50:38,000 یہ ہے کہ اس کی ایک خاص قسم کی آنکڑا ڈھانچہ ہے. 899 00:50:38,000 --> 00:50:42,000 یہ ایک آنکڑا ڈھانچہ ہے جس کے تحت پہلے عنصر 900 00:50:42,000 --> 00:50:46,000 آخری عنصر ہے. 901 00:50:46,000 --> 00:50:50,000 اگر آپ پہلے اسٹیک پر ڈال دیا جائے گا ٹرے ہیں، 902 00:50:50,000 --> 00:50:53,000 آپ بدقسمتی سے گزشتہ اسٹیک پر لیا جائے ٹرے بننے جا رہے ہیں، 903 00:50:53,000 --> 00:50:55,000 اور یہ کہ ایک اچھی بات ضروری نہیں ہے. 904 00:50:55,000 --> 00:50:58,000 کے برعکس، آپ کے ارد گرد دوسرے طریقے سے اس کے بارے میں سوچ سکتے ہیں، 905 00:50:58,000 --> 00:51:02,000 میں گزشتہ پہلی سے باہر ہے. 906 00:51:02,000 --> 00:51:05,000 >> اب، کسی بھی منظرنامے جہاں ایک اسٹیک رکھنے میں کوئی اعتراض آتے ہیں 907 00:51:05,000 --> 00:51:08,000 آنکڑا ڈھانچہ ہے جہاں آپ اس خاصیت ہے 908 00:51:08,000 --> 00:51:13,000 ، اصل میں میں پہلے آخری مجبور ہے؟ 909 00:51:13,000 --> 00:51:16,000 کہ ایک اچھی بات ہے؟ کہ ایک بری بات ہے؟ 910 00:51:16,000 --> 00:51:19,000 یہ یقینی طور پر ایک بری چیز ہے اگر ٹرے تھے نہیں جیسی 911 00:51:19,000 --> 00:51:21,000 اور وہ سب خاص مختلف رنگوں یا whatnot تھے، 912 00:51:21,000 --> 00:51:24,000 اور رنگ آپ چاہتے ہیں کے نیچے دیے گئے تمام طریقہ ہے. 913 00:51:24,000 --> 00:51:26,000 بالکل، آپ کہ بڑی کوشش کے بغیر حاصل نہیں کر سکتے ہیں. 914 00:51:26,000 --> 00:51:28,000 آپ کو اوپر سے شروع کرنے اور اپنے راستے کام ہے. 915 00:51:28,000 --> 00:51:31,000 اسی طرح، اگر آپ ان پرستار لڑکوں میں سے ایک تھے 916 00:51:31,000 --> 00:51:34,000 جو ایک موبائل اور لائنوں کو حاصل کرنے کی کوشش کر رہے تمام رات انتظار 917 00:51:34,000 --> 00:51:36,000 اس طرح ایک جگہ میں؟ 918 00:51:36,000 --> 00:51:40,000 یہ اچھا نہیں ہو گا اگر ایپل اسٹور 919 00:51:40,000 --> 00:51:42,000 ایک اسٹیک آنکڑا ڈھانچہ تھے؟ 920 00:51:42,000 --> 00:51:44,000 Yay؟ بلکہ؟ 921 00:51:44,000 --> 00:51:47,000 یہ گزشتہ ممکنہ وقت میں صرف لوگوں کے لیے جو ظاہر اچھا ہے 922 00:51:47,000 --> 00:51:50,000 اور پھر دور قطار plucked ہو. 923 00:51:50,000 --> 00:51:52,000 اور حقیقت یہ ہے کہ میں تو مائل تھا حقیقت میں قطار کہنا 924 00:51:52,000 --> 00:51:56,000 ہم کیا فون آنکڑا ڈھانچہ اس طرح کی ضرورت ہے جن کے ساتھ اصل میں یکساں ہے، 925 00:51:56,000 --> 00:51:59,000 حقیقت میں ایک ہے جہاں کے لئے کوئی بات، 926 00:51:59,000 --> 00:52:02,000 اور آپ سب سے پہلے میں ایک سب سے پہلے باہر کرنا چاہتے ہیں 927 00:52:02,000 --> 00:52:04,000 صرف اس صورت میں جب انسانی جانبداری کی خاطر کے لئے. 928 00:52:04,000 --> 00:52:07,000 ہم کہ ایک قطار آنکڑا ڈھانچہ عام طور پر فون کرتا ہوں. 929 00:52:07,000 --> 00:52:11,000 >> یہ پتہ چلا ہے منسلک کی فہرست کے علاوہ، ہم یہ وہی بنیادی خیالات کا استعمال کرتے ہوئے شروع کر سکتے ہیں 930 00:52:11,000 --> 00:52:15,000 اور مسائل کے حل کی نئی اور مختلف اقسام پیدا کر شروع کرتے ہیں. 931 00:52:15,000 --> 00:52:19,000 مثال کے طور پر، ہم ایک اسٹیک کے معاملے میں ایک اسٹیک کی نمائندگی کر سکتے ہیں 932 00:52:19,000 --> 00:52:22,000 اس طرح ایک آنکڑا ڈھانچہ کا استعمال کرتے ہوئے، میں تجویز کرے گی. 933 00:52:22,000 --> 00:52:26,000 اس صورت میں، میں نے ایک struct کا اعلان کیا ہے، اور میں نے کہا کہ اس ڈھانچے کے اندر ہے 934 00:52:26,000 --> 00:52:30,000 اعداد کی ایک صف اور پھر نامی ایک متغیر سائز ہے، 935 00:52:30,000 --> 00:52:33,000 اور میں اس بات کو ایک اسٹیک کو فون کرنے جا رہا ہوں. 936 00:52:33,000 --> 00:52:35,000 اب، یہ اصل میں کیوں کام نہیں کرتا؟ 937 00:52:35,000 --> 00:52:43,000 ایک اسٹیک کے معاملے میں، میں ایک صف کے طور پر سکرین پر یہ موثر انداز میں اپنی طرف متوجہ کر سکتے ہیں. 938 00:52:43,000 --> 00:52:47,000 میرا اسٹیک ہے. وہ میرے اعداد و شمار ہیں. 939 00:52:47,000 --> 00:52:50,000 اور ہم نے ان کو اس کے طور پر اپنی طرف متوجہ، یہ کریں گے یہ اس اس. 940 00:52:50,000 --> 00:52:53,000 اور پھر میں کسی اور ڈیٹا رکن ہے، 941 00:52:53,000 --> 00:52:58,000 جو سائز کہا جاتا ہے، لہذا اس کے سائز ہے، اور یہ تعداد ہے، 942 00:52:58,000 --> 00:53:02,000 اور مجموعی طور پر، پوری یہاں رکن ایک اسٹیک ساخت کی نمائندگی کرتا ہے. 943 00:53:02,000 --> 00:53:07,000 اب، پہلے سے طے شدہ کی طرف سے، سائز شاید 0 initialized ہے، 944 00:53:07,000 --> 00:53:11,000 اور اعداد کی صف کے اندر ابتدائی طور پر ہے 945 00:53:11,000 --> 00:53:14,000 جب میں پہلی بار ایک صف مختص ہے؟ 946 00:53:14,000 --> 00:53:16,000 ردی کی ٹوکری میں. کون جانتا ہے؟ اور یہ اصل میں کوئی فرق نہیں پڑتا. 947 00:53:16,000 --> 00:53:20,000 اس سے کوئی فرق نہیں ہے اگر یہ 1، 2، 3، 4، 5 ہے، مکمل طور پر تصادفی 948 00:53:20,000 --> 00:53:25,000 وجہ سے اپنی ساخت میں برا ذخیرہ قسمت کی طرف سے جب تک کہ میں جانتا ہوں کہ اسٹیک کا سائز 949 00:53:25,000 --> 00:53:29,000 0 ہے، تو صف میں عناصر میں سے کسی بھی پروگرام میں جانتے ہیں، نہیں لگ رہی ہو. 950 00:53:29,000 --> 00:53:31,000 اس سے کوئی فرق نہیں ہے وہاں کیا ہے. 951 00:53:31,000 --> 00:53:34,000 ان کی طرف نہ دیکھو، 0 سائز کے مطلب ہو گا. 952 00:53:34,000 --> 00:53:38,000 >> لیکن اب لگتا ہے میں آگے بڑھیں اور اسٹیک میں کچھ داخل ہے. 953 00:53:38,000 --> 00:53:42,000 میں 5 تعداد کو شامل کرنے کے لئے چاہتے ہیں، تو میں 5 نمبر یہاں ڈال، 954 00:53:42,000 --> 00:53:45,000 اور پھر کیا میں نیچے یہاں ڈال دیا؟ 955 00:53:45,000 --> 00:53:48,000 اب میں نیچے اصل میں 1 سائز کے لئے ڈال دیں گے، 956 00:53:48,000 --> 00:53:50,000 اور اب اسٹیک 1 سائز کی ہے. 957 00:53:50,000 --> 00:53:53,000 کیا ہوگا اگر میں آگے بڑھیں اور نمبر داخل کریں، چلو، کہ، اگلے 7؟ 958 00:53:53,000 --> 00:53:57,000 یہ پھر 2 اپ ڈیٹ کیا جاتا اور پھر ہم 9 کروں گا، 959 00:53:57,000 --> 00:54:02,000 اور پھر یہ 3 سے اپ ڈیٹ کیا جاتا ہے. 960 00:54:02,000 --> 00:54:05,000 لیکن اس اسٹیک کے دلچسپ خصوصیت یہ ہے کہ 961 00:54:05,000 --> 00:54:09,000 میں عنصر جو اگر میں پاپ کرنا چاہتے ہیں کو دور کرنے والا ہوں 962 00:54:09,000 --> 00:54:12,000 اسٹیک سے دور کچھ تو بات ہے؟ 963 00:54:12,000 --> 00:54:14,000 9 سب سے پہلے جانے کی بات ہو جائے گی. 964 00:54:14,000 --> 00:54:18,000 تصویر اگر میں اسٹیک دور ایک عنصر پاپ کرنا چاہتے ہیں کس طرح تبدیل کرنا چاہئے، 965 00:54:18,000 --> 00:54:20,000 Mather میں ایک ٹرے کو پسند ہے؟ 966 00:54:20,000 --> 00:54:22,000 جی ہاں، >> 2 [طالب علم کو] سائز سیٹ کریں. 967 00:54:22,000 --> 00:54:27,000 بالکل، یہ ہے کہ یہ سب مجھے کیا کرنا 2 سائز مقرر کیا گیا ہے، اور میں صف کے ساتھ کیا کیا ہے؟ 968 00:54:27,000 --> 00:54:29,000 میں کچھ بھی کرنے کی ضرورت نہیں ہے. 969 00:54:29,000 --> 00:54:32,000 میں صرف، گدا، وہاں ایک 0 یا -1 یا نشاندہی کچھ ڈال سکتے ہیں 970 00:54:32,000 --> 00:54:34,000 کہ اس ایک legit قدر ہے نہیں، لیکن کوئی فرق نہیں پڑتا کیونکہ 971 00:54:34,000 --> 00:54:37,000 میں صف خود کو کتنی دیر تک ہے سے باہر ریکارڈ کر سکتے ہیں 972 00:54:37,000 --> 00:54:41,000 تا کہ میں جانتا ہوں کہ صرف اس صف میں سب سے پہلے دو عناصر پر نظر آتے ہیں. 973 00:54:41,000 --> 00:54:47,000 اب، اگر میں اور 8 تعداد کو اس صف میں شامل کریں، تصویر اگلے کس طرح تبدیل کرتا ہے؟ 974 00:54:47,000 --> 00:54:50,000 یہ 8 ہو جاتا ہے، اور اس کے 3 ہو جاتا ہے. 975 00:54:50,000 --> 00:54:52,000 میں نے کچھ کونے کونے یہاں کاٹنے رہا ہوں. 976 00:54:52,000 --> 00:54:56,000 اب ہم 5، 7، 8، ہے اور ہم 3 سائز واپس آ گئے ہیں. 977 00:54:56,000 --> 00:54:58,000 اس پر عملدرآمد بہت آسان ہے، 978 00:54:58,000 --> 00:55:06,000 لیکن جب ہم اس ڈیزائن کے فیصلے پر پچھتاوا جا رہے ہیں؟ 979 00:55:06,000 --> 00:55:09,000 چیزیں بہت، بہت غلط جانے کے لئے جب شروع کرتے ہیں؟ جی ہاں. 980 00:55:09,000 --> 00:55:11,000 [اشراوی طالب علم کے جواب] 981 00:55:11,000 --> 00:55:13,000 جب آپ واپس جانا ہے اور سب سے پہلے جس عنصر سے تم اندر ڈال حاصل کرنا چاہتے ہیں 982 00:55:13,000 --> 00:55:18,000 >> یہ یہاں بدل جاتا ہے اگرچہ اسٹیک ہڈ کے نیچے ایک صف ہے، 983 00:55:18,000 --> 00:55:21,000 ان اعداد و شمار کے ڈھانچے ہم نے کے بارے میں بات کرنا شروع کر دیا ہے بھی عام طور پر کے طور پر کر رہے ہیں پر جانا جاتا 984 00:55:21,000 --> 00:55:25,000 خلاصہ ڈیٹا ڈھانچے جس کے تحت کہ وہ کس طرح عملدرآمد کر رہے ہیں 985 00:55:25,000 --> 00:55:27,000 مکمل طور پر نقطہ کے علاوہ ہے. 986 00:55:27,000 --> 00:55:31,000 ایک اسٹیک طرح ایک آنکڑا ڈھانچہ کی حمایت شامل کرنے کے لئے سمجھا جاتا ہے 987 00:55:31,000 --> 00:55:35,000 دھکا، جو اسٹیک پر ایک ٹرے pushes کی طرح آپریشن، 988 00:55:35,000 --> 00:55:39,000 اور پاپ، جو اسٹیک سے ایک عنصر کو ہٹا دیتا ہے، اور یہ کہ یہ ہے. 989 00:55:39,000 --> 00:55:43,000 اگر آپ کو کسی اور کا کوڈ ہے جو پہلے ہی عملدرآمد ڈاؤن لوڈ، اتارنا 990 00:55:43,000 --> 00:55:46,000 یہ بات ایک اسٹیک قرار دیا، اس شخص کو لکھا ہے 991 00:55:46,000 --> 00:55:49,000 آپ کے لئے صرف دو ہی کام کرتا ہے، اور پاپ، جن کا واحد مقصد زندگی میں دھکا 992 00:55:49,000 --> 00:55:51,000 بالکل ایسا ہو جائے گی. 993 00:55:51,000 --> 00:55:54,000 آپ کو یا اس کے یا اس کے جو کہ اس پروگرام کو لاگو 994 00:55:54,000 --> 00:55:58,000 کا فیصلہ مکمل طور پر کس طرح لاگو کرنے کے لئے ایک ہوتا 995 00:55:58,000 --> 00:56:00,000 آگے بڑھانے اور ہڈ کے نیچے پوپ آؤٹ کرنے کے semantics 996 00:56:00,000 --> 00:56:03,000 یا آگے بڑھانے اور پوپ آؤٹ کی فعالیت. 997 00:56:03,000 --> 00:56:07,000 اور میں نے یہاں کسی حد تک shortsighted فیصلہ کر دیا ہے 998 00:56:07,000 --> 00:56:10,000 اس سادہ آنکڑا ڈھانچہ کیوں کے ساتھ میری اسٹیک کو لاگو کرنے کی طرف سے؟ 999 00:56:10,000 --> 00:56:12,000 یہ آنکڑا ڈھانچہ ٹوٹتا کب؟ 1000 00:56:12,000 --> 00:56:18,000 کس وقت میں نے ایک خرابی جب صارف مطالبہ دھکا مثال کے طور پر واپس آ، ہے؟ 1001 00:56:18,000 --> 00:56:20,000 [Student کی] اگر کوئی زیادہ جگہ ہے. 1002 00:56:20,000 --> 00:56:23,000 بالکل، اگر وہاں کوئی جگہ نہیں ہے، اگر میں نے صلاحیت سے تجاوز کر گئی ہے، 1003 00:56:23,000 --> 00:56:27,000 جس میں تمام بڑے حروف ہے کیونکہ اس سے پتہ چلتا ہے کہ یہ عالمی سطح پر مسلسل کی کسی قسم ہے. 1004 00:56:27,000 --> 00:56:30,000 ٹھیک ہے، تو میں صرف ہیں جا رہا ہوں، کا کہنا ہے کہ "معاف کیجئے گا، میں کسی دوسرے قدر دھکا نہیں کر سکتے ہیں 1005 00:56:30,000 --> 00:56:32,000 اسٹیک پر، "Mather میں زیادہ پسند کرتے ہیں. 1006 00:56:32,000 --> 00:56:36,000 >> کچھ وقت انہوں نے اس چھوٹی سی کابینہ کے سب سے اوپر حصہ کو نشانہ بنانے جا رہے ہیں. 1007 00:56:36,000 --> 00:56:39,000 اسٹیک میں کوئی جگہ یا صلاحیت ہے، جو نقطہ کچھ قسم کی غلطی کی ہے. 1008 00:56:39,000 --> 00:56:42,000 وہ عنصر کہیں اور رکھ ہے، ٹرے کہیں اور، 1009 00:56:42,000 --> 00:56:44,000 یا کہیں. 1010 00:56:44,000 --> 00:56:47,000 اب ہم ایک قطار کے ساتھ یہ ایک مختلف تھوڑا عمل درآمد کر سکتے ہیں. 1011 00:56:47,000 --> 00:56:50,000 ایک قطار ہے کہ ہڈ کے نیچے، اسے لاگو کیا جا سکتا ہے میں تھوڑا مختلف ہے 1012 00:56:50,000 --> 00:56:54,000 ایک صف کے طور پر، لیکن کیوں، اس معاملے میں، میں تجویز کر رہا ہوں 1013 00:56:54,000 --> 00:56:59,000 بھی سر فہرست کے سربراہ کی نمائندگی عنصر ہے، 1014 00:56:59,000 --> 00:57:06,000 فہرست کے سائز کے علاوہ میں سامنے، ایپل اسٹور میں لائن میں پہلے شخص ہیں؟ 1015 00:57:06,000 --> 00:57:14,000 میں ڈیٹا کا ایک اضافی ٹکڑے یہاں کیوں ضرورت ہے؟ 1016 00:57:14,000 --> 00:57:16,000 کیا تعداد ہے واپس سوچو 1017 00:57:16,000 --> 00:57:18,000 اگر میں نے تیار کیا ہے اس کے طور پر مندرجہ ذیل ہے. 1018 00:57:18,000 --> 00:57:21,000 اگر یہ اب بجائے اسٹیک ایک قطار ہے، 1019 00:57:21,000 --> 00:57:24,000 ہونے کے صرف ایپل اسٹور قطار کی طرح فرق منصفانہ ہے. 1020 00:57:24,000 --> 00:57:27,000 فہرست کے آغاز میں لائن میں پہلے شخص، اس معاملے میں نمبر 5، 1021 00:57:27,000 --> 00:57:30,000 وہ اسٹور میں ہم سب سے پہلے ہو رہا ہے. 1022 00:57:30,000 --> 00:57:32,000 کہ کیا دو 1023 00:57:32,000 --> 00:57:35,000 مان لیں کہ اس وقت میں اس وقت میری قطار کی حالت ہے، اور اب ایپل اسٹور 1024 00:57:35,000 --> 00:57:39,000 کھلتا ہے اور پہلے شخص، 5 نمبر، اسٹور میں رہنمائی میں کام کرتا ہے. 1025 00:57:39,000 --> 00:57:43,000 میں تصویر کیسے تبدیل کروں کہ میں پہلا شخص ہے DE قطار میں 1026 00:57:43,000 --> 00:57:47,000 لائن کے سامنے؟ 1027 00:57:47,000 --> 00:57:50,000 کیا ہے وہ >> [Student کی]. قطار تبدیل کریں 1028 00:57:50,000 --> 00:57:52,000 سر تبدیل کریں، تو 5 غائب. 1029 00:57:52,000 --> 00:57:56,000 حقیقت میں، یہ اسی طرح سب سے بہتر لیکن کس طرح ہے کہ یہ کرنے کی؟ 1030 00:57:56,000 --> 00:58:00,000 حقیقت میں، ایسا لگتا ہے جیسے اس آدمی غائب. 1031 00:58:00,000 --> 00:58:03,000 کیا ایک حقیقی سٹور میں نمبر 7 کیا کریں گے؟ 1032 00:58:03,000 --> 00:58:05,000 انہوں نے ایک بڑا قدم آگے لے جائے گا. 1033 00:58:05,000 --> 00:58:08,000 >> لیکن کیا ہم تعریف کرتے ہیں جب یہ arrays پر آتا ہے آئے 1034 00:58:08,000 --> 00:58:10,000 اور ارد گرد چیزوں منتقل؟ 1035 00:58:10,000 --> 00:58:12,000 یہ اپنے وقت کی بربادی کی طرح ہے، ہے نا؟ 1036 00:58:12,000 --> 00:58:16,000 تم اتنے مقعد کے طور پر پہلا شخص کیوں ہے 1037 00:58:16,000 --> 00:58:21,000 جسمانی طور پر میموری کا حصہ کے آغاز میں لائن کے آغاز میں؟ 1038 00:58:21,000 --> 00:58:23,000 یہ مکمل طور پر غیر ضروری ہے. کیوں؟ 1039 00:58:23,000 --> 00:58:26,000 کیا صرف میں بجائے یاد سکتا ہے >> [اشراوی طالب علم کے جواب] 1040 00:58:26,000 --> 00:58:30,000 بالکل، میں اس اضافی ڈیٹا کی رکن سر کے ساتھ یاد کر سکتے ہیں 1041 00:58:30,000 --> 00:58:34,000 کہ اب فہرست کے سربراہ اب نہیں 0 ہے، جو اس ایک لمحے پہلے تھا. 1042 00:58:34,000 --> 00:58:39,000 اب یہ اصل میں نمبر 1 ہے. اس طرح، میں ایک ہلکا سا اصلاح کے ملتا ہے. 1043 00:58:39,000 --> 00:58:44,000 صرف اس لئے کہ میں لائن کے آغاز میں ہے ایپل اسٹور میں لائن سے کوئی ڈی قطار میں 1044 00:58:44,000 --> 00:58:47,000 کا مطلب یہ نہیں ہے ہر کسی کو منتقل، جس میں واپسی ایک لکیری آپریشن ہے. 1045 00:58:47,000 --> 00:58:50,000 میں مسلسل وقت کی بجائے صرف بتا سکتے ہیں 1046 00:58:50,000 --> 00:58:53,000 اور پھر بہت تیزی سے جواب حاصل کریں. 1047 00:58:53,000 --> 00:58:56,000 لیکن قیمت میں دے رہا ہوں ہے جو کہ اضافی کارکردگی کو حاصل کرنے کے لئے 1048 00:58:56,000 --> 00:58:58,000 ہے اور سب کو تبدیل کرنے نہیں؟ 1049 00:58:58,000 --> 00:59:01,000 جی ہاں >> [اشراوی طالب علم کے جواب] 1050 00:59:01,000 --> 00:59:04,000 زیادہ سے زیادہ لوگوں کو شامل کر سکتے ہیں، ٹھیک ہے، اس مسئلہ عمودی ہے 1051 00:59:04,000 --> 00:59:07,000 حقیقت یہ ہے کہ ہم لوگوں کے ارد گرد منتقل کر رہے ہیں نہیں. 1052 00:59:07,000 --> 00:59:11,000 یہ اب بھی ایک صف ہے یا نہیں، تو ہم سب کو منتقل یا نہیں 1053 00:59:11,000 --> 00:59:13,000 اوہ، میں دیکھ رہا ہوں آپ کا کیا مطلب ہے، ٹھیک ہے. 1054 00:59:13,000 --> 00:59:16,000 اصل میں، میں نے جو تم کہہ رہے ہو کہ یہ تقریبا جیسے رہے ہیں کے ساتھ اتفاق کرتا ہوں 1055 00:59:16,000 --> 00:59:19,000 اب ہم اس صف کے آغاز کو اور زیادہ کرنے کے لئے استعمال کر رہے ہیں کبھی نہیں 1056 00:59:19,000 --> 00:59:22,000 کیونکہ اگر میں 5 نکال دیں، تو میں 7 خارج کر دیں. 1057 00:59:22,000 --> 00:59:24,000 لیکن میں صرف لوگوں کو حق پر ڈال دیا ہے. 1058 00:59:24,000 --> 00:59:28,000 >> ایسا لگتا ہے جیسے میں خلا برباد کر رہا ہوں، اور آخر میں میری قطار میں بالکل کچھ بھی نہیں میں disintegrates، 1059 00:59:28,000 --> 00:59:31,000 تو ہم لوگوں wraparound کر سکتے ہیں، 1060 00:59:31,000 --> 00:59:35,000 اور ہم سرکلر ساخت کے کسی قسم کے طور پر اس صف واقعی لگتا ہے کہ کر سکتے ہیں، 1061 00:59:35,000 --> 00:59:38,000 لیکن ہم C میں آپریٹر کیا استعمال کرتے ہیں wraparound اس طرح کرنا ہے؟ 1062 00:59:38,000 --> 00:59:40,000 [اشراوی طالب علم کے جواب] >> modulo آپریٹر. 1063 00:59:40,000 --> 00:59:43,000 یہ ایک چھوٹا سا پریشان ہو خیال کرنا کہ آپ کس طرح wraparound کرتے ہیں، 1064 00:59:43,000 --> 00:59:46,000 لیکن ہم نے اسے ایسا کرتے ہیں، اور ہم لائن کے سامنے کیا کرتے تھے لوگوں لگانے شروع کر سکتا ہے کر سکتے ہیں، 1065 00:59:46,000 --> 00:59:52,000 لیکن ہم اس سر متغیر ہے جو لائن کے اصل سر اصل میں ہے کے ساتھ یاد کرتا ہوں. 1066 00:59:52,000 --> 00:59:57,000 کیا ہوگا اگر، بجائے، بالآخر ہمارا مقصد ہے، اگرچہ، 1067 00:59:57,000 --> 01:00:00,000 تعداد پر نظر تھا، جیسا کہ ہم انیتا کے ساتھ اسٹیج پر یہاں آیا، 1068 01:00:00,000 --> 01:00:02,000 لیکن ہم سچ میں ان تمام جہانوں کا سب سے بہتر کرنا چاہتے ہیں؟ 1069 01:00:02,000 --> 01:00:05,000 ہم اور نفاست سے صف کی اجازت دیتا ہے کی ضرورت ہے 1070 01:00:05,000 --> 01:00:09,000 کیونکہ ہم کو متحرک طور پر آنکڑا ڈھانچہ میں اضافہ کرنے کی صلاحیت کی ضرورت ہے. 1071 01:00:09,000 --> 01:00:12,000 لیکن ہم کچھ سہارا لینا کہ ہم نے کہا ہے نہیں کرنا چاہتا 1072 01:00:12,000 --> 01:00:15,000 پہلا لیکچر میں ایک بہترین طریقہ نہیں تھا، 1073 01:00:15,000 --> 01:00:17,000 لکیری تلاش کی ہے. 1074 01:00:17,000 --> 01:00:21,000 یہ پتہ چلا ہے کہ آپ اصل میں، حاصل کر سکتے ہیں 1075 01:00:21,000 --> 01:00:24,000 یا کم از کم مسلسل وقت کے قریب ہے، جس، انیتا کی طرح کسی 1076 01:00:24,000 --> 01:00:27,000 اگر وہ اس کی آنکڑا ڈھانچہ تشکیل منسلک فہرست نہیں، 1077 01:00:27,000 --> 01:00:30,000 اسٹیک نہیں، اس کے لئے ایک قطار نہیں، اصل میں، کر سکتے ہیں، 1078 01:00:30,000 --> 01:00:33,000 آنکڑا ڈھانچہ ہے کہ اسے چیزیں تلاش کرنے کی اجازت دیتا ہے کے ساتھ آئے، 1079 01:00:33,000 --> 01:00:37,000 بھی الفاظ، تعداد نہ صرف ہمیں کیا میں مسلسل وقت فون کرتا ہوں. 1080 01:00:37,000 --> 01:00:40,000 >> اور حقیقت میں، اس کلاس میں psets میں سے ایک مستقبل دیکھ تقریبا ہمیشہ ہی ہے 1081 01:00:40,000 --> 01:00:43,000 ایک spellchecker کا ایک عمل درآمد جس کے تحت، 1082 01:00:43,000 --> 01:00:46,000 ہم آپ کو دوبارہ دے بعض 150،000 انگریزی الفاظ اور مقصد ہے 1083 01:00:46,000 --> 01:00:51,000 میموری میں ان لوڈ اور تیزی سے فارم کے سوالات کا جواب دینے کے قابل ہو جائے 1084 01:00:51,000 --> 01:00:54,000 اس لفظ کے ہجے درست ہے؟ 1085 01:00:54,000 --> 01:00:58,000 اور اگر آپ تمام 150،000 الفاظ کے ذریعے اس کا جواب iterate تھا سچ میں دودھ گی. 1086 01:00:58,000 --> 01:01:02,000 لیکن حقیقت میں، ہم دیکھتے ہیں، کہ ہم یہ بہت، بہت جلد وقت میں کر سکتے ہیں کریں گے. 1087 01:01:02,000 --> 01:01:06,000 اور اس پر عملدرآمد سے ملاقات کی ایک ہیش میز کچھ شامل کیا جا رہا ہے، 1088 01:01:06,000 --> 01:01:09,000 اور اگرچہ پہلی نظر میں اس ملاقات کی ایک ہیش میز چیز جا رہا ہے 1089 01:01:09,000 --> 01:01:12,000 ہمیں حاصل کرنے کے لئے ان سپر ریپڈ رسپانس اوقات 1090 01:01:12,000 --> 01:01:18,000 یہ پتہ چلا ہے کہ حقیقت میں ایک مسئلہ ہے. 1091 01:01:18,000 --> 01:01:23,000 جب یہ پھر کہا بات کو لاگو کرنے کے لئے وقت آئے گا، میں اسے پھر سے کر رہا ہوں. 1092 01:01:23,000 --> 01:01:25,000 میں یہاں صرف ایک ہوں. 1093 01:01:25,000 --> 01:01:28,000 جب آئے اس بات کو لاگو کرنے کے لئے وقت نے ایک ہیش میز، 1094 01:01:28,000 --> 01:01:30,000 ہم کو کوئی فیصلہ کرنے کی ضرورت کے لئے جا رہے ہیں. 1095 01:01:30,000 --> 01:01:32,000 یہ چیز اصل میں کتنا بڑا ہونا چاہئے؟ 1096 01:01:32,000 --> 01:01:36,000 اور جب ہم اس ہیش ٹیبل میں داخل تعداد شروع، 1097 01:01:36,000 --> 01:01:38,000 ہم انہیں اس طرح میں جمع کس طرح جا رہے ہیں 1098 01:01:38,000 --> 01:01:42,000 ہے کہ ہم انہیں واپس لانے کے طور پر فوری طور پر کے طور پر ہم ان میں ملا سکتے ہیں؟ 1099 01:01:42,000 --> 01:01:45,000 لیکن ہم سے بہت پہلے سے نظر آئے گا کہ اس سوال کا 1100 01:01:45,000 --> 01:01:48,000 جب کلاس میں سب سالگرہ ہے بہت germane گا. 1101 01:01:48,000 --> 01:01:51,000 یہ پتہ چلا ہے کہ اس کمرے میں، ہم چند سو لوگوں کو ہے، 1102 01:01:51,000 --> 01:01:56,000 مشکلات تاکہ ہم دونوں شاید اسی سالگرہ ہے بہت اعلی ہے. 1103 01:01:56,000 --> 01:01:58,000 اگر ہم اس کمرے میں صرف 40 تھے؟ 1104 01:01:58,000 --> 01:02:02,000 اسی سالگرہ کے دو لوگوں کی مشکلات کیا ہیں؟ 1105 01:02:02,000 --> 01:02:04,000 [طلباء] 50 فیصد سے زائد ہے. 1106 01:02:04,000 --> 01:02:06,000 جی ہاں، 50 فیصد سے زائد ہے. اصل میں، میں نے ایک چارٹ بھی لے کر آئے. 1107 01:02:06,000 --> 01:02:08,000 یہ اور بدل جاتا ہے یہ سچ ہے صرف ایک چوری چھپے پیش منظر 1108 01:02:08,000 --> 01:02:12,000 اگر صرف اس کمرے میں ہم 58 ہے، ہم میں سے 2 کا امکان ہے 1109 01:02:12,000 --> 01:02:16,000 اسی سالگرہ کے انتہائی اعلی ہے، تقریبا 100 فیصد، 1110 01:02:16,000 --> 01:02:20,000 اور یہ کہ بدھ کو ہمارے لئے نقصان پہنچنے کا مکمل جھوبڈ کی وجہ سے ہو رہا ہے. 1111 01:02:20,000 --> 01:02:24,000 >> کے ساتھ اس نے کہا، یہاں ملتوی. ہم آپ کو بدھ کو نظر آئے گا. 1112 01:02:24,000 --> 01:02:28,000 [تعریف] 1113 01:02:28,000 --> 01:02:30,000 [CS50.TV]