1 00:00:00,000 --> 00:00:02,832 >> [موسیقی بجانے] 2 00:00:02,832 --> 00:00:05,670 3 00:00:05,670 --> 00:00:08,560 >> ڈوگ لایڈ: ٹھیک ہے، میں اتنا کورس میں اس نقطہ، 4 00:00:08,560 --> 00:00:15,300 ہم سی کی بنیادی باتیں کی ایک بہت احاطہ کرتا ہے ہم، متغیر، arrays کے بارے میں ایک بہت کچھ جانتے ہیں 5 00:00:15,300 --> 00:00:17,610 اشارہ، کہ تمام اچھی چیزیں. 6 00:00:17,610 --> 00:00:21,610 وہ تمام قسم کی تعمیر کر رہے ہیں میں، بنیادی طور پر دیکھنے کے لئے 7 00:00:21,610 --> 00:00:23,880 لیکن ہم حق، زیادہ کر سکتے ہیں؟ 8 00:00:23,880 --> 00:00:27,930 ہم چیزوں کو اکٹھا کر سکتے ہیں ایک دوسرے کے ساتھ دلچسپ طریقوں میں. 9 00:00:27,930 --> 00:00:31,010 >> اور اس طرح شروع کرتے ہیں، یہ کرتے ہیں سی ہمیں دیتا ہے کیا سے باہر شاخ، 10 00:00:31,010 --> 00:00:35,270 اور ہمارے اپنے ڈیٹا بنانے کے لئے شروع ان کی عمارت کے استعمال کرتے ہوئے ڈھانچے 11 00:00:35,270 --> 00:00:40,590 ایک دوسرے کے ساتھ بلاکس کچھ کرنا مفید، واقعی قابل قدر. 12 00:00:40,590 --> 00:00:43,420 ہم ایسا کر سکتے ہیں کا ایک طریقہ ہے مجموعہ کے بارے میں بات کرنے کے لئے. 13 00:00:43,420 --> 00:00:48,360 تو اب تک ہم نے اعداد و شمار کی ایک قسم پڑا ہے مجموعے نمائندگی کرنے کے لئے ڈھانچہ 14 00:00:48,360 --> 00:00:51,030 کی اقدار، اسی طرح کی اقدار کو پسند. 15 00:00:51,030 --> 00:00:52,350 یہ ایک صف ہو گی. 16 00:00:52,350 --> 00:00:57,020 ہم integers کے مجموعے ہیں، یا اسی طرح حروف اور کے مجموعے. 17 00:00:57,020 --> 00:01:00,890 >> تعمیرات بھی اعداد و شمار کی طرح ہیں معلومات جمع کرنے کے لئے ڈھانچہ، 18 00:01:00,890 --> 00:01:03,220 لیکن یہ اقدار طرح جمع کرنے کے لئے نہیں ہے. 19 00:01:03,220 --> 00:01:08,090 یہ عام طور پر مختلف اعداد و شمار اقسام کے آمیزے ایک ساتھ مل کر ایک باکس کے اندر. 20 00:01:08,090 --> 00:01:10,750 لیکن یہ بذات خود نہیں ہے ایک دوسرے کے ساتھ چین کے لئے استعمال کیا جاتا ہے 21 00:01:10,750 --> 00:01:16,920 یا ایک ساتھ اسی طرح مربوط ایک صف کی طرح اشیاء،. 22 00:01:16,920 --> 00:01:20,960 arrays کے لئے عظیم ہیں عنصر کو نظر آتے ہیں، لیکن یاد 23 00:01:20,960 --> 00:01:24,262 یہ بہت مشکل ہے کہ ایک صف میں شامل کرنے کے لئے، 24 00:01:24,262 --> 00:01:26,470 ہم داخل کر رہے ہیں جب تک کہ اس صف کے آخر. 25 00:01:26,470 --> 00:01:29,730 >> اور سب سے بہترین مثال کے طور پر میں نے اس کے لیے اندراج کی طرح ہے. 26 00:01:29,730 --> 00:01:31,650 اگر آپ کو ہماری یاد تو ویڈیو اندراج کی طرح پر، 27 00:01:31,650 --> 00:01:34,110 ایک بہت میں سے نہیں تھا اخراجات رکھنے میں ملوث 28 00:01:34,110 --> 00:01:37,970 عناصر اٹھا، اور ان منتقل کرنے کے لئے کچھ فٹ ہونے کے لئے راستے سے باہر 29 00:01:37,970 --> 00:01:41,290 آپ کے صف کے وسط میں. 30 00:01:41,290 --> 00:01:44,690 Arrays بھی ایک دوسرے سے شکار مسئلہ، جس درڑھتا ہے. 31 00:01:44,690 --> 00:01:47,150 ہم ایک صف کا اعلان کرتے ہیں، ہم اس پر ایک شاٹ حاصل. 32 00:01:47,150 --> 00:01:49,790 ہم میں چاہتا ہوں، کا کہنا ہے کہ کرنے کے لئے حاصل یہ بہت سے عناصر. 33 00:01:49,790 --> 00:01:51,940 100 ہو سکتا ہے، یہ شاید 1،000 ہو، یہ شاید 34 00:01:51,940 --> 00:01:55,930 ایکس صارف کہ ایک بڑی تعداد ہے جہاں X ہو ایک فوری طور پر یا کمانڈ میں ہمیں دیا 35 00:01:55,930 --> 00:01:56,630 لائن. 36 00:01:56,630 --> 00:01:59,905 >> لیکن ہم صرف اس پر ایک شاٹ حاصل، ہم میں اصل میں، اس کے بعد اوہ کہنا نہیں ملتا 37 00:01:59,905 --> 00:02:04,360 101 کی ضرورت ہے، یا میں ایکس کے علاوہ 20 کی ضرورت ہے. 38 00:02:04,360 --> 00:02:07,910 بہت دیر ہو گئی، ہم نے پہلے ہی اعلان کر دیا ہے صف، اور ہم 101 یا حاصل کرنے کے لئے چاہتے ہیں تو X 39 00:02:07,910 --> 00:02:12,050 کے علاوہ 20، ہم اعلان کرنا ہوگا ایک مکمل طور پر مختلف سرنی، 40 00:02:12,050 --> 00:02:15,540 صف کے تمام عناصر کو کاپی زیادہ، اور پھر ہم کافی ہے. 41 00:02:15,540 --> 00:02:19,880 اور ہم پھر سے غلط ہیں تو کیا، کیا ہم اصل میں 102، یا ایکس کے علاوہ 40 کی ضرورت ہے تو، 42 00:02:19,880 --> 00:02:21,970 ہم ایک بار پھر یہ کرنا ہے. 43 00:02:21,970 --> 00:02:26,250 تو وہ بہت انمی ہیں ہمارے اعداد و شمار نیا سائز کے لئے، 44 00:02:26,250 --> 00:02:29,360 لیکن ہم ایک دوسرے کے ساتھ کچھ یکجا ہم نے پہلے ہی ہے کہ مبادیات میں 45 00:02:29,360 --> 00:02:33,230 اشارہ اور ڈھانچے کے بارے میں سیکھا، خاص طور پر متحرک میموری استعمال 46 00:02:33,230 --> 00:02:36,180 malloc کے ساتھ مختص کرنے، ہم ایک ساتھ مل کر ان ٹکڑوں ڈال کر سکتے ہیں 47 00:02:36,180 --> 00:02:40,960 ایک نئے اعداد و شمار structure-- ایک بنانے کے لئے اکیلے ہم say-- سکتا منسلک فہرست 48 00:02:40,960 --> 00:02:45,400 کہ ہمیں بڑھنے میں اجازت دیتا ہے اور اقدار کا ایک مجموعہ سکڑ 49 00:02:45,400 --> 00:02:48,800 اور ہم کسی بھی ضائع شدہ جگہ نہیں پڑے گا. 50 00:02:48,800 --> 00:02:53,320 >> تو ایک بار پھر، ہم نے اس خیال کہتے ہیں، اس تصور، ایک لنک کی فہرست. 51 00:02:53,320 --> 00:02:56,320 خاص طور پر، اس ویڈیو میں ہم ہیں اکیلے منسلک فہرست کے بارے میں بات، 52 00:02:56,320 --> 00:02:59,185 اور پھر ایک ویڈیو ہم بات کریں گے کے بارے میں دوگنا منسلک کی فہرست، جس میں 53 00:02:59,185 --> 00:03:01,560 یہاں ایک موضوع پر صرف ایک تبدیلی ہے. 54 00:03:01,560 --> 00:03:05,200 لیکن ایک اکیلے منسلک فہرست نوڈس پر مشتمل ہے، 55 00:03:05,200 --> 00:03:08,559 نوڈس صرف ایک خلاصہ term-- ہونے اس میں بلا رہا ہوں صرف کچھ ہے 56 00:03:08,559 --> 00:03:10,350 اس کی ایک قسم ہے ساخت، بنیادی طور پر، ہوں؟ 57 00:03:10,350 --> 00:03:16,190 صرف یہ ایک node-- اور اس کو فون کرنے جا نوڈ دو ارکان، یا دو شعبوں ہے. 58 00:03:16,190 --> 00:03:20,300 یہ عام طور پر ایک کے اعداد و شمار، ہے عددی، ایک کردار فلوٹ، 59 00:03:20,300 --> 00:03:23,790 یا کسی دوسرے اعداد و شمار کی قسم ہو سکتا ہے آپ کو ایک قسم def کے ساتھ بیان کیا ہے کہ. 60 00:03:23,790 --> 00:03:29,290 اور اس پر ایک پوائنٹر پر مشتمل ہے اسی قسم کے دوسرے نوڈ. 61 00:03:29,290 --> 00:03:34,710 >> تو ہم کے اندر دو چیزیں ہیں اس نوڈ، اعداد و شمار اور ایک پوائنٹر 62 00:03:34,710 --> 00:03:36,380 دوسرے نوڈ. 63 00:03:36,380 --> 00:03:39,370 اور آپ کو دیکھ کرنے کے لئے شروع تو اس، آپ اس کے بارے میں سوچ سکتے ہیں 64 00:03:39,370 --> 00:03:42,280 مراکز کی ایک زنجیر کی طرح ایک دوسرے کے ساتھ جڑے ہوئے ہیں. 65 00:03:42,280 --> 00:03:45,070 ہم سب سے پہلے نوڈ ہے، یہ اعداد و شمار، اور ایک پوائنٹر پر مشتمل ہے 66 00:03:45,070 --> 00:03:49,110 پر مشتمل ہے جس میں دوسری نوڈ، کرنے کے لئے اعداد و شمار، اور تیسرے نوڈ پوائنٹر. 67 00:03:49,110 --> 00:03:52,940 اور تو ہے کہ ہم اس کو ایک فون یہی وجہ ہے لنک کی فہرست، وہ دوسرے کے ساتھ منسلک رہے ہیں. 68 00:03:52,940 --> 00:03:56,070 >> اس خصوصی کرتا ہے نوڈ ساخت کی طرح نظر آتے ہیں؟ 69 00:03:56,070 --> 00:04:01,120 ٹھیک ہے، تم پر اپنے ویڈیو سے یاد تو قسم def کے ساتھ، اپنی مرضی کے اقسام کی وضاحت، 70 00:04:01,120 --> 00:04:05,400 ہم ایک structure-- وضاحت کر سکتے ہیں اور اس طرح ایک ساخت کی وضاحت ٹائپ. 71 00:04:05,400 --> 00:04:11,240 struct کے sllist tyepdef، اور پھر میں ہوں منمانے یہاں لفظ قدر استعمال 72 00:04:11,240 --> 00:04:13,891 واقعی کسی بھی ڈیٹا کی قسم اس بات کی نشاندہی کرنے کے لئے. 73 00:04:13,891 --> 00:04:16,890 آپ کو ایک عددی یا فلوٹ پر منتقل کر سکتے ہیں تم جو چاہو کر سکتے ہیں. 74 00:04:16,890 --> 00:04:19,389 یہ صرف تک محدود نہیں ہے integers کے، یا اس طرح کچھ. 75 00:04:19,389 --> 00:04:22,790 تو قدر صرف ایک صوابدیدی ہے پھر ڈیٹا کی قسم، اور ایک پوائنٹر 76 00:04:22,790 --> 00:04:26,310 اسی قسم کے دوسرے نوڈ. 77 00:04:26,310 --> 00:04:29,690 >> اب، ایک چھوٹا سا پکڑنے ہے یہاں ایک ڈھانچہ کی وضاحت کے ساتھ 78 00:04:29,690 --> 00:04:33,030 جب یہ ایک خود حوالہ ساخت ہے. 79 00:04:33,030 --> 00:04:35,340 میں نے ایک عارضی ہوگا میرے ساخت کے لئے نام. 80 00:04:35,340 --> 00:04:37,640 دن میں کے آخر میں واضح طور پر یہ بات کرنا چاہتے ہیں 81 00:04:37,640 --> 00:04:43,030 SLL نوڈ، کہ بالآخر نیا ہے میری قسم تعریف کی حصہ کا نام، 82 00:04:43,030 --> 00:04:47,450 لیکن میں SLL نوڈ استعمال نہیں کر سکتے اس کے وسط میں. 83 00:04:47,450 --> 00:04:51,430 وجہ کیا جا رہا ہے، میں نہیں ہے ایک قسم کہا جاتا SLL نوڈ پیدا 84 00:04:51,430 --> 00:04:55,200 میں یہاں یہ آخری نقطہ مارا جب تک. 85 00:04:55,200 --> 00:04:59,720 اس نقطہ تک، میں ہوگا ایک اور طریقہ یہ اعداد و شمار کی قسم کے لئے رجوع کرنے کے لئے. 86 00:04:59,720 --> 00:05:02,440 >> اور یہ ایک خود ہے حوالہ کے اعداد و شمار کی قسم. 87 00:05:02,440 --> 00:05:06,314 یہ ایک ڈیٹا کی قسم ہے ایک ڈیٹا پر مشتمل ہے کہ ساخت، 88 00:05:06,314 --> 00:05:08,480 اور ایک دوسرے کے لئے ایک پوائنٹر اسی قسم کی ساخت. 89 00:05:08,480 --> 00:05:11,750 لہذا میں سے رجوع کرنے کے قابل ہو جائے کرنے کی ضرورت ہے یہ اعداد و شمار کی قسم میں کم از کم عارضی طور پر، 90 00:05:11,750 --> 00:05:14,910 تو یہ ایک عارضی دے struct کے sllist کے نام 91 00:05:14,910 --> 00:05:18,540 مجھے پھر میں نے ایک چاہتے ہیں کی اجازت دیتا ہے ایک اور struct sllist پوائنٹر، 92 00:05:18,540 --> 00:05:24,690 ایک struct sllist سٹار، اور اس کے بعد میں تعریف مکمل کر لیا ہے کے بعد، 93 00:05:24,690 --> 00:05:27,220 اب میں اس قسم کی ایک SLL نوڈ کال کر سکتے ہیں. 94 00:05:27,220 --> 00:05:30,520 >> تم وہاں دیکھ یہی وجہ ہے کہ یہاں ایک عارضی نام، 95 00:05:30,520 --> 00:05:31,879 لیکن یہاں ایک مستقل نام. 96 00:05:31,879 --> 00:05:33,920 کبھی کبھی آپ کو دیکھ سکتے ہیں ساخت کی تعریف، 97 00:05:33,920 --> 00:05:36,570 مثال کے طور پر، نہیں ہیں خود حوالہ، کہ 98 00:05:36,570 --> 00:05:39,390 یہاں ایک specifier یہ نام نہیں ہے. 99 00:05:39,390 --> 00:05:43,040 یہ صرف، typedef کے struct کے کہیں گے گھوبگھرالی منحنی خطوط وحدانی کھولنے اور پھر اس کی وضاحت. 100 00:05:43,040 --> 00:05:45,620 تم تو struct کے خود ہے حوالہ، یہ ہے کے طور پر، 101 00:05:45,620 --> 00:05:49,010 آپ کو ایک کی وضاحت کرنے کی ضرورت ہے عارضی قسم کا نام. 102 00:05:49,010 --> 00:05:51,310 لیکن بالآخر، اب ہم نے یہ کیا ہے کہ، 103 00:05:51,310 --> 00:05:53,620 ہم صرف کرنے کے لئے رجوع کر سکتے ہیں ان مراکز، ان یونٹوں، 104 00:05:53,620 --> 00:05:57,900 مقاصد کے لئے SLL نوڈس کے طور پر اس ویڈیو کے باقی. 105 00:05:57,900 --> 00:06:00,900 >> ٹھیک ہے، تو ہم کس طرح جانتے ہیں ایک لنک کی فہرست نوڈ بنانے کے. 106 00:06:00,900 --> 00:06:03,240 ہم وضاحت کرنے کے لئے کس طرح جانتے ہیں ایک لنک کی فہرست نوڈ. 107 00:06:03,240 --> 00:06:06,670 اب ہم شروع کرنے کے لئے جا رہے ہیں معلومات جمع کرنے کے لئے ان کا استعمال کرتے ہوئے، 108 00:06:06,670 --> 00:06:10,360 آپریشن کے ایک جوڑے کی ہے ہم سمجھنے اور ساتھ مل کر کام کرنے کی ضرورت ہے. 109 00:06:10,360 --> 00:06:12,860 ہم پیدا کرنے کے لئے کس طرح پتہ کرنے کی ضرورت ہے پتلی ہوا کے باہر ایک لنک کی فہرست. 110 00:06:12,860 --> 00:06:14,901 کوئی فہرست پہلے سے ہی موجود ہے تو، ہم ایک شروع کرنے کے لئے چاہتے ہیں. 111 00:06:14,901 --> 00:06:16,960 تو ہم قابل ہو جائے کرنے کی ضرورت ہے ایک لنک کی فہرست بنانے کے لئے، 112 00:06:16,960 --> 00:06:19,130 ہم شاید تلاش کرنے کی ضرورت لنک کی فہرست کے ذریعے 113 00:06:19,130 --> 00:06:21,830 ہم کے لئے تلاش کر رہے ہیں تلاش کرنے کے لئے ایک عنصر. 114 00:06:21,830 --> 00:06:24,430 ہم داخل کرنے کے قابل ہونے کی ضرورت ہے فہرست میں نئی ​​چیزیں، 115 00:06:24,430 --> 00:06:25,930 ہم ہماری فہرست میں اضافہ کرنے کے قابل بننا چاہتا ہوں. 116 00:06:25,930 --> 00:06:28,638 اور اسی طرح، ہم قابل بننا چاہتا ہوں ہماری فہرست سے چیزوں کو حذف کرنا، 117 00:06:28,638 --> 00:06:30,250 ہم ہماری فہرست چھوٹا کرنے کے قابل بننا چاہتا ہوں. 118 00:06:30,250 --> 00:06:32,160 اور آخر میں ہماری پروگراموں، خاص طور پر 119 00:06:32,160 --> 00:06:34,550 آپ کو ہم ہیں کہ یاد تو متحرک طور پر میموری مختص 120 00:06:34,550 --> 00:06:38,337 عام طور پر ان فہرستوں کی تعمیر کے لئے، ہم اس کی میموری کی سب آزاد کرنا چاہتے ہیں 121 00:06:38,337 --> 00:06:39,670 ہم اس کے ساتھ کام کیا کر رہے ہیں جب. 122 00:06:39,670 --> 00:06:44,627 اور اس طرح ہم ایک حذف کرنے کے قابل ہونے کی ضرورت ہے ایک میں پورے منسلک فہرست جھپٹا ناکام. 123 00:06:44,627 --> 00:06:46,460 تو کے ذریعے جانے ان کارروائیوں میں سے کچھ 124 00:06:46,460 --> 00:06:51,192 اور ہم نے ان کو دیکھ سکتا ہے کہ کس طرح، خاص طور پر pseudocode کے کوڈ میں بات. 125 00:06:51,192 --> 00:06:53,150 تو ہم نے ایک پیدا کرنے کے لئے چاہتے ہیں منسلک فہرست، تو شاید ہم 126 00:06:53,150 --> 00:06:56,480 ایک تقریب کی وضاحت کرنا چاہتے ہیں اس پروٹوٹائپ کے ساتھ. 127 00:06:56,480 --> 00:07:01,690 SLL نوڈ سٹار، تخلیق، اور میں گزر رہا ہوں ایک دلیل میں، کچھ صوابدیدی ڈیٹا 128 00:07:01,690 --> 00:07:05,530 کچھ صوابدیدی ڈیٹا کی قسم کے، ایک بار پھر ٹائپ کریں. 129 00:07:05,530 --> 00:07:10,482 لیکن میں اس تقریب چاہئے returning-- ہوں ایک اکیلے کرنے کے لئے، میرے لئے ایک پوائنٹر واپس 130 00:07:10,482 --> 00:07:11,190 منسلک فہرست نوڈ. 131 00:07:11,190 --> 00:07:14,050 ایک بار پھر، ہم بنانے کے لئے کوشش کر رہے ہیں پتلی ہوا کے باہر ایک لنک کی فہرست، 132 00:07:14,050 --> 00:07:17,900 تو میں ایک پوائنٹر کی ضرورت میں کیا کر رہا ہوں جب کہ فہرست. 133 00:07:17,900 --> 00:07:19,420 >> تو یہاں ملوث اقدامات کیا ہیں؟ 134 00:07:19,420 --> 00:07:20,960 ٹھیک ہے، میں سب سے پہلی چیز ہوں کیا جا رہا ہے کو متحرک طور پر 135 00:07:20,960 --> 00:07:22,550 ایک نیا نوڈ کے لئے جگہ مختص. 136 00:07:22,550 --> 00:07:26,689 ایک بار پھر، ہم پتلی سے باہر پیدا کر رہے ہیں ہوا، تو ہم اس کے لئے malloc جگہ کی ضرورت ہے. 137 00:07:26,689 --> 00:07:28,480 اور ظاہر کی، فوری طور پر ہم malloc کے بعد، 138 00:07:28,480 --> 00:07:31,692 ہم ہمیشہ اس بات کو یقینی بنانے کے لئے چیک ہماری پوائنٹر ہم واپس، شہوت انگیز null نہیں مل سکا. 139 00:07:31,692 --> 00:07:33,650 ہم کوشش کریں کیونکہ اگر اور شہوت انگیز null پوائنٹر احترام، 140 00:07:33,650 --> 00:07:36,190 ہم نے ایک شکار کرنے کے لئے جا رہے ہیں پر segfault اور ہم نہیں چاہتا کہ. 141 00:07:36,190 --> 00:07:39,510 >> پھر ہم میدان میں بھرنے کے لئے چاہتے، ہم قیمت میدان ابتدا کرنا چاہتے ہیں 142 00:07:39,510 --> 00:07:41,690 اور اگلے میدان میں ابتدا. 143 00:07:41,690 --> 00:07:45,450 اور پھر ہم آخر میں اس کے to-- چاہتے ہم چاہتے ہیں indicates-- تقریب پروٹوٹائپ 144 00:07:45,450 --> 00:07:49,940 ایک SLL نوڈ پوائنٹر واپس کرنے کے لئے. 145 00:07:49,940 --> 00:07:51,710 تو کیا اس ضعف کی طرح نظر بنانے؟ 146 00:07:51,710 --> 00:07:55,230 ویسے، سب سے پہلے ہم کو متحرک کرنے کے لئے جا رہے ہیں ایک نئی SLL نوڈ کے لئے جگہ مختص، 147 00:07:55,230 --> 00:07:58,320 تو ہم ہے کہ malloc-- ایک بصری نمائندگی 148 00:07:58,320 --> 00:08:00,020 نوڈ کے ہم صرف پیدا. 149 00:08:00,020 --> 00:08:02,757 اور ہمیں یقین ہے بنانے کے لئے چیک یہ اس صورت میں شہوت انگیز null نہیں ہے 150 00:08:02,757 --> 00:08:04,840 تصویر نہیں پڑے گا یہ شہوت انگیز null تھا تو دکھایا، 151 00:08:04,840 --> 00:08:07,298 ہم میموری سے باہر چلانے ہوتا تو ہم وہاں جانا اچھا ہو. 152 00:08:07,298 --> 00:08:10,200 تو اب ہم سی مرحلے پر ہیں، نوڈس قیمت میدان ابتدا. 153 00:08:10,200 --> 00:08:12,280 ویسے، اس تقریب کی بنیاد پر ، میں یہاں استعمال کر رہا ہوں کال 154 00:08:12,280 --> 00:08:16,700 میں نے 6 میں منتقل کرنا چاہتے ہیں کی طرح لگتا ہے، تو میں نے قیمت میدان میں 6 گے. 155 00:08:16,700 --> 00:08:18,865 اب، اگلے میدان میں ابتدا. 156 00:08:18,865 --> 00:08:21,640 ٹھیک ہے، کیا میں وہاں کیا کرنے جا رہا ہوں، کچھ بھی ٹھیک، اگلے ہے، 157 00:08:21,640 --> 00:08:23,600 اس فہرست میں صرف ایک ہی چیز ہے. 158 00:08:23,600 --> 00:08:27,206 تو فہرست میں اگلے بات کیا ہے؟ 159 00:08:27,206 --> 00:08:29,660 >> یہ درست ہے، کچھ کی طرف اشارہ نہیں ہونا چاہئے. 160 00:08:29,660 --> 00:08:33,600 کچھ بھی نہیں تو کیا ہے، اور وہاں ہے ہم اس کے بارے میں پتہ تصور nothing-- ہے 161 00:08:33,600 --> 00:08:35,638 کچھ بھی نہیں اشارہ ہے؟ 162 00:08:35,638 --> 00:08:37,929 یہ ہو سکتا ہے ہم چاہتے ہیں ہونا چاہئے وہاں ایک شہوت انگیز null پوائنٹر ڈال کرنے کے لئے، 163 00:08:37,929 --> 00:08:40,178 اور میں، شہوت انگیز null کی نمائندگی کریں گے ، کے طور پر صرف ایک سرخ باکس پوائنٹر 164 00:08:40,178 --> 00:08:41,559 ہم مزید کوئی نہیں جا سکتا. 165 00:08:41,559 --> 00:08:44,430 ہم بعد میں پر ایک چھوٹا سا نظر آئے گا کے طور پر، ہم آخر میں زنجیروں پڑے گا 166 00:08:44,430 --> 00:08:46,330 تیر کے منسلک ایک ساتھ مل کر ان مراکز، 167 00:08:46,330 --> 00:08:48,480 لیکن تم نے مارا جب سرخ باکس، کہ، شہوت انگیز null ہے 168 00:08:48,480 --> 00:08:51,150 ہم مزید کوئی نہیں جا سکتا اس فہرست کے آخر میں ہے. 169 00:08:51,150 --> 00:08:53,960 >> اور آخر میں، ہم صرف کرنا چاہتے ہیں اس نوڈ پوائنٹر واپس. 170 00:08:53,960 --> 00:08:56,160 تو ہم نئے اسے فون کروں گا، اور نئے واپس آ جائیں گے 171 00:08:56,160 --> 00:08:59,370 تو اس میں استعمال کیا جا سکتا جو کچھ بھی تقریب پیدا. 172 00:08:59,370 --> 00:09:03,100 تو ہم وہاں جائیں، ہم نے ایک اکیلے پیدا کیا ہے پتلی ہوا کے باہر سے منسلک فہرست نوڈ، 173 00:09:03,100 --> 00:09:05,920 اور اب ہم ساتھ مل کر کام کر سکتے ہیں کی ایک فہرست ہے. 174 00:09:05,920 --> 00:09:08,260 >> اب، پہلے سے ہی ہم کا کہنا ہے کہ ایک بڑی چین ہے، 175 00:09:08,260 --> 00:09:09,800 اور ہم اس میں کچھ تلاش کرنا چاہتے ہیں. 176 00:09:09,800 --> 00:09:12,716 اور ہم جا رہا ہے کہ ایک تقریب چاہتے ہیں ، صحیح یا غلط واپس منحصر 177 00:09:12,716 --> 00:09:15,840 ایک قدر اس فہرست میں موجود ہیں یا نہیں پر. 178 00:09:15,840 --> 00:09:18,160 ایک تقریب پروٹوٹائپ، یا اس تقریب کے لئے اعلان، 179 00:09:18,160 --> 00:09:23,320 this-- مل bool طرح نظر آتے ہیں، اور ہو سکتا ہے پھر ہم دو دلائل میں منتقل کرنا چاہتے ہیں. 180 00:09:23,320 --> 00:09:26,996 >> سب سے پہلے، کرنے کے لئے ایک پوائنٹر ہے لنک کی فہرست کے پہلے عنصر. 181 00:09:26,996 --> 00:09:29,620 یہ تمہیں اصل میں کچھ ہے ہمیشہ کا ٹریک رکھنے کے لئے چاہتے ہیں، 182 00:09:29,620 --> 00:09:33,110 اور اصل میں کچھ ہو سکتا ہے آپ کو بھی ایک عالمی متغیر میں ڈال دیا. 183 00:09:33,110 --> 00:09:35,360 آپ کو ایک فہرست بنانے کے بعد، ہمیشہ آپ کو، 184 00:09:35,360 --> 00:09:38,990 بہت کے ٹریک رکھنا چاہتے ہیں فہرست کے پہلے عنصر. 185 00:09:38,990 --> 00:09:43,690 آپ کو تمام دوسرے کی طرف رجوع کر سکتے ہیں اس طرح صرف سیریز کے بعد کی طرف سے عناصر، 186 00:09:43,690 --> 00:09:47,300 اشارہ رکھنے کے لئے ہونے کے بغیر ہر ایک عنصر کو برقرار. 187 00:09:47,300 --> 00:09:50,920 آپ کو صرف سب سے پہلے ٹریک رکھنے کے لئے کی ضرورت ہے ایک وہ سب کے سب ایک دوسرے کے ساتھ جکڑے رہے ہیں. 188 00:09:50,920 --> 00:09:52,460 >> اور پھر دوسری بات یہ ہے ہم ایک بار پھر میں گزر رہے ہیں 189 00:09:52,460 --> 00:09:54,376 منمانے some-- ہے جو ڈیٹا کی قسم ہم ہیں 190 00:09:54,376 --> 00:09:59,640 وہاں کے لئے تلاش کے اندر ہے امید ہے کہ فہرست میں نوڈس میں سے ایک. 191 00:09:59,640 --> 00:10:00,980 تو اقدامات کیا ہیں؟ 192 00:10:00,980 --> 00:10:04,250 ٹھیک ہے، ہم سب سے پہلی چیز ہے ہم ایک transversal پوائنٹر پیدا 193 00:10:04,250 --> 00:10:06,015 فہرستوں سر کی طرف اشارہ. 194 00:10:06,015 --> 00:10:08,890 ویسے، یہی وجہ ہے کہ، ہم نے پہلے ہی ہم کیا کرتے ہیں فہرستوں سر پر ایک پوائنٹر ہے، 195 00:10:08,890 --> 00:10:10,974 کیوں ہم صرف کے ارد گرد ہے کہ ایک میں منتقل نہیں کرتے ہیں؟ 196 00:10:10,974 --> 00:10:13,140 ویسے، میں نے ابھی کہا کی طرح، یہ ہمارے لئے بہت ضروری ہے 197 00:10:13,140 --> 00:10:17,580 ہمیشہ کا ٹریک رکھنے کے لئے فہرست میں پہلا عنصر. 198 00:10:17,580 --> 00:10:21,270 اور اس طرح یہ اصل میں بہتر ہے اس کی ایک نقل بنانے کے لئے، 199 00:10:21,270 --> 00:10:25,350 اور تو ہم کبھی کے ارد گرد منتقل کرنے کے لئے اس کا استعمال اتفاقی طور پر دور منتقل، یا ہمیشہ ہم 200 00:10:25,350 --> 00:10:30,430 ہے کہ کچھ نقطہ پر ایک پوائنٹر ہے صحیح فہرست کے پہلے عنصر پر. 201 00:10:30,430 --> 00:10:33,290 تو یہ ایک تخلیق کرنے کے لئے بہتر ہے ہم منتقل کرنے کے لئے استعمال کرتے ہیں کہ دوسرا. 202 00:10:33,290 --> 00:10:35,877 >> اس وقت ہم صرف چاہے موازنہ اس نوڈ میں قدر میدان 203 00:10:35,877 --> 00:10:38,960 یہ ہے تو ہم کے لئے تلاش کر رہے ہیں، اور کیا ہے نہیں، ہم صرف اگلے نوڈ پر منتقل. 204 00:10:38,960 --> 00:10:41,040 اور ہم یہ ہے کہ ایسا رکھ ختم، اور اس سے زیادہ، اور اس سے زیادہ، 205 00:10:41,040 --> 00:10:44,811 ہم یا تو تلاش تک عنصر، یا ہم مارا 206 00:10:44,811 --> 00:10:47,310 شہوت انگیز null ہم اختتام تک پہنچ گئے اور فہرست کے یہ وہاں نہیں ہے. 207 00:10:47,310 --> 00:10:50,540 یہ امید ہے کہ ایک گھنٹی بجانے چاہئے آپ کے طور پر صرف لکیری تلاش، 208 00:10:50,540 --> 00:10:54,430 ہم صرف اس میں نقل کر رہے ہیں ایک اکیلے منسلک فہرست ڈھانچے 209 00:10:54,430 --> 00:10:56,280 بجائے ایسا کرنے کے لئے ایک صف کا استعمال کرتے ہوئے. 210 00:10:56,280 --> 00:10:58,210 >> تو یہاں کی ایک مثال ہے ایک اکیلے منسلک فہرست. 211 00:10:58,210 --> 00:11:00,043 یہ ایک پر مشتمل ہے پانچ نوڈس، اور ہم 212 00:11:00,043 --> 00:11:04,330 کے سربراہ پوائنٹر فہرست کہا جاتا ہے جس کی فہرست،. 213 00:11:04,330 --> 00:11:07,385 ہم کرنا چاہتے ہیں سب سے پہلی چیز ہے ایک بار پھر، کہ traversal پوائنٹر پیدا. 214 00:11:07,385 --> 00:11:09,760 تو اب ہم دو اشارہ ہے ایک ہی بات کو اس نقطہ. 215 00:11:09,760 --> 00:11:15,025 >> اب، یہاں بھی نوٹس میں نے نہیں کیا سے Trav لئے کسی بھی جگہ malloc کرنا پڑے. 216 00:11:15,025 --> 00:11:18,970 میں سے Trav malloc کے برابر نہیں کہا کچھ، اس نوڈ پہلے ہی موجود ہے، 217 00:11:18,970 --> 00:11:21,160 یاد میں اس جگہ پہلے سے موجود ہے. 218 00:11:21,160 --> 00:11:24,290 تو میں نے اصل میں کیا کر رہا ہوں ہے یہ کرنے کے لئے ایک پوائنٹر پیدا کرنے. 219 00:11:24,290 --> 00:11:28,210 میں ایک اضافی mallocing نہیں کر رہا ہوں خلائی، ابھی دو اشارہ ہے 220 00:11:28,210 --> 00:11:31,370 ایک ہی بات کی طرف اشارہ. 221 00:11:31,370 --> 00:11:33,710 >> تو 2 میں دیکھ رہا ہوں کیا ہے؟ 222 00:11:33,710 --> 00:11:37,220 نہیں، ٹھیک ہے، تو بجائے ہوں اگلے ایک کے لئے منتقل کرنے کے لئے جا رہا. 223 00:11:37,220 --> 00:11:41,740 تو بنیادی طور پر میں، کا کہنا ہے کہ سے Trav اگلے سے Trav برابر. 224 00:11:41,740 --> 00:11:43,630 مجھے کوئی، کے لئے تلاش کر رہا ہوں 3 ہے. 225 00:11:43,630 --> 00:11:45,780 تو میں نے جانے کے لئے جاری کے ذریعے، آخر میں جب تک 226 00:11:45,780 --> 00:11:48,690 میں دیکھ رہا ہوں کیا ہے جس میں 6 حاصل کرنے کے لئے تقریب کال کی بنیاد پر کے لئے 227 00:11:48,690 --> 00:11:51,600 میں سب سے اوپر ہے وہاں، اور تو میں کیا کر رہا ہوں. 228 00:11:51,600 --> 00:11:54,150 >> اب، عنصر میں کیا ہوں تو کے لئے تلاش کر، فہرست میں نہیں ہے 229 00:11:54,150 --> 00:11:55,510 یہ اب بھی کام کرنے کے لئے جا رہی ہے؟ 230 00:11:55,510 --> 00:11:57,120 ویسے، فہرست ہے کہ محسوس کریں یہاں، subtly مختلف ہے 231 00:11:57,120 --> 00:11:59,410 اور یہ ہے کہ ایک بات ہے منسلک کی فہرست کے ساتھ اہم، 232 00:11:59,410 --> 00:12:01,780 آپ کو محفوظ کرنے کی ضرورت نہیں انہیں کوئی خاص ترتیب میں. 233 00:12:01,780 --> 00:12:05,390 تم چاہو تو کر سکتے ہیں، لیکن آپ نے پہلے ہی محسوس کیا ہو سکتا 234 00:12:05,390 --> 00:12:09,310 ہم کا ٹریک رکھنے نہیں کر رہے ہیں ہم کیا تعداد عنصر میں ہیں. 235 00:12:09,310 --> 00:12:13,150 >> اور یہ کہ ایک تجارتی کی طرح ہے کہ ہم arrays کے آیات لنک کی فہرست کے ساتھ ہے، 236 00:12:13,150 --> 00:12:15,300 یہ ہم نے نہیں ہے اب رینڈم رسائی. 237 00:12:15,300 --> 00:12:18,150 ہم صرف میں چاہتا ہوں، کا کہنا ہے کہ نہیں کر سکتے ہیں کے 0th عنصر پر جانے کے لئے، 238 00:12:18,150 --> 00:12:21,410 یا میری سرنی کے 6th عنصر، جس میں ایک صف میں کیا کر سکتے ہیں. 239 00:12:21,410 --> 00:12:25,080 میں جانا چاہتا ہوں نہیں کہہ سکتا کے 0th عنصر، یا 6th عنصر، 240 00:12:25,080 --> 00:12:30,360 یا اپنے سے منسلک فہرست کے 25th عنصر، ان کے ساتھ منسلک کوئی انڈیکس ہے. 241 00:12:30,360 --> 00:12:33,660 اور تو یہ واقعی کوئی فرق نہیں پڑتا ہم نے آرڈر میں ہماری فہرست محفوظ ہے. 242 00:12:33,660 --> 00:12:36,080 آپ کرنا چاہتے ہیں تو یقینی طور پر کر سکتے ہیں، لیکن وہاں ہے 243 00:12:36,080 --> 00:12:38,567 وہ کرنے کی ضرورت کوئی وجہ کسی بھی ترتیب میں محفوظ کیا. 244 00:12:38,567 --> 00:12:40,400 تو ایک بار پھر، کرنے کی کوشش کریں اور اس فہرست میں 6 تلاش. 245 00:12:40,400 --> 00:12:43,200 ٹھیک ہے، ہم میں شروع شروع، ہم نے 6 کو تلاش نہیں کرتے 246 00:12:43,200 --> 00:12:47,690 اور پھر ہم تلاش نہیں جاری 6، ہم آخر میں یہاں ملتا ہے جب تک. 247 00:12:47,690 --> 00:12:52,790 نوڈ تو اب سے Trav پوائنٹس 8 پر مشتمل، اور چھ سے میں نہیں ہے. 248 00:12:52,790 --> 00:12:55,250 >> تو اگلے قدم ہو گا اگلے پوائنٹر پر جانے کے لئے، 249 00:12:55,250 --> 00:12:57,440 تو سے Trav اگلے سے Trav برابر کہتے ہیں. 250 00:12:57,440 --> 00:13:00,750 ویسے، سے Trav اگلے، کی طرف اشارہ وہاں سرخ باکس، شہوت انگیز null ہے. 251 00:13:00,750 --> 00:13:03,020 پس کہیں اور ہے اس وقت تو جاؤ، اور 252 00:13:03,020 --> 00:13:06,120 ہم پہنچ گئے ہیں کہ یہ نتیجہ اخذ کر سکتے ہیں لنک کی فہرست کے آخر میں، 253 00:13:06,120 --> 00:13:07,190 اور 6 سے میں نہیں ہے. 254 00:13:07,190 --> 00:13:10,980 اور یہ واپس آ جائے گا اس معاملے میں جھوٹے. 255 00:13:10,980 --> 00:13:14,540 >> ٹھیک ہے، کہ ہم کس طرح ایک نئی داخل کرتے منسلک فہرست میں نوڈ؟ 256 00:13:14,540 --> 00:13:17,310 تو ہم پیدا کرنے کے قابل کیا گیا ہے کہیں سے بھی باہر ایک لنک کی فہرست، 257 00:13:17,310 --> 00:13:19,370 لیکن ہم شاید کرنا چاہتے ہیں ایک زنجیر کی تعمیر نہیں 258 00:13:19,370 --> 00:13:22,620 الگ فہرست کا ایک گروپ تشکیل دے. 259 00:13:22,620 --> 00:13:25,700 ہم ایک فہرست کرنا چاہتے ہیں کہ ، اس میں مراکز کی ایک گروپ ہے 260 00:13:25,700 --> 00:13:28,040 ایک نوڈ کے ساتھ کی فہرست کا ایک گروپ. 261 00:13:28,040 --> 00:13:31,260 تو ہم صرف تخلیق کا استعمال کرتے ہوئے نہیں رکھ سکتے تقریب اب ہم پہلے بیان کیا ہم 262 00:13:31,260 --> 00:13:33,860 ایک میں داخل کرنا چاہتے ہیں پہلے سے موجود اس فہرست. 263 00:13:33,860 --> 00:13:36,499 >> یہ کیس بہت، ہم جا رہے ہیں دو دلائل میں منتقل کرنے کی، 264 00:13:36,499 --> 00:13:39,290 اس کے سر پر پوائنٹر ہم میں شامل کرنا چاہتے ہیں کہ منسلک فہرست. 265 00:13:39,290 --> 00:13:40,910 یہ اتنا ہے کیوں ایک بار پھر، کہ اہم ہمیشہ ہم اس 266 00:13:40,910 --> 00:13:43,400 کیونکہ، اس کا ٹریک رکھنے یہ واقعی صرف راستہ ہم نے 267 00:13:43,400 --> 00:13:46,690 پوری فہرست ہے کا حوالہ دیتے ہیں کے لئے ہے صرف پہلے عنصر پر ایک پوائنٹر کی طرف سے. 268 00:13:46,690 --> 00:13:49,360 تو ہم نے ایک میں منتقل کرنا چاہتے ہیں کہ سب سے پہلے عنصر پوائنٹر، 269 00:13:49,360 --> 00:13:52,226 اور جو کچھ بھی قیمت ہم فہرست میں شامل کرنا چاہتے ہیں. 270 00:13:52,226 --> 00:13:54,600 اور آخر میں اس تقریب ایک پوائنٹر واپس جا رہا ہے 271 00:13:54,600 --> 00:13:57,980 ایک لنک کی فہرست کے نئے سربراہ کے لیے. 272 00:13:57,980 --> 00:13:59,700 >> یہاں ملوث اقدامات کیا ہیں؟ 273 00:13:59,700 --> 00:14:02,249 ٹھیک ہے، صرف بنانے کے ساتھ کی طرح، ہم کو متحرک طور پر مختص کرنے کی ضرورت 274 00:14:02,249 --> 00:14:05,540 ایک نیا نوڈ کے لئے جگہ، اور بنانے کے لئے چیک یقین ہے کہ ہم میموری سے باہر چلانے کے لئے نہیں، ایک بار پھر، 275 00:14:05,540 --> 00:14:07,150 ہم malloc کا استعمال کرتے ہوئے کر رہے ہیں کیونکہ. 276 00:14:07,150 --> 00:14:09,080 پھر ہم آباد کرنا چاہتے ہیں اور، نوڈ داخل 277 00:14:09,080 --> 00:14:12,730 تو نمبر ڈال، جو کچھ بھی ویل نوڈ میں، ہے. 278 00:14:12,730 --> 00:14:17,310 ہم نوڈ داخل کرنا چاہتے ہیں لنک کی فہرست کے آغاز. 279 00:14:17,310 --> 00:14:19,619 >> ایک وجہ ہے کہ میں ایسا کرنے کے لئے چاہتے ہیں، اور یہ 280 00:14:19,619 --> 00:14:21,910 ایک دوسرے لینے کے قابل ہو سکتا ہے یہاں ویڈیو کو روکنے کے لئے، 281 00:14:21,910 --> 00:14:25,860 اور میں چاہتے ہیں کیوں کے بارے میں سوچنا ایک لنک کے آغاز میں داخل 282 00:14:25,860 --> 00:14:26,589 فہرست. 283 00:14:26,589 --> 00:14:28,630 ایک بار پھر، میں نے پہلے ذکر یہ واقعی نہیں ہے کہ 284 00:14:28,630 --> 00:14:33,020 ہم کسی بھی میں محفوظ تو کوئی فرق آرڈر، تو ہو سکتا ہے کہ ایک اشارہ ہے. 285 00:14:33,020 --> 00:14:36,040 اور آپ کو ہم تو کیا ہوگا دیکھا مطلوب to-- یا صرف ایک دوسرے سے 286 00:14:36,040 --> 00:14:37,360 پہلے جب ہم جا رہے تھے تلاش کے ذریعے آپ 287 00:14:37,360 --> 00:14:39,235 کیا ہو سکتا ہے کو دیکھنے کے کر سکتے ہیں ہم کوشش کر رہے تھے تو کیا 288 00:14:39,235 --> 00:14:41,330 فہرست کے آخر میں شامل کرنے کے لئے. 289 00:14:41,330 --> 00:14:44,750 ہم ایک کی ضرورت نہیں ہے فہرست کے آخر میں پوائنٹر. 290 00:14:44,750 --> 00:14:47,490 >> تو اس کی وجہ میں چاہتے ہیں کہ شروع میں شامل کرنے کے لئے، 291 00:14:47,490 --> 00:14:49,380 میں اسے فوری طور پر کر سکتے ہیں کی وجہ سے ہے. 292 00:14:49,380 --> 00:14:52,730 میں نے شروع میں ایک پوائنٹر ہے، اور ہم ایک سیکنڈ میں ایک بصری میں یہ دیکھ لیں گے. 293 00:14:52,730 --> 00:14:55,605 لیکن میں نے آخر میں داخل کرنا چاہتے ہیں، میں، آغاز میں شروع کرنے کے لئے ہے 294 00:14:55,605 --> 00:14:58,760 کے لئے تمام طریقے سے گزرنا آخر، اور پھر اس پر سمت. 295 00:14:58,760 --> 00:15:01,420 تو اس کا مطلب ہو گا فہرست کے آخر میں داخل 296 00:15:01,420 --> 00:15:04,140 (ن) کے ایک O بن جائے گا آپریشن، واپس جا 297 00:15:04,140 --> 00:15:06,720 کی ہماری بحث کرنے کے لئے کمپیوٹیشنل پیچیدگی. 298 00:15:06,720 --> 00:15:10,140 یہ (ن) آپریشن، جہاں ایک O بن گیا تھا فہرست بڑا، اور بڑا ہے کے طور پر، 299 00:15:10,140 --> 00:15:13,310 اور بڑے، اس سے زیادہ ہو جائے گا اور کچھ سمت کے لئے زیادہ مشکل 300 00:15:13,310 --> 00:15:14,661 اختتام پر. 301 00:15:14,661 --> 00:15:17,410 لیکن یہ ہمیشہ کے لئے بہت آسان ہے آغاز میں کچھ سمت، 302 00:15:17,410 --> 00:15:19,060 آپ کو شروع میں ہمیشہ رہے ہیں. 303 00:15:19,060 --> 00:15:21,620 >> اور ہم ایک بار پھر اس کے ایک بصری کو دیکھ لیں گے. 304 00:15:21,620 --> 00:15:24,100 اور پھر ہم ایک بار، کیا کر رہے ہیں ایک بار ہم نئے نوڈ داخل ہے، 305 00:15:24,100 --> 00:15:26,880 ہم ہماری پوائنٹر کو واپس کرنا چاہتے ایک لنک کی فہرست کے نئے سربراہ، جو 306 00:15:26,880 --> 00:15:29,213 ہم داخل کر رہے ہیں کے بعد سے شروع، اصل میں ہو جائے گا 307 00:15:29,213 --> 00:15:31,060 ہم صرف پیدا نوڈ پوائنٹر. 308 00:15:31,060 --> 00:15:33,280 ، اس کو دیکھ دو کیونکہ میں اس کی مدد کریں گے لگتا ہے. 309 00:15:33,280 --> 00:15:36,661 >> تو یہاں ہمارے فہرست ہے، اس پر مشتمل چار عناصر، ایک نوڈ، 15 پر مشتمل 310 00:15:36,661 --> 00:15:38,410 جس میں ایک نوڈ کی طرف اشارہ ہے ، 9 پر مشتمل ہے جس میں 311 00:15:38,410 --> 00:15:41,370 13 پر مشتمل ایک نوڈ کی طرف اشارہ ہے، جس پر مشتمل ایک نوڈ کی طرف اشارہ ہے 312 00:15:41,370 --> 00:15:44,840 شہوت انگیز null ہے جس میں 10، اس کے اگلے پوائنٹر کے طور پر پوائنٹر 313 00:15:44,840 --> 00:15:47,010 تو اس فہرست کے آخر میں ہے. 314 00:15:47,010 --> 00:15:50,200 تو ہم نے ایک شامل کرنے کے لئے چاہتے ہیں قیمت 12 نئے نوڈ 315 00:15:50,200 --> 00:15:52,720 اس کے آغاز میں فہرست میں، ہم کیا کرتے ہیں؟ 316 00:15:52,720 --> 00:15:58,770 ویسے، سب سے پہلے ہم کے لئے جگہ malloc سے نوڈ، اور اس کے بعد ہم وہاں 12 ڈال. 317 00:15:58,770 --> 00:16:02,211 >> تو اب ہم تک پہنچ گئے ہیں ایک فیصلہ نقطہ، ٹھیک ہے؟ 318 00:16:02,211 --> 00:16:03,960 ہم کے ایک جوڑے کی ہے اشارہ ہے کہ ہم کر سکتے تھے 319 00:16:03,960 --> 00:16:06,770 ہم سب سے پہلے جس میں سے ایک میں منتقل کرنا چاہئے، میں ڈالیں؟ 320 00:16:06,770 --> 00:16:09,250 ہم 12 نقطہ کرنے کے لئے کرنا چاہئے فہرست کے نئے سربراہ 321 00:16:09,250 --> 00:16:13,020 یا مجھے معاف، ہم 12 بنانا چاہیے فہرست پرانے سر کی طرف اشارہ؟ 322 00:16:13,020 --> 00:16:15,319 یا ہم کہنا چاہئے فہرست اب 12 سے شروع ہوتی ہے. 323 00:16:15,319 --> 00:16:17,110 ایک امتیاز نہیں ہے وہاں، اور ہم نظر آئے گا 324 00:16:17,110 --> 00:16:19,870 کے ساتھ دونوں ایک سیکنڈ میں کیا ہوتا ہے پر. 325 00:16:19,870 --> 00:16:23,350 >> لیکن یہ ایک کی طرف جاتا ہے سائڈبار کے لئے بہت اچھا موضوع، 326 00:16:23,350 --> 00:16:26,280 جن میں سے ایک ہے منسلک کی فہرست کے ساتھ عمل trickiest چیزیں 327 00:16:26,280 --> 00:16:30,980 اشارہ کا بندوبست کرنا ہے صحیح ترتیب میں. 328 00:16:30,980 --> 00:16:34,520 آپ کے حکم سے باہر چیزوں کو منتقل، تو، آپ نے غلطی سے ختم کر سکتے ہیں 329 00:16:34,520 --> 00:16:36,050 فہرست کے باقی orphaning. 330 00:16:36,050 --> 00:16:37,300 اور یہاں اس کی ایک مثال ہے. 331 00:16:37,300 --> 00:16:40,540 تو خیال کے ساتھ جانے of-- ٹھیک ہے، ہم صرف 12 تشکیل دے دیا ہے. 332 00:16:40,540 --> 00:16:43,180 ہم نے 12 کی جا رہی ہے جانتے ہیں فہرست کے نئے سربراہ، 333 00:16:43,180 --> 00:16:47,660 اور تو کیوں ہم صرف منتقل نہیں کرتے فہرست پوائنٹر کی طرف اشارہ کرنے کے لئے. 334 00:16:47,660 --> 00:16:49,070 >> ٹھیک ہے، تو یہ اچھی بات ہے. 335 00:16:49,070 --> 00:16:51,560 تو اب جہاں 12 اگلے پوائنٹ ہے؟ 336 00:16:51,560 --> 00:16:54,580 میں ضعف ہم دیکھ سکتے ہیں، کا مطلب یہ 15 کی طرف اشارہ کریں گے کہ، 337 00:16:54,580 --> 00:16:57,250 انسانوں کے طور پر یہ ہمارے لئے بہت واضح ہے. 338 00:16:57,250 --> 00:17:00,300 کس طرح کمپیوٹر معلوم ہے؟ 339 00:17:00,300 --> 00:17:02,720 ہم کچھ بھی نہیں ہے اب 15 کی طرف اشارہ، ٹھیک ہے؟ 340 00:17:02,720 --> 00:17:05,869 >> ہم نے 15 کی طرف رجوع کرنے کی صلاحیت بھی کھو دیا ہے. 341 00:17:05,869 --> 00:17:11,460 ہم نئی تیر اگلے برابر نہیں کہہ سکتا کچھ، وہاں کچھ نہیں ہے. 342 00:17:11,460 --> 00:17:13,510 اصل میں، ہم یتیم ہے فہرست کے باقی 343 00:17:13,510 --> 00:17:16,465 ایسا کرنے سے، ہم نے اتفاقی طور پر چین ٹوٹ. 344 00:17:16,465 --> 00:17:18,089 اور ہم یقینی طور پر ایسا کرنے کے لئے نہیں کرنا چاہتا. 345 00:17:18,089 --> 00:17:20,000 >> تو واپس جاؤ اور پھر سے کوشش کریں. 346 00:17:20,000 --> 00:17:24,060 شاید صحیح کام کرنا 12 کے اگلے پوائنٹر قائم کرنے کے لئے ہے 347 00:17:24,060 --> 00:17:28,290 پہلی فہرست کے پرانے سر پر، تو ہم کی فہرست پر منتقل کر سکتے ہیں. 348 00:17:28,290 --> 00:17:30,420 اور حقیقت میں، یہ ہے کہ صحیح ترتیب ہے کہ ہم اس 349 00:17:30,420 --> 00:17:32,836 ہم جب عمل کرنے کی ضرورت اکیلے منسلک کی فہرست کے ساتھ کام کر رہے ہیں. 350 00:17:32,836 --> 00:17:36,460 ہم نے ہمیشہ مربوط کرنے کے لئے چاہتے ہیں فہرست میں نئے عنصر، 351 00:17:36,460 --> 00:17:41,010 ہم اس طرح کی لینے سے پہلے کو تبدیل کرنے کا اہم قدم 352 00:17:41,010 --> 00:17:43,360 جہاں منسلک فہرست کا سر ہے. 353 00:17:43,360 --> 00:17:46,740 ایک بار پھر، کہ اس طرح ایک بنیادی بات ہے، ہم اس کے ٹریک کھو نہیں کرنا چاہتے. 354 00:17:46,740 --> 00:17:49,310 >> تو ہم اس بات کو یقینی بنانا چاہتے ہیں سب کچھ، دوسرے کے ساتھ جکڑے ہے 355 00:17:49,310 --> 00:17:52,040 ہم اس پوائنٹر منتقل کرنے سے پہلے. 356 00:17:52,040 --> 00:17:55,300 اور اس طرح یہ صحیح ترتیب ہو جائے گا، جس کی فہرست کرنے کے لئے 12 سے متصل ہے، 357 00:17:55,300 --> 00:17:57,630 پھر فہرست 12 شروع ہوتا ہے کا کہنا ہے کہ. 358 00:17:57,630 --> 00:18:00,860 ہم فہرست 12 سے شروع ہوتی ہے کہ اگر اور پھر، فہرست کرنے کے لئے 12 سے رابطہ قائم کرنے کی کوشش کی 359 00:18:00,860 --> 00:18:02,193 ہم نے پہلے ہی کیا ہوتا ہے دیکھا ہے. 360 00:18:02,193 --> 00:18:04,920 ہم نے غلطی کی طرف سے فہرست کھو. 361 00:18:04,920 --> 00:18:06,740 >> ٹھیک ہے، تو ایک چیز کے بارے میں بات کرنے کے لئے. 362 00:18:06,740 --> 00:18:09,750 کیا ہم میں سے چھٹکارا حاصل کرنا چاہتے ہیں تو ایک پوری ایک بار میں منسلک فہرست؟ 363 00:18:09,750 --> 00:18:11,750 ایک بار پھر، ہم mallocing رہے ہیں تمام اس کی جگہ، اور ہم 364 00:18:11,750 --> 00:18:13,351 ہم کیا کر رہے ہیں جب یہ آزاد کرنے کی ضرورت. 365 00:18:13,351 --> 00:18:15,350 تو اب ہم کو خارج کرنا چاہتے ہیں پورے منسلک فہرست. 366 00:18:15,350 --> 00:18:16,850 ویسے، جو ہم کرنا چاہتے ہیں؟ 367 00:18:16,850 --> 00:18:20,460 >> ہم شہوت انگیز null پوائنٹر تک پہنچ چکے ہیں، ہم دوسری صورت میں، صرف خارج کر دیں، کو روکنے کے لئے چاہتے ہیں 368 00:18:20,460 --> 00:18:23,420 پھر فہرست کے آرام اور مجھے آزاد. 369 00:18:23,420 --> 00:18:28,890 فہرست کے باقی حذف، اور پھر موجودہ نوڈ آزاد. 370 00:18:28,890 --> 00:18:32,850 کی طرح اس آواز کرتا ہے، کیا تکنیک ہم بات کی ہے 371 00:18:32,850 --> 00:18:35,440 کے بارے میں پہلے کی طرح اس آواز کرتا ہے؟ 372 00:18:35,440 --> 00:18:39,560 تو، اور سب کو خارج کر دیں واپس آئے اور مجھ سے خارج کر دیں. 373 00:18:39,560 --> 00:18:42,380 >> یہ تکرار ہے، ہم نے کر دیا ہے تھوڑا سا چھوٹا مسئلہ، 374 00:18:42,380 --> 00:18:46,910 ہم سب کو خارج کر دیں کہہ رہے اور، تو آپ مجھ سے خارج کر سکتے ہیں. 375 00:18:46,910 --> 00:18:50,940 اور مزید سڑک کے نیچے، اس نوڈ اور سب کو خارج کر دیں، کہیں گے. 376 00:18:50,940 --> 00:18:53,940 لیکن آخر میں ہم سے ملے گی فہرست شہوت انگیز null ہے نقطہ جہاں، 377 00:18:53,940 --> 00:18:55,310 اور یہ کہ ہماری بنیاد بات ہے. 378 00:18:55,310 --> 00:18:57,010 >> تو اس پر ایک نظر ڈالیں، اور یہ کام کر سکتے ہیں کہ کس طرح. 379 00:18:57,010 --> 00:18:59,759 تو یہاں ہمارے فہرست ہے، یہ ایک ہی ہے ، ہم صرف کے بارے میں بات کر رہے تھے فہرست 380 00:18:59,759 --> 00:19:00,980 اور اقدامات ہے. 381 00:19:00,980 --> 00:19:04,200 متن کی ایک بہت، یہاں کچھ نہیں ہے لیکن امید ہے کہ تصور میں مدد ملے گی. 382 00:19:04,200 --> 00:19:08,557 >> تو ہم have-- اور میں بھی نکالا اپنے اسٹیک فریم مثال اپ 383 00:19:08,557 --> 00:19:10,890 کال پوٹ پر اپنے ویڈیو سے، اور امید ہے کہ اس کے تمام 384 00:19:10,890 --> 00:19:13,260 ایک دوسرے کے ساتھ کیا ہو رہا ہے آپ کو دکھائے گا. 385 00:19:13,260 --> 00:19:14,510 تو یہاں ہمارے pseudocode کوڈ ہے. 386 00:19:14,510 --> 00:19:17,830 ہم شہوت انگیز null تک پہنچ جائیں تو پوائنٹر،، دوسری صورت میں، کو روکنے کے 387 00:19:17,830 --> 00:19:21,320 فہرست کے باقی کو حذف، پھر موجودہ نوڈ آزاد. 388 00:19:21,320 --> 00:19:25,700 تو اب، list-- ہم ہیں کہ پوائنٹر 389 00:19:25,700 --> 00:19:28,410 میں گزر سے 12 پوائنٹس کو تباہ کرنے. 390 00:19:28,410 --> 00:19:33,340 12، شہوت انگیز null پوائنٹر نہیں ہے، تو ہم ہیں فہرست کے باقی حذف کرنے جا رہا. 391 00:19:33,340 --> 00:19:35,450 >> کیا کو خارج ہے ہم میں سے باقی ملوث؟ 392 00:19:35,450 --> 00:19:37,950 ٹھیک ہے، یہ ایک بنانے کا مطلب ہے کہہ، تباہ کرنے کے لئے کال کریں 393 00:19:37,950 --> 00:19:42,060 15 اس کا آغاز ہے ہم کو تباہ کرنا چاہتے فہرست کے باقی. 394 00:19:42,060 --> 00:19:47,480 اور اس کال کو تباہ کرنے 12 ہولڈ پر قسم کی ہے. 395 00:19:47,480 --> 00:19:52,690 اس کے لئے انتظار، وہاں منجمد ہے اپنا کام ختم کرنے کے لئے، 15 تباہ کرنے کے لئے کال. 396 00:19:52,690 --> 00:19:56,280 >> ویسے، 15، شہوت انگیز null پوائنٹر نہیں ہے، اور تو یہ کہا جا رہا ہے، ٹھیک ہے، 397 00:19:56,280 --> 00:19:58,450 اچھی طرح سے، فہرست کے باقی کو خارج. 398 00:19:58,450 --> 00:20:00,760 فہرست کے باقی شروع 9، اور تو ہم صرف گے 399 00:20:00,760 --> 00:20:04,514 آپ سب کو خارج کر دیں جب تک انتظار ہے کہ چیزیں، پھر واپس آئے اور مجھ سے خارج کر دیں. 400 00:20:04,514 --> 00:20:06,680 ویسے 9 اچھی طرح، کا کہنا ہے کہ جا رہا ہے، میں، شہوت انگیز null پوائنٹر نہیں ہوں 401 00:20:06,680 --> 00:20:09,020 تو یہاں سے باقی فہرست حذف. 402 00:20:09,020 --> 00:20:11,805 اور اس طرح کی کوشش کریں اور 13 تباہ. 403 00:20:11,805 --> 00:20:15,550 13، مجھے شہوت انگیز null پوائنٹر نہیں ہوں، کا کہنا ہے کہ ایک ہی بات، اس کے ہرن گزر. 404 00:20:15,550 --> 00:20:17,930 10، 10، شہوت انگیز null پوائنٹر نہیں ہے شہوت انگیز null پوائنٹر پر مشتمل ہے، 405 00:20:17,930 --> 00:20:20,200 لیکن 10 نہیں خود ہے شہوت انگیز null اب پوائنٹر، 406 00:20:20,200 --> 00:20:22,470 اور تو یہ بھی ہرن گزر. 407 00:20:22,470 --> 00:20:25,560 >> اور اب، اسے وہاں پوائنٹس فہرست واقعی some-- طرف اشارہ کریں گے 408 00:20:25,560 --> 00:20:28,710 میں نے تصویر میں زیادہ جگہ تھا تو، یہ کچھ بے ترتیب کی جگہ کی طرف اشارہ کریں گے 409 00:20:28,710 --> 00:20:29,960 ہم یہ کیا ہے نہیں جانتے کہ. 410 00:20:29,960 --> 00:20:34,680 یہ اگرچہ، شہوت انگیز null پوائنٹر ہے، فہرست لفظی اب یہ شہوت انگیز null اقدار مقرر کیا گیا ہے. 411 00:20:34,680 --> 00:20:36,820 یہ درست ہے کہ سرخ باکس کے اندر کی طرف اشارہ ہے. 412 00:20:36,820 --> 00:20:39,960 ہم تو، شہوت انگیز null پوائنٹر پہنچ ہم کو روکنے کے کر سکتے ہیں، اور ہم کیا کر رہے ہیں. 413 00:20:39,960 --> 00:20:46,230 >> اور تو ہے کہ جامنی رنگ کے فریم میں now-- ہے فعال فریم ہے کہ stack-- کے سب، 414 00:20:46,230 --> 00:20:47,017 لیکن یہ کیا ہے. 415 00:20:47,017 --> 00:20:48,600 ہم شہوت انگیز null پوائنٹر تک پہنچ چکے ہیں، کو روکنے کے. 416 00:20:48,600 --> 00:20:51,290 ہم، کچھ بھی نہیں ہے ہم شہوت انگیز null پوائنٹر آزاد نہیں کر سکتے ہیں، 417 00:20:51,290 --> 00:20:55,070 ہم کسی بھی malloc سے نہیں کیا خلائی، اور ہم کیا کر رہے ہیں. 418 00:20:55,070 --> 00:20:57,590 اس تقریب فریم تو تباہ، اور ہم 419 00:20:57,590 --> 00:21:00,930 ہم نے چھوڑ دیا جہاں resume-- ہم اٹھا اگلے سب سے زیادہ ایک، کے ساتھ جو 420 00:21:00,930 --> 00:21:02,807 یہاں اس گہرے نیلے فریم ہے. 421 00:21:02,807 --> 00:21:04,390 تو ہم کو چھوڑ دیا جہاں حق اٹھا. 422 00:21:04,390 --> 00:21:06,598 ہم باقی خارج فہرست پہلے ہی، تو اب ہم ہیں 423 00:21:06,598 --> 00:21:08,000 موجودہ نوڈ آزاد کرنے کے لئے جا. 424 00:21:08,000 --> 00:21:12,920 تو اب ہم اس نوڈ آزاد، اور کر سکتے ہیں ہم تقریب کے اختتام تک پہنچ گئے ہیں. 425 00:21:12,920 --> 00:21:16,810 اور تو ہے کہ تقریب فریم، تباہ کر دیا ہے اور ہم ہلکے نیلے رنگ سے ایک میں اٹھا. 426 00:21:16,810 --> 00:21:20,650 >> تو یہ میں نے پہلے ہی done-- ہے says-- ، فہرست کے باقی کو خارج تو 427 00:21:20,650 --> 00:21:23,140 موجودہ نوڈ آزاد. 428 00:21:23,140 --> 00:21:26,520 اور اب پیلے رنگ فریم ہے واپس اسٹیک کے سب سے اوپر پر. 429 00:21:26,520 --> 00:21:29,655 آپ کو دیکھ کے طور پر اور اس طرح، اب ہم ہیں دائیں سے بائیں کرنے کے لئے فہرست کو تباہ کرنے. 430 00:21:29,655 --> 00:21:33,710 431 00:21:33,710 --> 00:21:37,280 >> کیا، تاہم، کیا ہوتا ہم چیزوں کو غلط طریقے سے کیا تھا تو کیا ہوگا؟ 432 00:21:37,280 --> 00:21:39,410 بس ہم نے کوشش کی جب کی طرح ایک عنصر شامل کرنے کے لئے. 433 00:21:39,410 --> 00:21:41,909 اگر ہم چین، گڑبڑ تو ہم اشارہ مربوط نہیں کیا 434 00:21:41,909 --> 00:21:44,690 صحیح ترتیب میں، اگر ہم صرف پہلا عنصر آزاد، 435 00:21:44,690 --> 00:21:47,420 ہم صرف آزاد ہیں فہرست کے سربراہ، اب ہم 436 00:21:47,420 --> 00:21:49,642 سے رجوع کرنے کے کوئی راستہ نہیں ہے فہرست کے باقی. 437 00:21:49,642 --> 00:21:51,350 اور اس طرح ہم پڑے گا یتیم سب کچھ، 438 00:21:51,350 --> 00:21:53,880 ہم کیا ہوتا ہے ایک میموری لیک نامی. 439 00:21:53,880 --> 00:21:56,800 آپ اپنے ویڈیو سے یاد تو متحرک میموری مختص کرنے پر، 440 00:21:56,800 --> 00:21:58,650 کہ بہت اچھی بات نہیں ہے. 441 00:21:58,650 --> 00:22:00,810 >> تو کے طور پر میں نے کہا، وہاں کئی آپریشن کر رہے ہیں 442 00:22:00,810 --> 00:22:04,010 ہم کام کرنے کے لئے استعمال کرنے کی ضرورت ہے کے ساتھ مؤثر طریقے سے منسلک فہرست. 443 00:22:04,010 --> 00:22:08,430 اور تم نے ایک لپ محسوس کیا ہو سکتا ایک لنک سے ایک عنصر کو خارج 444 00:22:08,430 --> 00:22:09,064 فہرست. 445 00:22:09,064 --> 00:22:10,980 مجھے لگتا ہے کہ کیا وجہ یہ اصل میں قسم کی ہے 446 00:22:10,980 --> 00:22:14,360 حذف کرنے کے بارے میں سوچنے کے لئے مشکل ایک اکیلے سے ایک عنصر 447 00:22:14,360 --> 00:22:15,600 لنک کی فہرست. 448 00:22:15,600 --> 00:22:19,950 ہم سے زیادہ پر کرنے کے قابل ہونے کی ضرورت ہے فہرست، میں کچھ جو 449 00:22:19,950 --> 00:22:22,975 ہم ایک point-- ہم حاصل ہے اس node-- حذف کرنا چاہتے 450 00:22:22,975 --> 00:22:25,350 لیکن ترتیب میں ہم اسے تو بنانے کے لئے کوئی معلومات کھو نہ کرو، 451 00:22:25,350 --> 00:22:30,530 ہم اس سے رابطہ قائم کرنے کی ضرورت ہے یہاں زیادہ نوڈ،. 452 00:22:30,530 --> 00:22:33,390 >> تو میں نے شاید اس ظلم کیا ایک بصری نقطہ نظر سے. 453 00:22:33,390 --> 00:22:36,830 تو ہم کے آغاز پر ہیں ہماری فہرست میں، ہم، کے ذریعے آگے بڑھنے سے کر رہے ہیں 454 00:22:36,830 --> 00:22:40,510 ہم اس نوڈ کو حذف کرنا چاہتے ہیں. 455 00:22:40,510 --> 00:22:43,440 ، ہم صرف اس کو حذف تو ہم چین توڑ دیا. 456 00:22:43,440 --> 00:22:45,950 یہیں پر اس نوڈ سب کچھ سے مراد، 457 00:22:45,950 --> 00:22:48,260 یہ یہاں باہر سے چین پر مشتمل ہے. 458 00:22:48,260 --> 00:22:51,190 >> تو ہم اصل میں کیا کرنے کی ضرورت ہم اس نقطہ پر حاصل کرنے کے بعد، 459 00:22:51,190 --> 00:22:56,670 ہم ایک قدم پیچھے کرنے کی ضرورت ہے، اور اس نوڈ یہ نوڈ سے زیادہ مربوط، 460 00:22:56,670 --> 00:22:58,590 تو تو ہم کو خارج کر سکتے ہیں وسط میں ایک. 461 00:22:58,590 --> 00:23:02,120 لیکن اکیلے منسلک کی فہرست نہیں ہے ہمیں پیچھے کی طرف جانے کے لئے ایک راستہ فراہم کرتے ہیں. 462 00:23:02,120 --> 00:23:05,160 تو ہم یا تو رکھنے کے لئے کی ضرورت ہے دو اشارہ، اور ان میں منتقل 463 00:23:05,160 --> 00:23:09,527 بند قدم کی طرح، کے پیچھے ایک دیگر ہم جا، یا ایک نقطہ پر حاصل کرنے کے طور پر 464 00:23:09,527 --> 00:23:11,110 اور اس کے بعد کے ذریعے ایک دوسرے پوائنٹر بھیج. 465 00:23:11,110 --> 00:23:13,150 اور آپ کو یہ دیکھ سکتے ہیں کے طور پر ایک تھوڑا گندا حاصل کر سکتے ہیں. 466 00:23:13,150 --> 00:23:15,360 خوش قسمتی سے، ہم نے ایک اور طریقہ ہے کہ کو حل کرنے، 467 00:23:15,360 --> 00:23:17,810 جب ہم دوگنا منسلک کی فہرست کے بارے میں بات. 468 00:23:17,810 --> 00:23:20,720 >> میں ڈوگ لایڈ ہوں، اس CS50 ہے. 469 00:23:20,720 --> 00:23:22,298