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