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