[موسیقی بجانے]
DAVID J. MALAN: ٹھیک ہے.
یہ CS50 ہے.
اس ہفتے پانچ جاری ہے، اور ہم کچھ اچھی خبر اور ایک بری خبر ہے.
تو اچھی خبر یہ ہے کہ CS50 ہے اس جمعہ کا آغاز.
آپ ہمارے ساتھ شامل کرنا چاہتے ہیں تو، یہاں معمول URL سر.
بھی اچھی خبر، کوئی لیکچر یہ 13th پیر آ.
تھوڑا کم بہتر خبر، کوئز صفر اگلے بدھ ہے.
مزید تفصیلات ہو سکتا ہے اس یو آر ایل میں پایا.
اور اگلے چند دنوں میں ہم خالی میں بھرنے ہوں گے
کمرے کے حوالے سے ہم نے محفوظ کیا جائے گا کہ.
بہتر خبر کریں گے ایک کورس وسیع جائزہ لینے
اجلاس اس آنے والے شام میں پیر.
کورس کے کرنے کے لئے دیکھتے رہو مقام اور تفصیلات کے لئے ویب سائٹ.
یہ ایک ہے اگرچہ حصوں، چھٹی کے دن، بھی ملاقات کریں گے.
سب سے اچھی خبر، اگلے جمعہ لیکچر.
تو یہ ایک روایت ہم ہے نصاب کے مطابق کے طور پر، ہے.
Just-- یہ حیرت انگیز ہونے جا رہا ہے.
تم ان چیزوں کو دیکھیں گے مسلسل وقت کے اعداد و شمار کے ڈھانچے
اور ہیش میزیں اور درخت اور کوشش کرتا ہے.
اور ہم نے سالگرہ مسائل کے بارے میں بات کریں گے.
چیزیں ایک مکمل جھوبڈ اگلے جمعہ انتظار کر رہا ہے.
ٹھیک ہے.
پھر بھی.
>> تو ہم کیا گیا ہے کہ یاد کیا ہے اس تصویر پر توجہ مرکوز
ہمارے کمپیوٹر میموری کے اندر.
تو میموری یا رام جہاں پروگراموں ہے تم ان سے چلا رہے ہیں جبکہ موجود.
آپ کو ایک ڈبل کلک کریں تو آئکن کچھ پروگرام کو چلانے کے لئے
یا ایک ڈبل کلک کریں کسی فائل کو کھولنے کے لئے آئکن،
یہ آپ کی ہارڈ سے بھری ہوئی ہے ڈرائیو یا ٹھوس ریاست ڈرائیو
رام، رینڈم رسائی میموری، جہاں میں بجلی بند جاتا ہے جب تک یہ زندگی
لیپ ٹاپ ڑککن، بند یا آپ کو پروگرام چھوڑ.
>> اب میموری، کی جس سے آپ کو شاید
1 گیگا بائٹ ان دنوں، 2 گیگا بائٹ، یا اس سے بھی بہت زیادہ،
عام طور پر باہر رکھی ہے ایک دیئے گئے پروگرام کے لئے
آئتاکار کے اس طرح میں تصوراتی ماڈل
ہم نچلے حصے میں اسٹیک ہے جس کے تحت اور سب سے اوپر دیگر سامان کا ایک گروپ.
سب سے اوپر بات ہم اس تصویر پر دیکھا ہے
لیکن اس سے پہلے کبھی نہیں کے بارے میں بات نام نہاد متن حصہ ہے.
متن طبقہ صرف ایک پسند ہیں طریقہ ہے zeros اور ہیں یہ کہہ کے کہ
آپ کی اصل مرتب پروگرام تحریر.
>> تو جب آپ ڈبل کلک کریں اپنے میک یا پی سی پر مائیکروسافٹ ورڈ،
آپ ڈاٹ چلاتے ہیں یا ایک پر ماریو سلیش آپ کے ٹرمنل ونڈو میں لینکس کمپیوٹر،
تحریر ہے کہ zeros اور ہیں لفظ یا ماریو عارضی طور پر ذخیرہ کر رہے ہیں
نام نہاد میں آپ کے کمپیوٹر کی RAM میں ایک خاص پروگرام کے لئے متن کے ٹکڑے.
جاتا ہے کہ مندرجہ ذیل سے initialized اور غیر ابتدا شدہ ڈیٹا.
یہ عالمی متغیر طرح سامان ہے، ہم میں سے بہت سے نہیں استعمال کیا جاتا ہے کہ،
لیکن اس موقع پر ہم نے عالمی متغیر تھا
یا سے Statically ڈور وضاحت کی ہے کہ مشکل "ہیلو" جیسے الفاظ کوڈت ہے
صارف کی طرف سے میں لے جایا نہیں کر رہے ہیں کہ آپ کے پروگرام میں مشکل کوڈت رہے ہیں.
>> اب، نیچے کے نیچے دیے گئے ہم نام نہاد اسٹیک ہے.
اور اسٹیک، اس طرح اب تک، ہم کیا گیا ہے مقاصد کیا اقسام کے لئے کا استعمال کرتے ہوئے؟
اسٹیک کے لئے استعمال کیا گیا ہے؟
جی ہاں؟
>> سامعین: افعال.
>> DAVID J. MALAN: افعال کے لئے؟
افعال کے لئے کس معنی میں؟
>> سامعین: آپ کو ایک تقریب کہتے ہیں، دلائل اسٹیک پر کاپی کر رہے ہیں.
>> DAVID J. MALAN: بالکل.
آپ کو ایک تقریب کہتے ہیں، اس دلائل اسٹیک پر کاپی کر رہے ہیں.
تو کسی بھی X یا Y یا ایک یا B کی آپ کو ایک تقریب میں گزر رہے ہیں کہ
عارضی طور پر ڈال رہے ہیں نام نہاد اسٹیک،
صرف Annenberg میں سے ایک کی طرح ڈائننگ ہال کی ٹرے، اور بھی چیزیں
مقامی متغیر کی طرح.
اگر آپ FOO تقریب یا آپ کردہ تقریب مقامی متغیر ہے،
عارضی طرح، ان دو اسٹیک پر ختم.
اب، ہم کے بارے میں بہت زیادہ بات نہیں کریں گے ان، لیکن ان ماحول متغیر
کے نیچے دیے گئے ہم تھوڑی دیر پہلے جب دیکھا میں کی بورڈ سے ایک دن میں futzing تھا
اور میں چیزوں تک رسائی حاصل کرنے شروع کر دیا argv کے 100 یا ہے argv 1،000 طرح،
صرف عناصر میں بھول تعداد لیکن اس
میری طرف سے حاصل کیا جا کرنے کی توقع نہیں کر رہے تھے.
ہم نے کچھ دیکھ کر شروع کر دیا سکرین پر funky علامات.
وہ نام نہاد تھے ماحول متغیر
کے لئے عالمی سطح کی ترتیبات کی طرح میرے پروگرام یا میرے کمپیوٹر، نہیں
حال ہی میں غیر متعلقہ ہم نے بات چیت ہے کہ بگ،
Shellshock کے، کہ رہا ہے چند کمپیوٹرز کو درپیش.
>> اب آخر میں، آج کی توجہ میں ہم بالآخر ڈھیر پر ہو جائے گا.
یہ میموری کا ایک حصہ ہے.
اور بنیادی طور پر یہ سب میموری کو ایک ہی چیز ہے.
یہ ایک ہی ہارڈ ویئر ہے.
ہم قسم کی صرف ہو مختلف کلسٹرز علاج
مختلف مقاصد کے لئے شراکت.
ڈھیر بھی جہاں جا رہا ہے آپ سے درخواست ہے کہ متغیر اور میموری
آپریٹنگ سسٹم کی طرف سے عارضی طور پر محفوظ کیا جاتا ہے.
>> لیکن یہاں ایک مسئلہ کی طرح ہے یہاں، تصویر کا مطلب ہے کے طور پر.
ہم قسم کی دو کے بارے میں بحری جہاز ٹکرانے.
آپ زیادہ سے زیادہ استعمال کرتے ہیں کے طور پر کی وجہ سے آج ہم دیکھتے ہیں اسٹیک کے، اور کے طور پر
آگے، آپ کو زیادہ سے زیادہ استعمال کرتے ہیں کے طور پر ڈھیر، یقینا بری چیزیں ہو سکتا ہے.
اور یقینا، ہم اس کی حوصلہ افزائی کر سکتے ہیں ارادی یا غیر ارادی.
آخری cliffhanger کے تو وقت اس پروگرام تھا،
کسی بھی فعال خدمت نہیں کیا جس مظاہرہ کرنے کے لئے مقابلے میں دوسرے مقصد
آپ کس طرح ایک برا آدمی اصل میں لے جا سکتے ہیں کے طور پر کسی کے پروگرام میں کیڑے کا فائدہ
اور یہاں تک کہ ایک پروگرام یا پر قبضہ پورے کمپیوٹر سسٹم یا سرور.
تو صرف نظر کرنے کے لئے مختصر طور پر، آپ نچلے حصے میں ہے کہ اہم نوٹس
کمانڈ لائن میں لیتا ہے argv کے مطابق دلائل،.
اور یہ ایک تقریب F کرنے کے لئے ایک کال ہے، بنیادی طور پر ایک گمنام تقریب میں بلایا
F، اور یہ argv میں گزر ہے [1].
>> تو میں جو لفظ میں صارف اقسام اس پروگرام کے نام کے بعد فوری طور پر،
اور پھر یہ صوابدیدی تقریب سب سے اوپر، F، ایک تار میں لیتا ہے، AKA چار *،
ہم کے بارے میں بات کرنے کے لئے شروع کر دیا ہے کے طور پر، اور یہ صرف "بار کہتا ہے".
لیکن ہم کچھ بھی کہہ سکتے ہیں.
اور پھر اس کے اندر، کا اعلان F، حروف کی ایک سرنی کے
12 اس طرح کے حروف c-- کہا.
>> اب، کہانی کی طرف سے میں کہہ رہا تھا ایک لمحے پہلے، جہاں کی یاد میں
C ہے، یا ان 12 کو ختم کرنے جا حروف؟
بس صاف ہو جائے.
جی ہاں؟
>> سامعین: اسٹیک پر.
>> DAVID J. MALAN: اسٹیک پر.
تو C ایک مقامی متغیر ہے.
ہم نے 12 حروف یا 12 بائٹس کے لئے پوچھ رہے ہیں.
وہ ختم کرنے کے لئے جا رہے ہیں نام نہاد اسٹیک پر.
اب آخر یہ دوسری تقریب ہے کہ، اصل میں بہت مفید ہے
لیکن ہم سچ میں نہیں استعمال کیا جاتا ہے یہ خود، strncopy.
یہ، سٹرنگ کاپی کا مطلب ہے لیکن صرف حروف، ن حروف ن.
تو (ن) حروف ہو جائے گا C میں بار سے کاپی.
اور کتنے؟
بار کی لمبائی.
تو دوسرے الفاظ میں، کہ ایک ہی لائن میں، strncopy،
کاپی کرنے کے لئے کی جا رہی ہے مؤثر طریقے سے کرنے کے لئے سی میں بار.
>> اب، صرف کی قسم کا اندازہ کرنے کے لئے اس کہانی کا اخلاقی،
یہاں ممکنہ طور پر پریشانی ہے؟
ہم لمبائی کی جانچ پڑتال کر رہے ہیں، اگرچہ بار اور strncopy میں گزر،
کیا اپنے گٹ تم سے کہہ رہا ہے اب بھی اس پروگرام کے بارے میں ٹوٹ؟
جی ہاں؟
>> سامعین: شامل نہیں ہے شہوت انگیز null کردار کے لئے کمرے.
DAVID J. MALAN: شامل نہیں ہے شہوت انگیز null کردار کے لئے کمرے.
میں ممکنہ طور پر، کے برعکس ماضی کی مشق ہم بھی نہیں
ایک پلس 1 کے طور پر زیادہ سے زیادہ کہ شہوت انگیز null کردار کو ایڈجسٹ.
لیکن یہ اس سے بھی بدتر ہے.
اور کیا ہم ایسا کرنے میں ناکام رہے ہیں؟
جی ہاں؟
>> سامعین: [اشراوی]
DAVID J. MALAN: کامل.
ہم مشکل بہت منمانے 12 کوڈت ہے.
یہ اتنا نہیں ہے مسئلہ، لیکن حقیقت یہ ہے
ہم یہاں تک کہ اگر جانچ پڑتال نہیں کر رہے ہیں بار کی لمبائی، کم سے کم 12 ہے
جس صورت میں یہ ہونے جا رہا ہے میموری میں ڈال کرنے کے لئے محفوظ
ہم مختص ہے کہ کہا جاتا سی.
بے شک، بار کی طرح ہے طویل 20 حروف،
اس تقریب کاپی جائے ظاہر ہوتا ہے اس طرح سی میں بار، سے 20 حروف
میں کم از کم 8 بائٹس لے یہ نہیں ہونا چاہئے کہ.
کہ یہاں مطلب ہے.
>> مختصر، ٹوٹے ہوئے پروگرام میں تو.
ایک بڑا سودا ایسا نہیں.
شاید آپ کو ایک انقطاع غلطی حاصل.
ہم تمام پروگراموں میں کیڑے پڑا ہے.
ہم تمام کیڑے ہو سکتا ہے ابھی پروگراموں میں.
لیکن کیا مطلب ہے؟
ٹھیک ہے، یہاں کی ایک یکبر میں ورژن ہے اپنے کمپیوٹر کی میموری کی تصویر.
یہ میرا اسٹیک کے سب سے نیچے ہے.
اور یقینا، بہت نیچے کیا ہے کہا جاتا والدین معمول اسٹیک، فینسی طریقہ
کی ہے کہ اہم کہہ.
تقریب میں بلایا جس نے کہ تو ہم کے بارے میں بات کر رہے ہیں کہ ایف.
تو یہ اسٹیک کے سب سے نیچے ہے.
واپسی ایڈریس کے نئی چیز ہے.
یہ ہمیشہ، ہو رہا ہے ہمیشہ اس تصویر میں کیا گیا.
ہم نے اس کی طرف توجہ دلائی صرف کبھی نہیں.
یہ باہر کر دیتا ہے کیونکہ C کام ہے ایک تقریب میں ایک اور مطالبہ ہے کہ جب،
نہ صرف یہ کہ دلائل کرنا تقریب اسٹیک پر دھکیل دیا ہو،
نہ صرف تقریب کی مقامی کرنا متغیر اسٹیک پر دھکیل دیا ہو،
کچھ واپسی ایڈریس بلایا بھی اسٹیک پر ڈال دیا جاتا ہے.
خاص طور پر، اگر اہم کالز FOO، اہم یاد میں اپنے ایڈریس، بیل کچھ،
مؤثر طریقے سے اسٹیک پر ڈال دیا جاتا ہے تاکہ F اس پر عمل کیا جاتا ہے جب
متن میں واپس کود جہاں جانتا ہے عمل جاری رکھنے کے لئے طبقہ.
>> ہم تصوراتی یہاں ہیں تو، اہم میں، اس کے بعد ایف کہا جاتا ہے.
F معلوم ہے کس طرح جو واپس ہاتھ کنٹرول کرنے کے لئے؟
ویسے، یہ چھوٹا سا یہاں سرخ میں breadcrumb،
واپسی ایڈریس کے کہا، یہ صرف چیک، کہ واپسی ایڈریس کیا ہے؟
اوہ، مجھے یہاں واپس اہم کود.
اور یہ کہ ایک تھوڑا سا ہے ایک oversimplification کے،
zeros اور ہیں کیونکہ اہم تکنیکی ہیں
یہاں ٹیک طبقہ میں.
لیکن یہ خیال ہے. F کیا پتہ ہے
جہاں کنٹرول بالآخر واپس چلا جاتا ہے.
>> لیکن جس طرح کمپیوٹر طویل چیزیں رکھی ہے
مقامی متغیر کی طرح اور دلائل اس طرح ہے.
اس تصویر کے سب سے اوپر میں تو بلیو تو تمام، F لئے اسٹیک فریم ہے
میموری کے اس F خاص طور پر استعمال کر رہا ہے.
تو اس کے مطابق، کہ نوٹس بار اس تصویر میں ہے.
بار اس کی دلیل تھا.
اور ہم نے دعوی کیا دلائل کہ افعال اسٹیک پر دھکیل دیا ہو.
اور سی، کورس کی، ہے بھی اس تصویر میں.
>> اور صرف notational کے مقاصد کے لئے، سب سے اوپر بائیں کونے میں محسوس
بریکٹ 0 C ہو جائے گا ہے اور پھر تھوڑا سا دائیں کرنے کے لئے نیچے
سی بریکٹ 11 ہے.
تو دوسرے الفاظ میں، آپ تصور کر سکتے ہیں بائٹس کی ایک گرڈ ہے کہ
وہاں، پہلی جس کے سب سے اوپر بائیں، نیچے، جس کے
ان 12 بائٹس کی آخری ہے.
>> لیکن اب آگے بڑھانے کی کوشش کریں.
کیا ہم پاس ہونے کے بارے میں ہے C سے زیادہ ہے کہ ایک تار بار میں؟
اور ہم جانچ پڑتال اگر نہیں کر رہے ہیں یہ واقعی اب 12 سے زیادہ ہے.
اس تصویر کے جس حصہ میں کی جا رہی ہے بائٹس 0، 1، 2، 3 کی طرف سے ادلیکھت ہو،
ڈاٹ ڈاٹ ڈاٹ، 11، اور پھر برا، 12، 19 کے ذریعے 13؟
کیا، یہاں ہونے جا رہا ہے آپ حکم سے نتیجہ نکالنا ہے تو
کہ سی بریکٹ 0 سب سے اوپر ہے اور سی بریکٹ 11 نیچے طرح ہے
درست کرنے کے لئے؟
جی ہاں؟
>> سامعین: ٹھیک ہے، یہ جا رہا ہے چار * بار ادلیکھت.
>> DAVID J. MALAN: جی ہاں، اس طرح لگ رہا ہے آپ چار * بار ادلیکھت کرنے جا رہے ہیں.
اور بدتر، آپ کو ایک بہت طویل میں بھیجنے سٹرنگ، آپ بھی کیا ادلیکھت ہو سکتا ہے؟
واپسی ایڈریس کے.
پھر جس، صرف ایک طرح ہے پروگرام جہاں بتانے کے لئے breadcrumb کی
جب F کرنے کے لئے واپس جانے کے لئے کہا جا رہا کیا جاتا ہے.
>> تو برے لوگوں کو عام طور پر کیا کرتے ہیں وہ پروگرام کے اس پار آئے تو ہے
وہ ہے کہ شوقین ہیں اس طرح میں ہے exploitable، چھوٹی گاڑی
وہ لے سکتے ہیں اس مسئلے کا فائدہ،
عام طور پر وہ نہیں ملتا اس حق کو پہلی بار.
وہ صرف مثال کے طور پر، بھیجنے شروع، آپ کے پروگرام میں بے ترتیب ڈور،
بورڈ میں چاہے، یا واضح طور سے وہ شاید
ایک چھوٹا سا پروگرام کو لکھنے، صرف خود کار طریقے سے پیدا ڈور،
اور کی طرف سے آپ کے پروگرام پر پیٹنے شروع مختلف آدانوں کے بہت سے میں بھیجنے
مختلف لمبائی میں.
>> جیسے ہی آپ کے پروگرام کے طور پر گر کر تباہ، کہ ایک حیرت انگیز بات ہے.
وہ کیونکہ اس کا مطلب یا وہ دریافت کیا ہے
کیا یقینا شاید ایک مسئلے سے ہے.
اور پھر وہ زیادہ ہوشیار حاصل کر سکتے ہیں اور شروع سے زیادہ بال توجہ مرکوز
اس مسئلے سے فائدہ اٹھانے کے لئے کس طرح.
خاص طور پر، کیا وہ یا وہ ہو سکتا ہے ایسا خوش، بہترین صورت میں، بھیجنے ہے.
کوئی بڑی بات نہیں.
یہ کافی مختصر ہے کہ ایک تار ہے.
لیکن کیا وہ یا وہ بھیجتا ہے، اور ہم، اس کے طور پر وسیع کریں گے
حملے سے zeros تو code-- اور یہ کہ لوگ باتیں کرتے ہیں
RM-RF کی طرح، ہر چیز کو ہٹانے کہ ہارڈ ڈرائیو سے یا فضول بھیجنے کے
یا کسی نہ کسی طرح کی مشین پر حملہ؟
>> ان میں سے ہر ایک تو ایک خط صرف، کی نمائندگی کرتا ہے
تصوراتی، حملہ، حملے، حملہ، حملے، کچھ بری کوڈ
کسی اور نے لکھا ہے کہ، لیکن اس شخص کو کافی ہوشیار ہے تو
نہ صرف کرنے کے لئے تمام میں شامل ان RM-RFS کے، بلکہ
اس کا یا اس گزشتہ چند بائٹس مساوی ہے کہ ایک بڑی تعداد ہو
کا پتہ کرنے کے لئے اپنے یا اس کے اپنے حملے کوڈ
وہ یا وہ صرف میں منظور فوری طور پر یہ فراہم کی طرف سے،
آپ کو مؤثر طریقے کمپیوٹر دھوکہ کر سکتے ہیں F قتل کیا جاتا ہے جب دیکھ کر،
اوہ، اس نے مجھے کود کرنے کے لئے وقت ہے واپس ریڈ واپسی ایڈریس کے لئے.
لیکن وہ کسی نہ کسی طرح ہے، کیونکہ کہ واپسی پتہ میں overlapped
ان کی اپنی تعداد کے ساتھ، اور وہ کافی ہوشیار ہیں
اس کی تشکیل کرنے کے لئے تعداد آپ کے طور پر، رجوع کرنے کے لئے
سپر سب سے اوپر میں دیکھیں وہاں بائیں کونے،
کمپیوٹر کی اصل کا پتہ ان کے حملے کوڈ کے کچھ کی یاد،
ایک برا آدمی کمپیوٹر دھوکہ کر سکتے ہیں اس کا یا اس کے اپنے کوڈ عمل میں.
>> اور اس کوڈ، پھر، کچھ بھی ہو سکتا.
یہ عام طور پر کہا جاتا ہے صرف ہے جس میں شیل کے کوڈ،
یہ نہیں ہے کہ کہنے کا ایک طریقہ RM-RF کے طور پر کے طور پر آسان عام طور پر کچھ.
یہ اصل میں ایک شاندار ہڑتال کی طرح کچھ ہے یا ایک اصل پروگرام اسے دیتا ہے
یا اس پروگرام کے کنٹرول کے عمل کرنے کے لئے وہ چاہتے ہیں کہ کچھ اور.
تو مختصر میں، یہ سب سادہ سی حقیقت سے حاصل
ملوث اس مسئلے کی جانچ پڑتال نہیں ہے کہ اپنے صف کی حدود.
اور ویسے بھی، کیونکہ کمپیوٹر کا کام ہے کہ وہ
سے اسٹیک استعمال مؤثر طریقے سے، تصوراتی،
اپ پر سب سے نیچے دیئے، لیکن پھر عناصر آپ، اوپر سے نیچے بڑھنے کے اسٹیک پر دھکا
یہ ناقابل یقین حد تک پریشانی ہے.
اب، اس کے ارد گرد کام کرنے کے طریقے ہیں.
اور واضح طور سے، زبانوں ہیں جس کے ساتھ اس کے ارد گرد کام کرنے کے لئے.
جاوا، مثال کے طور پر، مدافعتی ہے یہ خاص طور پر مسئلہ.
وہ آپ کو اشارہ دے نہیں ہے.
وہ آپ کو نہیں دیتے براہ راست میموری پتوں.
کہ ہم اس کی طاقت کے ساتھ میموری میں کچھ کو چھونا
ہم اقرار، عظیم خطرہ، آتا ہے کرنا چاہتے ہیں.
>> تو ایک آنکھ باہر رکھنے.
سچ کہوں تو، تو، مہینوں میں یا سال کے کسی بھی وقت، آنے کے لئے
آپ کو کچھ استحصال کے بارے میں پڑھیں ایک پروگرام یا ایک سرور کی،
تم نے کبھی کچھ کا ایک اشارہ دیکھتے ہیں تو ایک بفر اتپرواہ حملے کی طرح،
یا اسٹیک اتپرواہ ایک اور قسم ہے حملے کا، روح میں اسی طرح،
ویب سائٹ کی حوصلہ افزائی کے طور پر زیادہ سے زیادہ تم یہ جانتے ہو تو، نام،
یہ سب کے بارے میں بات کر رہا ہے کچھ کردار کے سائز کی گنجائش
صف یا اس سے زیادہ عام طور پر کچھ صف.
اس پر تو کوئی سوال،،؟
گھر پر اس کی کوشش نہ کریں.
>> ٹھیک ہے.
تو malloc اس طرح اب تک ہمارے نئے رہا ہے ہم میموری مختص کر سکتا ہے کہ میں دوست
ہم ضروری میں پتہ نہیں ہے کہ تو ہم نہیں چاہتے کہ پہلے
میں مشکل کوڈ کرنے کے لئے ہمارے 12 طرح کے پروگرام کی تعداد.
صارف نے ہمیں کتنا بتاتا ہے ایک بار وہ ان پٹ کے لئے چاہتا ہے کے اعداد و شمار،
ہم اس زیادہ سے زیادہ میموری malloc سے کر سکتے ہیں.
>> تو malloc اس کے لئے، باہر کر دیتا ہے ہم اس کا استعمال کرتے ہوئے کیا گیا ہے اس حد تک،
واضح طور پر آخری بار، اور پھر تم لوگوں کو اس کا استعمال کیا گیا ہے
کے لئے نادانستہ GetString کے لئے کئی ہفتوں کے، کی malloc میموری تمام
نام نہاد ڈھیر سے آتا ہے.
اور یہ، مثال کے طور پر، کیوں ہے GetString ہے متحرک میموری مختص کر سکتے ہیں،
تم کیا جانے بغیر پیشگی میں ٹائپ کرنے کے لئے جا رہا ہے،
کہ یاد کرنے کے لئے واپس ایک پوائنٹر آپ کے حوالے، اور یہ کہ میموری تمہارا رکھنے کے لئے اب بھی ہے،
بھی واپسی GetString کے بعد.
کیونکہ یاد کے بعد کہ اسٹیک مسلسل، اوپر اور نیچے کی جا رہی ہے
اوپر اور نیچے.
اور جیسے ہی یہ جاتا ہے کے طور پر نیچے، کہ کسی بھی میموری کا مطلب
استعمال کیا جاتا ہے اس تقریب ہونا چاہئے کسی کی طرف سے استعمال نہیں کیا.
اب یہ ردی کی ٹوکری اقدار ہے.
>> لیکن ڈھیر یہاں ہے.
اور malloc ہے کے بارے میں اچھی ہے malloc کے یہاں میموری مختص جب،
اس کے لئے، سے متاثر نہیں ہے اسٹیک کی طرف سے سب سے زیادہ حصہ،.
اور اس طرح کسی بھی تقریب تک رسائی حاصل کر سکتے ہیں malloc'd گیا ہے میموری،
یہاں تک کہ GetString طرح ایک تقریب کی طرف سے، کے بعد بھی اس کے واپس آ جاتا ہے.
>> اب، malloc کی بات چیت کے لئے مفت ہے.
اور یقینا، اصول آپ اپنانے شروع کرنے کی ضرورت
کوئی بھی، کسی بھی، آپ malloc کا استعمال کسی بھی وقت ہے تم اپنے آپ کو، بالآخر، مفت کا استعمال کرنا چاہئے
کہ ایک ہی پوائنٹر پر.
ہم لکھ دیا گیا ہے اس وقت چھوٹی گاڑی، کئی وجوہات کے لئے چھوٹی گاڑی کوڈ،.
لیکن جن میں سے ایک رہا ہے CS50 لائبریری کا استعمال کرتے ہوئے جس
خود جان بوجھ کر ہے چھوٹی گاڑی، یہ میموری لیک.
آپ GetString بلایا ہے کسی بھی وقت گزشتہ چند ہفتوں کے دوران
ہم آپریٹنگ پوچھ رہے ہیں نظام، لینکس، میموری کے لئے.
اور ایک بار تم واپس دیا کبھی نہیں کیا ہے.
اور اس میں، نہیں ہے ، ایک اچھی بات کی مشق.
>> اور Valgrind، میں سے ایک 4 pset پر میں متعارف کرایا، فورم کے اوزار،
آپ کی مدد کے بارے میں ہے اب اس طرح کے کیڑے تلاش.
لیکن شکر ہے 4 pset کے لئے آپ کی ضرورت نہیں ہے CS50 لائبریری یا GetString استعمال کرنے کے لئے.
تو میموری سے متعلق کسی بھی کیڑے ہیں بالآخر آپ کی اپنی ہو جا.
>> تو malloc صرف سے زیادہ ہے اس مقصد کے لئے آسان.
ہم اصل میں اب حل کر سکتے ہیں بنیادی طور پر مختلف مسائل،
اور بنیادی طور پر زیادہ سے زیادہ مسائل کو حل مؤثر طریقے سے ہفتے صفر کا وعدہ کے مطابق.
اس طرح اب تک اس sexiest ہے آنکڑا ڈھانچہ ہم نے کیا ہے.
اور اعداد و شمار کے ڈھانچے کی طرف سے میں نے صرف مطلب conceptualizing میموری کا ایک طریقہ
صرف کہہ سے باہر جاتا ہے کہ ایک طرح سے، یہ ایک چار ہے، ایک int ہے.
ہم ایک دوسرے کے ساتھ کلسٹر چیزیں کرنے کے لئے شروع کر سکتے ہیں.
>> تو ایک صف اس طرح دیکھا.
اور کے بارے میں ایک اہم کیا تھا سرنی یہ آپ کو دیتا ہے
واپس ٹو واپس کی مقدار میموری، جن میں سے ہر
اسی قسم کی ہونے جا رہا ہے، INT، INT، INT، INT، یا چار، چار، چار،
چار.
لیکن چند منفی پہلو بھی ہے.
یہ مثال کے طور پر، ہے چھ سائز کے ایک صف.
آپ کو چھ کے ساتھ اس صف کو بھرنے مان تعداد اور پھر، جو بھی وجوہات کی بناء پر،
آپ کے صارف کے دینا چاہتا ہے آپ کو ایک ساتویں تعداد.
جہاں آپ نے اسے ڈال دیا ہے؟
>> اگر آپ کا حل کیا ہے اسٹیک پر ایک صف پیدا،
مثال کے طور پر، صرف ہفتے کے ساتھ ہم سے متعارف کرایا ہے کہ دو سنکیتن،
کے اندر ایک بڑی تعداد کے ساتھ مربع بریکٹ کا؟
ویسے، آپ کو چھ ہے ان باکس میں تعداد.
آپ کے instincts کیا ہو گا؟
تم کہاں ڈال کرنے کے لئے چاہتے ہیں؟
>> سامعین: [اشراوی]
>> DAVID J. MALAN: معاف کیجئے گا؟
>> سامعین: آخر پر رکھ.
>> DAVID J. MALAN: آخر پر رکھ.
تو حق پر، اس کے خانے کے باہر.
جس اچھا ہو، لیکن یہ کرے گا تم ایسا نہیں کر سکتے ہیں باہر کر دیتا ہے.
تم سے پوچھا نہیں ہے کیونکہ اگر میموری کے اس حصہ کے لئے،
یہ کہ اتفاق کی طرف سے ہو سکتا ہے کچھ دوسرے متغیر کی طرف سے استعمال کیا جا رہا ہے
مکمل طور پر.
ہم رکھی تو ایک ہفتے واپس لگتا ہے یا کیا Zamyla اور Davin اور Gabe کی کے نام
یاد میں.
وہ لفظی تھے واپس واپس کرنے کے لئے واپس کرنے کے لئے.
تو ہم ضروری نہیں کر سکتے ہیں جو بھی کا اعتماد
یہاں پر مجھے استعمال کرنے کے لئے دستیاب ہے.
>> تو آپ اور کیا کر سکتا ہے؟
ویسے، ایک بار آپ کا احساس ، سائز سات کی ایک سرنی کی ضرورت
آپ کو صرف ایک پیدا کر سکتا ہے سائز سات کی صف تو استعمال
ایک لوپ یا دیر لوپ کے لئے، نئی صف میں اس کی کاپی،
اور پھر کسی نہ کسی طرح صرف چھٹکارا حاصل اس صف یا صرف اس کے استعمال کو روکنے کے.
لیکن یہ خاص طور پر موثر نہیں ہے.
مختصر میں، arrays کے نہیں دو آپ کو متحرک طور سائز تبدیل کریں.
>> تو ایک طرف آپ کو ملتا ہے حیرت انگیز ہے جس کے بے ترتیب رسائی،.
اس کی اجازت دیتا ہے کی وجہ سے ہم سے باتیں کرتے ہیں تقسیم اور فتح کی طرح،
ہم نے جو تمام کی تمام بائنری تلاش، یہاں کی سکرین پر کے بارے میں بات.
لیکن آپ کو ایک کونے میں اپنے آپ کو پینٹ.
جیسے ہی آپ مارا آپ صف کے آخر،
آپ کو ایک بہت کرنا ہے مہنگا آپریشن
یا کوڈ کی ایک پوری چڑھانے لکھیں اب اس مسئلہ سے نمٹنے کے لئے.
>> تو بجائے اس کے اگر ہم نے کیا کچھ کی ایک فہرست کو بلایا،
یا ایک خاص طور پر منسلک فہرست؟
اگر بجائے ہونے مستطیل، واپس کرنے کے لئے واپس کرنے کے لئے کی حمایت
ہم ایک چھوٹی سی چھوڑ مستطیل ہے ان کے درمیان میں wiggle کمرے کی سا؟
اگرچہ اور میں اس پر تیار ہے تصویر یا اس تصویر کے مطابق ڈھال لیا
نصوص میں سے ایک سے یہاں واپس کرنے کے لئے ہو واپس حقیقت میں، بہت منظم واپس کرنے کے لئے،
ان rectangles میں سے ایک یہاں یاد میں ہو سکتا ہے.
ان میں سے ایک یہاں ہو سکتا ہے.
ان میں سے ایک، یہاں ہو سکتا ہے یہاں، اور تو آگے کے دوران.
>> لیکن ہم، متوجہ کیا تو اس صورت میں، تیر
کسی نہ کسی طرح ان سے منسلک ہے کہ ایک دوسرے کے ساتھ مستطیل؟
بے شک، اگر ہم ایک تکنیکی دیکھا ہے ایک تیر کے اوتار.
کیا ہم حال ہی میں استعمال کیا جاتا ہے دن کہ، ہڈ کے نیچے،
ایک تیر کے نمائندے ہے؟
پوائنٹر، ٹھیک ہے؟
>> تو کیا ہوا اگر، بجائے صرف تعداد کو ذخیرہ کرنے،
طرح 9، 17، 22، 26، 34، کیا ہم نہیں محفوظ کیا جاتا ہے
صرف ایک بڑی تعداد ہے لیکن ایک پوائنٹر ہر طرح کی تعداد کے لئے اگلے؟
تو ہے کہ بہت ایک دھاگے گے کی طرح کپڑے کی ایک پوری چڑھانے کے ذریعے انجکشن،
کسی نہ کسی طرح باندھنے چیزیں ایک دوسرے کے ساتھ، اسی طرح کر سکتے ہیں
اشارہ، کے طور پر کے ساتھ ہم یہاں تیر کی طرف سے incarnated،
قسم کی ایک دوسرے کے ساتھ باندھا ان انفرادی مستطیل
مؤثر طریقے سے ایک پوائنٹر کا استعمال کرتے ہوئے کی طرف سے ہر نمبر کے لئے اگلے ہے کہ
کہ، کچھ اگلے تعداد کی طرف اشارہ ، کے نتیجے میں، کچھ اگلے تعداد کی طرف اشارہ؟
تو دوسرے الفاظ میں، کیا ہم اصل میں چاہتا تھا
کچھ اس طرح لاگو کرنے کے لئے؟
ویسے بدقسمتی سے، ان rectangles، 9 کے ساتھ کم از کم ایک، 17، 22،
اور تو آگے، ان نہیں ہیں ایک تعداد کے ساتھ اچھا چوکوں.
نیچے، مستطیل 9 کے نیچے، مثال کے طور پر،
کی نمائندگی کرتا ہے کیا کرنا چاہئے ایک پوائنٹر، 32 بٹیں.
اب، میں نے ابھی تک کسی بھی ڈیٹا کی قسم کے بارے میں علم نہیں ہوں C میں ہے کہ آپ کو نہ صرف ایک int دیتا ہے
لیکن ایک پوائنٹر مکمل طور پر.
>> اگر ہم چاہتے ہیں تو اس کا حل کیا ہے اس کے لئے ہمارے اپنے جواب ایجاد کرنے کے لئے؟
جی ہاں؟
>> سامعین: [اشراوی]
>> DAVID J. MALAN: یہ کیا ہے؟
>> سامعین: نئے ڈھانچے.
>> DAVID J. MALAN: جی ہاں، تو یہی وجہ ہے ہم ایک نئی ساخت کے پیدا نہیں کرتے،
یا C، ایک struct میں؟
ہم، تو مختصر طور پر، اس سے پہلے structs کے دیکھا ہے ہم نے ایک طالب علم کی ساخت کے ساتھ نمٹا ہے جہاں
اس طرح، ایک کا نام اور ایک گھر تھا جو.
pset میں 3 بریکآؤٹ آپ کو ایک پوری کے لئے استعمال کیا structs-- GRect اور GOvals کے گروپ
سٹینفورڈ پیدا ایک دوسرے کے ساتھ کلسٹر معلومات.
تو کیا ہم اس کے ایک ہی خیال لے تو مطلوبہ الفاظ "typedef کے" اور "struct کی،"
اور پھر کچھ طالب علم مخصوص چیزیں، اور مندرجہ ذیل میں اس تیار:
typedef کے struct کے نوڈ اور نوڈ ہے صرف ایک بہت عام کمپیوٹر سائنس
ایک آنکڑا ڈھانچہ میں کچھ کے لئے مدت، ایک آنکڑا ڈھانچہ میں ایک کنٹینر.
میں دعوی ایک نوڈ کے لئے جا رہا ہے مکمل طور پر براہ راست ایک int ن،،
اور پھر زیادہ cryptically ایک چھوٹا سا، اس دوسری لائن، struct نوڈ اگلے *.
لیکن کم تکنیکی لحاظ سے، کہ دوسری لائن ہے
گھوبگھرالی منحنی خطوط وحدانی کے اندر کوڈ کے؟
جی ہاں؟
>> سامعین: [اشراوی]
DAVID J. MALAN: ایک دوسرے نوڈ پوائنٹر.
تو اس کا اقرار، تھوڑا خفیہ نحو.
لیکن آپ لفظی اسے پڑھا تو، اگلے ایک متغیر کا نام ہے.
اس کے اعداد و شمار کی قسم کیا ہے؟
یہ، اس وقت ایک چھوٹی سی شبدبہل ہے لیکن یہ * قسم struct نوڈ کے ہے.
ہم کچھ ستارہ دیکھا ہے کسی بھی وقت، کہ یہ ہے کہ ڈیٹا کی قسم کے لئے ایک پوائنٹر ہے کا مطلب ہے.
تو اگلے بظاہر ایک ہے struct نوڈ پوائنٹر.
>> اب، ایک struct نوڈ کیا ہے؟
ویسے، آپ ان کو دیکھنے کے نوٹس سب سے اوپر دائیں پر ایک ہی الفاظ.
اور یقینا، آپ کو بھی لفظ دیکھیں یہاں سب سے نیچے بائیں میں "نوڈ".
اور یہ اصل میں صرف ایک سہولت ہے.
ہمارے Student کی تعریف میں یہ نوٹس صرف ایک بار لفظ "طالب علم" ہے.
اور یہ کہ ایک طالب علم کی وجہ سے ہے اعتراض خود referential نہیں تھا.
ایک طالب علم کے اندر کچھ بھی نہیں ہے کہ ایک طالب علم کی طرف اشارہ کرنے کی ضرورت ہے،
persay.
اس طرح کی ہو گی حقیقی دنیا میں عجیب.
>> لیکن ایک میں ایک نوڈ کے ساتھ منسلک فہرست، ہم ایک نوڈ چاہتے ہیں
اسی طرح کی ایک چیز کے حوالہ کرنے کے لئے.
اور تو یہاں تبدیلی نہیں ہے محسوس کیا گھوبگھرالی منحنی خطوط وحدانی کے اندر ہے.
لیکن ہم "نوڈ" کے لفظ کا اضافہ کریں سب سے اوپر کے طور پر بھی
نیچے انہوں نے مزید کہا کے بدلے میں "طالب علم."
اور یہ صرف ایک تکنیکی تفصیل ہے تا کہ، ایک بار پھر، آپ کے ڈیٹا کی ساخت
، خود referential ہو سکتا ہے تا کہ نوڈ ایک ایسی نوڈ کی طرف اشارہ کر سکتے ہیں.
>> تو یہ آخر میں کیا ہے ہمارے لئے مطلب جا رہا ہے؟
ویسے، ایک، اس چیز کے اندر ہمارے نوڈ کی فہرست ہے.
یہاں یہ بات، اوپر دائیں، صرف اتنا ہے
کہ، ایک بار پھر، ہم نے خود کا حوالہ دیتے ہیں کر سکتے ہیں.
اور پھر بیرونی چیزیں، نوڈ ایک نئی اصطلاح ہے، اگرچہ،
شاید، یہ اب بھی ہے طالب علم اور کیا کے طور پر ایک ہی
SPL میں ہڈ کے نیچے تھا.
>> تو کیا اب ہم شروع کرنے کے لئے کرنا چاہتا تھا اس سے منسلک فہرست پر عمل درآمد،
ہم کس طرح ترجمہ کر سکتے کچھ اس طرح کوڈ؟
ٹھیک ہے، صرف ایک دیکھتے ہیں پروگرام کی مثال ہے کہ
اصل میں ایک لنک کی فہرست کا استعمال کرتا ہے.
آج کی تقسیم کے کوڈ میں فہرست زیرو نامی ایک پروگرام ہے.
میں اس چلاتے ہیں اور مجھے ایک سپر پیدا سادہ GUI، گرافیکل یوزر انٹرفیس،
لیکن یہ واقعی صرف printf ہے.
اور اب میں اپنے آپ کو چند مینو دیا ہے options-- حذف، داخل کریں، تلاش،
اور گزرنا.
اور چھوڑ دیا.
یہ ایک پر صرف عام آپریشن ہیں ایک لنک کی فہرست کے طور پر جانا جاتا ہے کے اعداد و شمار کے ڈھانچے.
>> اب، جا رہا ہے کو خارج کر دیں فہرست سے ایک بڑی تعداد کو خارج کر دیں.
داخل شامل کرنے کے لئے جا رہا ہے فہرست میں ایک بڑی تعداد.
تلاش تلاش کرنے کے لئے کی جا رہی ہے فہرست میں تعداد کے لئے.
اور گزرنا صرف پسند ہیں طریقہ ہے کہہ کے، کی فہرست کے ذریعے چل،
اسے باہر پرنٹ، لیکن یہ بات ہے.
کسی بھی طرح میں اسے تبدیل نہیں کرتے.
>> تو اس کی کوشش ہے.
چلو آگے بڑھو اور 2 ٹائپ کریں.
اور پھر میں جا رہا ہوں نمبر داخل، 9 کا کہنا ہے کہ.
درج کریں.
اور اب میرا پروگرام صرف ہے کا کہنا ہے کہ کرنے کے لئے پروگرام، فہرست میں اب 9.
اب، مجھے آگے جانا ہے اور اگر پھر داخل ہے، دو
مجھے آگے بڑھیں اور باہر زوم اور 17 میں ٹائپ کریں.
اب میری فہرست کے بعد، 17 9.
میں پھر داخل کرتے ہیں، کی ایک چھوڑ دو.
اس کے بجائے 22، تصویر کے مطابق ہم نے یہاں تلاش کر رہے ہیں، مجھے آگے کود
اور اگلے 26 ڈالیں.
تو میں نے 26 ٹائپ کرنے جا رہا ہوں.
میں توقع کے طور پر فہرست ہے.
لیکن اب، بس اس کوڈ کو دیکھنے کے لئے لچکدار ہونے جا رہا ہے، اب مجھے
قسم 22، جس میں کم از کم تصوراتی، ہم ہیں
یہ واقعی ہے جس کے مطابق رکھنے اب ایک اور مقصد ہو جا،
17 اور 26 کے درمیان میں جانا چاہئے.
تو میں درج کریں مارا.
بے شک، کہ کام کرتا ہے.
اور تو اب مجھے داخل کریں آخری، تصویر، 34 فی.
>> ٹھیک ہے.
تو اب مجھے اس شرط دو حذف کریں اور گزرنا اور تلاش کرتے ہیں،
حقیقت میں، کام.
میں تلاش چلانے ہے تو اصل میں،، چلو درج کریں، 22 نمبر کے لئے تلاش.
یہ 22 ملا.
تو اس کا کیا یہ ہے پروگرام کی فہرست زیرو کرتا ہے.
>> لیکن اصل میں کیا جا رہا ہے پر ہے کہ اس کو لاگو؟
ویسے، سب سے پہلے میں ہے، اور یقینا ہو سکتا ہے میں نے ایک فائل list0.h کہا، ہے.
اور یہ نہیں ہے کہیں لائن، typedef کے، struct نوڈ،
تو میں، میری گھوبگھرالی منحنی خطوط وحدانی ہے ن int کی، اور تو تعریف کیا struct--؟
struct نوڈ اگلے.
تو ہم اسٹار کی ضرورت.
اب تکنیکی ہم میں حاصل یہاں یہ ڈرائنگ کی عادت.
آپ نصابی کتابوں کو دیکھ سکتے ہیں اور آن لائن حوالہ جات سے یہ کرتے ہیں.
یہ فعل کے برابر ہے.
اصل میں، یہ ایک چھوٹا سا زیادہ عام ہے.
لیکن میں نے کیا کے ساتھ مسلسل ہو جائے گا ہم نے آخری بار کیا اور اس کے کیا.
اور پھر آخر میں، میں ایسا کرنے جا رہا ہوں.
>> ایک ہیڈر فائل میں تو کہیں، list0.h میں
آج اس struct تعریف ہے، اور شاید کچھ دیگر چیزیں.
دریں اثنا list0c میں ہے کچھ چیزیں ہونے جا رہا.
لیکن ہم کرنے جا رہے ہیں صرف شروع کریں اور اس کو ختم نہیں.
List0.h میں چاہتا ہوں ایک فائل ہے میرا C فائل میں شامل کرنے کے لئے.
اور پھر کچھ نقطہ پر ہوں ، اہم، int ہے خالی کرنے کے لئے جا.
اور پھر میں جا رہا ہوں سے کرتے ہیں کچھ یہاں ہے.
میں نے بھی ایک کی ضرورت کے لئے جا رہا ہوں پروٹوٹائپ، صفر، تلاش، int کی طرح،
ن، زندگی میں جس کا مقصد ہے ایک عنصر کے لئے تلاش کرنے کے لئے.
اور پھر یہاں نیچے میں دعوی آج کے کوڈ، صفر، تلاش، INT، ن،
کوئی نیم وقفہ لیکن کھلے گھوبگھرالی منحنی خطوط وحدانی.
اور اب میں کسی نہ کسی طرح تلاش کرنا چاہتے ہیں اس فہرست میں ایک عنصر کے لئے.
لیکن ہم کافی نہیں ہے ابھی سکرین پر کے بارے میں معلومات.
میں اصل میں نہیں ہے فہرست خود کی نمائندگی کی.
تو ایک طریقہ ہم عملدرآمد کر سکتے ہیں ایک پروگرام میں ایک لنک کی فہرست
میں اس قسم کی کچھ کرنا چاہتے ہیں یہاں فہرست منسلک اعلان.
سادگی کے لئے، میں کرنے کے لئے جا رہا ہوں یہ بھی عام طور پر ہم میں اگرچہ، عالمی
یہ بہت زیادہ نہیں کرنا چاہئے.
لیکن یہ اس مثال کو آسان بنانے گا.
تو میں اعلان کرنا چاہتے ہیں یہاں ایک لنک کی فہرست.
اب، میں کہ کس طرح کر سکتا ہے؟
>> یہاں ایک لنک کی فہرست کی تصویر ہے.
اور میں واقعی میں نہیں ہے کس طرح اس وقت جانتے ہیں
میں نمائندگی کے بارے میں جانے کے لئے جا رہا ہوں صرف ایک کے ساتھ بہت سی چیزیں
یاد میں متغیر.
لیکن ایک لمحے لگتا ہے.
ہم نے کیا ہے اس وقت ڈور، پھر جو ہم
کی arrays ہونے کا انکشاف حروف، پھر جو ہم
صرف ایک پوائنٹر ہونے کا انکشاف پہلے کردار
حروف کی ایک سرنی میں کہ شہوت انگیز null ختم ہے.
اس منطق کی طرف سے، اور اس کے ساتھ تو اپنے خیالات بوائ کی تصویر قسم،
ہم اصل میں لکھنے کی ضرورت ہے ہماری کوڈ ایک لنک کی فہرست کی نمائندگی کرنے کے لئے؟
کتنا اس کی معلومات کی ہم ضرورت ہے C کوڈ میں قبضہ کرنے کے لئے، آپ کو کہیں گے؟
جی ہاں؟
>> سامعین: ہم نے ایک نوڈ پوائنٹر کی ضرورت ہے.
DAVID J. MALAN: ایک نوڈ پوائنٹر.
خاص طور پر، جو نوڈ آپ گے instincts پر ایک پوائنٹر رکھنے کے لئے ہو؟
>> سامعین: پہلا نوڈ.
>> DAVID J. MALAN: جی ہاں، شاید سب سے پہلے.
اور، سب سے پہلے نوٹس نوڈ ایک مختلف شکل ہے.
یہ struct کے صرف نصف سائز ہے، کیونکہ یہ واقعی صرف ایک پوائنٹر ہے.
تو کیا تم واقعی کر سکتے ہیں کا اعلان ہے ایک لنک کی فہرست * قسم نوڈ کی ہو.
اور صرف سب سے پہلے یہ کہتے ہیں اور شہوت انگیز null اس کی ابتدا.
تو، شہوت انگیز null، پھر، آ رہا ہے یہاں تصویر میں.
نہ صرف شہوت انگیز null ایک خصوصی طرح کے طور پر استعمال کیا جاتا ہے GetString کی طرح چیزوں کے لئے واپسی کی قیمت
اور malloc، شہوت انگیز null بھی صفر ہے پوائنٹر، ایک پوائنٹر کی کمی،
اگر آپ.
یہ صرف ابھی تک یہاں کچھ ہے کا مطلب ہے.
اب سب سے پہلے، میں نے کر سکتے ہیں اس میں کچھ فون.
میں "فہرست" کہا جاتا ہے کر سکتے ہیں یا دوسری چیزوں کی کسی بھی تعداد.
لیکن میں تو ہے کہ "سب سے پہلے" یہ بلا رہا ہوں اس تصویر کے ساتھ یہ لائنوں.
تو صرف ایک تار کی طرح نمائندگی کیا جا سکتا اس کے پہلے بائٹ کا پتہ کے ساتھ،
تاکہ ایک لنک کی فہرست کر سکتے ہیں.
اور ہم دوسرے اعداد و شمار کو دیکھ لیں گے ڈھانچے کی نمائندگی کی جائے
صرف ایک پوائنٹر کے ساتھ، ایک 32 بٹ تیر، طرف اشارہ کرتے ہوئے
ساخت میں بہت پہلے نوڈ میں.
>> لیکن اب ایک مسئلہ کی امید کرتے ہیں.
میں صرف یاد کر رہا ہوں اپنے پروگرام خطاب میں
پہلے نوڈ کے، سب سے پہلے اس آنکڑا ڈھانچہ میں مستطیل،
تھا بہتر کے بارے میں کیس ہو کیا میری فہرست کے باقی کے نفاذ؟
جا رہا ہے کہ ایک اہم تفصیل کیا ہے یہ اصل میں کام کرتا ہے کو یقینی بنانے کے لئے کس طرح؟
اور میں نے "اصل میں کام کرتا ہے" زیادہ سے زیادہ ایک تار کی طرح، مطلب،
ہمیں سب سے پہلے کردار سے جانے کی اجازت دیتا دوسری Davin کے نام،
تیسری، کرنے چوتھے، آخر،
ہم آخر میں ہیں جب ہم جانتے ہیں کہ کس طرح اس طرح لگتا ہے کہ ایک لنک کی فہرست کے؟
جب یہ شہوت انگیز null ہے.
اور میں نے کے طور پر اس طرح کی نمائندگی کی ہے ایک الیکٹریکل انجینئر طاقت کی طرح،
تھوڑا بنیاد کے ساتھ علامت، ایک طرح کی.
لیکن یہ صرف اس صورت میں نل کا مطلب ہے.
تم اس کے کسی بھی تعداد کو اپنی طرف متوجہ کر سکتے ہیں طریقوں میں سے، لیکن اس کے مصنف
یہاں یہ علامت استعمال کرنے کے لئے ہوا ہے.
>> ہم تھریڈنگ رہے ہیں کے طور پر جب تک ایک ساتھ مل کر ان تمام مراکز کی،
جہاں صرف یاد سب سے پہلے، بہت طویل ہے
ہم ایک خاص علامت ڈال کے طور پر فہرست میں آخری نوڈ،
کہ ہے کیونکہ ہم، شہوت انگیز null استعمال کریں گے ہمیں دستیاب کیا ہم،
اس فہرست مکمل ہے.
اور میں بھی صرف اس صورت میں آپ کو ایک پوائنٹر دے پہلا عنصر، آپ، پروگرامر،
یقینی طور پر اس کے باقی حصوں تک رسائی حاصل کر سکتے ہیں.
لیکن آپ کے دماغ دو دو تھوڑا سا گھومنا،
وہ پہلے سے ہی نہیں ہیں تو بہت کیا wandered--
چلانے کا وقت ہونے جا رہا اس فہرست میں کچھ تلاش کرنے کے؟
ارے، یہ بڑا این اے ہے، جس جانبداری میں، برا نہیں ہے.
لیکن یہ لکیری ہے.
ہم کیا خصوصیت دی ہے زیادہ منتقل کی طرف سے arrays کے
متحرک طور سے اس تصویر کی طرف مل کر بنے ہوئے یا نوڈ سے منسلک؟
ہم بے ترتیب رسائی دی ہے.
ایک صف کیونکہ اچھا ہے ریاضی سب کچھ
واپس کرنے کے لئے واپس کرنے کے لئے واپس کرنے کے لئے واپس آ گیا ہے.
یہاں تک کہ اس تصویر اگرچہ خوبصورت لگ رہا ہے، اور یہاں تک کہ
یہ ان مراکز کی طرح لگتا ہے، اگرچہ اچھی طرح حقیقت میں، کے علاوہ spaced رہے ہیں
وہ کہیں بھی ہو سکتا ہے.
Ox1، Ox50، Ox123، Ox99، ان نوڈس کہیں بھی ہو سکتا.
malloc میموری مختص ہے کیونکہ ڈھیر سے، لیکن کہیں بھی ڈھیر میں.
آپ کو ضروری یہ ہے کہ نہیں جانتے واپس جا رہا واپس کرنے کے لئے واپس کرنے کے لئے.
اور حقیقت میں تو یہ تصویر بہت اس خوبصورت نہیں جا رہا.
>> تو اس کا تھوڑا سا لے جا رہا ہے اس تقریب کو لاگو کرنے کے لئے کام.
تو اب تلاش کو لاگو کرتے ہیں.
اور ہم نے ایک کی طرح نظر آئے گا ایسا کرنے کے ہوشیار راستہ.
میں نے ایک تلاش تقریب ہوں تو اور میں ایک متغیر، عددی N دی ہوں
تلاش کرنے کے لئے، جاننے کی ضرورت اندر تلاش کر کے لئے نئے نحو
ہے کہ ایک ساخت کے ، N تلاش کرنے کے لئے کی طرف اشارہ کیا.
تو ایسا کرنے دو.
>> تو سب سے پہلے میں جانے کے لئے جا رہا ہوں آگے اور * ایک نوڈ کا اعلان.
اور میں نے اسے فون کرنے جا رہا ہوں صرف کنونشن کی طرف سے پوائنٹر،.
اور میں سب سے پہلے اس کی ابتدا کرنے جا رہا ہوں.
اور اب میں یہ کر سکتے ہیں طریقوں کی ایک بڑی تعداد میں.
لیکن میں ایک عام نقطہ نظر لے جا رہا ہوں.
پوائنٹر کے برابر نہیں ہے شہوت انگیز null، اور یہ کہ درست نحو ہے.
اور یہ صرف اس لئے، مندرجہ ذیل کا مطلب جب تک آپ کو کچھ بھی نہیں کی طرف اشارہ نہیں کر رہے ہیں کے طور پر.
مجھے کیا کرنا چاہتے ہیں؟
>> پوائنٹر ڈاٹ ن تو مجھ سے واپس آنے دو کہ، برابر کیا برابر ہے؟
میں کس قدر کے لئے تلاش کر رہا ہوں؟
میں منظور کیا گیا تھا کہ اصل ن.
تو یہاں ایک اور خصوصیت ہے C اور بہت سے زبانوں میں.
یہاں تک کی ساخت کہا جاتا نوڈ اگرچہ ایک قدر ن، مکمل طور پر جائز ہے
بھی ایک مقامی دلیل کو یا متغیر کہا جاتا ن.
یہاں تک کہ ہم، کے ساتھ کیونکہ انسانی آنکھوں، تمیز کر سکتے ہیں
اس ن شاید ہے کہ اس ن سے مختلف.
نحو مختلف ہے.
آپ کو ایک نقطہ اور ایک پوائنٹر ہے، اس میں سے ایک ہے جبکہ ایسی کوئی بات نہیں ہے.
تو یہ ٹھیک ہے.
یہ وہی چیزیں ان کے فون کرنے کے لئے ٹھیک ہے.
>> میں آپ کو یہ تلاش کرتے ہیں تو، میں ہوں کچھ کرنا چاہتے ہیں کے لئے جا
طرح ہم (ن) نے محسوس کیا کہ اعلان.
اور ہم نے ایک کے طور پر اس کو چھوڑ دیں گے تبصرہ یا pseudocode کے کوڈ.
ورنہ، اور یہاں ہے دلچسپ حصہ، کیا
میں موجودہ نوڈ تو کرنا چاہتے ہیں کے بارے میں پرواہ ہے کہ (ن) پر مشتمل نہیں ہے؟
کس طرح میں مندرجہ ذیل حاصل کرتے ہیں؟
تو میں میری انگلی لمحے PTR ہے، اور یہ
جو کچھ بھی میں اشارہ سب سے پہلے، میں اشارہ کر رہا ہے
میں نے اپنی انگلی کو منتقل کس طرح کوڈ میں اگلے نوڈ؟
ٹھیک ہے، ہم ہیں breadcrumb کی ہے اس معاملے میں عمل کرنے کے لئے جا رہے ہیں؟
سامعین: [اشراوی].
DAVID J. MALAN: جی ہاں، تو اگلے.
میں واپس جانا تو میرا یہاں کوڈ، یقینا، میں ہوں
، پوائنٹر آگے جانا ہے اور کہا جا رہا ہے جس میں یہ صرف ایک عارضی متغیر ہے
ایک عجیب نام، PTR، لیکن یہ صرف temp-- کی طرح ہے
میں پوائنٹر قائم کرنے کے لئے جا رہا ہوں جو کچھ بھی پوائنٹر is-- کے برابر
اور پھر، یہ ایک ہونے جا رہا ہے اگلے ایک لمحے ڈاٹ کے لئے چھوٹی سی چھوٹی گاڑی.
دوسرے الفاظ میں، میں لینے کے لئے جا رہا ہوں میرا اس نوڈ کی طرف اشارہ ہے کہ انگلی
یہاں میں آپ کو معلوم ہے، کہنے جا رہا ہوں کیا، اگلے میدان پر ایک نظر ڈالیں
اور اپنی انگلی کو منتقل جو کچھ بھی اس کی طرف اشارہ ہے.
اور یہ جا رہا ہے ، دوبارہ، دوبارہ دہرانے.
لیکن جب میری انگلی کرتا ہے بالکل کچھ بھی کرنے کو روکنے؟
جیسے ہی کیا کوڈ کک کی لائن میں کے طور پر؟
سامعین: [اشراوی]
DAVID J. MALAN: تو اشارہ کرتے ہیں پوائنٹر شہوت انگیز null برابر نہیں ہے.
کچھ نقطہ میری انگلی کی میں شہوت انگیز null کی طرف اشارہ کیا جا رہا
اور مجھے احساس کرنے کے لئے جا رہا ہوں کہ اس فہرست کے آخر ہے.
اب، یہ ایک چھوٹی سی ہے سادگی کے لئے سفید جھوٹ.
یہ پتہ چلا ہے کہ اگرچہ ہم صرف اس ڈاٹ سنکیتن سیکھا
ڈھانچے کے لئے، پوائنٹر ایک struct نہیں ہے.
PTR کیا ہے؟
صرف nitpicky ہونا.
یہ ایک نوڈ کو ایک پوائنٹر ہے.
یہ ایک نوڈ خود نہیں ہے.
میں یہاں کوئی ستارہ تھا تو، پوائنٹر absolutely-- یہ ایک نوڈ ہے.
یہ ایک ہفتے کی طرح ہے ایک متغیر کا اعلان،
یہاں تک کہ لفظ "نوڈ" نیا ہے اگرچہ.
>> لیکن ہم کو متعارف کرانے کے کے طور پر جلد کے طور پر ستارہ، اب یہ ایک نوڈ کو ایک پوائنٹر ہے.
اور بدقسمتی سے آپ استعمال نہیں کر سکتے ایک پوائنٹر کے لئے ڈاٹ سنکیتن.
آپ تیر استعمال کرنے کے لئے ہے سنکیتن، جس میں، واضح،
پہلی بار کسی بھی ٹکڑا ہے نحو کے بدیہی لگتا ہے.
یہ لفظی ایک تیر کی طرح لگتا ہے.
اور تو ہے کہ ایک اچھی بات ہے.
اور یہاں نیچے لفظی ایک تیر کی طرح لگتا ہے.
تو میں نے اس میں نہیں la-- ہے میں یہاں زیادہ ارتکاب رہا ہوں میں
کہ گزشتہ نئی ٹکڑا ہے نحو کے ہم کو دیکھنے کے لئے جا رہے ہیں.
اور شکر ہے، یہ واقعی ہے تھوڑا زیادہ بدیہی.
>> اب، آپ کو ان لوگوں کے لئے جو پرانے طریقہ کو ترجیح دیتے ہیں ہو سکتا ہے،
اگر آپ اب بھی ڈاٹ سنکیتن استعمال کر سکتے ہیں.
لیکن پیر کے مطابق بات چیت، ہم سب سے پہلے
اس کے لئے جانا، وہاں جانے کے لئے کی ضرورت ہے حل، اور اس کے بعد میدان تک رسائی حاصل.
تو یہ بھی درست ہے.
اور واضح طور سے، یہ ایک زیادہ pedantic تھوڑا.
آپ لفظی کہہ رہے ہیں، dereference ہے پوائنٹر اور وہاں جانا.
پھر ن پر قبضہ، میدان کہا جاتا ن.
لیکن سچ کہوں تو، کوئی نہیں چاہتا ہے ٹائپ کریں یا اس کو پڑھنے کے لئے.
اور اس دنیا میں ایجاد تیر سنکیتن، جس میں
، جیسی، برابر ہے یہ صرف syntactic چینی ہے.
یہ کہہ تو پسند راہ بہتر لگ رہا ہے، یا آسان لگتا ہے.
>> تو اب میں ایک اور چیز کرنے جا رہا ہوں.
میں نے ایک بار "بریک" کہنے جا رہا ہوں یہ تو میں نے اس کے لئے تلاش کر نہیں رکھ پایا.
لیکن یہ خلاصہ ہے ایک تلاش تقریب کے.
لیکن اس میں، بہت آسان ہے آخر، کوڈ کے ذریعے چلنے کے لئے نہیں.
یہ واقعی باقاعدہ عمل درآمد ہے آج کی تقسیم کے کوڈ میں تلاش کی.
میں اس داخل نہیں ہے کہنے کی جرات ذریعے چلنے کے لئے خاص طور پر مزہ
ضعف، اور نہ ہی بھی، خارج دن کے آخر میں، اگرچہ
وہ کافی نیچے ابال سادہ heuristics.
>> تو ایسا کرنے دو.
آپ یہاں مزاحیہ مجھے گے تو، میں نے کیا کشیدگی گیندوں کے ایک گروپ کو لے آئے.
میں تعداد کے ایک گروپ لایا.
اور ہم صرف چند رضاکاروں حاصل کر سکتے ہیں 9، 17، 20، 22، 29، اور 34 کی نمائندگی کرنے کے لئے؟
تو بنیادی طور پر سب جو آج یہاں ہے.
یہ، ایک، دو، تین سال کی تھی چار، پانچ، چھ افراد.
اور میں نہیں، دیکھیں go-- کرنے کے لئے کہا گیا ہے واپس میں سے ایک ان کے ہاتھ اٹھاتا ہے.
ٹھیک ہے، ایک، دو، تین، چار، پانچ مجھے چھ balance-- لوڈ کرتے ہیں.
ٹھیک ہے، آپ کو چھ پر آئے.
ہم دوسرے لوگوں کی ضرورت ہو گی.
ہم اضافی کشیدگی گیندوں لایا.
اور اگر آپ کر سکتے، کے لئے صرف ایک لمحے، لائن
اپنے بس یہاں اس تصویر کی طرح.
>> ٹھیک ہے.
تمہارا نام کیا ہے، چلو دیکھتے ہیں؟
>> سامعین: اینڈریو.
>> DAVID J. MALAN: اینڈریو، آپ کا نمبر 9 ہے.
آپ سے مل کر اچھا لگا.
یہاں تم جاؤ.
سامعین: جین.
DAVID J. MALAN: جین.
ڈیوڈ.
نمبر 17.
جی ہاں؟
>> سامعین: میں جولیا ہوں.
>> DAVID J. MALAN: جولیا، ڈیوڈ.
نمبر 20.
سامعین: عیسائی.
DAVID J. MALAN: عیسائی، ڈیوڈ.
نمبر 22.
اور؟
>> سامعین: جے.
DAVID J. MALAN: جے.
نمبر 29.
تو اوہ اہ آگے بڑھو اور in-- حاصل.
اوہ اہ.
یوز.
20.
کسی ایک مارکر ہے؟
سامعین: میں شارپی ہے.
DAVID J. MALAN: آپ شارپی ہے؟
ٹھیک ہے.
اور کسی کو ایک کاغذ کا ٹکڑا ہے؟
لیکچر محفوظ کریں.
چلو.
سامعین: کیا ہم اسے مل گیا ہے.
DAVID J. MALAN: ہم اسے مل گیا ہے؟
ٹھیک ہے، آپ کا شکریہ.
یہاں ہم چلے.
یہ آپ سے تھا؟
آپ کو صرف دن کو بچا لیا.
تو 29.
ٹھیک ہے.
میں 29 غلط ہجے شدہ، لیکن ٹھیک ہے.
آگے بڑھو.
ٹھیک ہے، میں آپ کو دے دونگا آپ کے قلم واپس لمحے.
تو ہم یہاں ان لوگوں کو ہے.
کی ایک دوسرے کرتے ہیں.
Gabe کی، آپ کو کھیلنے کے لئے چاہتے ہیں یہاں سب سے پہلے عنصر؟
ہم نقطہ کرنے کے لئے آپ کی ضرورت ہو گی یہ ٹھیک لوگوں میں.
تو 9، 17، 20، 22، ترتیب 29، اور اس کے بعد 34.
ہم کسی سے محروم ہے؟
میں نے ایک 34 ہے.
کہاں چاہتا ہے جو did-- ٹھیک، 34 کرنے کے لئے؟
ٹھیک ہے، 34، پر آئے.
ٹھیک ہے، یہ ہو جائے گا منی کا اخراج اچھی طرح قابل.
آپ کا نام کیا ہے؟
>> سامعین: پیٹر.
>> DAVID J. MALAN: پیٹر، پر آئے.
ٹھیک ہے، تو یہاں ایک نوڈس کے پورے گچرچھی.
تم لوگوں میں سے ہر ایک کی نمائندگی کرتا ہے ان rectangles میں سے ایک.
اور Gabe کی، تھوڑا سا عجیب انسان، سب سے پہلے کی نمائندگی کرتا ہے.
تو اس پوائنٹر ایک چھوٹی سی چھوٹی ہے اور سب سے زیادہ کی سکرین پر.
اور اس معاملے میں، آپ میں سے ہر ایک کو چھوڑ دیا ہاتھ، نیچے کی طرف اشارہ تو جا رہا ہے
اس طرح تو، شہوت انگیز null کی نمائندگی صرف ایک پوائنٹر کی غیر موجودگی،
یا اس کی طرف اشارہ کیا جا رہا ہے آپ کو اگلے ایک نوڈ میں.
>> تو اب آپ کی زینت ہے تو تصویر کی طرح اپنے آپ کو
یہاں، آگے بڑھو اور نقطہ Gabe کی کے ساتھ، ایک دوسرے پر
میں خاص طور پر اشارہ کرتے ہوئے میں نمبر 9 فہرست نمائندگی کرنے کے لئے.
ٹھیک ہے، اور ان کی تعداد 34، آپ کے بائیں ہاتھ صرف منزل کی طرف اشارہ کیا جانا چاہئے.
>> ٹھیک ہے، تو اس سے منسلک فہرست ہے.
تو اس سوال میں منظر نامے ہے.
اور یقینا، یہ نمائندہ ہے مسائل کی ایک کلاس کے
آپ کوڈ کے ساتھ حل کرنے کی کوشش کر سکتے ہیں.
بالآخر آپ داخل کرنا چاہتے ہیں فہرست میں ایک نئے عنصر.
اس صورت میں، ہم جا رہے ہیں 55 نمبر ڈالنے کی کوشش کریں.
لیکن وہاں جا رہا ہے مختلف مقدمات پر غور کرنے.
اور یقینا، یہ ایک ہونے جا رہا ہے بڑی تصویر یہاں takeaways کے، ہے،
مختلف مقدمات ہیں.
حالات تو مختلف ہیں آپ کے پروگرام ہو سکتا ہے کہ شاخوں؟
>> ویسے، تعداد آپ کے لئے کوشش کر رہے ہیں ہم 55 ہو اب جانتے ہیں جو ڈالیں،،
لیکن آپ کو پتہ نہیں کیا تو پیشگی، میں daresay
کم از کم تین میں آتا ہے ممکن حالات.
جہاں ایک نیا عنصر ہو سکتا ہے؟
سامعین: اور آخر یا مشرق.
DAVID J. MALAN: آخر میں، میں مشرق، یا شروع میں.
تو میں نے کم از کم وہاں کے دعوے تین مسائل کو حل کرنے کی ضرورت ہے.
شاید کیا ہے کا انتخاب کرتے ہیں arguably سب سے آسان
ایک، جہاں نئے عنصر آغاز میں تعلق رکھتا ہے.
تو میں بہت کوڈ ہے کرنے کے لئے جا رہا ہوں جیسے میں نے صرف لکھا، جس میں تلاش.
اور میں، PTR کرنے جا رہا ہوں جس میں، میری انگلی کے ساتھ یہاں کی نمائندگی کریں گے
ہمیشہ کی طرح.
>> اور، کیا قیمت یاد ہم PTR ابتدا کیا ہے؟
تو ہم نے ابتدائی طور پر نل کرنے کے لئے اس سے initialized.
لیکن اس وقت ہم نے ایک بار کیا کیا ہماری تلاش تقریب کے اندر تھے؟
ہم، سب سے پہلے اس کے برابر مقرر ایسا کرنے کا مطلب یہ نہیں ہے.
میں پہلی بار کے برابر PTR مقرر کرتے ہیں، کیا میرے ہاتھ میں واقعی میں اشارہ ہونا چاہئے؟
حق.
Gabe اور میں جا رہے ہیں اگر ایسا ہے تو یہاں برابر اقدار ہونا،
ہم نمبر 9 میں دونوں کے نقطہ نظر کرنے کی ضرورت ہے.
>> تو یہ ہماری کہانی کا آغاز تھا.
اور اب یہ صرف براہ راست ہے اگرچہ نحو نئی ہے.
تصوراتی یہ صرف لکیری تلاش ہے.
9 کے برابر 55 ہے؟
یا بلکہ، 9 سے کم کا کہنا ہے کہ.
میں کوشش کر رہا ہوں کیونکہ 55 ڈال کرنے کے لئے اعداد و شمار جہاں.
9 کے مقابلے میں کم سے کم 17، کم 20 سے، کم سے کم 22، کم سے کم 29،
کم سے کم 34، کوئی.
تو اب ہم صورت میں ہو کم از کم تین میں سے ایک.
>> میں یہاں 55 شامل کرنے کے لئے چاہتے ہیں، تو کیا کوڈ کی ضرورت کی لائنوں کو پھانسی دے دی حاصل کرنے کے لئے؟
کس طرح کی اس تصویر کرتا ہے انسانوں کو تبدیل کرنے کی ضرورت ہے؟
میں نے اپنے بائیں ہاتھ کے ساتھ کیا کروں؟
یہ ابتدائی طور پر نل ہونا چاہئے میں فہرست کے آخر میں ہوں.
اور کیا ہونا چاہئے یہاں پیٹر کے ساتھ، تھا؟
انہوں نے کہا کہ ظاہر ہے میرے لئے کی طرف اشارہ کرنے جا رہا ہے.
تو میں نے کم از کم دو لائنوں کے دعوے آج سے نمونے کے کوڈ میں کوڈ کے
کہ اس کو لاگو کرنے کے لئے جا رہا ہے پونچھ میں 55 انہوں نے مزید کہا کے منظر نامے.
اور میں کسی ہاپ کر سکتے ہیں اپ اور صرف 55 کی نمائندگی کرتے ہیں؟
ٹھیک ہے، آپ کو نئے 55 ہیں.
>> تو اب کیا ہے تو منظر نامے، کے ساتھ ساتھ آتا ہے
اور ہم میں داخل کرنا چاہتے ہیں آغاز یا اس فہرست کے سربراہ؟
اور تمہارا نام، تعداد 55 کیا ہے؟
>> سامعین: جیک.
>> DAVID J. MALAN: جیک؟
ٹھیک ہے، آپ سے مل کر اچھا لگا.
جہاز میں خوش آمدید.
تو اب ہم جا رہے ہیں ، کا کہنا ہے کہ، نمبر 5 داخل.
یہاں کی دوسری صورت ہے تین ہم سے پہلے کے ساتھ آئے.
تو 5 آغاز میں تعلق رکھتا ہے تو، ہم اس سے باہر تلاش کس طرح دیکھتے ہیں.
میں اپنے PTR ابتدا پھر نمبر 9 پوائنٹر.
اور میں 5 سے کم 9، اوہ، احساس ہوا.
تو ہمارے لئے اس تصویر کو حل.
جس کے ہاتھ، Gabe کی یا داؤد کے یا ہے نمبر 9 کا نام کیا ہے؟
>> سامعین: جین.
>> DAVID J. MALAN: جین کی hands-- ہمارے ہاتھوں میں سے جس کو تبدیل کرنے کی ضرورت ہے؟
ٹھیک ہے، تو Gabe کی اب میں اشارہ؟
مجھ پر.
میں نئے نوڈ ہوں.
تو میں نے اس اقدام کی صرف ایک قسم گے یہاں ضعف اسے دیکھنے کے لئے.
اور اس دوران کیا میں اس کی طرف اشارہ ہے؟
پھر بھی جہاں میں اشارہ کرتے ہوئے کر رہا ہوں.
تو یہ بات ہے.
کوڈ اصلاحات کے تو واقعی ایک لائن اس خاص معاملے میں، یہ لگتا ہے.
ٹھیک ہے، تو یہ اچھی بات ہے.
اور کسی 5 کے لئے ایک پلیس ہولڈر ہو سکتا ہے؟
پر چلو.
ہم آپ کو اگلے وقت مل جائے گا.
>> ٹھیک ہے، تو now-- اور ایک طرف ایک، نام کے طور پر
میں حق کے واضح ذکر نہیں کر رہا ہوں اب، pred پوائنٹر، پیشرو پوائنٹر
اور نئے پوائنٹر، ہے صرف نام دیا
اشارہ کرنے کے لئے نمونے کے کوڈ میں یا قسم کے ارد گرد کی طرف اشارہ ہے کہ میرے ہاتھ.
آپ کا نام کیا ہے؟
>> سامعین: کرسٹین.
>> DAVID J. MALAN: کرسٹین.
جہاز میں خوش آمدید.
ٹھیک ہے، تو اب غور ایک تھوڑا سا زیادہ پریشان کن منظر نامے،
میں داخل کرنا چاہتے ہیں جس کے تحت اس میں 26 کی طرح کچھ.
20؟
کیا ہے؟
یہ ہم اس قلم ہے اچھی بات are--.
ٹھیک ہے، 20.
کسی کا ایک ٹکڑا حاصل کر سکتے ہیں کاغذ صرف ٹھیک ہے صورت میں، کے لئے تیار.
اوہ، دلچسپ.
ویسے اس کی ایک مثال ہے ایک لیکچر مسئلے کے.
ٹھیک ہے تو آپ کے نام کیا ہے پھر؟
سامعین: جولیا.
DAVID J. MALAN: جولیا، آپ پاپ کر سکتے ہیں باہر اور دکھاوا تم کبھی نہیں تھے؟
ٹھیک ہے، یہ کبھی نہیں ہوا.
آپ کا شکریہ.
تو ہم داخل کرنا چاہتے ہیں اس سے منسلک فہرست میں جولیا.
وہ نمبر 20 ہے.
اور بلاشبہ وہ ہے میں سے تعلق رکھتے ہیں کے لئے جا
begin-- ابھی تک کچھ بھی اشارہ نہیں ہے.
تو آپ کے ہاتھ کی قسم کے ہو سکتے ہیں نیچے شہوت انگیز null یا کچھ ردی کی ٹوکری کی قیمت.
کی فوری کہانی بتا دو.
میں نمبر 5 اس وقت کی طرف اشارہ کر رہا ہوں.
پھر میں نے 9 چیک.
پھر میں نے 17 کی جانچ پڑتال.
پھر میں نے 22 کی جانچ پڑتال.
اور میں، اہ، جولیا احساس 22 سے پہلے جانے کی ضرورت ہے.
تو کیا ایسا کرنے کی ضرورت ہے؟
جن کے ہاتھوں کو تبدیل کرنے کی ضرورت ہے؟
جولیا کی، میری، یا ہے تمہارا نام کیا ہے؟
>> سامعین: عیسائی.
>> DAVID J. MALAN: عیسائی یا؟
>> سامعین: اینڈی.
>> DAVID J. MALAN: اینڈی.
عیسائی یا اینڈی؟
اینڈی کی طرف اشارہ کرنے کی ضرورت ہے؟
جولیا.
ٹھیک ہے.
تو اینڈی، آپ کو جولیا کی طرف اشارہ کرنا چاہتے ہیں؟
لیکن ایک منٹ انتظار.
اس طرح اب تک کی کہانی میں، میں ایک کی طرح ہوں
احساس میں چارج، میں کہ پوائنٹر ہے کہ بات یہ ہے
فہرست کے ذریعے منتقل.
ہم اینڈی کے لئے ایک نام ہے، لیکن ہو سکتا ہے اینڈی نامی کوئی متغیر نہیں ہے.
ہم صرف دوسرے متغیر ہے سب سے پہلے، Gabe کی طرف سے نمائندگی کی ہے جو.
>> تو یہ کیوں اصل میں اس طرح ہے جہاں تک ہم اس کی ضرورت نہیں ہے.
لیکن اب کی سکرین پر ہے pred پوائنٹر کی ایک بار پھر ذکر.
تو مجھے زیادہ واضح ہو جائے.
اس پوائنٹر ہے، تو میں اس سے بہتر تھا ایک چھوٹا سا زیادہ ذہین حاصل
میرے iteration کے بارے میں.
آپ میرے یہاں سے جانے میں کوئی اعتراض نہیں ہے تو پھر، یہاں طرف اشارہ کرتے ہوئے، یہاں کی طرف اشارہ.
لیکن مجھے ایک pred پوائنٹر ہے ہیں، پیشرو پوائنٹر، ہے
قسم کی طرف اشارہ عنصر میں صرف میں تھا.
تو میں یہاں جانا جب، اب میرے بائیں ہاتھ اپ ڈیٹ.
میں یہاں اپنے بائیں ہاتھ اپ ڈیٹ جاتے ہیں.
اور اب میں پوائنٹر نہ صرف ہے جولیا کے بعد جاتا ہے کہ عنصر،
میں اب بھی ایک پوائنٹر ہے اینڈی، پہلے عنصر.
تو آپ کو، بنیادی طور پر، کو رسائی حاصل ہے breadcrumbs کے، اگر آپ،
مطلوبہ اشارہ کے تمام کرنے کے لئے.
>> میں اشارہ کرتے ہوئے کر رہا ہوں تو اینڈی اور میں نے بھی کی طرف اشارہ کر رہا ہوں
جن کے ہاتھوں عیسائی، میں اب دوسری جگہوں کی طرف اشارہ کیا ہونا چاہئے؟
اینڈی تو اب جولیا کی طرف اشارہ کر سکتے ہیں.
جولیا اب عیسائی کی طرف اشارہ کر سکتے ہیں.
وہ کاپی کر سکتے ہیں کیونکہ میرے دائیں ہاتھ پوائنٹر.
اور یہ کہ مؤثر طریقے سے آپ کو رکھتا ہے یہاں واپس اس جگہ میں.
تو مختصر میں، یہاں تک کہ یہ اگرچہ کے ہمیشہ کے لئے قسم لے جا رہا ہے
اصل میں اپ ڈیٹ کرنے کے لئے ایک منسلک فہرست، احساس
آپریشن کہ نسبتا آسان ہیں.
یہ، دو، ایک تین ہے بالآخر کوڈ کی لائنیں.
لیکن ان کے ارد گرد لپیٹ شاید کوڈ کی لائنیں
منطق کا ایک تھوڑا سا ہے کہ مؤثر طریقے سے ہے سوال ہے، ہم کہاں ہیں پوچھتا ہے؟
ہم شروع میں ہیں، مشرق، یا آخر؟
>> اب، یقینی طور پر کچھ دیگر موجود ہیں ہم پر عمل درآمد ہو سکتا ہے آپریشن.
اور یہاں ان تصاویر کو صرف بیان کیا ہم صرف انسانوں کے ساتھ کیا تھا.
کیا ہٹانے کے بارے میں؟
میں کرنا چاہتے ہیں، مثال کے طور پر، تعداد کو دور 34 یا 55،
میں، کوڈ کی ایک ہی قسم کے ہو سکتا ہے لیکن میں نے ایک یا ایک سے دو قدم کی ضرورت کرنے جا رہا ہوں.
نیا کیا ہے کیونکہ؟
میں نے آخر میں کسی دور تو، تعداد کی طرح 55 اور پھر 34،
کیا یہ بھی میں نے اس کے طور پر تبدیل کرنے کے لئے ہے؟
میں evict-- نہیں کرنے کے لئے ہے تمہارا نام کیا ہے؟
>> سامعین: جیک.
>> DAVID J. MALAN: جیک.
میں، evict-- مفت جیک نہ صرف کے لئے ہے تو لفظی کم از کم مفت جیک فون، یا
وہاں پوائنٹر بھی، لیکن اب کیا پیٹر کے ساتھ تبدیل کرنے کے لئے کی ضرورت ہے؟
اس کا ہاتھ بہتر نیچے کی طرف اشارہ شروع.
جیسے ہی میں مفت پر فون کے طور پر کی وجہ سے جیک، پیٹر بھی جیک کی طرف اشارہ کرتا ہے تو
اور میں اس وجہ سے میں traversing رکھنے فہرست اور رسائی اس پوائنٹر،
کہ جب ہمارے پرانے دوست انقطاع ہے اصل میں لات مار کر سکتے ہیں غلطی.
ہم نے دیا ہے کیونکہ جیک میموری واپس.
>> تم وہاں رہ سکتے ہیں awkwardly کی صرف ایک لمحے کے لئے.
ہم صرف ایک جوڑے کی ہے کیونکہ آخری آپریشن پر غور کرنے.
فہرست کے سربراہ کو ہٹانے کے، beginning-- اور یہ ایک یا
ایک چھوٹا سا پریشان.
ہم جانتے ہیں کہ کرنے کی ضرورت ہے Gabe کی قسم کی خصوصی اس پروگرام میں ہے.
کیونکہ بے شک، وہ ان کے اپنے ہی پوائنٹر ہے.
وہ صرف، کی طرف اشارہ نہیں کیا جا رہا ہے یہاں تقریبا سب کچھ ہے.
>> تو فہرست کے سربراہ ہے جب ، جن کے ہاتھوں اب تبدیل کرنے کی ضرورت کو ہٹا دیا؟
تمہارا نام کیا ہے؟
>> سامعین: کرسٹین.
>> DAVID J. MALAN: میں خوفناک ہوں نام میں، بظاہر.
تو کرسٹین اور Gabe کی، جس کے ہاتھ تبدیل کرنے کی ضرورت
ہم کرسٹین ہٹانے کی کوشش کرتے، تصویر سے نمبر 5،؟
ٹھیک ہے، تو Gabe کی کرتے ہیں.
Gabe کی طرف اشارہ کرنے جا رہا ہے، شاید، 9 نمبر پر.
لیکن کیا ہونا چاہئے؟
سامعین: کرسٹین چاہئے [اشراوی]، شہوت انگیز null ہو جائے.
DAVID J. MALAN: ٹھیک ہے، ہم شاید ہونا چاہئے make-- میں کہیں 'نمبر "سنا.
سامعین: شہوت انگیز null اور اس کے مفت.
DAVID J. MALAN: کیا نل؟
سامعین: شہوت انگیز null اور اس کے مفت.
DAVID J. MALAN: شہوت انگیز null اور اس کے مفت.
تو یہ بہت آسان ہے.
اور یہ آپ کو اب ترتیب ہیں کہ بہترین ہے کے سے تعلق رکھنے والے، وہاں نہیں کھڑے.
اگر آپ کیا گیا ہے کیونکہ فہرست سے decoupled.
آپ کو مؤثر طریقے کیا گیا ہے فہرست سے یتیم.
اور اس طرح ہم اب بہتر پر مفت کال پڑا کرسٹین کہ میموری واپس دینے کے لئے.
دوسری صورت میں ہر وقت ہم فہرست سے ایک نوڈ کو حذف
ہم فہرست بنانے کے کیا جا سکتا ہے چھوٹے، لیکن اصل میں میں کمی نہیں
میموری سائز.
اور اس طرح ہم انہوں نے مزید کہا رکھنے اور اگر انہوں نے مزید کہا، فہرست میں چیزوں کو انہوں نے مزید کہا،
میرے کمپیوٹر سست ہو سکتا ہے اور سست اور سست،
میں سے باہر چل رہا ہوں کیونکہ میموری، میں واقعی میں نہیں ہوں یہاں تک کہ اگر
کرسٹین کی بائٹس کا استعمال کرتے ہوئے میموری کی اب.
>> تو آخر میں دیگر موجود ہیں کورس ہٹانے کے منظرنامے،
مشرق، ہٹانے میں آخر میں، کے طور پر ہم نے دیکھا.
لیکن زیادہ دلچسپ چیلنج ہے
جا بالکل غور کرنے کے لئے ہونا وقت چل رہا ہے کیا.
تو نہ صرف آپ کو رکھنے کے کر سکتے ہیں کاغذ کے ٹکڑے، Gabe کی، تو،
آپ کو دے اعتراض نہیں کرے گا سب کشیدگی کی گیند.
ہمارے منسلک کی فہرست کے لئے بہت بہت شکریہ رضاکارانہ، اگر آپ کر سکتے.
>> [تالیاں]
>> DAVID J. MALAN: ٹھیک ہے.
تجزیاتی کے ایک جوڑے پھر سوال، اگر میں کر سکتا.
ہم سے پہلے اس سنکیتن دیکھا ہے، بڑی O اور ومیگا، اوپری حد
اور کم حد کچھ الگورتھم کے وقت چل رہا ہے.
تو صرف غور سوالات کے ایک جوڑے.
>> ایک، اور ہم نے یہ کہا سے پہلے، چل رہا ہے
ایک کے لئے تلاش کے وقت بڑا O کے لحاظ سے فہرست؟
کیا چل رہا ہے پر پابند بالائی ہے ایک لنک کی فہرست کی تلاش کے وقت
ہمارے رضاکاروں کی طرف سے لاگو کیا کے طور پر؟
یہ بڑا این اے، لکیری ہے.
، بدترین صورت میں کیونکہ عنصر، 55 کی طرح،
ہم جہاں کے لئے ہو سکتا ہے تلاش کر سکتا ہے جیک، آخر میں تمام طریقہ تھا.
اور بدقسمتی سے، ایک صف کے برعکس ہم اس وقت پسند ہیں حاصل نہیں کر سکتے.
اپنے انسانوں کے تھے اگرچہ چھوٹے عناصر، 5 سے حل،
بڑا عنصر کے لئے تمام راستے، 55، جو عام طور پر ایک اچھی بات ہے.
لیکن یہ مفروضہ کرتا ہے اب کوئی ہم سے ایسا کرنے کی اجازت؟
سامعین: [اشراوی]
DAVID J. MALAN: ایک بار پھر کہو؟
سامعین: رینڈم رسائی.
DAVID J. MALAN: رینڈم رسائی.
اور کے نتیجے میں ہے کہ کوئی ہم کر سکتے ہیں کا مطلب ہے کہ اب، کمزور سے zeros، انترجشتھان استعمال
بائنری کا استعمال کرتے ہوئے اور obviousness سے تلاش اور تقسیم اور فتح.
کیونکہ اگرچہ ہم انسان ظاہر کر سکتے ہیں
اینڈی یا عیسائی تھے کہ دیکھیں تقریبا فہرست کے وسط میں،
ہم صرف ایک کے طور پر جانتے ہیں کہ فہرست skimming کی طرف کمپیوٹر
بہت شروع سے ہی.
تو ہم اس بے ترتیب رسائی دی ہے.
>> (ن) کے اتنا بڑا O اب اوپری ہے ہماری تلاش کے وقت پر پابند.
کیا ہماری تلاش کے ومیگا کے بارے میں؟
کم جانے پر تلاش کیا ہے اس فہرست میں کچھ تعداد کے لئے؟
سامعین: [اشراوی]
DAVID J. MALAN: ایک بار پھر کہو؟
سامعین: ایک.
DAVID J. MALAN: ایک.
تو مسلسل وقت.
بہترین صورت میں، کرسٹین ہے یقینا فہرست کے آغاز میں.
اور ہم کے لئے تلاش کر رہے ہیں نمبر 5، تو ہم اسے مل گیا.
تو کوئی بڑی بات نہیں.
لیکن وہ میں ہوگا اس صورت میں فہرست کے آغاز.
کچھ اس طرح کے بارے میں کیا حذف کریں؟
آپ ایک عنصر کو خارج کرنے کے لئے کیا چاہتے ہیں؟
کیا پابند بالائی اور زیریں پابند ہے ایک لنک سے کچھ کو خارج کرنے پر
فہرست؟
سامعین: [اشراوی]
DAVID J. MALAN: ایک بار پھر کہو؟
سامعین: (ن).
DAVID J. MALAN: (ن) ہے پابند یقینا اوپری.
بدترین صورت میں ہم کوشش کرتے ہیں ہم صرف کیا تھا، جیک کو خارج کرنے کی.
انہوں نے آخر میں تمام طریقہ ہے.
ہمیشہ کے لئے لیتا ہے، یا ن اقدامات اس کو تلاش کرنے کے لئے.
تو ہے کہ ایک اوپری پابند ہے.
اس بات کا یقین، لکیری ہے.
اور بہترین کیس وقت چل رہا ہے، یا بہترین صورت میں کم حد
مسلسل وقت ہو گا.
شاید ہم کو خارج کرنے کی کوشش کریں کیونکہ کرسٹین، اور ہم صرف خوش قسمت حاصل
وہ شروع میں ہے.
اب ایک منٹ رکو.
Gabe کی، شروع میں بھی تھا اور ہم بھی Gabe کی اپ ڈیٹ کرنے کے لئے تھا.
تو یہ صرف ایک قدم نہیں تھا.
تو یہ واقعی مسلسل جاری ہے وقت، بہترین صورت میں،
سب سے چھوٹی عنصر دور کرنے کے لئے؟
یہ دو ہو سکتا ہے، اگرچہ یہ،، ہے کوڈ کی تین، یا اس سے بھی 100 لائنیں،
اس کی ایک ہی تعداد ہے کچھ لوپ میں لائنز،،
اور سائز کے آزاد فہرست میں، بالکل.
عنصر حذف کر رہا ہے فہرست کے آغاز،
ہم کے ساتھ نمٹنے کے لئے ہے یہاں تک کہ اگر Gabe کی، اب بھی مسلسل وقت ہے.
>> تو یہ ایک طرح لگتا ہے پیچھے کی طرف بڑے پیمانے پر قدم.
اور وقت کی کیا بربادی ، تو ایک ہفتے اور ہفتے میں
صفر ہم نہ صرف تھا pseudocode کے کوڈ لیکن اصل کوڈ
لاگ ان ہے کہ کچھ لاگو کرنے کے لئے بنیاد (ن)، یا لاگ ان، بلکہ، (ن) کے، بیس 2،
اس کے چلانے کے وقت کی شرائط میں.
تو کیا heck ہم شروع کرنے کے لئے چاہتے ہیں کیوں ایک لنک کی فہرست کی طرح کچھ کا استعمال کرتے ہوئے؟
جی ہاں.
>> سامعین: تو آپ کو شامل کر سکتے ہیں صف عناصر.
DAVID J. MALAN: تو آپ کر سکتے ہیں صف عناصر شامل.
اور یہ بھی موضوعی ہے.
اور ہم کو دیکھنے کے لئے جاری رکھیں گے یہ اس تجارت بند، زیادہ سے زیادہ
جیسا کہ ہم نے دیکھا ہے ایک ضم طرح کے ساتھ تجارت بند.
ہم واقعی کی رفتار تیز کر سکتے ہیں بلکہ، تلاش یا چھانٹ رہا ہے،
ہم تھوڑا سا زیادہ جگہ خرچ کرتے ہیں اور ایک میموری کا ایک اضافی حصہ ہے
یا ضم طرح کے لئے ایک صف.
لیکن ہم زیادہ خرچ خلائی، لیکن ہم وقت کو بچانے کے.
اس صورت میں، ہم ہیں وقت دے لیکن ہم ہیں
لچک حاصل کرنے، تحرک اگر آپ،
جس arguably سب ایک مثبت خصوصیت ہے.
>> ہم نے بھی جگہ خرچ کر رہے ہیں.
کس معنی میں ایک لنک ہے زیادہ مہنگی کی فہرست
ایک صف سے جگہ کے لحاظ سے؟
جہاں اضافی جگہ سے آ رہا ہے؟
جی ہاں؟
>> سامعین: [اشراوی] پوائنٹر.
>> DAVID J. MALAN: جی ہاں، ہم بھی پوائنٹر ہے.
تو اس minorly پریشان کن ہے کہ میں نہیں ہوں
میں نے صرف ایک int ذخیرہ کرنے ایک int کی نمائندگی کے لئے.
میں ایک int اور ایک ذخیرہ کرنے رہا ہوں بھی 32 بٹس ہے جو پوائنٹر،.
تو میں نے لفظی کو دگنا کر رہا ہوں جگہ کی رقم ملوث.
تو ہے کہ ایک تجارتی آف، لیکن کہ int کے معاملے میں ہے.
، آپ int ذخیرہ کرنے کر رہے ہیں لگتا ہے کہ لیکن ان rectangles میں سے ہر ایک لگتا ہے
یا ان انسانوں میں سے ہر ایک کی نمائندگی کیا گیا تھا ایک لفظ، ایک انگریزی لفظ
پانچ حروف، 10 ہو سکتا ہے حروف، شاید اس سے بھی زیادہ.
اس کے بعد صرف 32 بٹس انہوں نے مزید کہا ایک بڑا سودا کے کم ہو سکتا ہے.
>> کیا طالب علموں میں سے ہر ایک تو مظاہرے میں
تھے لفظی طالب علم structs کے کہ شاید نام اور گھروں اور ہے
فون نمبر اور ٹویٹر ہینڈل اور طرح.
تاکہ تمام شعبوں کے ہم شروع دوسرے دن کے بارے میں بات،
کے طور پر ایک بڑا سودا کی بہت کم ہمارے مراکز زیادہ دلچسپ حاصل
اور بڑے، اہ، ایک اضافی خرچ کرنے کے لئے پوائنٹر صرف ان کے ساتھ منسلک کرنے کے لئے.
لیکن یقینا، یہ ایک تجارتی آف ہے.
اور یقینا، کوڈ ہے زیادہ پیچیدہ، پر تمہیں
کے ذریعے skimming کی طرف دیکھیں اس مخصوص مثال کے طور پر.
لیکن کیا وہاں تھے تو یہاں کچھ مقدس grail.
ہم ایک قدم نہیں ہے تو کیا پیچھے کی طرف ہے لیکن ایک بڑے پیمانے پر قدم
اور ایک کے اعداد و شمار پر عملدرآمد ساخت ہے جس کے ذریعے ہم
جیک یا اس طرح کے عناصر کے تلاش کر سکتے ہیں کرسٹین یا کسی دوسرے عناصر
سچ مسلسل وقت میں اس صف میں؟
تلاش مسلسل جاری ہے.
حذف مسلسل جاری ہے.
داخل مسلسل جاری ہے.
ان کارروائیوں کے مسلسل جاری ہیں.
یہ ہمارے حضور Grail ہو گا.
اور اس کا ہے جہاں ہم اگلی بار اٹھا.
پھر آپ دیکھیں.