Google Play badge

صف اور منسلک فہرستیں


صفیں اور منسلک فہرستیں۔

صفوں اور منسلک فہرستوں پر ہمارے سبق میں خوش آمدید۔ اس سبق میں، ہم ڈیٹا کو ذخیرہ کرنے اور ترتیب دینے کے دو آسان طریقے سیکھیں گے۔ تصور کریں کہ آپ کے پاس اسکول میں کھلونوں کے ڈبوں کی قطار یا لاکرز کی ایک قطار ہے۔ ارے اور منسلک فہرستیں اسی طرح کام کرتی ہیں۔ وہ چیزوں کو صاف ستھرا اور آسانی سے تلاش کرنے میں ہماری مدد کرتے ہیں۔ یہ سبق آسان زبان میں روزمرہ کی مثالوں کے ساتھ لکھا گیا ہے تاکہ آپ کو ان خیالات کو آسانی سے سمجھنے میں مدد ملے۔

تعارف

ڈیٹا ڈھانچے کمپیوٹرز کو معلومات کو ذخیرہ کرنے اور منظم کرنے میں مدد کرتے ہیں۔ دو اہم ڈیٹا ڈھانچے صفیں اور منسلک فہرستیں ہیں۔ آپ ایک صف کو خانوں کی ایک قطار کے طور پر سوچ سکتے ہیں، اور ایک منسلک فہرست کو خزانے کی تلاش میں منسلک سراگوں کی زنجیر کے طور پر۔ یہ دونوں چیزیں ہمیں بہت سی اشیاء، جیسے کھلونے، کتابیں، یا یہاں تک کہ آپ کے پسندیدہ اسنیکس پر نظر رکھنے میں مدد کرتی ہیں۔

ہم اس بارے میں بات کریں گے کہ ایک صف کیا ہے، منسلک فہرست کیا ہے، وہ کیسے کام کرتے ہیں، اور وہ کیسے مختلف ہیں۔ ہم حقیقی دنیا کی مثالیں بھی دیکھیں گے جو ان خیالات کو ممکن حد تک واضح کرتی ہیں۔

ایک صف کیا ہے؟

ایک صف صرف اشیاء کا مجموعہ ہے۔ یہ خانوں کی ایک قطار کی طرح ہے جہاں ہر باکس میں ایک چیز ہوتی ہے۔ مثال کے طور پر، ایک قطار میں کھڑے پانچ خانوں کے ایک سیٹ کا تصور کریں۔ آپ ہر ایک باکس کو ایک پسندیدہ کھلونا یا اسنیک ذخیرہ کرنے کے لیے استعمال کر سکتے ہیں۔

ایک صف میں ہر باکس میں ایک نمبر ہوتا ہے جسے انڈیکس کہتے ہیں۔ پہلے باکس کو عام طور پر 0 نمبر دیا جاتا ہے، اگلا باکس 1، پھر 2، وغیرہ ہوتا ہے۔ یہ نمبر آپ کو فوری طور پر ایک مخصوص شے تلاش کرنے میں مدد کرتا ہے۔ مثال کے طور پر، اگر آپ تیسرے باکس میں آئٹم چاہتے ہیں، تو آپ صرف انڈیکس 2 والے باکس کو دیکھیں۔

یہاں ایک سادہ فارمولہ ہے جس کی وضاحت کرنے کے لیے کہ ہم کسی شے کو ایک صف میں کیسے تلاش کر سکتے ہیں۔ اگر پہلا باکس ایک نقطہ آغاز پر ہے، تو کسی بھی شے کا پتہ اس طرح سوچا جا سکتا ہے:

\( \textrm{پتہ}(A(i)) = \textrm{پتہ}(A(0)) + i \times \textrm{(ایک شے کا سائز)} \)

یہ ہمیں بتاتا ہے کہ پہلے باکس سے اس باکس میں جانے کے لیے جو ہم چاہتے ہیں، آپ آگے کی ایک مخصوص تعداد کو گنتے ہیں۔

صفوں کی خصوصیات

