[Powered by Google Translate] [6 ہفتہ]
[ڈیوڈ J. Malan] [ہارورڈ یونیورسٹی]
[یہ CS50 ہے.] [CS50.TV]
>> یہ CS50 ہے، اور یہ 6 ہفتہ کے آغاز ہے،
تاکہ نئے ٹولز کا ایک جوڑے اب دستیاب ہیں کے لئے آپ سے فائدہ اٹھانے،
جن میں سے سب سے پہلے CS50 انداز کہا جاتا ہے.
مشکلات ہیں اگر آپ کو آپ کے وزٹرز کا ریکارڈ رکھا یا تعلیم ساتھیوں میں سے کسی ایک کی طرح ہو،
آپ کو شاید ایک پروگرام جس انداز میں اس طرح کچھ لگتا ہے دیکھا ہے.
شاید آپ کچھ رات کو دیر سے کونے کونے کاٹنے شروع، یا آپ کو اس سے نمٹنے کے بعد میں کریں گے،
اور پھر ایک TF یا CA دفتری اوقات کے دوران ختم ہو آتا ہے.
تو یہ مشکل ہے ہمارے لئے پڑھنے کے لئے ہے.
ٹھیک ہے، یہ کوڈ syntactically درست ہے، اور اس کی تیاری گا، اور یہ اصل میں چلایا جائے گا.
لیکن یہ یقینی طور پر نہیں ہے سٹائل کے لیے ایک 5.
>> لیکن اب یہاں، اگر ہم اس ڈائریکٹری میں
نوٹس اور کہ میں conditions2.c ہے
اور میں اس نئی کمانڈ، style50، اس فائل conditions2.c پر چلاتے ہیں، درج کریں،
نوٹس کہ اس نے مجھے بتایا کہ یہ stylized گیا ہے.
Gedit نے محسوس کیا ہے کہ فائل ڈسک پر تبدیل کر دیا گیا کیا گیا ہے،
اور اگر میں دوبارہ لوڈ کریں پر کلک کریں، اب تمہاری تمام مسائل خود کار طریقے سے کر رہے ہیں.
[تعریف]
یہ چیزیں ہم نے اس ہفتے کے آخر میں کیا میں سے ایک ہے.
احساس ہے کہ یہ نامکمل ہے کیونکہ کچھ کوڈ ہیں
کہ یہ صرف بالکل stylize کے قابل نہیں کرے گا،
لیکن احساس اب یہ ایک آلہ ہے جو آپ کا فائدہ لے سکتے ہیں
کو صاف errantly رکھ دیا گھوبگھرالی منحنی خطوط وحدانی میں سے کچھ اس طرح صرف اس صورت میں جب کہ.
>> لیکن زیادہ مجبور اب CS50 چیک ہے.
CS50 چیک کے ساتھ، آپ کو ایک ہی درست ٹیسٹ بھی انجام دے سکتا ہے
اپنا خود کا کوڈ ہے کہ تعلیم کے ساتھیوں کرنے کے قابل ہیں.
یہ ایک کمانڈ لائن افادیت ہے جو آلے میں آئے ہے
جیسے ہی آپ کے مطابق ایک update50 کرتے ہیں
pset 4 ونیردیشوں، اور تم نے اسے اس طرح بنیادی طور پر استعمال کرتے ہیں.
آپ کو کمانڈ check50 چلاتے ہیں.
اس کے بعد آپ کو ایک کمانڈ لائن کی دلیل میں گزرتے ہیں، یا عام طور پر ایک سوئچ یا ایک پرچم کے طور پر جانا جاتا ہے.
عام طور پر، چیزیں جو ڈیش کی علامت ہے سوئچ کہا جاتا ہے
ایک کمانڈ لائن پروگرام، تو سی وضاحت کرتا ہے
چیک ہے کہ آپ کو چلانا چاہتے ہیں.
>> ٹیسٹ ہے کہ آپ کو چلانا چاہتے منفرد میں اس جملے کی طرف سے نشاندہی کی ہے،
2012/pset4/resize.
دوسرے الفاظ میں، یہ صرف ایک صوابدیدی لیکن منفرد سٹرنگ ہے
کہ ہم pset 4 درست ٹیسٹ کی منفرد شناخت کے لئے استعمال کرتے ہیں.
اور پھر آپ کو فائلوں کی ایک اسپیس سے الگ کردہ فہرست کی وضاحت کریں کہ آپ اپ لوڈ کرنا چاہتے ہیں
تجزیہ کے لئے CS50 چیک.
مثال کے طور پر، اگر میں اپنے حل میں میں جانے کے لئے یہاں resize.c
مجھے ایک بڑی کھڑکی کے ٹرمینل کھول
اور میں آگے بڑھو اور چلو چلانے 2012/pset4/resize check50 C-کہتے ہیں،
اور پھر میں آگے بڑھو اور فائلوں کے نام کی وضاحت،
resize.c، اور پھر درج کریں مارا، اس compresses،
یہ اپ لوڈ، چیک کرتا ہے، اور میں صرف ٹیسٹ کی ایک پوری چڑھانے میں ناکام رہے.
سب سے اوپر بائیں میں سرخ رنگ میں ایک کا کہنا ہے کہ resize.c اور BMP کہ موجود ہے.
وہ ٹیسٹ تھا. یہ سوال ہم سے پوچھا تھا.
اور اس سے ناخوش ہے کیونکہ جواب غلط ہے.
اس کے نیچے سفید متن کا کہنا ہے کہ وجود bmp.h امید کی جاتی ہے، اور یہ کہ صرف میری غلطی ہے.
میں اسے اپ لوڈ کرنے کی بھول گیا، تو میں دونوں فائلوں کو اپ لوڈ کرنے کی ضرورت ہے،
resize.c اور bmp.h.
لیکن اب دوسرے ٹیسٹ کے پیلے رنگ میں ہیں کیونکہ وہ نہیں چلانے ہیں، محسوس
اور جذباتیہ عمودی ہے کیونکہ وہ نہ تو خوش نہ ہی دکھ کی بات ہے،
لیکن ہم سرخ رنگ میں اس معاملے پر ان دیگر چیک سے پہلے چلے گا تلافی ہے.
>> مجھے اسے درست ہے.
مجھے باہر زوم اور اس rerun bmp.h کے ساتھ، اس وقت بھی
کمانڈ لائن پر، اور اب درج کریں اگر سب کچھ اچھی طرح سے جاتا ہے،
اور پھر واپس اس کے نتیجے چیک کرنے کے لیے آپ کی پکڑ ہو رہا ہے سانس
تمام سبز، جس کا مطلب ہے کہ میں 4 pset پر واقعی میں بہت اچھا کر رہا ہوں اب تک.
آپ دیکھ اور وضاحتی متن سے نتیجہ نکالنا یہاں کر سکتے ہیں
بالکل کہ وہ کیا ہے ہم ٹیسٹ.
ہم سب سے پہلے تجربہ کیا فائلوں وجود نہیں ہے؟
اس وقت ہم نے تجربہ کیا resize.c تالیف کرتا ہے؟
اس وقت ہم نے تجربہ کیا ہے یہ ایک BMP 1x1 پکسل کا سائز تبدیل نہیں جب (ن)، بازسائز عنصر، 1.
اب، اگر آپ کو کوئی خیال نہیں کیا (ن) ہے ہے، تو آپ 4 pset میں ایک بار کودو گا،
لیکن یہ صرف ایک وویک چیک کرنے کے لیے اس بات کا یقین کر لیں کہ آپ نیا سائز کرنا نہیں ہو
بالکل ایک تصویر ہے اگر بازسائز عنصر 1 ہے.
اگر اس کے برعکس کی طرف سے، یہ درست طریقے سے 2x2 1x1 ایک 1x1 پکسل BMP پکسل resizes
جب (ن) 2 ہے، تو اسی طرح میری کے مطابق بناتا ہے.
>> مختصر میں، یہ، ایک مقصد ہے، حد سے تجاوز کر انگلیاں لے
ٹھیک ہے، تم سے پہلے مساوات سے باہر اپنا pset پیش کریں.
آپ کو پتہ ہے بالکل وہی جو آپ کی TF جلد ہی پتہ چل جائے گا
، جب آپ کو یہ مسئلہ سیٹ میں سے کچھ جمع کرانے کے بارے میں
اور بھی pedagogical حوصلہ افزائی کو واقعی ہے ڈال
آپ کے سامنے میں تاکہ موقع جب تم نے ایک priori جانتے
ہے کہ آپ کے کوڈ میں کیڑے اور ٹیسٹ ہے جو منظور نہیں کیا جا رہا ہے،
زیادہ مؤثر وقت میں آپ کو سامنے ان مسائل کو حل کرنے کے لئے رکھ سکتے ہیں
بجائے پوائنٹس کھو TF سے رائے حاصل کریں،
اور پھر جا "آہ،" جیسے میں نے کہ باہر سوچا جانا چاہئے.
اب کم از کم میں آپ کی مدد ہے کہ تلاش کرنے کے لئے ایک آلہ ہے.
یہ جہاں بگ ہے کی طرف اشارہ نہیں ہے، لیکن یہ آپ کو بتائے گا
اس کی کیا روگسوچک ہے.
>> اب احساس ٹیسٹ ضروری جامع نہیں ہیں.
صرف اس لئے کہ آپ کو ایک سبز سمائلی چہروں کی مکمل سکرین
کا مطلب یہ نہیں ہے آپ کے کوڈ کو کامل ہے، لیکن اس کا مطلب یہ ہے
کہ اس رپورٹ کی طرف سے مقرر بعض ٹیسٹ منظور کر دیا ہے.
کبھی کبھی ہم نے چیک جاری نہیں کرے گا.
مثال کے طور پر،، whodunit، 4 pset کے پہلوؤں میں سے ایک
مایوس کن کی قسم اگر ہم آپ کو دے دیں
یہ کیا ہے، اور ظاہر طریقوں کی ایک بڑی تعداد ہے جواب
جو شخص اس سرخ شور میں ہے.
رپورٹ pset 5 آگے کے لئے مستقبل میں ہمیشہ کی وضاحت گا
جو آپ کے وجود کی جانچ کرے گا.
آپ کو نوٹس کے نیچے دیے گئے اس سفید URL گے.
ابھی کے لئے، یہ صرف تشخیصی پیداوار ہے.
اگر آپ اس یو آر ایل کا دورہ کرنے کے لئے، آپ کو پاگل، خفیہ پیغامات کی ایک پوری چڑھانے ملے گی
ہے کہ آپ کے ذریعے تلاش کرنے کا استقبال ہے، لیکن اس کے عملے کے لئے زیادہ تر ہے
تو ہم اس کی تشخیص کر سکتے ہیں اور check50 میں ہی کیڑے ڈیبگ کر سکتے ہیں.
>> ado کے بغیر، جہاں ہم نے بائیں منتقل کریں.
CS50 لائبریری ہم نے کے لئے کچھ ہفتوں کے لئے حاصل کی جاچکی ہے،
لیکن پھر گزشتہ ہفتے، ہم واپس اس کی تہوں میں سے ایک چھیلنے کرنا شروع کر دیا ہے.
ہم ایک طرف بجائے کیا کے حق میں ڈال سٹرنگ شروع کر دیا؟
[طلباء] چار.
چار *، جو ایک چار * اس وقت کیا گیا ہے،
لیکن اب ہم ڈرامہ ہے کہ یہ ایک حقیقی اعداد و شمار کی قسم سٹرنگ ہے کی ضرورت نہیں ہے.
بلکہ یہ چار * کے لئے ایک طرح کے مترادف ہے،
اور کرداروں میں سے ایک سٹرنگ میں ایک ہی تسلسل ہے،
تو یہ احساس کیوں چار * کے طور پر تاروں کی نمائندگی کرتا ہے؟
کیا حروف * ایک تار کے اس تصور کے تناظر میں کی نمائندگی کرتا ہے؟
جی ہاں >> [Student کی]. پہلا کردار
اچھا، پہلے کردار نہیں بلکہ بہت پہلے کردار ہے.
یہ [طلباء] پتہ ہے.
اچھا، پہلے کردار کا پتہ ہے.
وہ سب کے کمپیوٹر کی میموری میں ایک تار کی نمائندگی ضروری ہے
صرف اس کے بہت پہلے بائٹ کی منفرد پتہ ہے.
آپ کو معلوم ہے کہ کتنی دیر تک یہ بھی نہیں ہے
وجہ سے ہے کہ آپ کس طرح متحرک طور پر اعداد و شمار کر سکتے ہیں؟
[طالب علم کو] جملہ لمبائی.
آپ کو سٹرنگ کی حد کے، بہترین، لیکن کس طرح سٹرنگ کی حد کا کام کرتا ہے کہہ سکتے ہیں؟
اس کا کیا کرنا ہے؟ جی ہاں.
[Student کی] جب تک آپ شہوت انگیز null کردار ملے گا رکھیں.
جی ہاں، بالکل، یہ صرف لوپ کے لئے ایک کے ساتھ iterates، لوپ جبکہ
* سے آخر تک جو بھی ہو، اور آخر نمائندگی ہے
0 \،، نام نہاد nul کردار، nul
شہوت انگیز null، جس میں ایک پوائنٹر ہے کے ساتھ الجھن میں رکھا جائے،
جو بات چیت میں آج پھر سے آئے گا.
>> ہم واپس GetInt کی ایک پرت کھلی، اور پھر ہم نے GetString پر ایک نظر لیا،
اور یہ کہ ان کے افعال میں سے دونوں، واقعی یا یاد
GetString، ایک خاص تقریب کا استعمال کرتے ہوئے
اصل کا تجزیہ کرنے کے لئے، یہ، یا کا تجزیہ ہے پڑھ، صارف کی ان پٹ.
اور کیا اس نئے تقریب تھی؟
Scanf یا sscanf. یہ اصل میں کچھ مختلف ذائقوں میں آتا ہے.
آمدید scanf ہے، وہاں sscanf ہے، وہاں fscanf ہے.
ابھی کے لئے، تاہم، سب سے زیادہ آسانی سے سچتر پر توجہ مرکوز،
اور آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور آلات میں کھول
اس طرح ایک فائل، scanf1.c.
یہ ایک سپر آسان پروگرام ہے،
لیکن یہ ایک ایسی چیز ہے جس پر ہم نے کبھی نہیں کیا ہے کرتا ہے
CS50 لائبریری کی مدد کے بغیر.
یہ ایک صارف کی طرف سے ایک int ملتا ہے. یہ کس طرح کام کرتا ہے؟
ٹھیک ہے، وہاں 16 سطر میں
دیکھیں گے کہ ہم نامی ایک int ایکس کا اعلان کہانی میں اس وقت، اور،
X کی قدر کیا ہے؟
[اشراوی طالب علم کے جواب]
[ڈیوڈ M.] حق، کون جانتا ہے، کچھ ردی کی ٹوکری کی قدر ممکنہ طور پر 17 میں، تو، ہم صرف صارف بتا
مجھے ایک نمبر دے، تو براہ مہربانی، اور 18 قدم ہے جہاں اسے دلچسپ ہو جاتا ہے.
Scanf printf کی طرف سے ایک خیال ہے کہ میں اس کی قیمت درج کرنے میں ان کی شکل کوڈ کا استعمال کیا جاتا ہے قرضے لے لگتا ہے.
٪ D کورس کے ایک دشملو تعداد ہے.
لیکن میں کیوں اور عمومی کے بجائے X صرف ایکس میں گزر رہا ہوں؟
سابق صحیح ہے. جی ہاں.
[اشراوی طالب علم کے جواب]
بالکل، اگر اس پروگرام کا مقصد، تقریب GetInt ہی کی طرح
صارف کی جانب سے ایک int حاصل کرنے میں افعال منتقل کر سکتی ہیں
تمام متغیر میں چاہتا ہوں، لیکن اگر میں حوالے کے طور پر ان کے پاس نہیں ہے
یا ایڈریس کی طرف سے یا اس کی طرف سے پوائنٹر، آج کل کے مقاصد کے لئے تمام متبادل
تو یہ تقریب اس متغیر کی کو تبدیل کرنے کی صلاحیت نہیں ہے.
ایک کاپی میں یہ صرف سویپ کی چھوٹی گاڑی ورژن کی طرح گزرتا ہے
کہ اب ہم چند بار کے بارے میں بات کی ہے.
>> بلکہ اس کی بجائے، کر اور عمومی X، میں لفظی کیا میں گزر رہا ہوں؟
[Student کی] پتہ. ایکس کا ایڈریس. >>
یہ کہا جاتا scanf کے جشن کے لئے ایک نقشہ کے ڈرائنگ اور یہاں کہہ رہے جیسا ہے،
یہ کمپیوٹر میں میموری کا ایک حصہ ہدایات ہیں
کہ تم اندر کچھ عددی ذخیرہ جا سکتے ہیں
حکم میں sscanf کے لئے اب وہ کرنا
کیا آپریٹر، نحو کیا ٹکڑا استعمال کرنے کے لئے جا رہا ہے
اگرچہ ہم اسے دیکھ نہیں ہے کیونکہ کسی اور نے اس تقریب کو لکھا جا سکتا ہے؟
- دوسرے لفظوں میں وہ کیا ہے؟
[Student کی] پڑھا X.
کچھ پڑھنے جا رہا ہے، لیکن صرف X یہاں کے حوالے سے ہے.
اگر scanf ایکس کا پتہ منظور کیا جا رہا ہے،
syntactically، کیا آپریٹر کہیں موجود پابند ہے
اندر scanf عملدرآمد تاکہ scanf
2 نمبر واقعی میں نے اس پتے پر لکھ سکتے ہیں؟
جی ہاں، اس لئے *.
کو یاد ہوگا کہ * ہماری dereference آپریٹر ہے، جو بنیادی طور پر کا مطلب ہے کہ وہاں جانا ہے ہے.
>> ایک بار جب آپ نے پتہ کے حوالے، کے طور پر معاملہ یہاں ہے،
scanf شاید اگر ہم واقعی اس کے ذرائع کے ارد گرد دیکھا کوڈ
X * یا واقعی میں اس ایڈریس پر جاؤ اور وہاں کچھ قدر ڈال برابر کر ہے.
اب، کے لئے کس طرح scanf بورڈ سے ان پٹ ہو جاتا ہے،
ہم آج کے لئے ہمارے ہاتھ لہر لیں گے.
بس فرض ہے کہ آپریٹنگ سسٹم بات sscanf کی اجازت دیتا ہے
صارف کے کی بورڈ پر، لیکن اب یہ 19 سطر میں نقطہ پر،
جب ہم صرف ایکس پرنٹ، معاملہ لگتا ہے
کہ scanf X میں ایک int ڈال دیا ہے.
یہ کس طرح scanf کام ہے، اور گزشتہ ہفتے یاد
کہ کس طرح GetString اور GetInt اور اس کے افعال میں سے اس کے خاندان کے دوسرے
حتمی طور پر کام کرتا ہے، sscanf طرح تھوڑا سا مختلف کے ساتھ ہی سہی،
جس کا مطلب ہے کہ بورڈ کے بجائے ایک تار اسکین.
لیکن اس کا ایک چھوٹا سا بادبانی پر ایک نظر لے.
scanf2 میں، میں واقعی میں خراب ہے.
کیا غلط ہوا اور میں تبصرہ ہے کہ زیادہ سے زیادہ کی وضاحت کرتا ہے چھپا کریں گے
ہے کہ اس پروگرام کے ساتھ غلط ہے، ورژن 2؟
ممکن ہو سکے کے طور پر اس وقت کے طور پر تکنیکی.
یہ بہت اچھا لگ رہا ہے.
یہ اچھی طرح سے، پوٹ دار ہے لیکن
ٹھیک ہے، کے بارے میں ہم کس طرح یہ چھوٹا سوالات prune؟
16 لائن. 16 لائن عین مطابق لیکن تکنیکی انگریزی میں کیا کر رہے کیا کیا ہے؟
تھوڑا عجیب ہو رہی ہے. جی ہاں، مائیکل.
[Student کی] یہ ایک تار کے پہلے حرف کو کی طرف اشارہ کرتے ہوئے ہے.
>> ٹھیک ہے، قریب ہے. مجھے یہ تھوڑا سا موافقت.
ایک تار کے پہلے حرف کو کے کی طرف اشارہ کرتے ہوئے، آپ کو ایک متغیر کہا جاتا بفر اعلان کر رہے ہیں
کہ ایک تار کا پہلا ایڈریس کی طرف اشارہ کریں گے،
یا بلکہ یہ زیادہ خاص طور پر ایک چار کی طرف اشارہ کریں گے.
نوٹس اسے کہیں بھی اصل میں نہیں ہے کی طرف اشارہ کرتے ہوئے کیونکہ کوئی تفویض آپریٹر ہے.
کوئی برابر علامت ہے، ہم سب کر رہے ہیں متغیر نام نہاد بفر آونٹن ہے.
یہ 32 بٹیں ہوتا ہے کیونکہ یہ ایک پوائنٹر ہے،
اور بفر کے مندرجات شاید بالاخر
حروف کے ایک پتے پر مشتمل ہے، لیکن اب کے لیے، بفر کیا شامل ہے؟
بس کچھ جعلی ہے، کون جانتا ہے، کچھ ردی کی ٹوکری میں قدر
کیونکہ ہم اسے واضح طور پر نہیں کیا ہے initialized، تو ہم کچھ فرض نہیں کرنا چاہیے.
ٹھیک ہے، تو اب 17 لائن کیا ہے 17 لائن کرتے ہیں؟
ہو سکتا ہے کہ یہ گرم جائے گا.
یہ ایک سٹرنگ پرنٹ، ٹھیک ہے؟
یہ پرنٹ جملہ براہ مہربانی.
>> 18 لائن واقف کی طرح اب میں یہ ہے کہ ہم صرف اس کی ایک متنوع دیکھا
لیکن ایک مختلف شکل کوڈ کے ساتھ، تو، 18 لائن میں
ہم scanf کہہ رہے میموری کا ایک حصہ کا پتہ ہے.
میں آپ کو ایک تار میں، فون کے٪ کی طرف سے تقاضا کرنا چاہتے ہیں،
لیکن مسئلہ یہ ہے کہ ہم کے ایک جوڑے کی چیزیں نہیں کیا ہے یہاں.
کیا مسائل میں سے ایک ہے؟
[Student کی] یہ شہوت انگیز null پوائنٹر dereference کی کوشش کر رہا ہے.
اچھا، شہوت انگیز null یا دوسری صورت میں نامعلوم اشارہ.
تم scanf حوالے پتہ رہے ہیں، لیکن آپ صرف ایک لمحے پہلے نے کہا کہ
کہ وہ کچھ ردی کی ٹوکری کی قدر پتہ ہے کیونکہ ہم یہ اصل میں کچھ بھی نہیں تفویض،
اور تو آپ کو کہہ رہا ہوں scanf مؤثر طریقے سے ایک تار یہاں ڈال رہے ہیں،
لیکن ہم جانتے ہیں کہ کہاں ابھی تک یہاں نہیں ہے،
تو ہم بفر کے لئے یاد کیا واقعی نہیں مختص ہے.
اس کے علاوہ، کیا آپ بھی ہیں scanf بھی نہیں کہہ؟
اگر یہ میموری کا ایک حصہ تھا، اور یہ ردی کی ٹوکری کی قدر نہیں تھی،
لیکن آپ اب بھی کہہ scanf رہے ہیں کچھ اہم نہیں ہے.
[Student کی] یہ اصل میں کہاں ہے، ایمپرسینڈ.
ایمپرسینڈ، تو اس صورت میں، یہ ٹھیک ہے.
کیونکہ بفر پہلے ہی ایک پوائنٹر کے طور پر اعلان کیا جاتا ہے
نحو * ٹکڑا کے ساتھ، ہم نے ایمپرسینڈ استعمال کرنے کی ضرورت نہیں ہے
کیونکہ اس کے پاس پہلے سے ہی پتہ ہے، لیکن مجھے لگتا ہے کہ میں اسے یہاں سنا.
[Student کی] کتنا بڑا ہے؟
اچھا، ہم scanf کہہ نہیں کر رہے ہیں اس بفر کتنا بڑا ہے،
جس کا مطلب ہے کہ یہاں تک کہ اگر بفر پوائنٹر تھے،
ہم scanf کہہ رہے ہیں، ایک تار کو یہاں رکھتے،
لیکن یہاں 2 بائٹس ہو سکتا ہے، 10 بائٹس ہو سکتا ہے، یہ ایک میگا بائٹ ہو سکتی ہے.
Scanf کوئی اندازہ نہیں ہے، اور کیونکہ اس میموری کا ایک حصہ ہے
شاید، یہ ابھی تک سٹرنگ نہیں ہے.
یہ صرف ایک تار ہے ایک بار تم نے حروف اور ایک \ میموری کا حصہ 0 لکھتے ہیں.
اب یہ صرف میموری کا کچھ حصہ ہے.
Scanf پتہ نہیں جب اس پتے پر لکھ کو روکنے کے لئے جائے گا.
>> اگر آپ ماضی میں کچھ مثالیں ہیں جہاں میں تصادفی کی بورڈ پر ٹائپ یاد
بفر اتپرواہ کی کوشش کر رہا ہے، اور ہم بالکل اس کے بارے میں جمعہ کو بات کی.
اگر کوئی مخالف کسی بھی طرح سے آپ کے پروگرام میں ایک بہت بڑا لفظ کے طور پر کام کرنے کے لئے ہوئے injects
جملہ یا یا فقرہ تو آپ توقع کر رہے تھے آپ overrun کر سکتے ہیں
میموری کا ایک حصہ ہے، جو برے انجام ہو سکتا ہے،
سارا پروگرام خود پر لے.
ہم اس کو کسی نہ کسی طرح طے کرنے کی ضرورت ہے.
آپ کے وزٹرز کا ریکارڈ رکھا باہر زوم اور اس پروگرام کے 3 ورژن میں جانے دو
وہ تھوڑا سا بہتر ہے.
اس ورژن میں، فرق محسوس کریں.
اوپر 16 میں، میں پھر نامی ایک متغیر بفر کا اعلان کر رہا ہوں،
لیکن اب یہ کیا ہے؟
یہ 16 حروف کا ایک صف ہے.
یہ اچھا ہے کیونکہ اس کا مطلب میں نے scanf اب بتا سکتے ہیں
میموری کا ایک حقیقی حصہ ہے.
آپ کو اشارہ کے طور پر arrays تقریبا سوچ سکتے ہیں،
اگرچہ وہ اصل کے برابر نہیں ہو.
انہوں نے مختلف سبصورنسوں میں مختلف طریقے سے برتاؤ کریں گے.
لیکن اس بات کو یقینی طور سے معاملہ ہے کہ بفر حوالہ کر رہا ہے
16 ملحق حروف وجہ سے ہے کہ جو ایک صف ہے
اور اب کچھ ہفتوں کے لئے کیا گیا ہے.
>> یہاں، میں scanf یہاں کہہ رہا ہوں میموری کا ایک حصہ ہے.
اس وقت، یہ اصل میں میموری کا ایک حصہ ہے،
لیکن کیوں اس پروگرام اب بھی ہے exploitable؟
کیا ہوا ابھی تک؟
میں نے کہا کہ آپ کے وزٹرز کا ریکارڈ رکھا لیکن 16 بائٹس دے ہے
[Student کی] اگر وہ 16 سے زائد میں ٹائپ کیا؟
بالکل، کیا اگر 17 حروف یا 1700 حروف میں صارف کی اقسام؟
سچ تو یہ ہے، دیکھتے ہیں اگر ہم اس غلطی پر سفر نہیں کر سکتے ہیں اب.
یہ بہتر ہے لیکن کامل نہیں ہے.
آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور چلانے scanf3 اس پروگرام مرتب کرنے کے دو
مجھے scanf3 چلانے، سٹرنگ کریں: ہیلو، اور ہم ٹھیک ہو جائے لگ رہے ہو.
مجھے تھوڑا طویل ہے کرنے کی کوشش کریں، خوش آمدید.
ٹھیک ہے، ہیلو ہم وہاں کس طرح آج تم ہو، درج کریں.
خوش قسمت کی طرح یہاں سے حاصل دو، خوش آمدید، کا کہنا ہے کہ تم کیسی ہو.
لات ہے.
ٹھیک ہے، تو ہم خوش قسمت ہے. چلو دیکھتے ہیں اگر ہم اس کو ٹھیک نہیں کر سکتے.
نہیں، یہ مجھے کاپی نہیں ہے.
چلو، پھر سے کوشش کریں.
ٹھیک ہے، کی طرف سے کھڑے رہو.
ہم دیکھتے ہیں کہ میں کس طرح دیر کو بھی یہ کر رہی توجہ مرکوز کرنے کا دکھاوا کر سکتے ہیں کریں گے.
لات ہے. یہ بجائے مناسب ہے، اصل میں.
ہم وہاں جا رہے ہیں.
پوائنٹ بنا دیا.
>> یہ اگرچہ یہ بھی ہے شرمندا، یہ بھی بڑی الجھن کے ذرائع میں سے ایک ہے
پروگرام جو کیڑے ہے لکھنے جب کیونکہ وہ اپنے لگتے
کبھی کبھی دیر میں صرف ایک بار.
حقیقت یہ ہے کہ یہاں تک کہ اگر آپ کوڈ مکمل طور پر ٹوٹ گیا ہے،
یہ صرف مکمل طور پر ہو سکتا ہے تھوڑی دیر میں ایک بار ٹوٹ
کیونکہ کبھی کبھی، بنیادی طور پر کیا ہوتا ہے آپریٹنگ سسٹم مختص ہے
آپ سے ایک چھوٹی سی میموری اصل میں کسی بھی وجہ سے کی ضرورت ہے،
اور اسی طرح کی کوئی اور 16 حروف کے اپنے حصہ کے بعد میموری استعمال کر رہا ہے،
اگر ایسا ہے تو آپ کو 17، 18، 19، جو کچھ بھی، یہ اتنا بڑا سودا نہیں ہے.
اب، کمپیوٹر، یہاں تک کہ اگر یہ اس نقطہ پر کریش نہیں ہوتا
بائٹ تعداد 17 یا 18 یا 19 آخر میں کچھ اور کے لئے استعمال کر سکتے ہیں،
جس میں آپ کے ڈیٹا کا کہنا ہے کہ تم وہاں رکھ کب ضرورت سے زیادہ ہی سہی،
ادلیکھت کسی اور تقریب کی طرف سے ممکنہ طور پر حاصل کی جا رہی ہے.
یہ برقرار رہنے کے لئے ضروری نہیں ہے چل رہا ہے،
لیکن یہ ضروری seg غلطی نہیں کا سبب بن جائے گا.
لیکن اس معاملے میں، میں نے کافی حروف فراہم
کہ میں بنیادی طور پر میموری کا طبقہ سے تجاوز کر گئی، اور بام،
آپریٹنگ سسٹم نے کہا کہ، "معاف کیجئے گا، یہ اچھا نہیں، انقطاع کی غلطی ہے."
>> اور اب اگر میرا میں یہاں رہتا ڈائرکٹری
نوٹس ہے کہ میں نے یہ فائل یہاں ہے، کور.
یاد رکھیں کہ یہ دوبارہ کور ڈمپ کہا جاتا ہے.
یہ بنیادی طور پر ایک فائل ہے جو کہ آپ کے پروگرام کی میموری کے مواد پر مشتمل ہے
نقطہ جس میں گر کر تباہ ہوگیا،
ایک چھوٹی سی مثال کے طور پر کرنے کی کوشش صرف اور کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں
اور scanf3 پر gdb اور پھر چلانے نامی ایک تہائی بنیادی دلیل کی وضاحت کریں،
اور یہاں دیکھیں گے کہ اگر میں کوڈ کی فہرست،
ہم gdb کے ساتھ معمول کے مطابق قابل ہو جائے اس پروگرام کے ذریعے چلنا شروع کریں گے،
اور میں اسے چلائیں اور جیسے ہی جیسا کہ میں نے مارا میں قدم کمانڈ کے ساتھ کر سکتے ہیں gdb
جیسے ہی مجھے ایک بہت بڑا سٹرنگ میں ٹائپ کرنے کے بعد ممکنہ طور پر چھوٹی گاڑی لائن مارا،
میں اصل میں یہاں کی شناخت کرنے کے قابل ہو جائے گا.
، تاہم، اس پر بنیادی dumps کے لحاظ سے حصے میں
اور پسند تا کہ آپ کے ارد گرد اصل میں اندر بنیادی ڈمپ کے پرہار کر سکتے ہیں
اور کیا لائن پروگرام آپ ناکام رہے.
تو اشارہ پر اور پتے پر کوئی سوال؟
کیونکہ آج، ہم نے کے لئے حاصل کی جاچکی ہے کہ ان چیزوں کا کوئی وجود لینے شروع کرنے جا رہے ہیں
اور ہم جانتے ہیں کہ بالکل کہ وہ کیا ہیں.
جی ہاں.
>> [Student کی] کیسے آئے ایمپرسینڈ اگلے ڈال حصہ نہیں تھا
اچھا سوال ہے.
میں آیا کیسے ایک ایمپرسینڈ کردار صف کے ساتھ ڈال جیسا کہ میں نے پہلے کیا نہیں ہے
ہمارے مثالوں کی سب سے زیادہ کے ساتھ؟
مختصر جواب یہ ہے arrays تھوڑا خاص ہو.
تم نے واقعی میں ایک ایڈریس کے طور پر تقریبا ایک بفر سوچ سکتے ہیں،
اور یہ صرف اس لئے معاملہ ہوتا ہے کہ مربع بریکٹ سنکیتن
ایک سہولت ہے تاکہ ہم کو بریکٹ 0، 1 بریکٹ میں جا سکتے ہیں،
2 * سنکیتن کا استعمال کرنے کے لئے بغیر بریکٹ،.
یہ ایک سفید جھوٹ کے تھوڑا سا ہے کیونکہ arrays اور اشارہ
حقیقت میں ہیں، تھوڑا سا مختلف ہے، لیکن وہ ہمیشہ اکثر نہیں بلکہ interchangeably استعمال کیا جا سکتا ہے.
مختصر میں، جب ایک تقریب میموری کا ایک حصہ پوائنٹر توقع ہے
کیا تم یہ یا تو ایک ایڈریس ہے جو کہ آپ نے malloc کی طرف سے واپس کیا گیا ہے وہ یہ کہ یہ منتقل کر سکتی ہیں،
اور ہم malloc بہت پہلے دوبارہ دیکھ، یا گے تم نے یہ ایک صف کے نام پر منتقل کر سکتی ہیں.
آپ arrays کے ساتھ ایمپرسینڈ کرنا نہیں ہے، کیونکہ وہ پہلے سے ہی ہیں
بنیادی طور پر پتے کی طرح.
یہ ایک رعایت ہے.
مربع بریکٹ انہیں خصوصی بنا.
>> ایک ایمپرسینڈ آپ بفر پر آگے ڈال سکتے ہیں؟
اس معاملے میں نہیں.
یہ اس لئے کہ ایک بار پھر، اس کونے کیس کی کام نہیں کریں گے
جہاں arrays بہت اصل میں نہیں ہیں پتے.
لیکن ہم واپس کی دیگر مثالوں کے ساتھ شاید اس سے پہلے کہ طویل آئے گی.
چلو، یہاں ایک مسئلہ کو حل کرنے کی کوشش کریں.
ہم ایک آنکڑا ڈھانچہ ہے کہ ہم نے کچھ وقت کے لئے ایک صف کے طور پر جانا جاتا کا استعمال کرتے ہوئے ہے.
پوائنٹ میں کیس ہے جو ہم نے ابھی تھا.
لیکن arrays کچھ upsides اور downsides ہے.
Arrays اچھے کیوں ہو؟
ایک بات یہ ہے کہ آپ کی پسند کی حد تک آپ چاہیں arrays arrays کے بارے میں کیا ہے؟
ان کے بارے میں آسان کیا ہے؟ مجبور کیا ہے؟
ہم پہلی جگہ میں کیوں ان کے متعارف کرانے کیا؟
جی ہاں.
[Student کی] انہوں نے اعداد و شمار کے ایک بہت محفوظ ہے، اور آپ کو ایک پوری چیز کا استعمال کرنے کی ضرورت نہیں ہے کر سکتے ہیں.
آپ ایک حصے کو استعمال کر سکتے ہیں.
اچھا، ایک صف آپ کو ڈیٹا کی ایک بہت محفوظ کر سکتے ہیں کے ساتھ
اور آپ اس کا استعمال کرنے کے لئے ضروری نہیں ہے، تو آپ overallocate کر سکتے ہیں،
جو آسان ہو گا اگر آپ پہلے سے نہیں جانتے کہ کس طرح کچھ کرنے کی توقع کے بہت سے تو ہو سکتا ہے.
>> GetString کی ایک بہترین مثال ہے.
GetString، ہماری طرف سے لکھا گیا ہے، کوئی خیال نہیں ہے کتنے حروف کی توقع ہے،
حقیقت یہ ہے کہ ہم ملحق میموری کی مقدار مختص کر سکتے ہیں تو اچھا ہے.
Arrays بھی ایک مسئلہ ہے اب ہم ایک جوڑے ہفتے پہلے دیکھا کو حل
جہاں آپ کا کوڈ بہت کم ڈیزائن کیا کچھ میں devolve شروع ہوتا ہے.
کو یاد ہوگا کہ میں ایک طالب علم کہتے ڈیوڈ ڈھانچے،
اور پھر اصل میں ایک متبادل تھا، تاہم،
نامی ایک متغیر کا نام اور دوسرے گھر، مجھے لگتا ہے کہ، نامی متغیر،
اور ایک دوسرے سے ملاقات کی ID کیونکہ میں نے اس کہانی میں تو کچھ اور متعارف کرانے کے لئے چاہتا تھا متغیر
پروگرام میں روب پسند ہے، تو میں ایک منٹ انتظار کرنے کا فیصلہ کیا،
میں ان متغیرات میں نام تبدیل کرنے کی ضرورت ہے.
چلو NAME1 میری، ID1، house1 کہتے ہیں.
چلو روب NAME2، house2، ID2 کہتے ہیں.
لیکن اس وقت کیا ٹومی کے بارے میں ایک منٹ انتظار ہے؟
اس کے بعد ہم نے تین متغیر تھا.
ہم کسی اور متغیرات میں سے چار سیٹ متعارف کرائی ہے.
دنیا گندا بہت جلد حاصل کرنے کے لئے شروع کر دیا،
تو ہم structs متعارف کرایا، اور جو ایک struct کے بارے میں مجبور ہے؟
C struct کیا آپ کو کیا کرتا ہے؟
آج یہ واقعی عجیب ہے.
کیا >> [اشراوی طالب علم کے جواب]
جی ہاں، خاص طور پر، typedef آپ کو ایک نئے اعداد و شمار کی قسم کی تخلیق کرنے کی اجازت دیتا ہے،
اور struct، struct مطلوبہ الفاظ، آپ encapsulate کرنے کی اجازت دیتا ہے ہے
ڈیٹا کے conceptually سے متعلق ایک ساتھ مل کر ٹکڑے ٹکڑے
اور اس کے بعد ان کے ایک طالب علم کی طرح کچھ فون کریں.
>> وہ اچھا تھا کیونکہ اب ہم مثال کر سکتے ہیں
ایک متغیر میں ایک طالب علم کی بہت زیادہ قسم کی conceptually مسلسل تصور
بجائے منمانے ایک تار کے لئے ایک، ایک ID کے لئے ایک ہے، اور وغیرہ.
Arrays اچھے ہیں کیونکہ وہ ہمیں اپنے کوڈ کو صفائی شروع کرنے کے لئے کی اجازت دیتے ہیں.
لیکن ایک کمی ایک صف کی کیا ہے؟
تم کیا نہیں کر سکتے ہیں؟ جی ہاں.
[Student کی] آپ کو معلوم ہے کہ کتنا بڑا ہے.
تاکہ آپ کو معلوم ہے کہ کتنا بڑا ہے ہے، یہ درد کی طرح ہے.
تم میں سے وہ لوگ پہلے پروگرامنگ کے تجربے کے ساتھ یہ جانتے ہو، زبانوں کا ایک بہت میں
جاوا کی طرح، آپ کو میموری کا ایک حصہ ہے، خاص طور پر ایک صف پوچھ سکتے ہیں،
آپ کتنا بڑا ہے، لمبائی، جائداد، اس سے بات کرنے کے ساتھ، اور یہ واقعی بہت آسان ہے.
C میں، آپ ایک کلی صف پر بھی strlen نہیں کہہ سکتے ہیں
strlen کیونکہ لفظ کا مطلب ہے، صرف ڈور کے لئے ہے،
اور آپ کو اس انسانی کنونشن کی وجہ سے ایک تار کی لمبائی اعداد و شمار کر سکتے ہیں
ایک \ 0، لیکن ایک صف ہونے کے زیادہ generically، میموری کا ایک حصہ ہے.
اگر یہ ints کی ایک صف ہے، وہاں کوئی خاص کردار نہیں ہے
آخر میں آپ کے لئے انتظار کر رہے ہیں.
تم نے ایک صف کی لمبائی یاد ہے.
ایک صف کی ایک اور کمی خود GetString میں اس کا سر پالا.
ایک صف کی ایک اور منفی پہلو کیا ہے؟
سر، صرف میں اور تم مجھے آج.
[اشراوی طالب علم کے جواب] >> یہ کیا ہے؟
یہ اسٹیک اعلان کیا ہے.
ٹھیک ہے، اسٹیک کا اعلان کر دیا. ہے کہ آپ کو پسند کیوں نہیں کرتے؟
[Student کی] کیونکہ یہ reused ہو جاتا ہے.
یہ reused ہو جاتا ہے.
ٹھیک ہے، اگر آپ کو ایک صف میموری مختص کرنے کے لئے استعمال،
آپ، مثال کے طور پر نہیں، اس کو واپس کر سکتے ہیں کیونکہ یہ اسٹیک ہے.
ٹھیک ہے، یہ ایک نقصان ہے.
اور کس طرح ایک کے بارے میں ایک صف کے ساتھ دوسرے میں کیا خیال ہے؟
ایک بار جب آپ اسے مختص، آپ کی قسم اگر آپ کو مزید جگہ کی ضرورت ہے خراب ہے
سے کہ صف ہے.
>> پھر ہم نے متعارف کرایا، یاد malloc، جو ہمیں کو متحرک طور پر میموری مختص کرنے کی صلاحیت دے دی.
لیکن کیا اگر ہم ایک مختلف دنیا مکمل طور پر کرنے کی کوشش کی؟
کیا ہوگا اگر ہم ان مسائل کے ایک جوڑے کو حل کرنے چاہتے تھے
تو ہم بجائے میرا قلم سو یہاں گر گیا ہے
کیا ہوا اگر ہم بجائے بنیادی طور پر ایک ایسی دنیا ہے کہ اس طرح نہیں رہ گیا ہے پیدا کرنا چاہتا تھا؟
یہ ایک صف ہے، اور ظاہر کی، اس قسم کی خراب ایک بار ہم نے صف کے آخر کو مارا،
اور اب میں نہیں، دوسرے عددی یا دوسرے کردار کے لئے جگہ ہے.
کیا ہوگا اگر ہم قسم کی preemptively اچھی طرح کہنا، ہم آرام نہیں کیوں
اس کی ضرورت ہے کہ تمام میموری کے ان حصوں کو واپس ملحق کی حمایت،
اور کیوں نہیں کرتے ہیں، جب میں ایک int یا چار کی ضرورت ہے،
صرف کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ان میں سے ایک کے لئے جگہ دیتے ہیں؟
اور جب میں نے ایک دوسرے کی ضرورت ہے، مجھے کسی دوسرے کی جگہ دے،
اور جب میں نے ایک دوسرے کی ضرورت ہے، مجھے کسی دوسرے کی جگہ دے.
جس کا فائدہ اب کہ کسی اور اگر ہے
یہاں میموری، کوئی بڑی بات نہیں لیتا ہے.
میں میموری کی اس اضافی حصہ یہاں اور پھر اس سے لے لیں گے.
>> اب، صرف یہاں پکڑنے ہے کہ یہ تقریبا جیسے میں نے محسوس ہوتا ہے
مختلف متغیرات میں سے ایک مکمل جھوبڈ.
یہ پانچ مختلف ممکنہ طور پر متغیر کی طرح لگ رہا ہے.
لیکن کیا اگر ہم ڈور سے ایک خیال کی چوری
ہم کسی نہ کسی طرح جس ان چیزوں کو ایک ساتھ conceptually لنک، اور کیا ہوا اگر میں نے یہ کیا ہے؟
یہ میری بہت غیر تسلی بخش تیار تیر ہے.
مان لیں لیکن اس میموری کے ان حصوں میں سے ہر ایک
دوسرے کی طرف اشارہ کیا ہے، اور اس آدمی کو، جو اس کے حق میں نہیں بھائی ہے،
ایسی کوئی تیر ہے.
یہ حقیقت یہ ہے کہ ایک سے منسلک فہرست کہتے ہیں میں ہے.
یہ ایک نئے اعداد و شمار کا ڈھانچہ ہے کہ ہمیں میموری کا ایک حصہ مختص کرنے کی اجازت دیتا ہے ہے،
تو دوسرے تو دوسرے تو دوسرے کسی بھی وقت ہم چاہتے ہیں
ایک پروگرام کے دوران، اور ہمیں یاد ہے کہ انہوں نے یہ سب کسی نہ کسی طرح متعلقہ
لفظی chaining کی طرف سے ان کے ساتھ مل کر، اور ہم اس pictorially یہاں ایک تیر کے ساتھ کیا تھا.
لیکن، کیا کوڈ میں طریقہ کار ہے جس کے ذریعے آپ کسی نہ کسی طرح سے رابطہ قائم کر سکتے ہیں کریں گے،
تقریبا سکریچ کی طرح، ایک دوسرے حصہ حصہ ہے؟
ہم نے ایک پوائنٹر استعمال، ٹھیک کر سکتا تھا؟
کیونکہ، واقعی تیر جو سب سے اوپر بائیں مربع سے جا رہا ہے
اس سے اس لڑکے کو اس مربع کے اندر شامل کر سکتے ہیں
کچھ نہ صرف ints، کچھ نہ صرف چار، لیکن کیا ہوا اگر میں واقعی مختص
ایک چھوٹی سی اضافی جگہ، تاکہ اب
میموری کا میری حصوں میں سے ہر ایک، اگرچہ یہ آپ کے وزٹرز کا ریکارڈ رکھا لاگت کی جا رہی ہے،
اب تھوڑا زیادہ آئتاکار لگتا ہے جہاں میموری کی مقدار میں سے ایک
ایک نمبر کے لئے استعمال کیا جاتا ہے، نمبر 1 کی طرح
اور پھر اگر اس آدمی کو نمبر 2 ذخیرہ،
میموری کی یہ دوسری حصہ ایک تیر کے لئے استعمال کیا جاتا ہے،
یا اس سے زیادہ concretely پوائنٹر ہے.
لگتا ہے کہ اور میں یہاں پر نمبر 3 جب میں یہ اس آدمی کی طرف اشارہ کرنے کے لئے استعمال کرتے ہیں جمع،
اور اب اس آدمی کو، لگتا ہے میں صرف میموری کے تین ایسے حصوں کی ضرورت ہے.
میں اس کے ذریعے ایک لکیر کھینچنا، شہوت انگیز null اشارہ کریں گے.
کوئی اضافی کردار ہے.
>> درحقیقت یہ ہے کہ ہم کس طرح عمل درآمد کے بارے میں جا سکتے ہیں
کچھ ہے کہ ایک سے منسلک فہرست کہتے ہیں.
ایک لنک کی فہرست میں ایک نیا آنکڑا ڈھانچہ ہے، اور یہ ایک نکلنے کی طرف پتھر ہے
بہت fancier ڈیٹا ڈھانچے ہے کہ مسائل کو حل کرنے کی شروع
مسائل فیس بک کی قسم کی لائنیں اور گوگل قسم کے مسائل کے ساتھ ساتھ
آپ کو بڑی ڈیٹا سیٹ کہاں سے ہے، اور یہ اب کوئی یہ کاٹتا ہے
سب کچھ کو contiguously جمع اور لکیری تلاش کی طرح کچھ کا استعمال
یا بائنری تلاش کی طرح کچھ بھی ہے.
آپ کے پاس بھی بہتر چلانے اوقات چاہتے ہیں.
اصل میں، ہم نے اس ہفتے کے آخر یا آئندہ کے بارے میں مقدس Grails میں سے ایک سے بات کروں گا
ایک الگورتھم چل رہا جن کا وقت مسلسل جاری ہے.
دوسرے الفاظ میں، وہ ہمیشہ وقت کے اسی رقم کوئی بات نہیں لیتا ہے
ان پٹ کتنا بڑا ہے، اور یہ کہ مجبور یقینا ہو گی،
سے بھی زیادہ لوگارتمی کچھ سے.
سکرین پر کیا ہے؟
rectangles میں سے ہر ایک بالکل وہی ہے جو میں صرف ہاتھ سے متوجہ.
لیکن بات بائیں طرف ایک خاص متغیر ہے.
یہ ایک واحد پوائنٹر ہو جائے گا کیونکہ ایک پکڑ لیا ہے
ایک لنک کی فہرست کے ساتھ کے طور پر ان چیزوں کو کہا جاتا ہے،
یہ ہے کہ آپ کو منسلک فہرست کے ایک سرے پر پھانسی پر ہے.
>> صرف ایک تار کے ساتھ پسند ہے، آپ کو پہلے چار کا پتہ معلوم ہے.
منسلک کی فہرست کے لئے ایک ہی بات ہے.
آپ میموری کے پہلے حصہ کا پتہ معلوم ہے
کیونکہ وہاں سے، آپ کو ہر ایک دوسرے تک رسائی حاصل کر سکتے ہیں.
کمی.
ہم کو متحرک رکھنے کے اس استرتا کے لئے کیا قیمت ادا کر رہے ہیں
کافی ڈیٹا ڈھانچہ ہے کہ اگر ہم پہلے سے کہیں زیادہ میموری کی ضرورت ہے، ٹھیک ہے
صرف ایک حصہ مختص اور پوائنٹر کی طرف سے اپنی طرف متوجہ
فہرست کے نئے دم ہے؟
جی ہاں.
[Student کی] اس کے بارے میں دو بار سے زیادہ کے طور پر جگہ لیتا ہے.
یہ دو بار زیادہ سے زیادہ جگہ لیتا ہے، تو ضرور ایک کمی ہے، اور ہم نے یہ دیکھا ہے
وقت اور جگہ اور لچک کے درمیان پہلے tradeoff
اب تک، جہاں ہم نے ان کی تعداد میں سے ہر ایک کے لئے 32 بٹیں نہیں کی ضرورت ہے.
ہم واقعی 64، 32 نمبر کے لئے اور منحصر ہے اور اس کی 32 کی ضرورت ہے.
لیکن ارے، میں رام کی 2 گیگا ہے.
دوسرے 32 یہاں اور یہاں بٹس کو شامل کرنے سے ہے کہ ایک معاہدے کے بڑے نہیں لگتا ہے.
لیکن بڑی ڈیٹا سیٹ کے لئے، یہ ضرور لفظی دو بار زیادہ سے زیادہ جوڑتا ہے.
اب ایک اور منفی پہلو کیا ہے، یا ہم کیا خصوصیت دیتے،
اگر ہم ایک لنک کی فہرست اور ایک صف کے ساتھ نہیں چیزوں کی فہرست کی نمائندگی کرتی ہیں؟
[Student کی] آپ اسے گزرنا نہیں پیچھے کی طرف کر سکتے ہیں.
تو تم اس کے پیچھے کی طرف نہیں گزرنا کر سکتے ہیں، آپ کو اس قسم کی مصیبت میں ہیں اگر تم چل رہے ہو
بائیں سے دائیں لوپ یا دیر لوپ کے لئے ایک کا استعمال کرتے ہوئے
اور پھر آپ کو احساس ہوتا ہے "اوہ، میں فہرست کے آغاز پر واپس جانا چاہتے ہیں."
آپ کیونکہ یہ اشارہ نہ صرف بائیں سے دائیں جانب جا سکتے ہیں کے طور پر تیر سے ظاہر ہوتا ہے.
>> اب، آپ کو دوسرے متغیر کے ساتھ فہرست کے آغاز کو یاد کر سکتے ہیں،
لیکن اس کو ذہن میں رکھنے کے لئے پیچیدگی ہے.
ایک صف، کوئی بات نہیں آپ کس حد تک جا، آپ ہمیشہ بغیر، بغیر، بغیر، بغیر کر سکتے ہیں
اور جہاں سے تم آئے واپس چلے جاؤ.
یہاں ایک اور منفی پہلو کیا ہے؟ جی ہاں.
[اشراوی طالب علم سوال]
تم بہت، آپ کر سکتے تھے اصل میں صرف ایک ڈیٹا بلایا دوگنا منسلک کی فہرست ڈھانچے کی تجویز پیش کی،
اور بیشک آپ کو ان rectangles میں سے ہر ایک دوسرے پوائنٹر شامل کریں گے
جن میں سے میں سے ہے جو دوسری سمت جاتا ہے، الٹا
اب آپ آگے اور پیچھے گزرنا کر سکتے ہیں،
جن میں سے کمی اب تم زیادہ میموری کے طور پر تین بار کا استعمال کرتے ہوئے جیسا کہ ہم کرتے تھے
اور کوڈ کے معاملے میں پیچیدگی انہوں نے مزید کہا آپ اسے حق حاصل کرنے کے لئے لکھنے کے لئے ہے.
لیکن یہ سب شاید بہت مناسب tradeoffs ہیں، اگر الٹ زیادہ اہم ہے.
جی ہاں.
[Student کی] آپ بھی ایک 2D منسلک فہرست کی ضرورت نہیں کر سکتے ہیں.
اچھا، تم نے واقعی میں ایک 2D منسلک فہرست نہیں ہے کر سکتے ہیں.
آپ کر سکتے ہیں. یہ تقریبا ایک صف کے طور پر کے طور پر آسان نہیں ہے.
ایک صف کی طرح، آپ کو کھلی بریکٹ، بند بریکٹ، کھلی بریکٹ، بریکٹ بند کرتے ہیں،
اور آپ کو کچھ 2 جہتی ساخت ملتا ہے.
آپ کو ایک 2 جہتی منسلک فہرست پر عملدرآمد کر سکتے ہیں
اگر آپ کو اضافہ کے طور پر آپ ان چیزوں میں سے ہر ایک تیسری پوائنٹر ایک تجویز پیش کی کیا
اور اگر آپ کو دوسرے کی فہرست کے بارے میں لگتا ہے کہ آپ میں 3D انداز آنے
اسکرین سے ہم سب کے لئے، جس میں صرف کسی قسم کی ایک اور سلسلہ ہے.
ہم اسے کرتے ہیں، لیکن یہ اوپن بریکٹ، مربع بریکٹ ٹائپ کے طور پر کے طور پر آسان نہیں ہے کر سکتے ہیں. جی ہاں.
[اشراوی طالب علم سوال]
اچھا، تو یہ ایک حقیقی ککر ہے.
>> یہ الگورتھم کہ ہم سے زیادہ ہے، جو اس طرح اوہ، بائنری تلاش pined ہے،
آپ بورڈ پر اعداد کی ایک صف کو تلاش کر سکتے ہیں
یا فون کی کتاب اتنی زیادہ تیزی سے اگر آپ استعمال کرتے ہیں اور فتح کی تقسیم
اور ایک بائنری تلاش الگورتھم، لیکن بائنری تلاش دو مفروضات کی ضرورت ہے.
ایک، کہ اعداد و شمار کے مطابق کیا گیا تھا.
اب، ہم اس کے مطابق شاید رکھ سکتے ہیں،
تو شاید ہے جو ایک تشویش کی بات نہیں ہے، لیکن بائنری تلاش بھی فرض کیا گیا ہے
کہ آپ کو بے ترتیب نمبروں کی فہرست تک رسائی تھی،
اور ایک صف آپ کو بے ترتیب کو رسائی حاصل ہے کرنے کی اجازت دیتا ہے ہے، اور بے ترتیب تک رسائی کی طرف سے،
میرا مطلب ہے کہ اگر آپ نے ایک صف دیا رہے ہیں، کتنا وقت تمہیں لے
0 بریکٹ میں حاصل کرنے کے لئے؟
ایک آپریشن آپ [0] استعمال کرتے ہیں اور تم وہیں ہو.
کتنے قدم یہ 10 مقام پر حاصل کرنے کے لئے کرتا ہے؟
ایک قدم، تم صرف [10] جاؤ اور تم وہاں ہو.
کے برعکس کی طرف سے، آپ کو ایک لنک کی فہرست میں 10th عددی کس طرح حاصل کرتے ہیں؟
آپ کو شروع میں شروع کرنے کے لئے ہے کیونکہ آپ نے صرف یاد کر رہے ہیں
ایک لنک کی فہرست کے ایک تار کی طرح شروع ہے، یاد کیا جا رہا ہے
اپنے پہلے چار کے ایڈریس کی طرف سے، اور یہ کہ 10th int تلاش کرنے کے لئے
یا کہ ایک تار میں 10th کردار آپ پوری چیز کو تلاش کرنے کے لئے ہے.
>> ایک بار پھر، ہم نے ہمارے مسائل کو حل کرنے نہیں رہے ہیں.
ہم نئے متعارف کروا رہے ہیں، لیکن یہ واقعی میں جو آپ کے لئے ڈیزائن کرنے کی کوشش کر رہے ہیں پر منحصر ہے.
اس کو لاگو کرنے کے معاملے میں، ہم نے اس طالب علم کی ساخت سے ایک خیال قرضے لے سکتے ہیں.
خیال نحو اب بہت ہی سوائے ہے، تھوڑا زیادہ تجریدی ہے
سے گھر اور نام اور ID.
لیکن میری تجویز ہے کہ ہم C میں ایک آنکڑا ڈھانچہ کر سکتے ہیں
وہ نوڈ کہا جاتا ہے، سلائڈ پر آخری لفظ تجویز ہے،
ایک نوڈ کے اندر اور ایک نوڈ صرف کمپیوٹر سائنس میں ایک عام کنٹینر ہے.
یہ عام طور پر ایک حلقہ میں یا ایک مربع یا مستطیل جیسا کہ ہم نے کیا کیا ہے کے طور پر تیار کی ہے.
اور اس آنکڑا ڈھانچہ میں، ہم نے ایک int، ن ہے،
تاکہ تعداد میں ذخیرہ کرنا چاہتے ہیں.
لیکن کیا اس دوسری لائن، struct نوڈ اگلے * ہے؟
یہی وجہ ہے کہ درست ہے، یا اس بات کا کھیل کیا کردار ادا کرتا ہے،
اگرچہ یہ پہلی نظر میں تھوڑا خفیہ ہے؟
جی ہاں.
[اشراوی طالب علم کے جواب]
بالکل، * لوٹ کی طرح ہے کہ وہ کسی قسم کی ایک پوائنٹر ہے.
اس پوائنٹر کے نام پر منمانے اگلے ہے،
لیکن ہم نے اسے کچھ ہم چاہتے ہیں کہا جاتا ہے، لیکن جو اس پوائنٹر نقطہ کرتا ہے؟
[Student کی] ایک اور نوڈ >> بالکل، یہ ایک اور اس طرح نوڈ. دکھاتا ہے.
>> اب، یہ سی کے تجسس کی طرح ہے
کو یاد ہوگا کہ C نیچے ایک سنکلک سب سے اوپر کی طرف سے پڑھا ہے، بائیں سے دائیں،
جس کا مطلب ہے کہ اگر یہ جو ہم طالب علم کے ساتھ کیا کیا سے تھوڑا مختلف ہے.
جب ہم نے ایک طالب علم کی وضاحت، ہم اصل میں ایک لفظ نہیں ڈال تھا وہاں.
یہ صرف typedef ہے.
پھر ہم int کی شناخت، سٹرنگ، نام، سٹرنگ گھر تھا،
اور پھر struct کے سب سے نیچے دیئے گئے طالب علم ہے.
یہ اعلان تھوڑا مختلف ہے، کیونکہ
پھر، C کمپائلر تھوڑا گونگا ہے.
یہ صرف اوپر سے نیچے کو پڑھنے کے لئے جا رہا ہے،
اگر ایسا ہے تو یہ 2nd لائن یہاں تک پہنچ
جہاں آئندہ قرار دیا ہے اور اس کو دیکھتا ہے، اوہ، یہاں کے نام سے اگلے متغیر ہے.
یہ struct نوڈ پوائنٹر ہے.
سنکلک احساس کیا struct نوڈ ہے کی جا رہی ہے؟
میں نے کبھی بھی اس سے پہلے بات کے بارے میں سنا نہیں ہے،
کیونکہ لفظ نوڈ دوسری صورت میں ظاہر نہیں ہو سکتا ہے
نیچے تک، تو اس فالتوپن ہے.
آپ یہاں struct نوڈ کا کہنا ہے، جس سے آپ بعد میں تو قصر کر سکتے ہیں
کیونکہ typedef نیچے یہاں شکریہ، لیکن یہ ہے
ہم اندر ڈھانچے کی ساخت بذات خود حوالہ کر رہے ہیں.
یہ ایک وہاں پکڑ لیا ہے.
>> کچھ دلچسپ مسائل پیدا جا رہے ہیں.
ہم نے اعداد کی ایک فہرست ہے. ہم اس میں کس طرح داخل ہے؟
ہم اس کو کیسے تلاش کر سکتا ہوں؟ ہم اس سے کس طرح خارج کروں؟
خاص طور پر اب جب کہ ہم یہ اشارہ کو منظم کرنے کی ہے.
تم نے سوچا کہ اشارہ ذہن موڑنے کی طرح تھے
جب آپ نے ان میں سے صرف ایک ایک int کو پڑھنے کی کوشش کر رہا ہے.
اب ہم ایک مکمل فہرست کی مالیت جوڑتوڑ ہے.
ہماری 5 منٹ کے وقفے کے ہم کیوں نہیں یہاں لے، اور پھر ہم لے کر آتا ہوں
مرحلے پر کچھ لوگ بالکل ایسا.
>> C بہت زیادہ مزہ آئے جب وہ باہر کام کیا ہے ہے.
کون پہلے لفظی کرنا چاہتے ہیں؟
ٹھیک ہے، پر آئے. آپ پہلے ہیں.
9 کون پسند کریں گے؟ ٹھیک ہے، 9.
9 کے بارے میں کیسے رہے گا؟ 17؟
ایک چھوٹا سا گروہ ہے. 22 اور اس کے سامنے قطار میں 26.
اور پھر کس طرح کسی کے بارے میں وہاں کی طرف اشارہ کیا جا رہا ہے.
تم 34 ہیں. ٹھیک ہے، 34، آو.
پہلے وہاں ہے. ٹھیک ہے، سب لوگ تم میں سے چار.
اور جو ہم نے 9 کے لئے کہا؟
جو ہمارے 9 ہے؟
جو واقعی 9 کرنا چاہتا ہے؟ ٹھیک ہے، آو، 9 ہو.
یہاں ہم چلے.
34، ہم آپ سے ملنے وہاں کریں گے.
پہلا حصہ اپنے آپ کو اس طرح دیکھنے کی ہے.
26، 22، 17، اچھی.
اگر آپ کی طرف سے دور کھڑے رہو، کیونکہ ہم آپ کو ایک لمحے میں malloc جا رہے ہیں کر سکتے ہیں.
>> اچھا، اچھا ہے.
ٹھیک ہے، بہت اچھا، تو سوال کے ایک جوڑے کے یہاں پوچھنا.
اور اصل میں، آپ کا نام کیا >> انیتا ہے؟ ہے.
انیتا، ٹھیک ہے، یہاں پر آئے.
انیتا ہمیں پہلے کی طرح ایک کافی آسان سوال کو حل میں مدد کی جا رہی ہے،
جس طرح آپ کو تلاش ہے یا نہیں ایک قیمت کی فہرست میں ہے؟
نوٹس، کہ سب سے پہلے، یہاں لوکاس کی طرف سے نمائندگی کی،
تھوڑا مختلف ہے، اور اس کاغذ کے اس ٹکڑے کو جان بوجھ کر sideways ہے
کیونکہ یہ بہت لمبا نہیں ہے اور ہے کئی بٹس کے طور پر نہیں لے،
اگرچہ تکنیکی طور پر وہ کاغذ کے ایک ہی سائز صرف گھمایا ہے.
لیکن اس نے تھوڑا سا مختلف ہے کہ وہ ایک پوائنٹر کے لئے صرف 32 بٹس ہے،
اور ان لوگوں کے تمام 64 بٹس، جن میں سے نصف تعداد نصف جن میں سے ایک پوائنٹر ہیں.
لیکن پوائنٹر کو دکھائے جانے والے تاثر نہیں ہے، اگر ایسا ہے تو آپ لوگ awkwardly کسی حد تک کر سکتے تھے
اپنے بائیں ہاتھ کو آپ کے اگلے شخص کی طرف اشارہ کرنے کے لئے استعمال کریں.
اور آپ کو 34 نمبر ہو. آپ کا نام کیا ہے؟
ایری.
ایری، آپ کے دائیں ہاتھ میں اصل میں، کاغذ پکڑو، اور بائيں ہاتھ براہ راست نیچے جاتا ہے.
آپ کو بائیں جانب، شہوت انگیز null کی نمائندگی کرتے ہیں.
>> اب ہمارے انسانی کی تصویر بہت یکساں ہے.
یہ اصل میں ہے کہ کس طرح اشارہ کام ہے.
اور اگر آپ تھوڑا سا اس طرح scrunch تو میں تمہارے راستے میں نہیں ہوں کر سکتے ہیں.
یہاں انیتا، مجھے 22 نمبر حاصل کرتے ہیں،
لیکن، تک انسان نہیں کاغذ کے ٹکڑے پر فائز کی رکاوٹ فرض
لیکن یہ ایک فہرست ہے، اور آپ کو صرف لوکاس کے ساتھ شروع کرنے کے لئے ہے
کیونکہ وہ لفظی پہلا پوائنٹر ہے.
آپ کو لگتا ہے اپنے آپ کو ایک پوائنٹر ہیں، اور تم بھی کچھ کی طرف اشارہ کرنے کی صلاحیت ہے.
تم بالکل وہی جو لوکاس طرف اشارہ ہے کی طرف اشارہ کرتے ہوئے کی طرف سے کیوں نہیں شروع کرتے؟
اچھا ہے، اور کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں اس سے نافذ ہے.
بحث کے لیے، مجھے یہاں ایک خالی صفحے ھیںچو.
آپ کو اپنے نام کو کس طرح جادو کرتے ہیں >> انیتا؟
ٹھیک ہے، انیتا.
چلو میں نوڈ * انیتا = لوکاس کا کہنا ہے کہ.
ٹھیک ہے، ہم آپ کو لوکاس فون نہیں کرنا چاہئے. ہم آپ کو پہلے سے رابطہ کرنا چاہئے.
یہاں حقیقت کے مطابق حقیقت میں ایسا کیوں ہے؟
، ایک سب سے پہلے پہلے سے ہی موجود ہے.
پہلا ہے شاید کہیں یہاں مختص.
گھنڈی سب سے پہلے *، اور یہ رہا ایک فہرست کسی نہ کسی طرح مختص.
مجھے نہیں معلوم کہ وہ کس طرح ہوا ہے. یہ ہوا سے پہلے کلاس شروع.
انسانوں کا یہ منسلک کی فہرست بنا دیا گیا ہے.
اور اب بعد میں کہانی یہ فیس بک پر سب جا رہا ہے بظاہر میں اس وقت
کہانی میں اس وقت، انیتا کیا گیا ہے پہلے سے برابر ہو initialized
جس کا مطلب یہ نہیں ہے کہ لوکاس میں انیتا پوائنٹس ہے.
بلکہ وہ جو اس نے اشارہ میں اشارہ
کیونکہ اسی ایڈریس لوکاس 32 بٹس کے اندر ہے - 1، 2، 3 -
اب بھی انیتا 32 بٹس کے اندر - 1، 2، 3.
>> اب 22 پر تلاش کریں. آپ کو ایسا کرنے کے بارے میں کیسے جا سکتا ہے؟
کہ >>؟ جو کچھ بھی کی طرف اشارہ کیا ہے.
جو کچھ بھی کی طرف اشارہ ہے، تو آگے بڑھیں اور اسے سب سے بہترین آپ یہاں کر سکتے باہر کام ہے.
اچھا، اچھا، اور اب آپ کی طرف اشارہ کر رہے ہیں میں کیا 22 کے ساتھ آپ کا نام ہے؟
Ramon. >> Ramon تو، Ramon انعقاد 22 ہے.
اب آپ نے چیک کیا ہے.
کیا Ramon 22 == اگر ایسا ہے تو، اور، ہم مثال کے طور پر صحیح واپس آ سکتے ہیں.
آپ کے وزٹرز کا ریکارڈ رکھا جبکہ یہ لوگ یہاں کھڑے ہیں کسی حد تک awkwardly
مجھے کچھ bool طرح تیزی سے تلاش کریں.
میں آگے بڑھو اور کہنے جا (نوڈ * فہرست، int ن) رہا ہوں.
میں تم لوگوں کے ساتھ واپس ہو جائے گا. میں صرف کچھ کوڈ لکھنے ہے.
اور اب میں آگے جانے کے لئے اور یہ نوڈ * انیتا = فہرست کرو جا رہا ہوں.
اور میں آگے بڑھو اور کہنے جا رہے ہیں. (انیتا = نل!) رہا ہوں
>> یہاں تشبیہ پھیل تھوڑا ہو رہی ہے، لیکن جبکہ (انیتا = نل!) کیا میں کرنا چاہتے ہیں؟
میں حوالہ کے کچھ طریقہ کی ضرورت ہے
عددی ہے کہ انیتا میں اشارہ کر رہا ہے.
ماضی میں، جب ہم ڈھانچے تھا، جس میں ایک نوڈ ہے
ہم ڈاٹ سنکیتن کا استعمال کیا، اور ہم جیسے کچھ کہیں گے
anita.n، لیکن مسئلہ یہ ہے کہ انیتا ایک struct SE فی نہیں ہے.
وہ کیا ہے؟
وہ ایک پوائنٹر ہے، تو سچ میں، اگر ہم اس نقطہ کو استعمال کرنے کے لئے چاہتے ہیں سنکیتن
اور یہ جان بوجھ کر ایک چھوٹی سی لگتی جا رہی ہے خفیہ
ہم جو انیتا بائیں ہاتھ کی طرح کچھ کرنا پڑے طرف اشارہ ہے
اور پھر کہا جاتا ن میدان.
انیتا پوائنٹر ہے، لیکن * انیتا کیا ہے؟
کیا آپ کو تلاش ہے جب آپ کو کیا انیتا میں اشارہ کر رہا ہے؟
A struct، ایک نوڈ، اور ایک نوڈ یاد نامی این فیلڈ ہے
کیونکہ یہ یاد، ہے،، ان 2 شعبوں، اگلے اور این
کہ ہم پہلے ایک لمحے کے یہاں دیکھا.
>> اصل میں کوڈ میں اس کی نقل،
ہم یہ کرتے ہیں اور کہہ سکتے ہیں اگر ((* انیتا ن.) ن ==)، ن کہ میں دیکھ رہا ہوں.
نوٹس ہے کہ تقریب میں تعداد کے بارے میں دیکھ بھال میں منظور کیا گیا تھا.
پھر میں آگے بڑھو اور واپسی کی طرح کچھ صحیح کر سکتے ہیں.
دوسری صورت میں، اگر ایسی بات نہیں ہے، کہ میں کیا کرنا چاہتے ہیں؟
میں کوڈ کیا انیتا فہرست کے ذریعے چلنے کی طرف سے ایسا intuitively کیا کس طرح ترجمہ کر سکتا ہوں؟
کیا ہوا میں یہاں انکرن انیتا بائیں قدم اٹھانے، اس قدم کو بائیں کیا کرنا چاہیے؟
[اشراوی طالب علم کے جواب] >> یہ کیا ہے؟
[اشراوی طالب علم کے جواب]
اچھا ہے، برا خیال نہیں ہے، لیکن ماضی میں، جب ہم نے یہ کیا ہے، ہم نے کیا ہے انیتا + +
کیونکہ وہ انیتا نمبر 1 کا اضافہ کریں گے،
جو اگلے شخص کو عام طور پر، Ramon کی طرح کی طرف اشارہ کریں گے،
یا اس سے اگلے شخص یا اگلے اس سے نیچے لائن شخص ہے.
لیکن یہ بہت اچھا نہیں ہے اس لیے کہ یہ بات یاد میں کیسی لگتی ہے؟
وہ نہیں. ہم نے اس کو غیر فعال کرنے کی ہے.
یہ یاد میں اس طرح لگ رہا ہے، اور اگرچہ میں 1 اور 2 اور 3 کے قریب ایک دوسرے سے تیار کی ہے،
اگر ہم واقعی انکرن آپ اس کرسکتے ہیں لوگ جبکہ اب بھی وہی لوگ کی طرف اشارہ کرتے ہوئے،
ایک بے ترتیب قدم پیچھے، تم میں سے بعض ایک بے ترتیب قدم آگے تم میں سے کچھ لے سکتے ہیں؟
>> یہ گندگی اب بھی ایک سے منسلک فہرست ہے،
لیکن یہ لوگ یاد میں کہیں بھی ہو سکتا ہے،
تو انیتا + جا + کام کیوں نہیں ہے؟
مقام انیتا میں کیا ہے + +؟
کون جانتا ہے.
یہ کسی دوسرے قدر ہے کہ بہت interposed پر ہوتا ہے
موقع کی طرف سے ان مراکز کی درمیان کیونکہ ہم ایک صف کا استعمال نہیں کر رہے ہیں.
ہم نے ان مراکز میں سے ہر ایک انفرادی طور پر مختص.
ٹھیک ہے، اگر آپ لوگ اپنے آپ کو صاف بیک اپ کر سکتے ہیں.
مجھے تجویز ہے کہ انیتا + انیتا +، ہم بجائے بجائے ہو جاتا ہے
ٹھیک ہے، ہم نے جو کچھ بھی انیتا طرف اشارہ ہے کیوں نہیں کرتے اور پھر جا کر اگلے؟
دوسرے الفاظ میں، ہم Ramon، جو 22 نمبر منعقد کر رہا ہے،
اور پھر اگلے جیسے انیتا اس کے بائیں ہاتھ پوائنٹر رکھا جائے کاپی کریں گے.
لیکن وہ Ramon سے دور نہیں جانا کیونکہ ہم 22 پایا.
لیکن یہ خیال کیا جائے گا. اب، یہ ایک گندگی خدا خوفناک ہے.
سچ میں، کوئی بھی کبھی بھی اس نحو، اور تاکہ شکر یاد کروں گا،
یہ اصل میں ایک چھوٹی سی جان بوجھ کر اوہ، آپ اصل میں نہیں ہے جو میں نے لکھا دیکھا ہے.
یہ اگر آپ کر سکتے مجبور ہو جائے گی. Voila!
>> پردے کے پیچھے، میں مسئلہ کو حل کرنے کے اس طرح کیا گیا تھا.
انیتا، بائیں قدم اٹھانے کے لئے
سب سے پہلے، ہم پتہ پر جانا کہ انیتا میں اشارہ کر رہا ہے.
اور وہ مل نہ صرف جہاں (ن)، جو ہم صرف موازنہ خاطر کی جانچ پڑتال کرے گا،
- اور اس صورت میں، لیکن آپ آئندہ بھی مل جائے گا
Ramon کے بائیں ہاتھ کی فہرست میں اگلے نوڈ کی طرف اشارہ کرتے ہوئے.
لیکن یہ گندگی خدا خوفناک ہے جو میں نے پہلے کہا جاتا ہے،
لیکن اس کا بدل جاتا ہے باہر C اجازت دیتا ہے ہمیں اس کو آسان بنانے.
بجائے تحریری (انیتا *)، ہم صرف اس کی بجائے انیتا ہے> n لکھ سکتے ہیں،
اور یہ بالکل وہی بات فعل ہے، لیکن یہ بہت بدیہی ہے،
اور اس کے بہت سے زیادہ مسلسل ہے کہ ہم ڈرائنگ
یہ سب وقت تیر کا استعمال کرتے ہوئے.
>> آخر میں، جو ہم نے اس پروگرام کے آخر میں کرنے کی ضرورت ہے؟
باقی کے کوڈ کا ایک لائن ہے.
کیا واپس؟
جھوٹی کیونکہ اگر ہم پورے کے ذریعے حاصل ہے جبکہ لوپ
اور انیتا ہے، اصل میں، شہوت انگیز null، اس کا مطلب ہے کہ وہ فہرست کے اختتام پر ہر طرف گئے
جہاں وہ کی طرف اشارہ کیا گیا تھا میں تمہارا نام کیا ہے پھر؟
ایری >>. ایری کے بائیں ہاتھ، جس شہوت انگیز null ہے.
انیتا اب، شہوت انگیز null، اور مجھے احساس ہے تم صرف یہاں کھڑے ہو limbo میں awkwardly
کیونکہ میں ایک monologue پر جا رہا ہوں. یہاں
لیکن ہم آپ کو صرف ایک لمحے میں دوبارہ شامل کر دیں گے.
انیتا کہانی میں اس وقت شہوت انگیز null ہے، جبکہ لوپ ختم،
اور ہم جھوٹے واپس کرنا ہے کیونکہ اگر وہ ایری شہوت انگیز null پوائنٹر ہے
تو کوئی نمبر ہے کہ وہ فہرست میں کرنے کی کوشش کی تھی.
ہم یہ صاف بھی سکتے ہیں لیکن یہ ایک بہت اچھا عمل درآمد ہے تو
ایک traversal تقریب کی، ایک ایک لنک کی فہرست کے لئے کام کی تلاش ہے.
یہ اب بھی لکیری تلاش ہے، لیکن یہ + + ایک پوائنٹر کے طور پر کے طور پر آسان نہیں ہے
یا + + میں متغیر کی وجہ سے اب ہم نہیں اندازہ لگا سکتے ہیں
ان مراکز میں سے ہر ایک یاد میں کہاں ہیں.
ہم لفظی breadcrumbs کے پگڈنڈی کی پیروی ہے یا خاص طور پر
اشارہ، ایک نوڈ سے دوسرے حاصل کرنے کے لئے.
>> اب ہم ایک دوسرے کی کوشش کریں. انیتا، آپ یہاں واپس آنا چاہتی ہے؟
ہم آگے کیوں نہیں چلے جاتے اور سامعین سے ایک دوسرے شخص کو مختص ہے؟
Malloc تمہارا نام کیا ہے؟ >> ربیکا.
ربیکا. ربیکا سامعین سے malloced
اور اب وہ 55 تعداد میں ذخیرہ کرنے کا ہے.
اور ہاتھ میں مقصد ہے انیتا داخل کرنے کے لئے
اس کی مناسب جگہ میں منسلک فہرست میں ربیکا.
یہاں پر ایک لمحے کے لئے آو.
میں کچھ اس طرح کیا ہے.
میں نوڈ * کیا ہے. اور تمہارا نام کیا ہے پھر؟
ربیکا. >> ربیککا، ٹھیک ہے.
ربیکا malloc ((نوڈ) sizeof) ہو جاتا ہے.
جیسا کہ ہم نے ماضی میں طلباء اور whatnot کی طرح چیزوں کو مختص کیا ہے،
ہم نوڈ کے سائز کی ضرورت ہے، تو اب ربیکا
ہے جو طرف اشارہ ہے؟
ربیکا اس کے اندر دو شعبوں، جن میں سے ایک 55 ہے ہے.
چلو کہ کیا کرنا ہے، ربیکا> 55 =
لیکن پھر ربیکا> اس کے ہاتھ کو اگلے چاہئے رکھا جائے پسند، کون جانتا ہے کہ اس قسم کی ہے؟
یہ کچھ ردی کی ٹوکری کی قدر کی طرف اشارہ ہے، تو کیوں اچھا اقدام کے لئے نہیں
کم سے کم ہم یہ کرتے ہیں تا کہ بائيں ہاتھ اب اس کی طرف ہے.
اب یہاں سے انیتا، اسے لے لو.
تم نے ربیکا ہے مختص کیا گیا ہے.
آگے بڑھو اور جہاں ہم ربیکا رکھنا چاہئے تلاش.
اچھا، بہت اچھا.
ٹھیک ہے، اچھا، اور اب ہم آپ کو سمت تھوڑا سا کو فراہم کرنے کے لئے کی ضرورت ہے،
لہذا آپ کو ایری پہنچ چکے ہیں.
ان کے بائیں ہاتھ خالی ہے، لیکن ربیکا واضح طور پر حق ہے،
تو ہم اس منسلک فہرست کو تبدیل کرنے کے لئے کس طرح کر سکتا ہوں
کے لئے مناسب جگہ میں ربیکا شامل کرنے کے لئے ہے؟
اگر آپ کو ضرورت کے مطابق بھر میں لوگوں کے بائیں ہاتھ لفظی منتقل کر سکتے ہیں،
ہم اس مسئلے کو اس طرح سے ٹھیک کر دونگا.
ٹھیک ہے اچھا، اور اس دوران، ربیکا کے بائیں ہاتھ اب اس کی طرف کی طرف سے ہے.
>> یہ بہت آسان تھا.
چلو کوشش کرتے ہیں آونٹن we're تقریبا ہو چکا ہے، 20.
ٹھیک ہے، پر آئے.
20 ہے مختص کر دیا گیا ہے، تو ہم آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور پھر یہاں کہنا
ہم صرف نوڈ * سعد نے کیا ہے.
ہم malloc ہے (sizeof (نوڈ)).
پھر ہم اسی عین مطابق نحو کے طور پر ہم نے 20 کے لئے پہلے کیا کرتے ہیں،
اور میں اگلے = نل کرتے ہیں، اور اب یہ انیتا پر منحصر ہے.
آپ کو منسلک فہرست میں داخل، اگر تم نے وہ بالکل وہی کردار ادا کر سکتا ہے.
ایگزیکیوٹ کریں.
ٹھیک ہے، اچھا ہے.
اب احتیاط سے لگتا ہے کہ قبل اس کے کہ آپ نے بائیں ہاتھ کے ارد گرد منتقل شروع.
تم نے اب تک آج سب سے زیادہ عجیب کردار ہے.
جس کے ہاتھ میں سب سے پہلے منتقل کیا جانا چاہئے؟
ٹھیک ہے، انتظار کرو، میں کچھ نہیں سن رہا ہوں.
اگر کچھ لوگ ایک عجیب صورتحال کو حل کرنے میں مدد شائستگی سے کرنا چاہتے ہیں.
کس بائیں ہاتھ کو پہلے شاید اپ ڈیٹ کیا جانا چاہئے؟ جی ہاں.
[Student کی] سعد.
ٹھیک ہے، سعد، کیوں، اگرچہ؟
[اشراوی طالب علم کے جواب]
اچھا ہے، کیونکہ اگر ہم منتقل تمہارا نام کیا ہے؟ >> مارشل.
مارشل، اگر ہم نے اس کا ہاتھ سب سے پہلے نیچے منتقل کرنے کے لئے، شہوت انگیز null
اب ہم لفظی اس فہرست میں چار افراد کو یتیم
کیونکہ وہ صرف بات کی طرف اشارہ کرتے ہوئے میں Ramon اور بائیں سب میں تھا،
تاکہ پوائنٹر پہلے اپ ڈیٹ کرنے کے خراب تھا.
چلو کہ کالعدم.
اچھا ہے، اور اب آگے بڑھیں اور Ramon میں مناسب بائیں کی طرف اشارہ کرتے ہوئے ہاتھ میں منتقل.
یہ ایک چھوٹا سا بے کار محسوس ہوتا ہے.
اب دو لوگوں کی Ramon طرف اشارہ ہے، لیکن یہ اچھا ہے
کیونکہ اب اور ہم کس طرح کی فہرست کو اپ ڈیٹ کرتے ہیں؟
کیا دوسری طرف منتقل ہے؟
بہت اچھا، اب ہم کسی بھی میموری کھو دیا ہے؟
نہیں، بہت اچھا، دیکھو، اگر ہم نے یہ ایک بار نہیں توڑ سکتے.
>> ایک آخری بار Mallocing نمبر 5.
پیٹھ میں تمام طرح، نیچے آو.
یہ بہت دلچسپ ہے.
[تعریف]
آپ کا نام کیا >> رون ہے؟
رون، ٹھیک ہے، آپ کو نمبر 5 کے طور پر malloced کر رہے ہیں.
ہم صرف کوڈ کو پھانسی کیا ہے کہ تقریبا ان جیسی ہے
صرف ایک مختلف نام کے ساتھ.
بہترین.
اب، انیتا، خوش قسمتی کی فہرست میں نمبر 5 اب داخل ہے.
اچھا ہے، اور؟
بہت اچھا، تو یہ واقعی میں تین کل مقدمات کی تیسری ہے.
ہم سب سے پہلے آخر میں کسی تھا، ربیکا.
پھر ہم درمیان میں کسی کا بھی تھا.
اب ہم شروع میں، اور اس مثال میں کوئی ہے،
اب ہم پہلی بار کے لئے لوکاس اپ ڈیٹ تھا
کیونکہ فہرست میں پہلا عنصر اب ایک نیا نوڈ میں اشارہ ہے،
جو کے نتیجے میں، نوڈ 9 نمبر پر اشارہ کر رہا ہے.
>> یہ ایک انتہائی عجیب مظاہرہ تھا، مجھے یقین ہے،
تو ان لوگوں کے لئے ایک تعریف کے بڑے دور اگر تم کر سکتے تھے.
اچھی طرح سے کیا ہے.
وہ سب ہے. آپ ایک چھوٹی سی میموری کے طور پر کاغذ کے ٹکڑوں پر رکھ سکتے ہیں.
یہ پتہ چلا ہے کہ کوڈ میں یہ کر رہے
صرف ہاتھوں کو منتقل کے طور پر بہت ہی آسان نہیں ہے
اور مختلف چیزوں کو اشارہ کی طرف اشارہ کرتے ہوئے.
لیکن احساس ہے کہ جب تم میں سے کسی ایک کو اس جیسی کسی چیز کو لاگو کرنے کے لئے وقت آتا ہے
ایک لنک کی فہرست یا اس کا ایک مختلف اگر آپ واقعی پر توجہ مرکوز
ان بنیادی اصولوں، کاٹنے سائز کے مسائل میں سمجھ ہے،
احساس یہ اس کے ہاتھ یا اس ہاتھ ہے، اس کا کیا دوسری صورت میں کافی پیچیدہ پروگرام ہے
اصل میں، کافی آسان اس طرح عمارت کے بلاکس کو کم کیا جا سکتا ہے.
>> چلو ایک سے زیادہ بہتر سمت میں چیزوں کو اب بھی لے.
اب ہم منسلک فہرست کے تصور ہے.
ہم نے بھی واپس تجویز وہاں دوگنا منسلک کی فہرست ہے، شکریہ
جو تقریبا ایک ہی لگ رہا ہے، لیکن اب ہم struct کے اندر دو اشارہ ہے
ایک کی بجائے، اور ہم ان اشارہ پچھلے اور اگلے شاید کہہ سکتے ہیں
یا بائیں یا دائیں، لیکن ہم حقیقت میں، ان میں سے دو کی ضرورت ہے.
کوڈ تھوڑا شامل ہو جائے گی.
انیتا یہاں فورم پر زیادہ کام کرنا ہوتا ہے.
لیکن ہم ساخت اس طرح کی بات کو یقینی طور پر عملدرآمد کر سکتے ہیں.
وقت چلانے کے حوالے سے، اگرچہ، رننگ ٹائم کیا ہو گا
ایک لنک کی فہرست میں ایک بڑی تعداد ن کو تلاش کرنے کے لئے انیتا کے لئے؟
ن ابھی تک بڑی O، تو اس کا کوئی لکیری تلاش سے بہتر ہے.
ہم بائنری تلاش نہیں، لیکن کر سکتے ہیں، ایک بار پھر.
اس صورت میں کیوں تھا؟ آپ کے ارد گرد کود نہیں کر سکتے ہیں.
اگرچہ ہم ظاہر مرحلے پر تمام انسانوں کو دیکھ،
اور انیتا نے eyeballed سکتا ہے اور کہا، "فہرست کے درمیان میں ہے،"
کہ وہ پتہ نہیں ہے اگر وہ کمپیوٹر پروگرام تھے
کیونکہ صرف ایک ہی چیز انہوں نے جائزہ کے آغاز پر سٹکنی پر
لوکاس، جو پہلی پوائنٹر تھا تھا.
وہ ان کے لنکس کی پیروی کرنے کے ضروری ہوگا،
اپنے راستے میں گنتی تک وہ تقریبا وسط مل گیا،
اور پھر بھی، وہ جب وہ وسط تک پہنچ جاننا نہیں
جب تک وہ آخر تک تمام راستہ جاتا ہے اعداد و شمار کتنے ہیں،
backtracks تو، کہ اور بھی مشکل ہو گا جب تک آپ تھا
کسی قسم کی دوگنا منسلک فہرست.
>> آج کچھ مسائل کو حل کرنے، لیکن دوسروں کو متعارف کرانے.
ایک مختلف ڈیٹا مکمل طور پر ساخت کے بارے میں کیا خیال ہے؟
یہ Mather ہاؤس میں ٹرے کے ایک تصویر ہے،
اور اس صورت میں، ہم نے ایک آنکڑا ڈھانچہ ہم بھی کی قسم پہلے ہی کیا گیا ہے کے بارے میں بات کر ہے.
ہم نے میموری کے تناظر میں اسٹیک کے بارے میں بات کی،
اور اس طرح کی جان بوجھ کر نام ہے کیونکہ میموری کی شرائط میں ایک اسٹیک
مؤثر طریقے سے ایک آنکڑا ڈھانچہ ہے کہ زیادہ سے زیادہ اس کے سب سے اوپر پر پرتوں سامان ہے ہے.
لیکن ایک اسٹیک کے بارے میں دلچسپ بات ہے، جیسا کہ حقیقت میں معاملہ ہے،
یہ ہے کہ اس کی ایک خاص قسم کی آنکڑا ڈھانچہ ہے.
یہ ایک آنکڑا ڈھانچہ ہے جس کے تحت پہلے عنصر
آخری عنصر ہے.
اگر آپ پہلے اسٹیک پر ڈال دیا جائے گا ٹرے ہیں،
آپ بدقسمتی سے گزشتہ اسٹیک پر لیا جائے ٹرے بننے جا رہے ہیں،
اور یہ کہ ایک اچھی بات ضروری نہیں ہے.
کے برعکس، آپ کے ارد گرد دوسرے طریقے سے اس کے بارے میں سوچ سکتے ہیں،
میں گزشتہ پہلی سے باہر ہے.
>> اب، کسی بھی منظرنامے جہاں ایک اسٹیک رکھنے میں کوئی اعتراض آتے ہیں
آنکڑا ڈھانچہ ہے جہاں آپ اس خاصیت ہے
، اصل میں میں پہلے آخری مجبور ہے؟
کہ ایک اچھی بات ہے؟ کہ ایک بری بات ہے؟
یہ یقینی طور پر ایک بری چیز ہے اگر ٹرے تھے نہیں جیسی
اور وہ سب خاص مختلف رنگوں یا whatnot تھے،
اور رنگ آپ چاہتے ہیں کے نیچے دیے گئے تمام طریقہ ہے.
بالکل، آپ کہ بڑی کوشش کے بغیر حاصل نہیں کر سکتے ہیں.
آپ کو اوپر سے شروع کرنے اور اپنے راستے کام ہے.
اسی طرح، اگر آپ ان پرستار لڑکوں میں سے ایک تھے
جو ایک موبائل اور لائنوں کو حاصل کرنے کی کوشش کر رہے تمام رات انتظار
اس طرح ایک جگہ میں؟
یہ اچھا نہیں ہو گا اگر ایپل اسٹور
ایک اسٹیک آنکڑا ڈھانچہ تھے؟
Yay؟ بلکہ؟
یہ گزشتہ ممکنہ وقت میں صرف لوگوں کے لیے جو ظاہر اچھا ہے
اور پھر دور قطار plucked ہو.
اور حقیقت یہ ہے کہ میں تو مائل تھا حقیقت میں قطار کہنا
ہم کیا فون آنکڑا ڈھانچہ اس طرح کی ضرورت ہے جن کے ساتھ اصل میں یکساں ہے،
حقیقت میں ایک ہے جہاں کے لئے کوئی بات،
اور آپ سب سے پہلے میں ایک سب سے پہلے باہر کرنا چاہتے ہیں
صرف اس صورت میں جب انسانی جانبداری کی خاطر کے لئے.
ہم کہ ایک قطار آنکڑا ڈھانچہ عام طور پر فون کرتا ہوں.
>> یہ پتہ چلا ہے منسلک کی فہرست کے علاوہ، ہم یہ وہی بنیادی خیالات کا استعمال کرتے ہوئے شروع کر سکتے ہیں
اور مسائل کے حل کی نئی اور مختلف اقسام پیدا کر شروع کرتے ہیں.
مثال کے طور پر، ہم ایک اسٹیک کے معاملے میں ایک اسٹیک کی نمائندگی کر سکتے ہیں
اس طرح ایک آنکڑا ڈھانچہ کا استعمال کرتے ہوئے، میں تجویز کرے گی.
اس صورت میں، میں نے ایک struct کا اعلان کیا ہے، اور میں نے کہا کہ اس ڈھانچے کے اندر ہے
اعداد کی ایک صف اور پھر نامی ایک متغیر سائز ہے،
اور میں اس بات کو ایک اسٹیک کو فون کرنے جا رہا ہوں.
اب، یہ اصل میں کیوں کام نہیں کرتا؟
ایک اسٹیک کے معاملے میں، میں ایک صف کے طور پر سکرین پر یہ موثر انداز میں اپنی طرف متوجہ کر سکتے ہیں.
میرا اسٹیک ہے. وہ میرے اعداد و شمار ہیں.
اور ہم نے ان کو اس کے طور پر اپنی طرف متوجہ، یہ کریں گے یہ اس اس.
اور پھر میں کسی اور ڈیٹا رکن ہے،
جو سائز کہا جاتا ہے، لہذا اس کے سائز ہے، اور یہ تعداد ہے،
اور مجموعی طور پر، پوری یہاں رکن ایک اسٹیک ساخت کی نمائندگی کرتا ہے.
اب، پہلے سے طے شدہ کی طرف سے، سائز شاید 0 initialized ہے،
اور اعداد کی صف کے اندر ابتدائی طور پر ہے
جب میں پہلی بار ایک صف مختص ہے؟
ردی کی ٹوکری میں. کون جانتا ہے؟ اور یہ اصل میں کوئی فرق نہیں پڑتا.
اس سے کوئی فرق نہیں ہے اگر یہ 1، 2، 3، 4، 5 ہے، مکمل طور پر تصادفی
وجہ سے اپنی ساخت میں برا ذخیرہ قسمت کی طرف سے جب تک کہ میں جانتا ہوں کہ اسٹیک کا سائز
0 ہے، تو صف میں عناصر میں سے کسی بھی پروگرام میں جانتے ہیں، نہیں لگ رہی ہو.
اس سے کوئی فرق نہیں ہے وہاں کیا ہے.
ان کی طرف نہ دیکھو، 0 سائز کے مطلب ہو گا.
>> لیکن اب لگتا ہے میں آگے بڑھیں اور اسٹیک میں کچھ داخل ہے.
میں 5 تعداد کو شامل کرنے کے لئے چاہتے ہیں، تو میں 5 نمبر یہاں ڈال،
اور پھر کیا میں نیچے یہاں ڈال دیا؟
اب میں نیچے اصل میں 1 سائز کے لئے ڈال دیں گے،
اور اب اسٹیک 1 سائز کی ہے.
کیا ہوگا اگر میں آگے بڑھیں اور نمبر داخل کریں، چلو، کہ، اگلے 7؟
یہ پھر 2 اپ ڈیٹ کیا جاتا اور پھر ہم 9 کروں گا،
اور پھر یہ 3 سے اپ ڈیٹ کیا جاتا ہے.
لیکن اس اسٹیک کے دلچسپ خصوصیت یہ ہے کہ
میں عنصر جو اگر میں پاپ کرنا چاہتے ہیں کو دور کرنے والا ہوں
اسٹیک سے دور کچھ تو بات ہے؟
9 سب سے پہلے جانے کی بات ہو جائے گی.
تصویر اگر میں اسٹیک دور ایک عنصر پاپ کرنا چاہتے ہیں کس طرح تبدیل کرنا چاہئے،
Mather میں ایک ٹرے کو پسند ہے؟
جی ہاں، >> 2 [طالب علم کو] سائز سیٹ کریں.
بالکل، یہ ہے کہ یہ سب مجھے کیا کرنا 2 سائز مقرر کیا گیا ہے، اور میں صف کے ساتھ کیا کیا ہے؟
میں کچھ بھی کرنے کی ضرورت نہیں ہے.
میں صرف، گدا، وہاں ایک 0 یا -1 یا نشاندہی کچھ ڈال سکتے ہیں
کہ اس ایک legit قدر ہے نہیں، لیکن کوئی فرق نہیں پڑتا کیونکہ
میں صف خود کو کتنی دیر تک ہے سے باہر ریکارڈ کر سکتے ہیں
تا کہ میں جانتا ہوں کہ صرف اس صف میں سب سے پہلے دو عناصر پر نظر آتے ہیں.
اب، اگر میں اور 8 تعداد کو اس صف میں شامل کریں، تصویر اگلے کس طرح تبدیل کرتا ہے؟
یہ 8 ہو جاتا ہے، اور اس کے 3 ہو جاتا ہے.
میں نے کچھ کونے کونے یہاں کاٹنے رہا ہوں.
اب ہم 5، 7، 8، ہے اور ہم 3 سائز واپس آ گئے ہیں.
اس پر عملدرآمد بہت آسان ہے،
لیکن جب ہم اس ڈیزائن کے فیصلے پر پچھتاوا جا رہے ہیں؟
چیزیں بہت، بہت غلط جانے کے لئے جب شروع کرتے ہیں؟ جی ہاں.
[اشراوی طالب علم کے جواب]
جب آپ واپس جانا ہے اور سب سے پہلے جس عنصر سے تم اندر ڈال حاصل کرنا چاہتے ہیں
>> یہ یہاں بدل جاتا ہے اگرچہ اسٹیک ہڈ کے نیچے ایک صف ہے،
ان اعداد و شمار کے ڈھانچے ہم نے کے بارے میں بات کرنا شروع کر دیا ہے بھی عام طور پر کے طور پر کر رہے ہیں پر جانا جاتا
خلاصہ ڈیٹا ڈھانچے جس کے تحت کہ وہ کس طرح عملدرآمد کر رہے ہیں
مکمل طور پر نقطہ کے علاوہ ہے.
ایک اسٹیک طرح ایک آنکڑا ڈھانچہ کی حمایت شامل کرنے کے لئے سمجھا جاتا ہے
دھکا، جو اسٹیک پر ایک ٹرے pushes کی طرح آپریشن،
اور پاپ، جو اسٹیک سے ایک عنصر کو ہٹا دیتا ہے، اور یہ کہ یہ ہے.
اگر آپ کو کسی اور کا کوڈ ہے جو پہلے ہی عملدرآمد ڈاؤن لوڈ، اتارنا
یہ بات ایک اسٹیک قرار دیا، اس شخص کو لکھا ہے
آپ کے لئے صرف دو ہی کام کرتا ہے، اور پاپ، جن کا واحد مقصد زندگی میں دھکا
بالکل ایسا ہو جائے گی.
آپ کو یا اس کے یا اس کے جو کہ اس پروگرام کو لاگو
کا فیصلہ مکمل طور پر کس طرح لاگو کرنے کے لئے ایک ہوتا
آگے بڑھانے اور ہڈ کے نیچے پوپ آؤٹ کرنے کے semantics
یا آگے بڑھانے اور پوپ آؤٹ کی فعالیت.
اور میں نے یہاں کسی حد تک shortsighted فیصلہ کر دیا ہے
اس سادہ آنکڑا ڈھانچہ کیوں کے ساتھ میری اسٹیک کو لاگو کرنے کی طرف سے؟
یہ آنکڑا ڈھانچہ ٹوٹتا کب؟
کس وقت میں نے ایک خرابی جب صارف مطالبہ دھکا مثال کے طور پر واپس آ، ہے؟
[Student کی] اگر کوئی زیادہ جگہ ہے.
بالکل، اگر وہاں کوئی جگہ نہیں ہے، اگر میں نے صلاحیت سے تجاوز کر گئی ہے،
جس میں تمام بڑے حروف ہے کیونکہ اس سے پتہ چلتا ہے کہ یہ عالمی سطح پر مسلسل کی کسی قسم ہے.
ٹھیک ہے، تو میں صرف ہیں جا رہا ہوں، کا کہنا ہے کہ "معاف کیجئے گا، میں کسی دوسرے قدر دھکا نہیں کر سکتے ہیں
اسٹیک پر، "Mather میں زیادہ پسند کرتے ہیں.
>> کچھ وقت انہوں نے اس چھوٹی سی کابینہ کے سب سے اوپر حصہ کو نشانہ بنانے جا رہے ہیں.
اسٹیک میں کوئی جگہ یا صلاحیت ہے، جو نقطہ کچھ قسم کی غلطی کی ہے.
وہ عنصر کہیں اور رکھ ہے، ٹرے کہیں اور،
یا کہیں.
اب ہم ایک قطار کے ساتھ یہ ایک مختلف تھوڑا عمل درآمد کر سکتے ہیں.
ایک قطار ہے کہ ہڈ کے نیچے، اسے لاگو کیا جا سکتا ہے میں تھوڑا مختلف ہے
ایک صف کے طور پر، لیکن کیوں، اس معاملے میں، میں تجویز کر رہا ہوں
بھی سر فہرست کے سربراہ کی نمائندگی عنصر ہے،
فہرست کے سائز کے علاوہ میں سامنے، ایپل اسٹور میں لائن میں پہلے شخص ہیں؟
میں ڈیٹا کا ایک اضافی ٹکڑے یہاں کیوں ضرورت ہے؟
کیا تعداد ہے واپس سوچو
اگر میں نے تیار کیا ہے اس کے طور پر مندرجہ ذیل ہے.
اگر یہ اب بجائے اسٹیک ایک قطار ہے،
ہونے کے صرف ایپل اسٹور قطار کی طرح فرق منصفانہ ہے.
فہرست کے آغاز میں لائن میں پہلے شخص، اس معاملے میں نمبر 5،
وہ اسٹور میں ہم سب سے پہلے ہو رہا ہے.
کہ کیا دو
مان لیں کہ اس وقت میں اس وقت میری قطار کی حالت ہے، اور اب ایپل اسٹور
کھلتا ہے اور پہلے شخص، 5 نمبر، اسٹور میں رہنمائی میں کام کرتا ہے.
میں تصویر کیسے تبدیل کروں کہ میں پہلا شخص ہے DE قطار میں
لائن کے سامنے؟
کیا ہے وہ >> [Student کی]. قطار تبدیل کریں
سر تبدیل کریں، تو 5 غائب.
حقیقت میں، یہ اسی طرح سب سے بہتر لیکن کس طرح ہے کہ یہ کرنے کی؟
حقیقت میں، ایسا لگتا ہے جیسے اس آدمی غائب.
کیا ایک حقیقی سٹور میں نمبر 7 کیا کریں گے؟
انہوں نے ایک بڑا قدم آگے لے جائے گا.
>> لیکن کیا ہم تعریف کرتے ہیں جب یہ arrays پر آتا ہے آئے
اور ارد گرد چیزوں منتقل؟
یہ اپنے وقت کی بربادی کی طرح ہے، ہے نا؟
تم اتنے مقعد کے طور پر پہلا شخص کیوں ہے
جسمانی طور پر میموری کا حصہ کے آغاز میں لائن کے آغاز میں؟
یہ مکمل طور پر غیر ضروری ہے. کیوں؟
کیا صرف میں بجائے یاد سکتا ہے >> [اشراوی طالب علم کے جواب]
بالکل، میں اس اضافی ڈیٹا کی رکن سر کے ساتھ یاد کر سکتے ہیں
کہ اب فہرست کے سربراہ اب نہیں 0 ہے، جو اس ایک لمحے پہلے تھا.
اب یہ اصل میں نمبر 1 ہے. اس طرح، میں ایک ہلکا سا اصلاح کے ملتا ہے.
صرف اس لئے کہ میں لائن کے آغاز میں ہے ایپل اسٹور میں لائن سے کوئی ڈی قطار میں
کا مطلب یہ نہیں ہے ہر کسی کو منتقل، جس میں واپسی ایک لکیری آپریشن ہے.
میں مسلسل وقت کی بجائے صرف بتا سکتے ہیں
اور پھر بہت تیزی سے جواب حاصل کریں.
لیکن قیمت میں دے رہا ہوں ہے جو کہ اضافی کارکردگی کو حاصل کرنے کے لئے
ہے اور سب کو تبدیل کرنے نہیں؟
جی ہاں >> [اشراوی طالب علم کے جواب]
زیادہ سے زیادہ لوگوں کو شامل کر سکتے ہیں، ٹھیک ہے، اس مسئلہ عمودی ہے
حقیقت یہ ہے کہ ہم لوگوں کے ارد گرد منتقل کر رہے ہیں نہیں.
یہ اب بھی ایک صف ہے یا نہیں، تو ہم سب کو منتقل یا نہیں
اوہ، میں دیکھ رہا ہوں آپ کا کیا مطلب ہے، ٹھیک ہے.
اصل میں، میں نے جو تم کہہ رہے ہو کہ یہ تقریبا جیسے رہے ہیں کے ساتھ اتفاق کرتا ہوں
اب ہم اس صف کے آغاز کو اور زیادہ کرنے کے لئے استعمال کر رہے ہیں کبھی نہیں
کیونکہ اگر میں 5 نکال دیں، تو میں 7 خارج کر دیں.
لیکن میں صرف لوگوں کو حق پر ڈال دیا ہے.
>> ایسا لگتا ہے جیسے میں خلا برباد کر رہا ہوں، اور آخر میں میری قطار میں بالکل کچھ بھی نہیں میں disintegrates،
تو ہم لوگوں wraparound کر سکتے ہیں،
اور ہم سرکلر ساخت کے کسی قسم کے طور پر اس صف واقعی لگتا ہے کہ کر سکتے ہیں،
لیکن ہم C میں آپریٹر کیا استعمال کرتے ہیں wraparound اس طرح کرنا ہے؟
[اشراوی طالب علم کے جواب] >> modulo آپریٹر.
یہ ایک چھوٹا سا پریشان ہو خیال کرنا کہ آپ کس طرح wraparound کرتے ہیں،
لیکن ہم نے اسے ایسا کرتے ہیں، اور ہم لائن کے سامنے کیا کرتے تھے لوگوں لگانے شروع کر سکتا ہے کر سکتے ہیں،
لیکن ہم اس سر متغیر ہے جو لائن کے اصل سر اصل میں ہے کے ساتھ یاد کرتا ہوں.
کیا ہوگا اگر، بجائے، بالآخر ہمارا مقصد ہے، اگرچہ،
تعداد پر نظر تھا، جیسا کہ ہم انیتا کے ساتھ اسٹیج پر یہاں آیا،
لیکن ہم سچ میں ان تمام جہانوں کا سب سے بہتر کرنا چاہتے ہیں؟
ہم اور نفاست سے صف کی اجازت دیتا ہے کی ضرورت ہے
کیونکہ ہم کو متحرک طور پر آنکڑا ڈھانچہ میں اضافہ کرنے کی صلاحیت کی ضرورت ہے.
لیکن ہم کچھ سہارا لینا کہ ہم نے کہا ہے نہیں کرنا چاہتا
پہلا لیکچر میں ایک بہترین طریقہ نہیں تھا،
لکیری تلاش کی ہے.
یہ پتہ چلا ہے کہ آپ اصل میں، حاصل کر سکتے ہیں
یا کم از کم مسلسل وقت کے قریب ہے، جس، انیتا کی طرح کسی
اگر وہ اس کی آنکڑا ڈھانچہ تشکیل منسلک فہرست نہیں،
اسٹیک نہیں، اس کے لئے ایک قطار نہیں، اصل میں، کر سکتے ہیں،
آنکڑا ڈھانچہ ہے کہ اسے چیزیں تلاش کرنے کی اجازت دیتا ہے کے ساتھ آئے،
بھی الفاظ، تعداد نہ صرف ہمیں کیا میں مسلسل وقت فون کرتا ہوں.
>> اور حقیقت میں، اس کلاس میں psets میں سے ایک مستقبل دیکھ تقریبا ہمیشہ ہی ہے
ایک spellchecker کا ایک عمل درآمد جس کے تحت،
ہم آپ کو دوبارہ دے بعض 150،000 انگریزی الفاظ اور مقصد ہے
میموری میں ان لوڈ اور تیزی سے فارم کے سوالات کا جواب دینے کے قابل ہو جائے
اس لفظ کے ہجے درست ہے؟
اور اگر آپ تمام 150،000 الفاظ کے ذریعے اس کا جواب iterate تھا سچ میں دودھ گی.
لیکن حقیقت میں، ہم دیکھتے ہیں، کہ ہم یہ بہت، بہت جلد وقت میں کر سکتے ہیں کریں گے.
اور اس پر عملدرآمد سے ملاقات کی ایک ہیش میز کچھ شامل کیا جا رہا ہے،
اور اگرچہ پہلی نظر میں اس ملاقات کی ایک ہیش میز چیز جا رہا ہے
ہمیں حاصل کرنے کے لئے ان سپر ریپڈ رسپانس اوقات
یہ پتہ چلا ہے کہ حقیقت میں ایک مسئلہ ہے.
جب یہ پھر کہا بات کو لاگو کرنے کے لئے وقت آئے گا، میں اسے پھر سے کر رہا ہوں.
میں یہاں صرف ایک ہوں.
جب آئے اس بات کو لاگو کرنے کے لئے وقت نے ایک ہیش میز،
ہم کو کوئی فیصلہ کرنے کی ضرورت کے لئے جا رہے ہیں.
یہ چیز اصل میں کتنا بڑا ہونا چاہئے؟
اور جب ہم اس ہیش ٹیبل میں داخل تعداد شروع،
ہم انہیں اس طرح میں جمع کس طرح جا رہے ہیں
ہے کہ ہم انہیں واپس لانے کے طور پر فوری طور پر کے طور پر ہم ان میں ملا سکتے ہیں؟
لیکن ہم سے بہت پہلے سے نظر آئے گا کہ اس سوال کا
جب کلاس میں سب سالگرہ ہے بہت germane گا.
یہ پتہ چلا ہے کہ اس کمرے میں، ہم چند سو لوگوں کو ہے،
مشکلات تاکہ ہم دونوں شاید اسی سالگرہ ہے بہت اعلی ہے.
اگر ہم اس کمرے میں صرف 40 تھے؟
اسی سالگرہ کے دو لوگوں کی مشکلات کیا ہیں؟
[طلباء] 50 فیصد سے زائد ہے.
جی ہاں، 50 فیصد سے زائد ہے. اصل میں، میں نے ایک چارٹ بھی لے کر آئے.
یہ اور بدل جاتا ہے یہ سچ ہے صرف ایک چوری چھپے پیش منظر
اگر صرف اس کمرے میں ہم 58 ہے، ہم میں سے 2 کا امکان ہے
اسی سالگرہ کے انتہائی اعلی ہے، تقریبا 100 فیصد،
اور یہ کہ بدھ کو ہمارے لئے نقصان پہنچنے کا مکمل جھوبڈ کی وجہ سے ہو رہا ہے.
>> کے ساتھ اس نے کہا، یہاں ملتوی. ہم آپ کو بدھ کو نظر آئے گا.
[تعریف]
[CS50.TV]