>> [موسیقی بجانے]
>> ڈوگ لایڈ: ٹھیک ہے، میں اتنا کورس میں اس نقطہ،
ہم سی کی بنیادی باتیں کی ایک بہت احاطہ کرتا ہے ہم، متغیر، arrays کے بارے میں ایک بہت کچھ جانتے ہیں
اشارہ، کہ تمام اچھی چیزیں.
وہ تمام قسم کی تعمیر کر رہے ہیں میں، بنیادی طور پر دیکھنے کے لئے
لیکن ہم حق، زیادہ کر سکتے ہیں؟
ہم چیزوں کو اکٹھا کر سکتے ہیں ایک دوسرے کے ساتھ دلچسپ طریقوں میں.
>> اور اس طرح شروع کرتے ہیں، یہ کرتے ہیں سی ہمیں دیتا ہے کیا سے باہر شاخ،
اور ہمارے اپنے ڈیٹا بنانے کے لئے شروع ان کی عمارت کے استعمال کرتے ہوئے ڈھانچے
ایک دوسرے کے ساتھ بلاکس کچھ کرنا مفید، واقعی قابل قدر.
ہم ایسا کر سکتے ہیں کا ایک طریقہ ہے مجموعہ کے بارے میں بات کرنے کے لئے.
تو اب تک ہم نے اعداد و شمار کی ایک قسم پڑا ہے مجموعے نمائندگی کرنے کے لئے ڈھانچہ
کی اقدار، اسی طرح کی اقدار کو پسند.
یہ ایک صف ہو گی.
ہم integers کے مجموعے ہیں، یا اسی طرح حروف اور کے مجموعے.
>> تعمیرات بھی اعداد و شمار کی طرح ہیں معلومات جمع کرنے کے لئے ڈھانچہ،
لیکن یہ اقدار طرح جمع کرنے کے لئے نہیں ہے.
یہ عام طور پر مختلف اعداد و شمار اقسام کے آمیزے ایک ساتھ مل کر ایک باکس کے اندر.
لیکن یہ بذات خود نہیں ہے ایک دوسرے کے ساتھ چین کے لئے استعمال کیا جاتا ہے
یا ایک ساتھ اسی طرح مربوط ایک صف کی طرح اشیاء،.
arrays کے لئے عظیم ہیں عنصر کو نظر آتے ہیں، لیکن یاد
یہ بہت مشکل ہے کہ ایک صف میں شامل کرنے کے لئے،
ہم داخل کر رہے ہیں جب تک کہ اس صف کے آخر.
>> اور سب سے بہترین مثال کے طور پر میں نے اس کے لیے اندراج کی طرح ہے.
اگر آپ کو ہماری یاد تو ویڈیو اندراج کی طرح پر،
ایک بہت میں سے نہیں تھا اخراجات رکھنے میں ملوث
عناصر اٹھا، اور ان منتقل کرنے کے لئے کچھ فٹ ہونے کے لئے راستے سے باہر
آپ کے صف کے وسط میں.
Arrays بھی ایک دوسرے سے شکار مسئلہ، جس درڑھتا ہے.
ہم ایک صف کا اعلان کرتے ہیں، ہم اس پر ایک شاٹ حاصل.
ہم میں چاہتا ہوں، کا کہنا ہے کہ کرنے کے لئے حاصل یہ بہت سے عناصر.
100 ہو سکتا ہے، یہ شاید 1،000 ہو، یہ شاید
ایکس صارف کہ ایک بڑی تعداد ہے جہاں X ہو ایک فوری طور پر یا کمانڈ میں ہمیں دیا
لائن.
>> لیکن ہم صرف اس پر ایک شاٹ حاصل، ہم میں اصل میں، اس کے بعد اوہ کہنا نہیں ملتا
101 کی ضرورت ہے، یا میں ایکس کے علاوہ 20 کی ضرورت ہے.
بہت دیر ہو گئی، ہم نے پہلے ہی اعلان کر دیا ہے صف، اور ہم 101 یا حاصل کرنے کے لئے چاہتے ہیں تو X
کے علاوہ 20، ہم اعلان کرنا ہوگا ایک مکمل طور پر مختلف سرنی،
صف کے تمام عناصر کو کاپی زیادہ، اور پھر ہم کافی ہے.
اور ہم پھر سے غلط ہیں تو کیا، کیا ہم اصل میں 102، یا ایکس کے علاوہ 40 کی ضرورت ہے تو،
ہم ایک بار پھر یہ کرنا ہے.
تو وہ بہت انمی ہیں ہمارے اعداد و شمار نیا سائز کے لئے،
لیکن ہم ایک دوسرے کے ساتھ کچھ یکجا ہم نے پہلے ہی ہے کہ مبادیات میں
اشارہ اور ڈھانچے کے بارے میں سیکھا، خاص طور پر متحرک میموری استعمال
malloc کے ساتھ مختص کرنے، ہم ایک ساتھ مل کر ان ٹکڑوں ڈال کر سکتے ہیں
ایک نئے اعداد و شمار structure-- ایک بنانے کے لئے اکیلے ہم say-- سکتا منسلک فہرست
کہ ہمیں بڑھنے میں اجازت دیتا ہے اور اقدار کا ایک مجموعہ سکڑ
اور ہم کسی بھی ضائع شدہ جگہ نہیں پڑے گا.
>> تو ایک بار پھر، ہم نے اس خیال کہتے ہیں، اس تصور، ایک لنک کی فہرست.
خاص طور پر، اس ویڈیو میں ہم ہیں اکیلے منسلک فہرست کے بارے میں بات،
اور پھر ایک ویڈیو ہم بات کریں گے کے بارے میں دوگنا منسلک کی فہرست، جس میں
یہاں ایک موضوع پر صرف ایک تبدیلی ہے.
لیکن ایک اکیلے منسلک فہرست نوڈس پر مشتمل ہے،
نوڈس صرف ایک خلاصہ term-- ہونے اس میں بلا رہا ہوں صرف کچھ ہے
اس کی ایک قسم ہے ساخت، بنیادی طور پر، ہوں؟
صرف یہ ایک node-- اور اس کو فون کرنے جا نوڈ دو ارکان، یا دو شعبوں ہے.
یہ عام طور پر ایک کے اعداد و شمار، ہے عددی، ایک کردار فلوٹ،
یا کسی دوسرے اعداد و شمار کی قسم ہو سکتا ہے آپ کو ایک قسم def کے ساتھ بیان کیا ہے کہ.
اور اس پر ایک پوائنٹر پر مشتمل ہے اسی قسم کے دوسرے نوڈ.
>> تو ہم کے اندر دو چیزیں ہیں اس نوڈ، اعداد و شمار اور ایک پوائنٹر
دوسرے نوڈ.
اور آپ کو دیکھ کرنے کے لئے شروع تو اس، آپ اس کے بارے میں سوچ سکتے ہیں
مراکز کی ایک زنجیر کی طرح ایک دوسرے کے ساتھ جڑے ہوئے ہیں.
ہم سب سے پہلے نوڈ ہے، یہ اعداد و شمار، اور ایک پوائنٹر پر مشتمل ہے
پر مشتمل ہے جس میں دوسری نوڈ، کرنے کے لئے اعداد و شمار، اور تیسرے نوڈ پوائنٹر.
اور تو ہے کہ ہم اس کو ایک فون یہی وجہ ہے لنک کی فہرست، وہ دوسرے کے ساتھ منسلک رہے ہیں.
>> اس خصوصی کرتا ہے نوڈ ساخت کی طرح نظر آتے ہیں؟
ٹھیک ہے، تم پر اپنے ویڈیو سے یاد تو قسم def کے ساتھ، اپنی مرضی کے اقسام کی وضاحت،
ہم ایک structure-- وضاحت کر سکتے ہیں اور اس طرح ایک ساخت کی وضاحت ٹائپ.
struct کے sllist tyepdef، اور پھر میں ہوں منمانے یہاں لفظ قدر استعمال
واقعی کسی بھی ڈیٹا کی قسم اس بات کی نشاندہی کرنے کے لئے.
آپ کو ایک عددی یا فلوٹ پر منتقل کر سکتے ہیں تم جو چاہو کر سکتے ہیں.
یہ صرف تک محدود نہیں ہے integers کے، یا اس طرح کچھ.
تو قدر صرف ایک صوابدیدی ہے پھر ڈیٹا کی قسم، اور ایک پوائنٹر
اسی قسم کے دوسرے نوڈ.
>> اب، ایک چھوٹا سا پکڑنے ہے یہاں ایک ڈھانچہ کی وضاحت کے ساتھ
جب یہ ایک خود حوالہ ساخت ہے.
میں نے ایک عارضی ہوگا میرے ساخت کے لئے نام.
دن میں کے آخر میں واضح طور پر یہ بات کرنا چاہتے ہیں
SLL نوڈ، کہ بالآخر نیا ہے میری قسم تعریف کی حصہ کا نام،
لیکن میں SLL نوڈ استعمال نہیں کر سکتے اس کے وسط میں.
وجہ کیا جا رہا ہے، میں نہیں ہے ایک قسم کہا جاتا SLL نوڈ پیدا
میں یہاں یہ آخری نقطہ مارا جب تک.
اس نقطہ تک، میں ہوگا ایک اور طریقہ یہ اعداد و شمار کی قسم کے لئے رجوع کرنے کے لئے.
>> اور یہ ایک خود ہے حوالہ کے اعداد و شمار کی قسم.
یہ ایک ڈیٹا کی قسم ہے ایک ڈیٹا پر مشتمل ہے کہ ساخت،
اور ایک دوسرے کے لئے ایک پوائنٹر اسی قسم کی ساخت.
لہذا میں سے رجوع کرنے کے قابل ہو جائے کرنے کی ضرورت ہے یہ اعداد و شمار کی قسم میں کم از کم عارضی طور پر،
تو یہ ایک عارضی دے struct کے sllist کے نام
مجھے پھر میں نے ایک چاہتے ہیں کی اجازت دیتا ہے ایک اور struct sllist پوائنٹر،
ایک struct sllist سٹار، اور اس کے بعد میں تعریف مکمل کر لیا ہے کے بعد،
اب میں اس قسم کی ایک SLL نوڈ کال کر سکتے ہیں.
>> تم وہاں دیکھ یہی وجہ ہے کہ یہاں ایک عارضی نام،
لیکن یہاں ایک مستقل نام.
کبھی کبھی آپ کو دیکھ سکتے ہیں ساخت کی تعریف،
مثال کے طور پر، نہیں ہیں خود حوالہ، کہ
یہاں ایک specifier یہ نام نہیں ہے.
یہ صرف، typedef کے struct کے کہیں گے گھوبگھرالی منحنی خطوط وحدانی کھولنے اور پھر اس کی وضاحت.
تم تو struct کے خود ہے حوالہ، یہ ہے کے طور پر،
آپ کو ایک کی وضاحت کرنے کی ضرورت ہے عارضی قسم کا نام.
لیکن بالآخر، اب ہم نے یہ کیا ہے کہ،
ہم صرف کرنے کے لئے رجوع کر سکتے ہیں ان مراکز، ان یونٹوں،
مقاصد کے لئے SLL نوڈس کے طور پر اس ویڈیو کے باقی.
>> ٹھیک ہے، تو ہم کس طرح جانتے ہیں ایک لنک کی فہرست نوڈ بنانے کے.
ہم وضاحت کرنے کے لئے کس طرح جانتے ہیں ایک لنک کی فہرست نوڈ.
اب ہم شروع کرنے کے لئے جا رہے ہیں معلومات جمع کرنے کے لئے ان کا استعمال کرتے ہوئے،
آپریشن کے ایک جوڑے کی ہے ہم سمجھنے اور ساتھ مل کر کام کرنے کی ضرورت ہے.
ہم پیدا کرنے کے لئے کس طرح پتہ کرنے کی ضرورت ہے پتلی ہوا کے باہر ایک لنک کی فہرست.
کوئی فہرست پہلے سے ہی موجود ہے تو، ہم ایک شروع کرنے کے لئے چاہتے ہیں.
تو ہم قابل ہو جائے کرنے کی ضرورت ہے ایک لنک کی فہرست بنانے کے لئے،
ہم شاید تلاش کرنے کی ضرورت لنک کی فہرست کے ذریعے
ہم کے لئے تلاش کر رہے ہیں تلاش کرنے کے لئے ایک عنصر.
ہم داخل کرنے کے قابل ہونے کی ضرورت ہے فہرست میں نئی ​​چیزیں،
ہم ہماری فہرست میں اضافہ کرنے کے قابل بننا چاہتا ہوں.
اور اسی طرح، ہم قابل بننا چاہتا ہوں ہماری فہرست سے چیزوں کو حذف کرنا،
ہم ہماری فہرست چھوٹا کرنے کے قابل بننا چاہتا ہوں.
اور آخر میں ہماری پروگراموں، خاص طور پر
آپ کو ہم ہیں کہ یاد تو متحرک طور پر میموری مختص
عام طور پر ان فہرستوں کی تعمیر کے لئے، ہم اس کی میموری کی سب آزاد کرنا چاہتے ہیں
ہم اس کے ساتھ کام کیا کر رہے ہیں جب.
اور اس طرح ہم ایک حذف کرنے کے قابل ہونے کی ضرورت ہے ایک میں پورے منسلک فہرست جھپٹا ناکام.
تو کے ذریعے جانے ان کارروائیوں میں سے کچھ
اور ہم نے ان کو دیکھ سکتا ہے کہ کس طرح، خاص طور پر pseudocode کے کوڈ میں بات.
تو ہم نے ایک پیدا کرنے کے لئے چاہتے ہیں منسلک فہرست، تو شاید ہم
ایک تقریب کی وضاحت کرنا چاہتے ہیں اس پروٹوٹائپ کے ساتھ.
SLL نوڈ سٹار، تخلیق، اور میں گزر رہا ہوں ایک دلیل میں، کچھ صوابدیدی ڈیٹا
کچھ صوابدیدی ڈیٹا کی قسم کے، ایک بار پھر ٹائپ کریں.
لیکن میں اس تقریب چاہئے returning-- ہوں ایک اکیلے کرنے کے لئے، میرے لئے ایک پوائنٹر واپس
منسلک فہرست نوڈ.
ایک بار پھر، ہم بنانے کے لئے کوشش کر رہے ہیں پتلی ہوا کے باہر ایک لنک کی فہرست،
تو میں ایک پوائنٹر کی ضرورت میں کیا کر رہا ہوں جب کہ فہرست.
>> تو یہاں ملوث اقدامات کیا ہیں؟
ٹھیک ہے، میں سب سے پہلی چیز ہوں کیا جا رہا ہے کو متحرک طور پر
ایک نیا نوڈ کے لئے جگہ مختص.
ایک بار پھر، ہم پتلی سے باہر پیدا کر رہے ہیں ہوا، تو ہم اس کے لئے malloc جگہ کی ضرورت ہے.
اور ظاہر کی، فوری طور پر ہم malloc کے بعد،
ہم ہمیشہ اس بات کو یقینی بنانے کے لئے چیک ہماری پوائنٹر ہم واپس، شہوت انگیز null نہیں مل سکا.
ہم کوشش کریں کیونکہ اگر اور شہوت انگیز null پوائنٹر احترام،
ہم نے ایک شکار کرنے کے لئے جا رہے ہیں پر segfault اور ہم نہیں چاہتا کہ.
>> پھر ہم میدان میں بھرنے کے لئے چاہتے، ہم قیمت میدان ابتدا کرنا چاہتے ہیں
اور اگلے میدان میں ابتدا.
اور پھر ہم آخر میں اس کے to-- چاہتے ہم چاہتے ہیں indicates-- تقریب پروٹوٹائپ
ایک SLL نوڈ پوائنٹر واپس کرنے کے لئے.
تو کیا اس ضعف کی طرح نظر بنانے؟
ویسے، سب سے پہلے ہم کو متحرک کرنے کے لئے جا رہے ہیں ایک نئی SLL نوڈ کے لئے جگہ مختص،
تو ہم ہے کہ malloc-- ایک بصری نمائندگی
نوڈ کے ہم صرف پیدا.
اور ہمیں یقین ہے بنانے کے لئے چیک یہ اس صورت میں شہوت انگیز null نہیں ہے
تصویر نہیں پڑے گا یہ شہوت انگیز null تھا تو دکھایا،
ہم میموری سے باہر چلانے ہوتا تو ہم وہاں جانا اچھا ہو.
تو اب ہم سی مرحلے پر ہیں، نوڈس قیمت میدان ابتدا.
ویسے، اس تقریب کی بنیاد پر ، میں یہاں استعمال کر رہا ہوں کال
میں نے 6 میں منتقل کرنا چاہتے ہیں کی طرح لگتا ہے، تو میں نے قیمت میدان میں 6 گے.
اب، اگلے میدان میں ابتدا.
ٹھیک ہے، کیا میں وہاں کیا کرنے جا رہا ہوں، کچھ بھی ٹھیک، اگلے ہے،
اس فہرست میں صرف ایک ہی چیز ہے.
تو فہرست میں اگلے بات کیا ہے؟
>> یہ درست ہے، کچھ کی طرف اشارہ نہیں ہونا چاہئے.
کچھ بھی نہیں تو کیا ہے، اور وہاں ہے ہم اس کے بارے میں پتہ تصور nothing-- ہے
کچھ بھی نہیں اشارہ ہے؟
یہ ہو سکتا ہے ہم چاہتے ہیں ہونا چاہئے وہاں ایک شہوت انگیز null پوائنٹر ڈال کرنے کے لئے،
اور میں، شہوت انگیز null کی نمائندگی کریں گے ، کے طور پر صرف ایک سرخ باکس پوائنٹر
ہم مزید کوئی نہیں جا سکتا.
ہم بعد میں پر ایک چھوٹا سا نظر آئے گا کے طور پر، ہم آخر میں زنجیروں پڑے گا
تیر کے منسلک ایک ساتھ مل کر ان مراکز،
لیکن تم نے مارا جب سرخ باکس، کہ، شہوت انگیز null ہے
ہم مزید کوئی نہیں جا سکتا اس فہرست کے آخر میں ہے.
>> اور آخر میں، ہم صرف کرنا چاہتے ہیں اس نوڈ پوائنٹر واپس.
تو ہم نئے اسے فون کروں گا، اور نئے واپس آ جائیں گے
تو اس میں استعمال کیا جا سکتا جو کچھ بھی تقریب پیدا.
تو ہم وہاں جائیں، ہم نے ایک اکیلے پیدا کیا ہے پتلی ہوا کے باہر سے منسلک فہرست نوڈ،
اور اب ہم ساتھ مل کر کام کر سکتے ہیں کی ایک فہرست ہے.
>> اب، پہلے سے ہی ہم کا کہنا ہے کہ ایک بڑی چین ہے،
اور ہم اس میں کچھ تلاش کرنا چاہتے ہیں.
اور ہم جا رہا ہے کہ ایک تقریب چاہتے ہیں ، صحیح یا غلط واپس منحصر
ایک قدر اس فہرست میں موجود ہیں یا نہیں پر.
ایک تقریب پروٹوٹائپ، یا اس تقریب کے لئے اعلان،
this-- مل bool طرح نظر آتے ہیں، اور ہو سکتا ہے پھر ہم دو دلائل میں منتقل کرنا چاہتے ہیں.
>> سب سے پہلے، کرنے کے لئے ایک پوائنٹر ہے لنک کی فہرست کے پہلے عنصر.
یہ تمہیں اصل میں کچھ ہے ہمیشہ کا ٹریک رکھنے کے لئے چاہتے ہیں،
اور اصل میں کچھ ہو سکتا ہے آپ کو بھی ایک عالمی متغیر میں ڈال دیا.
آپ کو ایک فہرست بنانے کے بعد، ہمیشہ آپ کو،
بہت کے ٹریک رکھنا چاہتے ہیں فہرست کے پہلے عنصر.
آپ کو تمام دوسرے کی طرف رجوع کر سکتے ہیں اس طرح صرف سیریز کے بعد کی طرف سے عناصر،
اشارہ رکھنے کے لئے ہونے کے بغیر ہر ایک عنصر کو برقرار.
آپ کو صرف سب سے پہلے ٹریک رکھنے کے لئے کی ضرورت ہے ایک وہ سب کے سب ایک دوسرے کے ساتھ جکڑے رہے ہیں.
>> اور پھر دوسری بات یہ ہے ہم ایک بار پھر میں گزر رہے ہیں
منمانے some-- ہے جو ڈیٹا کی قسم ہم ہیں
وہاں کے لئے تلاش کے اندر ہے امید ہے کہ فہرست میں نوڈس میں سے ایک.
تو اقدامات کیا ہیں؟
ٹھیک ہے، ہم سب سے پہلی چیز ہے ہم ایک transversal پوائنٹر پیدا
فہرستوں سر کی طرف اشارہ.
ویسے، یہی وجہ ہے کہ، ہم نے پہلے ہی ہم کیا کرتے ہیں فہرستوں سر پر ایک پوائنٹر ہے،
کیوں ہم صرف کے ارد گرد ہے کہ ایک میں منتقل نہیں کرتے ہیں؟
ویسے، میں نے ابھی کہا کی طرح، یہ ہمارے لئے بہت ضروری ہے
ہمیشہ کا ٹریک رکھنے کے لئے فہرست میں پہلا عنصر.
اور اس طرح یہ اصل میں بہتر ہے اس کی ایک نقل بنانے کے لئے،
اور تو ہم کبھی کے ارد گرد منتقل کرنے کے لئے اس کا استعمال اتفاقی طور پر دور منتقل، یا ہمیشہ ہم
ہے کہ کچھ نقطہ پر ایک پوائنٹر ہے صحیح فہرست کے پہلے عنصر پر.
تو یہ ایک تخلیق کرنے کے لئے بہتر ہے ہم منتقل کرنے کے لئے استعمال کرتے ہیں کہ دوسرا.
>> اس وقت ہم صرف چاہے موازنہ اس نوڈ میں قدر میدان
یہ ہے تو ہم کے لئے تلاش کر رہے ہیں، اور کیا ہے نہیں، ہم صرف اگلے نوڈ پر منتقل.
اور ہم یہ ہے کہ ایسا رکھ ختم، اور اس سے زیادہ، اور اس سے زیادہ،
ہم یا تو تلاش تک عنصر، یا ہم مارا
شہوت انگیز null ہم اختتام تک پہنچ گئے اور فہرست کے یہ وہاں نہیں ہے.
یہ امید ہے کہ ایک گھنٹی بجانے چاہئے آپ کے طور پر صرف لکیری تلاش،
ہم صرف اس میں نقل کر رہے ہیں ایک اکیلے منسلک فہرست ڈھانچے
بجائے ایسا کرنے کے لئے ایک صف کا استعمال کرتے ہوئے.
>> تو یہاں کی ایک مثال ہے ایک اکیلے منسلک فہرست.
یہ ایک پر مشتمل ہے پانچ نوڈس، اور ہم
کے سربراہ پوائنٹر فہرست کہا جاتا ہے جس کی فہرست،.
ہم کرنا چاہتے ہیں سب سے پہلی چیز ہے ایک بار پھر، کہ traversal پوائنٹر پیدا.
تو اب ہم دو اشارہ ہے ایک ہی بات کو اس نقطہ.
>> اب، یہاں بھی نوٹس میں نے نہیں کیا سے Trav لئے کسی بھی جگہ malloc کرنا پڑے.
میں سے Trav malloc کے برابر نہیں کہا کچھ، اس نوڈ پہلے ہی موجود ہے،
یاد میں اس جگہ پہلے سے موجود ہے.
تو میں نے اصل میں کیا کر رہا ہوں ہے یہ کرنے کے لئے ایک پوائنٹر پیدا کرنے.
میں ایک اضافی mallocing نہیں کر رہا ہوں خلائی، ابھی دو اشارہ ہے
ایک ہی بات کی طرف اشارہ.
>> تو 2 میں دیکھ رہا ہوں کیا ہے؟
نہیں، ٹھیک ہے، تو بجائے ہوں اگلے ایک کے لئے منتقل کرنے کے لئے جا رہا.
تو بنیادی طور پر میں، کا کہنا ہے کہ سے Trav اگلے سے Trav برابر.
مجھے کوئی، کے لئے تلاش کر رہا ہوں 3 ہے.
تو میں نے جانے کے لئے جاری کے ذریعے، آخر میں جب تک
میں دیکھ رہا ہوں کیا ہے جس میں 6 حاصل کرنے کے لئے تقریب کال کی بنیاد پر کے لئے
میں سب سے اوپر ہے وہاں، اور تو میں کیا کر رہا ہوں.
>> اب، عنصر میں کیا ہوں تو کے لئے تلاش کر، فہرست میں نہیں ہے
یہ اب بھی کام کرنے کے لئے جا رہی ہے؟
ویسے، فہرست ہے کہ محسوس کریں یہاں، subtly مختلف ہے
اور یہ ہے کہ ایک بات ہے منسلک کی فہرست کے ساتھ اہم،
آپ کو محفوظ کرنے کی ضرورت نہیں انہیں کوئی خاص ترتیب میں.
تم چاہو تو کر سکتے ہیں، لیکن آپ نے پہلے ہی محسوس کیا ہو سکتا
ہم کا ٹریک رکھنے نہیں کر رہے ہیں ہم کیا تعداد عنصر میں ہیں.
>> اور یہ کہ ایک تجارتی کی طرح ہے کہ ہم arrays کے آیات لنک کی فہرست کے ساتھ ہے،
یہ ہم نے نہیں ہے اب رینڈم رسائی.
ہم صرف میں چاہتا ہوں، کا کہنا ہے کہ نہیں کر سکتے ہیں کے 0th عنصر پر جانے کے لئے،
یا میری سرنی کے 6th عنصر، جس میں ایک صف میں کیا کر سکتے ہیں.
میں جانا چاہتا ہوں نہیں کہہ سکتا کے 0th عنصر، یا 6th عنصر،
یا اپنے سے منسلک فہرست کے 25th عنصر، ان کے ساتھ منسلک کوئی انڈیکس ہے.
اور تو یہ واقعی کوئی فرق نہیں پڑتا ہم نے آرڈر میں ہماری فہرست محفوظ ہے.
آپ کرنا چاہتے ہیں تو یقینی طور پر کر سکتے ہیں، لیکن وہاں ہے
وہ کرنے کی ضرورت کوئی وجہ کسی بھی ترتیب میں محفوظ کیا.
تو ایک بار پھر، کرنے کی کوشش کریں اور اس فہرست میں 6 تلاش.
ٹھیک ہے، ہم میں شروع شروع، ہم نے 6 کو تلاش نہیں کرتے
اور پھر ہم تلاش نہیں جاری 6، ہم آخر میں یہاں ملتا ہے جب تک.
نوڈ تو اب سے Trav پوائنٹس 8 پر مشتمل، اور چھ سے میں نہیں ہے.
>> تو اگلے قدم ہو گا اگلے پوائنٹر پر جانے کے لئے،
تو سے Trav اگلے سے Trav برابر کہتے ہیں.
ویسے، سے Trav اگلے، کی طرف اشارہ وہاں سرخ باکس، شہوت انگیز null ہے.
پس کہیں اور ہے اس وقت تو جاؤ، اور
ہم پہنچ گئے ہیں کہ یہ نتیجہ اخذ کر سکتے ہیں لنک کی فہرست کے آخر میں،
اور 6 سے میں نہیں ہے.
اور یہ واپس آ جائے گا اس معاملے میں جھوٹے.
>> ٹھیک ہے، کہ ہم کس طرح ایک نئی داخل کرتے منسلک فہرست میں نوڈ؟
تو ہم پیدا کرنے کے قابل کیا گیا ہے کہیں سے بھی باہر ایک لنک کی فہرست،
لیکن ہم شاید کرنا چاہتے ہیں ایک زنجیر کی تعمیر نہیں
الگ فہرست کا ایک گروپ تشکیل دے.
ہم ایک فہرست کرنا چاہتے ہیں کہ ، اس میں مراکز کی ایک گروپ ہے
ایک نوڈ کے ساتھ کی فہرست کا ایک گروپ.
تو ہم صرف تخلیق کا استعمال کرتے ہوئے نہیں رکھ سکتے تقریب اب ہم پہلے بیان کیا ہم
ایک میں داخل کرنا چاہتے ہیں پہلے سے موجود اس فہرست.
>> یہ کیس بہت، ہم جا رہے ہیں دو دلائل میں منتقل کرنے کی،
اس کے سر پر پوائنٹر ہم میں شامل کرنا چاہتے ہیں کہ منسلک فہرست.
یہ اتنا ہے کیوں ایک بار پھر، کہ اہم ہمیشہ ہم اس
کیونکہ، اس کا ٹریک رکھنے یہ واقعی صرف راستہ ہم نے
پوری فہرست ہے کا حوالہ دیتے ہیں کے لئے ہے صرف پہلے عنصر پر ایک پوائنٹر کی طرف سے.
تو ہم نے ایک میں منتقل کرنا چاہتے ہیں کہ سب سے پہلے عنصر پوائنٹر،
اور جو کچھ بھی قیمت ہم فہرست میں شامل کرنا چاہتے ہیں.
اور آخر میں اس تقریب ایک پوائنٹر واپس جا رہا ہے
ایک لنک کی فہرست کے نئے سربراہ کے لیے.
>> یہاں ملوث اقدامات کیا ہیں؟
ٹھیک ہے، صرف بنانے کے ساتھ کی طرح، ہم کو متحرک طور پر مختص کرنے کی ضرورت
ایک نیا نوڈ کے لئے جگہ، اور بنانے کے لئے چیک یقین ہے کہ ہم میموری سے باہر چلانے کے لئے نہیں، ایک بار پھر،
ہم malloc کا استعمال کرتے ہوئے کر رہے ہیں کیونکہ.
پھر ہم آباد کرنا چاہتے ہیں اور، نوڈ داخل
تو نمبر ڈال، جو کچھ بھی ویل نوڈ میں، ہے.
ہم نوڈ داخل کرنا چاہتے ہیں لنک کی فہرست کے آغاز.
>> ایک وجہ ہے کہ میں ایسا کرنے کے لئے چاہتے ہیں، اور یہ
ایک دوسرے لینے کے قابل ہو سکتا ہے یہاں ویڈیو کو روکنے کے لئے،
اور میں چاہتے ہیں کیوں کے بارے میں سوچنا ایک لنک کے آغاز میں داخل
فہرست.
ایک بار پھر، میں نے پہلے ذکر یہ واقعی نہیں ہے کہ
ہم کسی بھی میں محفوظ تو کوئی فرق آرڈر، تو ہو سکتا ہے کہ ایک اشارہ ہے.
اور آپ کو ہم تو کیا ہوگا دیکھا مطلوب to-- یا صرف ایک دوسرے سے
پہلے جب ہم جا رہے تھے تلاش کے ذریعے آپ
کیا ہو سکتا ہے کو دیکھنے کے کر سکتے ہیں ہم کوشش کر رہے تھے تو کیا
فہرست کے آخر میں شامل کرنے کے لئے.
ہم ایک کی ضرورت نہیں ہے فہرست کے آخر میں پوائنٹر.
>> تو اس کی وجہ میں چاہتے ہیں کہ شروع میں شامل کرنے کے لئے،
میں اسے فوری طور پر کر سکتے ہیں کی وجہ سے ہے.
میں نے شروع میں ایک پوائنٹر ہے، اور ہم ایک سیکنڈ میں ایک بصری میں یہ دیکھ لیں گے.
لیکن میں نے آخر میں داخل کرنا چاہتے ہیں، میں، آغاز میں شروع کرنے کے لئے ہے
کے لئے تمام طریقے سے گزرنا آخر، اور پھر اس پر سمت.
تو اس کا مطلب ہو گا فہرست کے آخر میں داخل
(ن) کے ایک O بن جائے گا آپریشن، واپس جا
کی ہماری بحث کرنے کے لئے کمپیوٹیشنل پیچیدگی.
یہ (ن) آپریشن، جہاں ایک O بن گیا تھا فہرست بڑا، اور بڑا ہے کے طور پر،
اور بڑے، اس سے زیادہ ہو جائے گا اور کچھ سمت کے لئے زیادہ مشکل
اختتام پر.
لیکن یہ ہمیشہ کے لئے بہت آسان ہے آغاز میں کچھ سمت،
آپ کو شروع میں ہمیشہ رہے ہیں.
>> اور ہم ایک بار پھر اس کے ایک بصری کو دیکھ لیں گے.
اور پھر ہم ایک بار، کیا کر رہے ہیں ایک بار ہم نئے نوڈ داخل ہے،
ہم ہماری پوائنٹر کو واپس کرنا چاہتے ایک لنک کی فہرست کے نئے سربراہ، جو
ہم داخل کر رہے ہیں کے بعد سے شروع، اصل میں ہو جائے گا
ہم صرف پیدا نوڈ پوائنٹر.
، اس کو دیکھ دو کیونکہ میں اس کی مدد کریں گے لگتا ہے.
>> تو یہاں ہمارے فہرست ہے، اس پر مشتمل چار عناصر، ایک نوڈ، 15 پر مشتمل
جس میں ایک نوڈ کی طرف اشارہ ہے ، 9 پر مشتمل ہے جس میں
13 پر مشتمل ایک نوڈ کی طرف اشارہ ہے، جس پر مشتمل ایک نوڈ کی طرف اشارہ ہے
شہوت انگیز null ہے جس میں 10، اس کے اگلے پوائنٹر کے طور پر پوائنٹر
تو اس فہرست کے آخر میں ہے.
تو ہم نے ایک شامل کرنے کے لئے چاہتے ہیں قیمت 12 نئے نوڈ
اس کے آغاز میں فہرست میں، ہم کیا کرتے ہیں؟
ویسے، سب سے پہلے ہم کے لئے جگہ malloc سے نوڈ، اور اس کے بعد ہم وہاں 12 ڈال.
>> تو اب ہم تک پہنچ گئے ہیں ایک فیصلہ نقطہ، ٹھیک ہے؟
ہم کے ایک جوڑے کی ہے اشارہ ہے کہ ہم کر سکتے تھے
ہم سب سے پہلے جس میں سے ایک میں منتقل کرنا چاہئے، میں ڈالیں؟
ہم 12 نقطہ کرنے کے لئے کرنا چاہئے فہرست کے نئے سربراہ
یا مجھے معاف، ہم 12 بنانا چاہیے فہرست پرانے سر کی طرف اشارہ؟
یا ہم کہنا چاہئے فہرست اب 12 سے شروع ہوتی ہے.
ایک امتیاز نہیں ہے وہاں، اور ہم نظر آئے گا
کے ساتھ دونوں ایک سیکنڈ میں کیا ہوتا ہے پر.
>> لیکن یہ ایک کی طرف جاتا ہے سائڈبار کے لئے بہت اچھا موضوع،
جن میں سے ایک ہے منسلک کی فہرست کے ساتھ عمل trickiest چیزیں
اشارہ کا بندوبست کرنا ہے صحیح ترتیب میں.
آپ کے حکم سے باہر چیزوں کو منتقل، تو، آپ نے غلطی سے ختم کر سکتے ہیں
فہرست کے باقی orphaning.
اور یہاں اس کی ایک مثال ہے.
تو خیال کے ساتھ جانے of-- ٹھیک ہے، ہم صرف 12 تشکیل دے دیا ہے.
ہم نے 12 کی جا رہی ہے جانتے ہیں فہرست کے نئے سربراہ،
اور تو کیوں ہم صرف منتقل نہیں کرتے فہرست پوائنٹر کی طرف اشارہ کرنے کے لئے.
>> ٹھیک ہے، تو یہ اچھی بات ہے.
تو اب جہاں 12 اگلے پوائنٹ ہے؟
میں ضعف ہم دیکھ سکتے ہیں، کا مطلب یہ 15 کی طرف اشارہ کریں گے کہ،
انسانوں کے طور پر یہ ہمارے لئے بہت واضح ہے.
کس طرح کمپیوٹر معلوم ہے؟
ہم کچھ بھی نہیں ہے اب 15 کی طرف اشارہ، ٹھیک ہے؟
>> ہم نے 15 کی طرف رجوع کرنے کی صلاحیت بھی کھو دیا ہے.
ہم نئی تیر اگلے برابر نہیں کہہ سکتا کچھ، وہاں کچھ نہیں ہے.
اصل میں، ہم یتیم ہے فہرست کے باقی
ایسا کرنے سے، ہم نے اتفاقی طور پر چین ٹوٹ.
اور ہم یقینی طور پر ایسا کرنے کے لئے نہیں کرنا چاہتا.
>> تو واپس جاؤ اور پھر سے کوشش کریں.
شاید صحیح کام کرنا 12 کے اگلے پوائنٹر قائم کرنے کے لئے ہے
پہلی فہرست کے پرانے سر پر، تو ہم کی فہرست پر منتقل کر سکتے ہیں.
اور حقیقت میں، یہ ہے کہ صحیح ترتیب ہے کہ ہم اس
ہم جب عمل کرنے کی ضرورت اکیلے منسلک کی فہرست کے ساتھ کام کر رہے ہیں.
ہم نے ہمیشہ مربوط کرنے کے لئے چاہتے ہیں فہرست میں نئے عنصر،
ہم اس طرح کی لینے سے پہلے کو تبدیل کرنے کا اہم قدم
جہاں منسلک فہرست کا سر ہے.
ایک بار پھر، کہ اس طرح ایک بنیادی بات ہے، ہم اس کے ٹریک کھو نہیں کرنا چاہتے.
>> تو ہم اس بات کو یقینی بنانا چاہتے ہیں سب کچھ، دوسرے کے ساتھ جکڑے ہے
ہم اس پوائنٹر منتقل کرنے سے پہلے.
اور اس طرح یہ صحیح ترتیب ہو جائے گا، جس کی فہرست کرنے کے لئے 12 سے متصل ہے،
پھر فہرست 12 شروع ہوتا ہے کا کہنا ہے کہ.
ہم فہرست 12 سے شروع ہوتی ہے کہ اگر اور پھر، فہرست کرنے کے لئے 12 سے رابطہ قائم کرنے کی کوشش کی
ہم نے پہلے ہی کیا ہوتا ہے دیکھا ہے.
ہم نے غلطی کی طرف سے فہرست کھو.
>> ٹھیک ہے، تو ایک چیز کے بارے میں بات کرنے کے لئے.
کیا ہم میں سے چھٹکارا حاصل کرنا چاہتے ہیں تو ایک پوری ایک بار میں منسلک فہرست؟
ایک بار پھر، ہم mallocing رہے ہیں تمام اس کی جگہ، اور ہم
ہم کیا کر رہے ہیں جب یہ آزاد کرنے کی ضرورت.
تو اب ہم کو خارج کرنا چاہتے ہیں پورے منسلک فہرست.
ویسے، جو ہم کرنا چاہتے ہیں؟
>> ہم شہوت انگیز null پوائنٹر تک پہنچ چکے ہیں، ہم دوسری صورت میں، صرف خارج کر دیں، کو روکنے کے لئے چاہتے ہیں
پھر فہرست کے آرام اور مجھے آزاد.
فہرست کے باقی حذف، اور پھر موجودہ نوڈ آزاد.
کی طرح اس آواز کرتا ہے، کیا تکنیک ہم بات کی ہے
کے بارے میں پہلے کی طرح اس آواز کرتا ہے؟
تو، اور سب کو خارج کر دیں واپس آئے اور مجھ سے خارج کر دیں.
>> یہ تکرار ہے، ہم نے کر دیا ہے تھوڑا سا چھوٹا مسئلہ،
ہم سب کو خارج کر دیں کہہ رہے اور، تو آپ مجھ سے خارج کر سکتے ہیں.
اور مزید سڑک کے نیچے، اس نوڈ اور سب کو خارج کر دیں، کہیں گے.
لیکن آخر میں ہم سے ملے گی فہرست شہوت انگیز null ہے نقطہ جہاں،
اور یہ کہ ہماری بنیاد بات ہے.
>> تو اس پر ایک نظر ڈالیں، اور یہ کام کر سکتے ہیں کہ کس طرح.
تو یہاں ہمارے فہرست ہے، یہ ایک ہی ہے ، ہم صرف کے بارے میں بات کر رہے تھے فہرست
اور اقدامات ہے.
متن کی ایک بہت، یہاں کچھ نہیں ہے لیکن امید ہے کہ تصور میں مدد ملے گی.
>> تو ہم have-- اور میں بھی نکالا اپنے اسٹیک فریم مثال اپ
کال پوٹ پر اپنے ویڈیو سے، اور امید ہے کہ اس کے تمام
ایک دوسرے کے ساتھ کیا ہو رہا ہے آپ کو دکھائے گا.
تو یہاں ہمارے pseudocode کوڈ ہے.
ہم شہوت انگیز null تک پہنچ جائیں تو پوائنٹر،، دوسری صورت میں، کو روکنے کے
فہرست کے باقی کو حذف، پھر موجودہ نوڈ آزاد.
تو اب، list-- ہم ہیں کہ پوائنٹر
میں گزر سے 12 پوائنٹس کو تباہ کرنے.
12، شہوت انگیز null پوائنٹر نہیں ہے، تو ہم ہیں فہرست کے باقی حذف کرنے جا رہا.
>> کیا کو خارج ہے ہم میں سے باقی ملوث؟
ٹھیک ہے، یہ ایک بنانے کا مطلب ہے کہہ، تباہ کرنے کے لئے کال کریں
15 اس کا آغاز ہے ہم کو تباہ کرنا چاہتے فہرست کے باقی.
اور اس کال کو تباہ کرنے 12 ہولڈ پر قسم کی ہے.
اس کے لئے انتظار، وہاں منجمد ہے اپنا کام ختم کرنے کے لئے، 15 تباہ کرنے کے لئے کال.
>> ویسے، 15، شہوت انگیز null پوائنٹر نہیں ہے، اور تو یہ کہا جا رہا ہے، ٹھیک ہے،
اچھی طرح سے، فہرست کے باقی کو خارج.
فہرست کے باقی شروع 9، اور تو ہم صرف گے
آپ سب کو خارج کر دیں جب تک انتظار ہے کہ چیزیں، پھر واپس آئے اور مجھ سے خارج کر دیں.
ویسے 9 اچھی طرح، کا کہنا ہے کہ جا رہا ہے، میں، شہوت انگیز null پوائنٹر نہیں ہوں
تو یہاں سے باقی فہرست حذف.
اور اس طرح کی کوشش کریں اور 13 تباہ.
13، مجھے شہوت انگیز null پوائنٹر نہیں ہوں، کا کہنا ہے کہ ایک ہی بات، اس کے ہرن گزر.
10، 10، شہوت انگیز null پوائنٹر نہیں ہے شہوت انگیز null پوائنٹر پر مشتمل ہے،
لیکن 10 نہیں خود ہے شہوت انگیز null اب پوائنٹر،
اور تو یہ بھی ہرن گزر.
>> اور اب، اسے وہاں پوائنٹس فہرست واقعی some-- طرف اشارہ کریں گے
میں نے تصویر میں زیادہ جگہ تھا تو، یہ کچھ بے ترتیب کی جگہ کی طرف اشارہ کریں گے
ہم یہ کیا ہے نہیں جانتے کہ.
یہ اگرچہ، شہوت انگیز null پوائنٹر ہے، فہرست لفظی اب یہ شہوت انگیز null اقدار مقرر کیا گیا ہے.
یہ درست ہے کہ سرخ باکس کے اندر کی طرف اشارہ ہے.
ہم تو، شہوت انگیز null پوائنٹر پہنچ ہم کو روکنے کے کر سکتے ہیں، اور ہم کیا کر رہے ہیں.
>> اور تو ہے کہ جامنی رنگ کے فریم میں now-- ہے فعال فریم ہے کہ stack-- کے سب،
لیکن یہ کیا ہے.
ہم شہوت انگیز null پوائنٹر تک پہنچ چکے ہیں، کو روکنے کے.
ہم، کچھ بھی نہیں ہے ہم شہوت انگیز null پوائنٹر آزاد نہیں کر سکتے ہیں،
ہم کسی بھی malloc سے نہیں کیا خلائی، اور ہم کیا کر رہے ہیں.
اس تقریب فریم تو تباہ، اور ہم
ہم نے چھوڑ دیا جہاں resume-- ہم اٹھا اگلے سب سے زیادہ ایک، کے ساتھ جو
یہاں اس گہرے نیلے فریم ہے.
تو ہم کو چھوڑ دیا جہاں حق اٹھا.
ہم باقی خارج فہرست پہلے ہی، تو اب ہم ہیں
موجودہ نوڈ آزاد کرنے کے لئے جا.
تو اب ہم اس نوڈ آزاد، اور کر سکتے ہیں ہم تقریب کے اختتام تک پہنچ گئے ہیں.
اور تو ہے کہ تقریب فریم، تباہ کر دیا ہے اور ہم ہلکے نیلے رنگ سے ایک میں اٹھا.
>> تو یہ میں نے پہلے ہی done-- ہے says-- ، فہرست کے باقی کو خارج تو
موجودہ نوڈ آزاد.
اور اب پیلے رنگ فریم ہے واپس اسٹیک کے سب سے اوپر پر.
آپ کو دیکھ کے طور پر اور اس طرح، اب ہم ہیں دائیں سے بائیں کرنے کے لئے فہرست کو تباہ کرنے.
>> کیا، تاہم، کیا ہوتا ہم چیزوں کو غلط طریقے سے کیا تھا تو کیا ہوگا؟
بس ہم نے کوشش کی جب کی طرح ایک عنصر شامل کرنے کے لئے.
اگر ہم چین، گڑبڑ تو ہم اشارہ مربوط نہیں کیا
صحیح ترتیب میں، اگر ہم صرف پہلا عنصر آزاد،
ہم صرف آزاد ہیں فہرست کے سربراہ، اب ہم
سے رجوع کرنے کے کوئی راستہ نہیں ہے فہرست کے باقی.
اور اس طرح ہم پڑے گا یتیم سب کچھ،
ہم کیا ہوتا ہے ایک میموری لیک نامی.
آپ اپنے ویڈیو سے یاد تو متحرک میموری مختص کرنے پر،
کہ بہت اچھی بات نہیں ہے.
>> تو کے طور پر میں نے کہا، وہاں کئی آپریشن کر رہے ہیں
ہم کام کرنے کے لئے استعمال کرنے کی ضرورت ہے کے ساتھ مؤثر طریقے سے منسلک فہرست.
اور تم نے ایک لپ محسوس کیا ہو سکتا ایک لنک سے ایک عنصر کو خارج
فہرست.
مجھے لگتا ہے کہ کیا وجہ یہ اصل میں قسم کی ہے
حذف کرنے کے بارے میں سوچنے کے لئے مشکل ایک اکیلے سے ایک عنصر
لنک کی فہرست.
ہم سے زیادہ پر کرنے کے قابل ہونے کی ضرورت ہے فہرست، میں کچھ جو
ہم ایک point-- ہم حاصل ہے اس node-- حذف کرنا چاہتے
لیکن ترتیب میں ہم اسے تو بنانے کے لئے کوئی معلومات کھو نہ کرو،
ہم اس سے رابطہ قائم کرنے کی ضرورت ہے یہاں زیادہ نوڈ،.
>> تو میں نے شاید اس ظلم کیا ایک بصری نقطہ نظر سے.
تو ہم کے آغاز پر ہیں ہماری فہرست میں، ہم، کے ذریعے آگے بڑھنے سے کر رہے ہیں
ہم اس نوڈ کو حذف کرنا چاہتے ہیں.
، ہم صرف اس کو حذف تو ہم چین توڑ دیا.
یہیں پر اس نوڈ سب کچھ سے مراد،
یہ یہاں باہر سے چین پر مشتمل ہے.
>> تو ہم اصل میں کیا کرنے کی ضرورت ہم اس نقطہ پر حاصل کرنے کے بعد،
ہم ایک قدم پیچھے کرنے کی ضرورت ہے، اور اس نوڈ یہ نوڈ سے زیادہ مربوط،
تو تو ہم کو خارج کر سکتے ہیں وسط میں ایک.
لیکن اکیلے منسلک کی فہرست نہیں ہے ہمیں پیچھے کی طرف جانے کے لئے ایک راستہ فراہم کرتے ہیں.
تو ہم یا تو رکھنے کے لئے کی ضرورت ہے دو اشارہ، اور ان میں منتقل
بند قدم کی طرح، کے پیچھے ایک دیگر ہم جا، یا ایک نقطہ پر حاصل کرنے کے طور پر
اور اس کے بعد کے ذریعے ایک دوسرے پوائنٹر بھیج.
اور آپ کو یہ دیکھ سکتے ہیں کے طور پر ایک تھوڑا گندا حاصل کر سکتے ہیں.
خوش قسمتی سے، ہم نے ایک اور طریقہ ہے کہ کو حل کرنے،
جب ہم دوگنا منسلک کی فہرست کے بارے میں بات.
>> میں ڈوگ لایڈ ہوں، اس CS50 ہے.