کسی چھوٹے مووی تھیٹر میں سیٹوں جیسی صف کے بارے میں سوچئے۔ ہر سیٹ کا ایک نمبر ہوتا ہے، اور اگر آپ کو اس کا نمبر معلوم ہو تو آپ جلدی سے اپنی سیٹ پر جا سکتے ہیں۔

ایک صف کی روزانہ کی مثال

تصور کریں کہ آپ کے اسکول میں لاکرز کی ایک قطار ہے، ہر ایک کا ایک منفرد نمبر ہے۔ جب آپ اپنا بیگ اپنے لاکر میں رکھنے جاتے ہیں، تو آپ لاکر پر مخصوص نمبر استعمال کرتے ہیں۔ ایک صف میں، ہر لاکر ایک باکس کی طرح ہوتا ہے، اور نمبر آپ کو صحیح جگہ بتاتا ہے جہاں آپ کا بیگ—یا ڈیٹا — رکھا گیا ہے۔

لنکڈ لسٹ کیا ہے؟

ایک منسلک فہرست اشیاء کو ذخیرہ کرنے کا ایک اور طریقہ ہے۔ یہ ایک صف سے مختلف ہے کیونکہ یہ مقررہ خانوں کی لمبی قطار استعمال نہیں کرتا ہے۔ اس کے بجائے، یہ نوڈس نامی خصوصی خانوں کا استعمال کرتا ہے۔ ہر نوڈ میں ایک آئٹم ہوتا ہے اور اس میں ایک پوائنٹر بھی ہوتا ہے جو آپ کو بتاتا ہے کہ اگلا نوڈ کہاں ہے۔

تصور کریں کہ آپ خزانے کی تلاش میں ہیں۔ آپ کو ملنے والا ہر اشارہ آپ کو بتاتا ہے کہ اگلا اشارہ کہاں چھپا ہوا ہے۔ ایک منسلک فہرست میں، ہر نوڈ ان سراگوں میں سے ایک کی طرح ہے۔ جب آپ پہلے اشارے سے شروع کرتے ہیں، تو آپ ایک نوڈ سے دوسرے نوڈ تک پوائنٹر کی پیروی کرتے ہیں جب تک کہ آپ کو اپنی ضرورت کی چیز نہ مل جائے۔

آپ ہر نوڈ کو ایک چھوٹے لفافے کے طور پر سوچ سکتے ہیں۔ لفافے میں ایک کارڈ (ڈیٹا) اور ایک نوٹ (پوائنٹر) بھی ہوتا ہے۔ یہ نوٹ آپ کو بتاتا ہے کہ کون سا لفافہ لائن میں آگے آتا ہے۔

لنکڈ لسٹ کیسے کام کرتی ہے۔

آئیے لکھنے کا ایک آسان طریقہ دیکھتے ہیں کہ نوڈ کیا ہے:

نوڈ = {ڈیٹا، پوائنٹر)

نوڈ میں "ڈیٹا" ذخیرہ شدہ معلومات ہے، اور "پوائنٹر" ایک تیر کی طرح ہے جو آپ کو اگلے نوڈ کی طرف لے جاتا ہے۔ ایک صف کے برعکس، منسلک فہرست کے لیے تمام نوڈس کو میموری میں ایک دوسرے کے ساتھ ہونے کی ضرورت نہیں ہوتی ہے۔ وہ کہیں بھی ہو سکتے ہیں، جب تک کہ پوائنٹر ان کو جوڑتے ہیں۔

لنک شدہ فہرستوں کی اقسام

منسلک فہرستوں کے مختلف انداز ہیں۔ یہاں تین عام قسمیں ہیں:

ایک لنک شدہ فہرست کی حقیقی دنیا کی مثال

تصور کریں کہ آپ خزانے کے نقشے کی پیروی کر رہے ہیں۔ نقشے پر ہر قدم آپ کو بتاتا ہے کہ اگلا قدم کہاں ہے۔ یہاں تک کہ اگر آپ ایک اضافی اشارہ شامل کرتے ہیں یا ایک کو ہٹا دیتے ہیں، تب بھی آپ ہر کارڈ پر اشارہ پڑھ کر اس کی پیروی کر سکتے ہیں۔ اس طرح ایک منسلک فہرست کام کرتی ہے۔ ہر نوڈ (یا اشارہ) اگلے ایک سے منسلک ہوتا ہے، جس سے آپ کو فہرست میں ایک وقت میں ایک قدم آگے بڑھنے دیتا ہے۔

