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