صفوں اور لنک شدہ فہرستوں کے درمیان موازنہ

ارے اور منسلک فہرستیں دونوں اشیاء کو ذخیرہ کرنے میں ہماری مدد کرتی ہیں، لیکن وہ اسے مختلف طریقوں سے کرتی ہیں۔ یہاں کچھ موازنہ ہیں:

فائدے اور نقصانات

ہر ڈیٹا ڈھانچے کے اپنے اچھے حصے اور اس کے چیلنجز ہوتے ہیں۔ ان کو سمجھنے سے آپ کو استعمال کرنے کے لیے بہترین کا انتخاب کرنے میں مدد ملتی ہے۔

صفیں:

فوائد:

نقصانات:

منسلک فہرستیں:

فوائد:

نقصانات:

Arrays کے ساتھ کام کرنا

آئیے دیکھتے ہیں کہ ہم کس طرح ایک ارے کو آسان طریقے سے استعمال کر سکتے ہیں۔ فرض کریں کہ آپ اپنے پانچ پسندیدہ رنگوں کو ذخیرہ کرنا چاہتے ہیں۔ آپ پانچ خانوں کے ساتھ ایک صف بناتے ہیں۔ پھر آپ نے ہر رنگ کو ترتیب سے ایک باکس میں ڈال دیا۔ مثال کے طور پر:

اب، اگر آپ جاننا چاہتے ہیں کہ باکس 2 میں کون سا رنگ ہے، تو آپ صرف اس باکس کو دیکھیں اور آپ کو "سبز" نظر آئے گا۔ یہ آسان رسائی ایک صف کو استعمال کرنے کے بہترین حصوں میں سے ایک ہے۔

لنک شدہ فہرستوں کے ساتھ کام کرنا

اب، آئیے ایک منسلک فہرست کو دیکھیں۔ اس کو خزانے کی تلاش کے طور پر سوچیں جہاں آپ ایک اشارہ کے ساتھ شروع کرتے ہیں اور پھر اگلا تلاش کرنے کے لیے ہدایات پر عمل کریں۔ ایک منسلک فہرست میں، ہم ایک نوڈ کے ساتھ شروع کرتے ہیں جس میں کچھ ڈیٹا ہوتا ہے۔ اس نوڈ میں ایک پوائنٹر ہے جو دکھاتا ہے کہ کون سا نوڈ اگلا آتا ہے۔

مثال کے طور پر، تصور کریں کہ آپ کے پاس ایک منسلک فہرست میں تین نوڈس ہیں جو ایک دلچسپ کہانی سناتے ہیں:

آپ نوڈ 1 سے شروع کرتے ہیں اور نوڈ 2، پھر نوڈ 3 پر پوائنٹر (اشتہار) کی پیروی کرتے ہیں۔ یہاں تک کہ اگر آپ ان میں سے کسی کے درمیان نیا اشارہ شامل کرنا چاہتے ہیں، تو آپ کو صرف چند پوائنٹرز کو تبدیل کرنے کی ضرورت ہے۔ یہ منسلک فہرستوں کو بہت لچکدار بناتا ہے۔

اریوں اور لنک شدہ فہرستوں کا تصور کرنا

آپ کے ذہن میں ان ڈیٹا ڈھانچے کی تصویر بنانا مددگار ہے۔ ایک شیلف پر واضح، لیبل والے خانوں کی ایک لمبی قطار کے طور پر ایک صف کی تصویر بنائیں۔ ہر باکس میں کچھ نہ کچھ ہوتا ہے اور اس کی ایک مقررہ جگہ ہوتی ہے۔ اب، کارڈ کی ایک تار کے طور پر ایک منسلک فہرست کی تصویر بنائیں. ہر کارڈ پر ایک نوٹ ہوتا ہے جس میں بتایا جاتا ہے کہ اگلا کارڈ کہاں چھپا ہوا ہے۔ ایک صف میں، آپ کسی مخصوص باکس میں اس کے نمبر سے براہ راست کود سکتے ہیں۔ ایک منسلک فہرست میں، آپ کو ترتیب سے کارڈز کی پیروی کرنے کی ضرورت ہے۔

روزانہ کی درخواستیں۔

صفوں کا استعمال روزمرہ کی بہت سی چیزوں میں ہوتا ہے۔ مثال کے طور پر، ایک کیلنڈر کا تصور کریں۔ ایک کیلنڈر میں ہر ہفتے میں دنوں کی ایک مقررہ تعداد ہوتی ہے، اور ان دنوں کو ایک قطار میں ترتیب دیا جاتا ہے۔ جب آپ کیلنڈر دیکھتے ہیں، تو آپ کو بخوبی معلوم ہوتا ہے کہ کون سا دن کس جگہ پر ہے۔

منسلک فہرستوں کا استعمال اس وقت کیا جاتا ہے جب وقت کے ساتھ ساتھ آئٹمز کی تعداد تبدیل ہو سکتی ہے۔ آئس کریم ٹرک پر انتظار کر رہے لوگوں کی ایک قطار کے بارے میں سوچو. کبھی نئے لوگ لائن میں شامل ہوتے ہیں، اور کبھی کوئی چھوڑ دیتا ہے۔ لائن ایک نیا مقررہ ڈھانچہ بنائے بغیر بڑھ سکتی ہے یا سکڑ سکتی ہے۔ یہ منسلک فہرستوں کو ایسے منظرناموں میں بہت مفید بناتا ہے جہاں چیزیں اکثر بدل جاتی ہیں۔

ڈیٹا سٹوریج کو حسب ضرورت بنانا

صفوں اور منسلک فہرستوں کے درمیان انتخاب اس بات پر منحصر ہے کہ آپ کو اپنے ڈیٹا کے ساتھ کیا کرنا ہے۔ اگر آپ جانتے ہیں کہ آپ کے پاس ہمیشہ آئٹمز کی ایک مقررہ تعداد ہوگی — جیسے ہفتے کے دن — تو ایک صف بہت موزوں ہے۔ تاہم، اگر ڈیٹا کی مقدار میں تبدیلی آتی ہے اور آپ کو ایک ایسے ڈھانچے کی ضرورت ہے جو آسانی سے ڈھال سکے، تو ایک منسلک فہرست بہتر انتخاب ہوگی۔

مثال کے طور پر، کمپیوٹر گیم میں، ہر سطح کے اسکور کو ذخیرہ کرنے کے لیے ایک صف کا استعمال کیا جا سکتا ہے کیونکہ لیولز کی تعداد مقرر ہے۔ دوسری طرف، ایک منسلک فہرست کا استعمال کھلاڑیوں کے اعمال یا چالوں کی فہرست کو منظم کرنے کے لیے کیا جا سکتا ہے، جو کہ کھیل کے جاری رہنے کے ساتھ بڑھ سکتی ہے۔

کس طرح فیصلہ کریں کہ کون سا استعمال کرنا ہے۔

جب آپ کو اشیاء تک ان کی پوزیشن کے مطابق تیزی سے رسائی کی ضرورت ہوتی ہے، تو صفیں بہترین انتخاب ہوتی ہیں۔ اس کی وجہ یہ ہے کہ اگر آپ کو اس کا نمبر معلوم ہے تو آپ براہ راست کسی بھی جگہ پر جاسکتے ہیں۔ تاہم، جب آپ کو بار بار آئٹمز شامل کرنے یا ہٹانے کی ضرورت ہوتی ہے، تو منسلک فہرستیں زیادہ مددگار ثابت ہوتی ہیں کیونکہ وہ آپ کو بہت سے آئٹمز کو ادھر ادھر منتقل کیے بغیر فہرست کو تبدیل کرنے کی اجازت دیتی ہیں۔

اس کے بارے میں اس طرح سوچیں: اگر آپ کے پاس صفحات کی ایک مقررہ تعداد کے ساتھ اسٹیکر البم ہے، تو ایک صف اس البم کی طرح ہے۔ لیکن اگر آپ کے پاس پوسٹ کارڈز کا ایک بڑھتا ہوا ذخیرہ ہے جسے آپ بلیٹن بورڈ میں شامل کرتے ہیں، تو ایک منسلک فہرست اس طرح کی ہے کیونکہ آپ پورے بورڈ کو دوبارہ ترتیب دیئے بغیر آسانی سے دوسروں کے درمیان ایک نیا پوسٹ کارڈ شامل کر سکتے ہیں۔

کلیدی نکات اور خلاصہ

آئیے اپنے سبق کے اہم نکات کا جائزہ لیتے ہیں:

صفیں:

منسلک فہرستیں:

فرق اور استعمال:

خلاصہ میں، ارے اور منسلک فہرستیں ڈیٹا کو منظم کرنے کے لیے استعمال ہونے والے دو اہم ڈیٹا ڈھانچے ہیں۔ صفیں مقررہ، نمبر والے خانوں کی ایک قطار کی طرح کام کرتی ہیں، جبکہ منسلک فہرستیں خزانے کی تلاش کی طرح کام کرتی ہیں جہاں ہر قدم آپ کو بتاتا ہے کہ آگے کہاں جانا ہے۔ دونوں طریقوں کی اپنی طاقتیں ہیں اور کام کی ضروریات کی بنیاد پر مختلف حالات میں استعمال ہوتے ہیں۔

ڈیٹا اسٹوریج کے ان دو طریقوں کو سمجھنا بہت مفید ہے۔ بہت سے کمپیوٹر پروگرام، گیمز اور ایپلیکیشنز پس منظر میں صفوں اور منسلک فہرستوں کا استعمال کرتے ہیں۔ یہ سیکھ کر کہ وہ کیسے کام کرتے ہیں، آپ کمپیوٹر کے ڈیٹا کو منظم اور منظم کرنے کے طریقے کے بارے میں بصیرت حاصل کرتے ہیں۔

یاد رکھیں: جب ڈھانچہ ٹھیک ہو جاتا ہے تو صفیں آسان اور تیز ہوتی ہیں، جب کہ ڈیٹا میں تبدیلی کے وقت منسلک فہرستیں لچک پیش کرتی ہیں۔ چاہے آپ لاکرز کی قطار کا تصور کریں یا سراگوں کے خزانے کی پگڈنڈی کا، یہ تصورات ہمیں یہ سمجھنے میں مدد کرتے ہیں کہ معلومات کو کیسے ذخیرہ کیا جاتا ہے اور ہر روز استعمال کیا جاتا ہے۔

اس سبق نے آپ کو واضح اندازہ دیا ہے کہ صفیں اور منسلک فہرستیں کیا ہیں۔ جیسا کہ آپ کمپیوٹر سائنس سیکھنا اور دریافت کرنا جاری رکھیں گے، یہ بنیادی خیالات آپ کو مزید پیچیدہ موضوعات کو سمجھنے میں مدد کریں گے۔ وہ زیادہ جدید ڈیٹا ڈھانچے اور الگورتھم کے بنیادی بلاکس ہیں۔

کلیدی نکات کا خلاصہ:

صفوں اور منسلک فہرستوں پر اس سبق کو پڑھنے کے لیے آپ کا شکریہ۔ ہم امید کرتے ہیں کہ آپ نے ڈیٹا کو صاف اور آسان طریقے سے ذخیرہ کرنے کے ان طریقوں کے بارے میں سیکھ کر لطف اٹھایا ہوگا۔ جیسے جیسے آپ بڑھتے اور مزید سیکھتے ہیں، ان بنیادی ڈھانچے کو یاد رکھیں اور یہ کہ وہ کمپیوٹر کو موثر طریقے سے کام کرنے میں کس طرح مدد کرتے ہیں۔

Download Primer to continue