FSc Part 1 Computer Science Chapter 4 Complete Guide Book — Computational Structures

FSc Part 1 Computer Science Chapter 4 — Computational Structures
Home > PunjabTest.com > FSc Part 1 > Computer Science — all chapters > Chapter 4: Computational Structures

اس chapter میں topics (Topics in this chapter)

  1. 4.1 — Computational Structures aur Lists ka Taaruf
  2. 4.1.1.2 — List ki Properties: Dynamic Size, Index aur Order
  3. 4.1.1.3 — List Operations: Insert, Delete اور Search (پوری trace کے ساتھ)
  4. 4.1.1.4 — Lists ke Istemal: Data rakhna aur Stack/Queue banana
  5. 4.1.2 — Stacks: Sirf oopar se dalna, sirf oopar se uthana (LIFO)
  6. 4.1.2.1 — Stack Operations: Push, Pop اور Python میں پوری trace
  7. 4.1.3 — Queues: Pehle aao, pehle jao (FIFO) — bank ki line
  8. 4.1.3.1 — Queue Operations: Enqueue, Dequeue aur Python ka Queue code
  9. 4.1.4 — Trees: Root se phailti hui branches — family tree ki misaal
  10. 4.1.4.1 — Tree ki Properties: Root, Nodes, Edges, Leaf aur Height
  11. 4.1.4.2 — Trees ke Istemal: Backup, Deletion, Hierarchy aur Faislay
  12. 4.1.5 — Graphs ka Taaruf: Shehron, doston aur networks ka jaal
  13. 4.1.5.1–4.1.5.2 — Graph ki Characteristics aur Properties: Degree, Weight, Direction
  14. 4.1.5.3 — Graph ki Types: Directed, Undirected aur Weighted (Fig 4.4–4.5)
  15. 4.1.6 — صحیح Structure کا چناؤ: Compare کرو, پھر combine کرو
  16. 📝 Official Exercise Questions — with Answers
  17. 📌 Chapter Summary & Guidance
4.1 — Computational Structures aur Lists ka Taaruf۴.۱ — کمپیوٹیشنل سٹرکچرز اور لسٹوں کا تعارف
🏷 Tags: computational structure, data structure, list, element, index, Python list, square brackets
ENGLISH

Computer میں data کو صرف رکھنا کافی نہیں ہوتا — اسے ایسے انداز میں رکھنا پڑتا ہے کہ ضرورت پڑھنے پر وہ فوراً مل بھی جائے اور اس میں تبدیلی بھی آسانی سے ہو سکے. Data کو ترتیب دینے کے اسی طریقے کو computational structure (ya data structure) کہتے ہیں. سوچو, کتابوں کو اگر almari میں بے-ترتیب phenk دیا جائے تو ایک کتاب ڈھونڈنا مشکل ہو جائے گا; لیکن اگر وہ subject کے حساب سے لگی ہوں تو کام آساں ہو جاتا ہے. بالکل اسی طرح program میں data کی ترتیب ہی اس کی رفتار اور آسانی طے کرتی ہے.

اس chapter میں ہم پانچ بنیادی structures پڑھیں گے: lists, stacks, queues, trees aur graphs. ان میں سے سب سے پہلا اور سب سے زیادہ استعمال ہونے والا structure list ہے. List ایک ایسی ترتیب ہے جس میں کئی چیزیں ایک خاص sequence میں رکھی جاتی ہیں. List کی ہر چیز کو element کہتے ہیں, اور ہر element کی ایک index (position) ہوتی ہے جس سے اسے سیدھا پکڑا جا سکتا ہے.

Python میں list بنانے کے لیے square brackets [ ] استعمال ہوتے ہیں اور items کو comma سے الگ کیا جاتا ہے. کتاب کی مثال دیکھو:

Code:
# Create a list of items
items = ["Decorations", "Snacks", "Cold drinks", "Plates", "Balloon"]
# Print the list
print(items)

Output: ['Decorations', 'Snacks', 'Cold drinks', 'Plates', 'Balloon']

Yahan items list کا نام ہے. Text والی چیزیں quotes میں لکھی گئی ہیں اور ہر item comma سے جدا ہے. print(items) پوری list ایک ہی line میں دکھا دیتا ہے. یاد رکھو, Python میں counting 0 سے شروع ہوتی ہے — اس لیے "Decorations" index 0 پر ہے, "Snacks" index 1 پر, اور آخری item "Balloon" index 4 پر.

اردو

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

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

پائتھن میں لسٹ بنانے کے لیے مربع بریکٹس [ ] استعمال ہوتے ہیں اور آئٹمز کو کوما سے الگ کیا جاتا ہے۔ کتاب کی مثال دیکھو: items = ["Decorations", "Snacks", "Cold drinks", "Plates", "Balloon"] — یہاں items لسٹ کا نام ہے، ٹیکسٹ والی چیزیں کوٹس میں لکھی گئی ہیں۔ print(items) پوری لسٹ ایک ہی لائن میں دکھا دیتا ہے۔ یاد رکھو، پائتھن میں گنتی 0 سے شروع ہوتی ہے — اس لیے "Decorations" انڈیکس 0 پر ہے اور آخری آئٹم "Balloon" انڈیکس 4 پر۔

DecorationsSnacksCold drinksPlatesBalloonindex 0index 1index 2index 3index 4items = [ "Decorations", "Snacks", "Cold drinks", "Plates", "Balloon" ]
List samjho: پانچ items, پانچ index — پہلا item ہمیشہ index 0 پر ہوتا ہے, آخری index 4 پر.
4.1.1.2 — List ki Properties: Dynamic Size, Index aur Order۴.۱.۱.۲ — لسٹ کی خصوصیات: ڈائنامک سائز، انڈیکس اور ترتیب
🏷 Tags: dynamic size, index-based access, ordered collection, append, list properties
ENGLISH

List کی تین خاص properties ہیں, اور انہی کی وجہ سے وہ اتنی مفید ہے. پہلی: Dynamic Size — Python کی list کا size fixed نہیں ہوتا. تم بعد میں نئے items add کر سکتے ہو یا پرانے hata سکتے ہو, اور list خود-ba-خود اپنے size کو adjust کر لیتی ہے. کسی نئی list بنانے کی ضرورت نہیں پڑتی; وہی list بڑھتی یا گھٹتی رہتی ہے.

Doosri: Index-Based Access — ہر item کی ایک fixed position ہوتی ہے. پہلا item index 0, دوسرا index 1, تیسرا index 2, اور اسی طرح آگے. اس کا مطلب ہے کہ تم پوری list کو chaanay کے بجائے سیدھا items[2] لکھ کر "Cold drinks" تک pahonch سکتے ہو. یہ سیدھی رسائی (direct access) list کی سب سے بڑی طاقت ہے.

Teesri: Ordered Collection — جس ترتیب سے تم items add کرتے ہو, وہی ترتیب محفوظ رہتی ہے. اگر "Buy drinks" پہلے لکھا گیا تو وہ پہلے ہی رہیگا, جب تک تم خود اسے move نہ کرو. اس لیے list ان کاموں کے لیے بہترین ہے جہاں ترتیب matter کرتی ہے — جیسے تو-دو list, shopping list یا students کی attendance.

اردو

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

دوسری: انڈیکس بیسڈ ایکسیس — ہر آئٹم کی ایک فکسڈ پوزیشن ہوتی ہے۔ پہلا آئٹم انڈیکس 0، دوسرا انڈیکس 1، تیسرا انڈیکس 2، اور اسی طرح آگے۔ اس کا مطلب ہے کہ تم پوری لسٹ کو چھانے کے بجائے سیدھا items[2] لکھ کر "Cold drinks" تک پہنچ سکتے ہو۔ یہ سیدھی رسائی لسٹ کی سب سے بڑی طاقت ہے۔

تیسری: آرڈرڈ کلیکشن — جس ترتیب سے تم آئٹمز شامل کرتے ہو، وہی ترتیب محفوظ رہتی ہے۔ اگر "Buy drinks" پہلے لکھا گیا تو وہ پہلے ہی رہے گا، جب تک تم خود اسے موو نہ کرو۔ اس لیے لسٹ ان کاموں کے لیے بہترین ہے جہاں ترتیب اہم ہوتی ہے — جیسے ٹو ڈو لسٹ، شاپنگ لسٹ یا طلبہ کی حاضری۔

3 items ki list+ 2 items →5 items ki list (khud barh gayi)Dynamic size: list خود اپنا size بدل لیتی ہے — نئی list بنانے کی ضرورت نہیں.
Properties samjho: list کا size بدل سکتا ہے, ہر item کا index ہوتا ہے, اور ترتیب ہمیشہ وہی رہتی ہے جس میں items ڈلے گئے تھے.
۴.۱.۱.۳ — لسٹ آپریشنز: انسرٹ، ڈیلیٹ اور سرچ (مکمل ٹریس کے ساتھ)
🏷 Tags: insert(), remove(), pop(), in keyword, list operations, searching
ENGLISH

1. Insertion — insert() se kisi bhi jagah item dalna. کتاب کی party-list مثال کو step by step دیکھو:

Code:
party_list = ["Buy drinks", "Buy decorations", "Buy snacks", "Buy cold drinks"]
party_list.insert(0, "Invite friends")  # add Invite friends at start
print(party_list)

Sahi output: ['Invite friends', 'Buy drinks', 'Buy decorations', 'Buy snacks', 'Buy cold drinks']

insert(0, ...) کا پہلا number بتاتا ہے kahan ڈالنا ہے اور دوسرا kya ڈالنا ہے. Index 0 کا مطلب سب سے شروع, اس لیے "Invite friends" سب سے پہلے آ گیا اور باقی سب items ایک-ایک position آگے کھسک گئے. ⚠️ کتاب میں note کرو: printed page 57 پر اس code کا output غلط چھپا ہے — اس میں "Invite friends" نظر نہیں آتا اور پرانی list ہی دکھائی گئی ہے. صحیح output وہی ہے جو اوپر دیا گیا ہے, کیوں کے insert() کا کام ہی item کو شامل کرنا ہے.

2. Deletion — do tareeqay. (a) Value se — remove(): party_list.remove("Buy snacks") پہلی دفعہ ملنے والا "Buy snacks" hata دیتا ہے, چاہے وہ کسی بھی index پر ہو. (b) Index se — pop(): party_list.pop(0) index 0 والا item hata دیتا ہے. کتاب کی مثال میں list ["Invite friends", "Buy decorations", "Buy cold drinks"] thi; pop(0) ne "Invite friends" hataya to baaqi reh gaya ['Buy decorations', 'Buy cold drinks'].

3. Searching — ان keyword سے check کرنا. if "Buy cold drinks" in party_list: صرف یہ پوچھتا ہے کہ item list میں ہے یا نہیں — True یا False. کتاب کے code میں یہ item موجود تھا, اس لیے output آیا: "Buy cold drinks is on the list." یہ search پوری list میں item ڈھونڈتا ہے, index یاد رکھنے کی ضرورت نہیں.

اردو

۱۔ انسرشن — insert() سے کسی بھی جگہ آئٹم ڈالنا۔ کتاب کی پارٹی لسٹ مثال کو قدم بہ قدم دیکھو: party_list.insert(0, "Invite friends") میں پہلا نمبر بتاتا ہے کہاں ڈالنا ہے اور دوسرا کیا ڈالنا ہے۔ انڈیکس 0 کا مطلب سب سے شروع، اس لیے "Invite friends" سب سے پہلے آ گیا اور باقی سب آئٹمز ایک ایک پوزیشن آگے کھسک گئے۔ ⚠️ کتاب میں نوٹ کرو: پرنٹڈ صفحہ 57 پر اس کوڈ کا آؤٹ پٹ غلط چھپا ہے — اس میں "Invite friends" نظر نہیں آتا اور پرانی لسٹ ہی دکھائی گئی ہے۔ صحیح آؤٹ پٹ وہی ہے جو اوپر دیا گیا ہے، کیونکہ insert() کا کام ہی آئٹم کو شامل کرنا ہے۔

۲۔ ڈیلیشن — دو طریقے۔ (الف) ویلیو سے — remove(): party_list.remove("Buy snacks") پہلی دفعہ ملنے والا "Buy snacks" ہٹا دیتا ہے، چاہے وہ کسی بھی انڈیکس پر ہو۔ (ب) انڈیکس سے — pop(): party_list.pop(0) انڈیکس 0 والا آئٹم ہٹا دیتا ہے۔ کتاب کی مثال میں pop(0) نے "Invite friends" ہٹایا تو باقی رہ گیا ['Buy decorations', 'Buy cold drinks']۔

۳۔ سرچنگ — in کی ورڈ سے چیک کرنا۔ if "Buy cold drinks" in party_list: صرف یہ پوچھتا ہے کہ آئٹم لسٹ میں ہے یا نہیں — True یا False۔ کتاب کے کوڈ میں یہ آئٹم موجود تھا، اس لیے آؤٹ پٹ آیا: "Buy cold drinks is on the list."

Invite friendsBuy drinksBuy decorationsBuy snacksBuy cold drinksinsert(0, "Invite friends") → sab se pehle aa gayaremove("Buy snacks") اسے value سے ہٹاتا ہے • pop(0) index 0 سے ہٹاتا ہے
Operations samjho: insert() جگہ بتاتا ہے, remove() نام سے ہٹاتا ہے, pop() index سے ہٹاتا ہے, اور 'ان' صرف موجودگی check کرتا ہے.
4.1.1.4 — Lists ke Istemal: Data rakhna aur Stack/Queue banana۴.۱.۱.۴ — لسٹوں کے استعمال: ڈیٹا رکھنا اور اسٹیک/کیو بنانا
🏷 Tags: applications of lists, data storage, stack implementation, queue implementation
ENGLISH

List صرف کتابی چیز نہیں — روزمرہ کے programs میں ہر جگہ نظر آتی ہے. پہلا بڑا استعمال Data Storage and Manipulation ہے: records, entries اور values کا ایک مجموعہ رکھنا. Students کے نام, test کے marks, دکان کے items — یہ سب lists میں رکہے جاتے ہیں کیوں کے ان میں insertion, deletion اور access تینوں آساں ہیں.

دوسرا استعمال تھوڑا گہرا ہے لیکن بہت اہم: lists سے ہی stacks اور queues بنائے جاتے ہیں. آگے اس chapter میں تم دیکھو گے کے stack کا push/pop Python میں list کے append() aur pop() سے ہی ہوتا ہے. مطلب list ایک بنیادی اینٹ (building block) ہے — اسے سمجھ لیا تو آگے کے structures سمجھنا آدھا آساں ہو جاتا ہے. اسی لیے کتاب lists کو "primitive computational structures" میں سب سے پہلے رکھتی ہے.

اردو

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

دوسرا استعمال تھوڑا گہرا ہے لیکن بہت اہم: لسٹس سے ہی اسٹیکس اور کیوز بنائے جاتے ہیں۔ آگے اس باب میں تم دیکھو گے کہ اسٹیک کا پش/پاپ پائتھن میں لسٹ کے append() اور pop() سے ہی ہوتا ہے۔ مطلب لسٹ ایک بنیادی اینٹ (بلڈنگ بلاک) ہے — اسے سمجھ لیا تو آگے کے سٹرکچرز سمجھنا آدھا آسان ہو جاتا ہے۔ اسی لیے کتاب لسٹس کو "پرمیٹیو کمپیوٹیشنل سٹرکچرز" میں سب سے پہلے رکھتی ہے۔

LIST[ naam, marks, ... ]→STACKappend / pop→QUEUEput / getList بنیاد ہے — اسی پر stack اور queue کھرے ہوتے ہیں.
Istemaal samjho: list data سنبھالتی ہے, اور وہی list آگے چل کر stack اور queue بنانے کے کام آتی ہے.
4.1.2 — Stacks: Sirf oopar se dalna, sirf oopar se uthana (LIFO)۴.۱.۲ — اسٹیکس: صرف اوپر سے ڈالنا، صرف اوپر سے اٹھانا (LIFO)
🏷 Tags: stack, LIFO, Last-In First-Out, top, push, pop, stack of books
ENGLISH

Stack کو سمجھنے کا سب سے آساں طریقہ کتابوں کا ڈھیر ہے — کتاب کی Figure 4.1 بھی یہی دکھاتی ہے. تم نئی کتاب ہمیشہ oopar رکھتے ہو, اور جب کوئی کتاب چاہیے ہوتی ہے تو سب سے اوپر والی ہی اٹھاتے ہو; نیچے والی کتاب تک pahonchnay کے لیے اوپر والی hatani پڑتی ہے. Stack میں insertion اور deletion دونوں صرف ایک ہی end پر ہوتے ہیں, جسے top کہتے ہیں.

Is usool ka naam LIFO — Last-In, First-Out ہے. مطلب جو item سب سے آخر میں آیا, وہ سب سے پہلے باہر جائے گا. کتابوں کی مثال میں: اگر تم نے پہلے Book A رکھی پھر Book B, تو Book B اوپر ہوگی اور پہلے وہی اٹھے گی. یہ اصول computer میں ہر جگہ ہے — browser کا Back button, undo (Ctrl+Z), اور function calls کا حساب, سب stack پر چلتے ہیں.

اردو

اسٹیک کو سمجھنے کا سب سے آسان طریقہ کتابوں کا ڈھیر ہے — کتاب کی فگر 4.1 بھی یہی دکھاتی ہے۔ تم نئی کتاب ہمیشہ اوپر رکھتے ہو، اور جب کوئی کتاب چاہیے ہوتی ہے تو سب سے اوپر والی ہی اٹھاتے ہو؛ نیچے والی کتاب تک پہنچنے کے لیے اوپر والی ہٹانی پڑتی ہے۔ اسٹیک میں انسرشن اور ڈیلیشن دونوں صرف ایک ہی اینڈ پر ہوتے ہیں، جسے ٹاپ کہتے ہیں۔

اس اصول کا نام LIFO — Last-In, First-Out ہے۔ مطلب جو آئٹم سب سے آخر میں آیا، وہ سب سے پہلے باہر جائے گا۔ کتابوں کی مثال میں: اگر تم نے پہلے Book A رکھی پھر Book B، تو Book B اوپر ہوگی اور پہلے وہی اٹھے گی۔ یہ اصول کمپیوٹر میں ہر جگہ ہے — براؤزر کا Back بٹن، انڈو (Ctrl+Z)، اور فنکشن کالز کا حساب، سب اسٹیک پر چلتے ہیں۔

Book B (TOP)Book A← pehle uthegi (LIFO)آخر میں آئی Book B, سب سے پہلے باہر — یہی LIFO ہے.Neeche wali Book A tak sirf Book B hatanay ke baad pahonch sakte ho.
Stack samjho: کتابوں کا ڈھیر دیکھو — جو سب سے آخر میں اوپر رکھی گئی, وہی سب سے پہلے اٹھائی جائے گی.
۴.۱.۲.۱ — اسٹیک آپریشنز: پش، پاپ اور پائتھن میں مکمل ٹریس
🏷 Tags: push operation, pop operation, append, stack code, trace
ENGLISH

Stack ke sirf do bunyadi operations ہیں. Push: item کو stack کے top پر add کرنا. Pop: top سے item کو remove کرنا. Python میں stack بنانے کے لیے الگ کوئی چیز نہیں چاہیے — ایک خالی list ہی stack بن جاتی ہے, append() push کا کام کرتا ہے اور pop() pop ka.

کتاب کے code کو line by line trace کرو:

Code (printed p. 59):
stack_of_books = []                   # khaali stack
stack_of_books.append('Book A')    # push → ['Book A']
stack_of_books.append('Book B')    # push → ['Book A', 'Book B']
top_book = stack_of_books.pop()     # pop → 'Book B' nikla
print(stack_of_books)               # ['Book A'] reh gaya

Dekho, pop() نے کوئی index نہیں manga — اس نے خود top والی چیز, یعنی آخری item 'Book B', نکال لی. کتاب کا جملہ یہی کہتا ہے: "the last book added is the first one taken off" — یہی LIFO کی زندہ مثال ہے. اگر دوبارہ pop کیا جائے تو اب 'Book A' نکلے گی, کیوں کے اب وہی top پر ہے.

اردو

اسٹیک کے صرف دو بنیادی آپریشنز ہیں۔ پش: آئٹم کو اسٹیک کے ٹاپ پر شامل کرنا۔ پاپ: ٹاپ سے آئٹم کو ہٹانا۔ پائتھن میں اسٹیک بنانے کے لیے الگ کوئی چیز نہیں چاہیے — ایک خالی لسٹ ہی اسٹیک بن جاتی ہے، append() پش کا کام کرتا ہے اور pop() پاپ کا۔

کتاب کے کوڈ کو لائن بہ لائن ٹریس کرو: stack_of_books = [] سے خالی اسٹیک بنتی ہے، append('Book A') سے لسٹ ['Book A'] ہو جاتی ہے، append('Book B') سے ['Book A', 'Book B']۔ پھر pop() نے کوئی انڈیکس نہیں مانگا — اس نے خود ٹاپ والی چیز، یعنی آخری آئٹم 'Book B'، نکال لی، اور آخر میں ['Book A'] رہ گیا۔ کتاب کا جملہ یہی کہتا ہے: آخری کتاب جو رکھی گئی، وہی پہلے اٹھائی گئی — یہی LIFO کی زندہ مثال ہے۔

[ ] khaali→push A, push B→pop → B niklaآخر میں رہ گیا: ['Book A'] — اب top پر Book A ہے.
Push-pop samjho: append() سے چیز اوپر جاتی ہے, pop() سے اوپر والی چیز باہر آتی ہے — بیچ یا نیچے سے کچھ نہیں نکلتا.
4.1.3 — Queues: Pehle aao, pehle jao (FIFO) — bank ki line۴.۱.۳ — کیوز: پہلے آؤ، پہلے جاؤ (FIFO) — بینک کی لائن
🏷 Tags: queue, FIFO, First-In First-Out, front, back, rear, bank queue
ENGLISH

Queue کا مطلب ہے line — بالکل ویسی line جیسی bank یا ticket counter کے سامنے لگتی ہے (کتاب کی Figure 4.2). جو شخص سب سے پہلے line میں لگا, اسے سب سے پہلے serve کیا جاتا ہے. Computer کی queue بھی یہی کرتی ہے: پہلے آیا ہوا item پہلے باہر جاتا ہے.

Is usool ka naam FIFO — First-In, First-Out ہے. Stack سے فرق سمجھ لو: stack میں دونوں کام ایک ہی end (top) پر ہوتے تھے; queue میں do alag ends ہوتے ہیں — نئے items back (rear) سے آتے ہیں اور پرانے items front سے نکلتے ہیں. بیچ میں گھسنا یا بیچ سے نکالنا allowed نہیں. Printer کی line, ticket booking اور کسی بھی "پہلے آؤ, پہلے pao" والی situation میں queue ہی استعمال ہوتی ہے.

اردو

کیو کا مطلب ہے لائن — بالکل ویسی لائن جیسی بینک یا ٹکٹ کاؤنٹر کے سامنے لگتی ہے (کتاب کی فگر 4.2)۔ جو شخص سب سے پہلے لائن میں لگا، اسے سب سے پہلے سروس دی جاتی ہے۔ کمپیوٹر کی کیو بھی یہی کرتی ہے: پہلے آیا ہوا آئٹم پہلے باہر جاتا ہے۔

اس اصول کا نام FIFO — First-In, First-Out ہے۔ اسٹیک سے فرق سمجھ لو: اسٹیک میں دونوں کام ایک ہی اینڈ (ٹاپ) پر ہوتے تھے؛ کیو میں دو الگ اینڈز ہوتے ہیں — نئے آئٹمز بیک (رئیر) سے آتے ہیں اور پرانے آئٹمز فرنٹ سے نکلتے ہیں۔ بیچ میں گھسنا یا بیچ سے نکلنا الاؤڈ نہیں۔ پرنٹر کی لائن، ٹکٹ بکنگ اور کسی بھی "پہلے آؤ، پہلے پاؤ" والی صورتحال میں کیو ہی استعمال ہوتی ہے۔

FRONT2nd3rdBACK← یہاں سے نکلتا ہےنیا یہاں آتا ہے →Bank ki line: pehle aaya, pehle gaya — FIFO
Queue samjho: line میں سب سے آگے والا پہلے serve ہوتا ہے, نیا آنے والا سب سے پیچھے لگتا ہے.
4.1.3.1 — Queue Operations: Enqueue, Dequeue aur Python ka Queue code۴.۱.۳.۱ — کیو آپریشنز: این کیو، ڈی کیو اور پائتھن کا کیو کوڈ
🏷 Tags: enqueue, dequeue, peek, Queue module, put(), get(), queue operations
ENGLISH

Queue کے دو بنیادی operations ہیں. Enqueue: item کو line کے آخر (back) میں لگانا. Dequeue: front سے item کو serve کر کے نکالنا. ان کے علاوہ تین مددگار کام بھی ہوتے ہیں: queue خالی ہے یا نہیں check کرنا, front والا item baghair nikale dekhna (peek), اور queue کا size معلوم کرنا.

کتاب کا Python code (printed p. 60) line by line trace کرو:

Code:
from queue import Queue
q = Queue()                # nayi khaali queue
q.put("Ahmed")        # enqueue → [Ahmed]
q.put("Fatima")       # enqueue → [Ahmed, Fatima]
front_person = q.queue[0]  # peek → "Ahmed" (nikala nahi)
removed_person = q.get()  # dequeue → "Ahmed" nikla
q.put("Sara")          # enqueue → [Fatima, Sara]

دیکھو, peek نے صرف بتایا کے front پر Ahmed ہے, اسے ہٹایا نہیں; ہٹایا تب جب get() چلا. اور سارا آخر میں لگی, فاطمہ کے پیچھے — اس لیے updated queue [Fatima, Sara] bani. ⚠️ Naam ka note: عام زبان میں ان operations کو enqueue/dequeue کہتے ہیں, لیکن Python کے queue module میں وہی کام put() aur get() سے ہوتا ہے — exercise کے سوال اسی لیے دونوں نام استعمال کرتے ہیں.

اردو

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

کتاب کا پائتھن کوڈ (پرنٹڈ صفحہ 60) لائن بہ لائن ٹریس کرو: q.put("Ahmed") سے لائن [Ahmed] بنی، q.put("Fatima") سے [Ahmed, Fatima]۔ q.queue[0] نے صرف بتایا کہ فرنٹ پر Ahmed ہے، اسے ہٹایا نہیں؛ ہٹایا تب جب q.get() چلا۔ اور Sara آخر میں لگی، Fatima کے پیچھے — اس لیے اپڈیٹڈ کیو [Fatima, Sara] بنی۔ ⚠️ نام کا نوٹ: عام زبان میں ان آپریشنز کو این کیو/ڈی کیو کہتے ہیں، لیکن پائتھن کے queue ماڈیول میں وہی کام put() اور get() سے ہوتا ہے۔

AhmedFatima→get → Ahmedput Saraآخر میں: [فاطمہ, سارا] — فاطمہ اب front پر ہے.
Enqueue-dequeue samjho: put() پیچھے لگاتا ہے, get() آگے سے نکلتا ہے, اور peek صرف دکھاتا ہے, ہٹاتا نہیں.
4.1.4 — Trees: Root se phailti hui branches — family tree ki misaal۴.۱.۴ — ٹریز: روٹ سے پھیلتی ہوئی برانچز — فیملی ٹری کی مثال
🏷 Tags: tree, root node, node, branching, hierarchy, family tree, parent-child
ENGLISH

List اور queue میں چیزیں ایک سیدھی line میں ہوتی ہیں — پیچھے ایک, آگے ایک. Tree اس سے بالکل مختلف ہے. Tree میں data ایک main point (root node) سے شروع ہوتا ہے اور پھر branches کی طرح پھیلتا ہے. ہر piece of information کو node کہتے ہیں, اور ایک node کئی دوسرے nodes سے جڑ سکتا ہے.

کتاب کی Figure 4.3 (family tree) اسے سب سے اچھی طرح سمجھاتی ہے: سب سے اوپر dada-دادی (ancestors) root کی طرح ہیں, ان کے نیچے father-mother اور uncle-aunt, اور ان کے نیچے بچے — brother, sister, "Me" اور cousins. یہ parent-child رشتہ list میں ٹھیک سے نہیں دیکھایا جا سکتا, کیوں کے list میں ہر item کا صرف ایک پیچھے اور ایک آگے ہوتا ہے; tree میں ایک parent کے کئی children ہو سکتے ہیں. اسی لیے hierarchical data — family tree, company کا organisation chart, computer کے folders — tree میں رکھا جاتا ہے.

اردو

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

کتاب کی فگر 4.3 (فیملی ٹری) اسے سب سے اچھی طرح سمجھاتی ہے: سب سے اوپر دادا دادی (اینسیسٹرز) روٹ کی طرح ہیں، ان کے نیچے فادر مدر اور انکل آنٹ، اور ان کے نیچے بچے — برادر، سسٹر، "Me" اور کزنز۔ یہ پیرنٹ چائلڈ رشتہ لسٹ میں ٹھیک سے نہیں دکھایا جا سکتا، کیونکہ لسٹ میں ہر آئٹم کا صرف ایک پیچھے اور ایک آگے ہوتا ہے؛ ٹری میں ایک پیرنٹ کے کئی چلڈرن ہو سکتے ہیں۔ اسی لیے ہائرارکیکل ڈیٹا — فیملی ٹری، کمپنی کا آرگنائزیشن چارٹ، کمپیوٹر کے فولڈرز — ٹری میں رکھا جاتا ہے۔

ROOTFatherUncleBrotherMe
Tree samjho: اوپر root, نیچے branches — ایک parent کے کئی children ہو سکتے ہیں, یہی tree کو line سے الگ کرتا ہے.
4.1.4.1 — Tree ki Properties: Root, Nodes, Edges, Leaf aur Height۴.۱.۴.۱ — ٹری کی خصوصیات: روٹ، نوڈز، ایجز، لیف اور ہائیٹ
🏷 Tags: root node, edge, leaf node, height, balanced tree, tree properties
ENGLISH

1. Root Node: tree کا سب سے پہلا یا سب سے اوپر والا node. جیسے computer میں میں folder جس میں باقی تمام folders اور files ہوتی ہیں, ویسے ہی root سے پورا tree شروع ہوتا ہے. Root کا کوئی parent نہیں ہوتا.

2. Edges aur Nodes: nodes tree کے individual elements ہیں, اور ان کو جوڑنے والی lines کو edges کہتے ہیں. جس node کے کوئی child nodes نہ ہوں, اسے leaf کہتے ہیں — بالکل اس file کی طرح جو folder میں ہے لیکن اس کے اندر کوئی اور file نہیں. Family tree میں سب سے نیچے والے بچے leaves ہیں.

3. Height: root سے سب سے دور والے leaf تک کا سب سے لمبا راستہ. یہ بتاتا ہے کہ tree کتنا گہرا یا اونچا ہے. ⚠️ Counting note: کتاب height کو "longest path" کہتی ہے, اور exercise کا MCQ 5 اسی بنیاد پر edges کی تعداد کو صحیح جواب مانتا ہے (root سے deepest node تک edges). کچھ کتابیں nodes گن کر height بتاتی ہیں — وہ ایک زیادہ ہوگی — اس لیے exam میں کتاب کی definition (edges) استعمال کرو.

4. Balanced Trees: aik tree balanced کہلاتا ہے جب اس کی left اور right branches کی height تقریبا برابر ہو. اگر ایک طرف بہت لمبی اور دوسری طرف بہت چھوٹی ہو تو tree unbalanced کہلائے گا اور search دھیمی ہو سکتی ہے.

اردو

۱۔ روٹ نوڈ: ٹری کا سب سے پہلا یا سب سے اوپر والا نوڈ۔ جیسے کمپیوٹر میں مین فولڈر جس میں باقی تمام فولڈرز اور فائلز ہوتی ہیں، ویسے ہی روٹ سے پورا ٹری شروع ہوتا ہے۔ روٹ کا کوئی پیرنٹ نہیں ہوتا۔

۲۔ ایجز اور نوڈز: نوڈز ٹری کے انفرادی ایلیمنٹس ہیں، اور ان کو جوڑنے والی لائنز کو ایجز کہتے ہیں۔ جس نوڈ کے کوئی چائلڈ نوڈز نہ ہوں، اسے لیف کہتے ہیں — بالکل اس فائل کی طرح جو فولڈر میں ہے لیکن اس کے اندر کوئی اور فائل نہیں۔ فیملی ٹری میں سب سے نیچے والے بچے لیوز ہیں۔

۳۔ ہائیٹ: روٹ سے سب سے دور والے لیف تک کا سب سے لمبا راستہ۔ یہ بتاتا ہے کہ ٹری کتنا گہرا یا اونچا ہے۔ ⚠️ گنتی کا نوٹ: کتاب ہائیٹ کو "longest path" کہتی ہے، اور ایکسرسائز کا MCQ 5 اسی بنیاد پر ایجز کی تعداد کو صحیح جواب مانتا ہے (روٹ سے ڈیپسٹ نوڈ تک ایجز)۔ کچھ کتابیں نوڈز گن کر ہائیٹ بتاتی ہیں — وہ ایک زیادہ ہوگی — اس لیے امتحان میں کتاب کی تعریف (ایجز) استعمال کرو۔

۴۔ بیلنسڈ ٹریز: ایک ٹری بیلنسڈ کہلاتا ہے جب اس کی لیفٹ اور رائٹ برانچز کی ہائیٹ تقریباً برابر ہو۔ اگر ایک طرف بہت لمبی اور دوسری طرف بہت چھوٹی ہو تو ٹری ان بیلنسڈ کہلائے گا اور سرچ دھیمی ہو سکتی ہے۔

RootedgeNodeNodeLeafHeight = root sesab se door leaftak edges
Tree parts samjho: root سب سے اوپر, edge جوڑنے والی line, leaf وہ node جس کا کوئی child نہ ہو, اور height root سے دور ترین leaf تک کا راستہ ہے.
4.1.4.2 — Trees ke Istemal: Backup, Deletion, Hierarchy aur Faislay۴.۱.۴.۲ — ٹریز کے استعمال: بیک اپ، ڈیلیشن، ہائرارکی اور فیصلے
🏷 Tags: pre-order traversal, post-order traversal, file system, decision tree, hierarchical data
ENGLISH

Trees صرف family tree بنانے کے لیے نہیں — computer کے اندر روز کام آتے ہیں. 1. File Systems (Pre-order): جب file system کا backup بنایا جاتا ہے تو pre-order traversal استعمال ہوتی ہے — پہلے root (directory) visit کرو, پھر recursively اس کے اندر کی چیزیں. اس طرح directory اپنے contents سے پہلے backup ہو جاتی ہے, جو backup کی ترتیب کے لیے ضروری ہے.

2. File System Deletion (Post-order): delete kartay waqt ulta tareeqa — post-order traversal. پہلے تمام sub-directories اور files delete کرو, پھر parent directory. اگر پہلے parent delete کر دیا جائے تو اندر کی چیزیں پھنس جائیں گی; post-order اسی غلطی سے بچاتا ہے.

3. Hierarchical Data Representation: organisation charts اور family trees جیسے data جن میں اوپر-نیچے کا رشتہ ہو, tree میں سب سے صاف نظر آتے ہیں. 4. Decision Making: decision trees میں ہر node ایک شرط ہوتی ہے اور ہر branch ایک ممکن نتیجہ — algorithm شرط در شرط آگے بڑھ کر فیصلہ کرتا ہے.

اردو

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

۲۔ فائل سسٹم ڈیلیشن (پوسٹ آرڈر): ڈیلیٹ کرتے وقت الٹا طریقہ — پوسٹ آرڈر ٹریورسل۔ پہلے تمام سب ڈائریکٹریز اور فائلز ڈیلیٹ کرو، پھر پیرنٹ ڈائریکٹری۔ اگر پہلے پیرنٹ ڈیلیٹ کر دیا جائے تو اندر کی چیزیں پھنس جائیں گی؛ پوسٹ آرڈر اسی غلطی سے بچاتا ہے۔

۳۔ ہائرارکیکل ڈیٹا ریپریزنٹیشن: آرگنائزیشن چارٹس اور فیملی ٹریز جیسے ڈیٹا جن میں اوپر نیچے کا رشتہ ہو، ٹری میں سب سے صاف نظر آتے ہیں۔ ۴۔ ڈیسیژن میکنگ: ڈیسیژن ٹریز میں ہر نوڈ ایک شرط ہوتی ہے اور ہر برانچ ایک ممکن نتیجہ — الگورتھم شرط بہ شرط آگے بڑھ کر فیصلہ کرتا ہے۔

1 Root243Pre-order: Root → pehle branch → phir doosri • Post-order is ka ulta: leaves pehle
Traversal samjho: backup میں root پہلے (pre-order), deletion میں leaves پہلے (post-order) — ترتیب ہی فرق پیداکرنے کرتی ہے.
4.1.5 — Graphs ka Taaruf: Shehron, doston aur networks ka jaal۴.۱.۵ — گرافس کا تعارف: شہروں، دوستوں اور نیٹ ورکس کا جال
🏷 Tags: graph, vertex, vertices, edge, network, connections, social network
ENGLISH

Tree میں ہر چیز کی ایک جگہ ہوتی ہے — اوپر root, نیچے branches. Graph اس پابندی کو توڑ دیتا ہے. Graph ایک ایسا structure ہے جو vertices (nodes) کے ایک set اور ان کو جوڑنے والی edges پر مشتمل ہوتا ہے. Vertices کچھ بھی ہو سکتے ہیں — شہر, log, websites — اور edges ان کے درمیان رشتہ یا راستہ بتاتی ہیں.

کتاب کی مثال لو: Pakistan کے تمام شہروں کا نقشہ بناؤ. ہر شہر ایک vertex, aur shehron ke darmiyan har road aik edge. Social network میں بھی یہی ہے: ہر شخص ایک vertex, اور دوستی ایک edge. Tree کے bar-عکس graph کا کوئی ایک "root" نہیں ہوتا اور کوئی hierarchy نہیں ہوتی — کوئی بھی vertex کسی بھی vertex سے جڑ سکتا ہے, اور یہ جال (web) جیسا دکھتا ہے.

اردو

ٹری میں ہر چیز کی ایک جگہ ہوتی ہے — اوپر روٹ، نیچے برانچز۔ گراف اس پابندی کو توڑ دیتا ہے۔ گراف ایک ایسا سٹرکچر ہے جو ورٹیسز (نوڈز) کے ایک سیٹ اور ان کو جوڑنے والی ایجز پر مشتمل ہوتا ہے۔ ورٹیسز کچھ بھی ہو سکتے ہیں — شہر، لوگ، ویب سائٹس — اور ایجز ان کے درمیان رشتہ یا راستہ بتاتی ہیں۔

کتاب کی مثال لو: پاکستان کے تمام شہروں کا نقشہ بناؤ۔ ہر شہر ایک ورٹیکس، اور شہروں کے درمیان ہر روڈ ایک ایجز۔ سوشل نیٹ ورک میں بھی یہی ہے: ہر شخص ایک ورٹیکس، اور دوستی ایک ایجز۔ ٹری کے برعکس گراف کا کوئی ایک "روٹ" نہیں ہوتا اور کوئی ہائرارکی نہیں ہوتی — کوئی بھی ورٹیکس کسی بھی ورٹیکس سے جڑ سکتا ہے، اور یہ جال (ویب) جیسا دکھتا ہے۔

LahoreIsbKhiہر شہر = vertex • ہر road = edge • کوئی root نہیں, کوئی hierarchy نہیں
Graph samjho: شہر vertex, road edge — اور یہ جال کسی ایک root سے شروع نہیں ہوتا, ہر طرف پھیلا ہوتا ہے.
4.1.5.1–4.1.5.2 — Graph ki Characteristics aur Properties: Degree, Weight, Direction۴.۱.۵.۱–۴.۱.۵.۲ — گراف کی خصوصیات: ڈگری، ویٹ، ڈائریکشن
🏷 Tags: degree, weight, direction, directed edge, undirected edge, graph properties
ENGLISH

Graph کو سمجھنے کے لیے تین لفظ کافی ہیں. Degree: کسی vertex سے کتنی edges جڑی ہوئی ہیں, وہی اس vertex کی degree ہے. کتاب کی مثال: اگر ایک شہر تین دوسرے شہروں سے جڑا ہے تو اس vertex کی degree 3 ہے. Degree بتاتی ہے کہ وہ point کتنا "connected" ہے.

Weight: کچھ graphs میں ہر edge پر ایک number لکھا ہوتا ہے — distance, وقت یا cost. مثال: دو شہروں کے درمیان road 50 kilometre لمبی ہے تو اس edge کا weight 50 ہوگا. Weight والے graphs سے shortest یا cheapest راستہ نکالا جاتا ہے.

Direction: edge ایک طرف کی ہو سکتی ہے یا دونوں طرف کی. Directed edge one-way ہوتی ہے — شہر A سے شہر B تک road ہے, اس کا مطلب یہ نہیں کہ B سے A تک بھی وہی road ہے. Undirected edge two-way ہوتی ہے — دونوں طرف سفر ممکن ہے. (کتاب میں 4.1.5.1 "Characteristics" کے نام پر کوئی الگ list نہیں دی گئی; اصل تفصیل 4.1.5.2 Properties میں ہے, اس لیے دونوں یہاں ایک ساتھ سمجھائی گئی ہیں.)

اردو

گراف کو سمجھنے کے لیے تین لفظ کافی ہیں۔ ڈگری: کسی ورٹیکس سے کتنی ایجز جڑی ہوئی ہیں، وہی اس ورٹیکس کی ڈگری ہے۔ کتاب کی مثال: اگر ایک شہر تین دوسرے شہروں سے جڑا ہے تو اس ورٹیکس کی ڈگری 3 ہے۔ ڈگری بتاتی ہے کہ وہ پوائنٹ کتنا "کنیکٹڈ" ہے۔

ویٹ: کچھ گرافس میں ہر ایجز پر ایک نمبر لکھا ہوتا ہے — ڈسٹنس، وقت یا لاگت۔ مثال: دو شہروں کے درمیان روڈ 50 کلومیٹر لمبی ہے تو اس ایجز کا ویٹ 50 ہوگا۔ ویٹ والے گرافس سے شارٹسٹ یا چیپسٹ راستہ نکالا جاتا ہے۔

ڈائریکشن: ایجز ایک طرف کی ہو سکتی ہے یا دونوں طرف کی۔ ڈائریکٹڈ ایجز ون وے ہوتی ہے — شہر A سے شہر B تک روڈ ہے، اس کا مطلب یہ نہیں کہ B سے A تک بھی وہی روڈ ہے۔ ان ڈائریکٹڈ ایجز ٹو وے ہوتی ہے — دونوں طرف سفر ممکن ہے۔ (کتاب میں 4.1.5.1 "Characteristics" کے نام پر کوئی الگ لسٹ نہیں دی گئی؛ اصل تفصیل 4.1.5.2 Properties میں ہے، اس لیے دونوں یہاں ایک ساتھ سمجھائی گئی ہیں۔)

City3 edges → degree 3Weight misaal: edge par 50 = 50 km ka faasla • Teer wali edge = one-way
Properties samjho: degree گن لو کے کتنی edges جڑی ہیں, weight پڑھ لو کے فاصلہ کتنا ہے, اور تیر دیکھ لو کے راستہ one-way ہے یا two-way.
4.1.5.3 — Graph ki Types: Directed, Undirected aur Weighted (Fig 4.4–4.5)۴.۱.۵.۳ — گراف کی اقسام: ڈائریکٹڈ، ان ڈائریکٹڈ اور ویٹڈ (فگر ۴.۴–۴.۵)
🏷 Tags: directed graph, undirected graph, weighted graph, Figure 4.4, Figure 4.5
ENGLISH

1. Directed Graphs: جن میں edges کی direction ہوتی ہے — وہ ایک vertex سے دوسرے تک ایک خاص طرف جاتی ہیں. کتاب کی Figure 4.4 ایک directed weighted graph ہے: B→A (10), A→C (12), A→D (60), C→D (32), C→B (20), E→A (7). اب کتاب کی مثال حل کرو: کیا تم A سے سیدھا B جا سکتے ہو? نہیں — A سے نکلنے والی edges صرف C اور D کی طرف جاتی ہیں, B کی طرف کوئی تیر نہیں. A سے B جانے کے لیے راستہ A→C→B ہے, جس کا total weight 12 + 20 = 32 بنتا ہے.

2. Undirected Graphs: جن میں edges کی کوئی direction نہیں ہوتی — connection ہے تو دونوں طرف سفر ممکن ہے. Figure 4.5 میں A–B, B–C, B–D, B–E, A–E, C–D, D–E سب بغیر تیر کے ہیں. کتاب کی مثال: اگر Person A, Person B کا دوست ہے تو Person B بھی Person A کا دوست ہے — دوستی one-way نہیں ہوتی, اس لیے undirected graph ٹھیک ہے.

3. Weighted Graphs: جن میں ہر edge پر weight (distance, time ya cost) لکھا ہوتا ہے — جیسا Figure 4.4 میں ہے. شہر کے نقشے کی مثال لو: ہر road پر اس کا فاصلہ یا travel time لکھا ہو تو تم shortest یا quickest راستہ chun سکتے ہو. Directed/undirected بتاتا ہے kis taraf جا سکتے ہو, weighted بتاتا ہے kitni cost par.

اردو

۱۔ ڈائریکٹڈ گرافس: جن میں ایجز کی ڈائریکشن ہوتی ہے — وہ ایک ورٹیکس سے دوسرے تک ایک خاص طرف جاتی ہیں۔ کتاب کی فگر 4.4 ایک ڈائریکٹڈ ویٹڈ گراف ہے: B→A (10)، A→C (12)، A→D (60)، C→D (32)، C→B (20)، E→A (7)۔ اب کتاب کی مثال حل کرو: کیا تم A سے سیدھا B جا سکتے ہو؟ نہیں — A سے نکلنے والی ایجز صرف C اور D کی طرف جاتی ہیں، B کی طرف کوئی تیر نہیں۔ A سے B جانے کے لیے راستہ A→C→B ہے، جس کا ٹوٹل ویٹ 12 + 20 = 32 بنتا ہے۔

۲۔ ان ڈائریکٹڈ گرافس: جن میں ایجز کی کوئی ڈائریکشن نہیں ہوتی — کنکشن ہے تو دونوں طرف سفر ممکن ہے۔ فگر 4.5 میں A–B، B–C، B–D، B–E، A–E، C–D، D–E سب بغیر تیر کے ہیں۔ کتاب کی مثال: اگر Person A، Person B کا دوست ہے تو Person B بھی Person A کا دوست ہے — دوستی ون وے نہیں ہوتی، اس لیے ان ڈائریکٹڈ گراف ٹھیک ہے۔

۳۔ ویٹڈ گرافس: جن میں ہر ایجز پر ویٹ (ڈسٹنس، ٹائم یا لاگت) لکھا ہوتا ہے — جیسا فگر 4.4 میں ہے۔ شہر کے نقشے کی مثال لو: ہر روڈ پر اس کا فاصلہ یا ٹریول ٹائم لکھا ہو تو تم شارٹسٹ یا کوئکسٹ راستہ چن سکتے ہو۔ ڈائریکٹڈ/ان ڈائریکٹڈ بتاتا ہے کس طرف جا سکتے ہو، ویٹڈ بتاتا ہے کتنی لاگت پر۔

AB→Directed: sirf A→BABUndirected: dono tarafWeighted: edge پر number = فاصلہ/وقت/cost (جیسا Fig 4.4 میں 10, 12, 60...)A→C→B = 12 + 20 = 32 • A سے سیدھا B کا کوئی تیر نہیں
Types samjho: تیر ہے تو directed, تیر نہیں تو undirected, number ہے تو weighted — اور A سے B سیدھا جانے کا راستہ Fig 4.4 میں ہے ہی نہیں.
۴.۱.۶ — صحیح سٹرکچر کا چناؤ: موازنہ کرو، پھر کمبائن کرو
🏷 Tags: choosing data structure, compare structures, LIFO vs FIFO, tree vs graph, real-world applications
ENGLISH

Chapter کے Student Learning Outcomes میں ایک بات خاص ہے: صرف structures کے نام یاد کرنا کافی نہیں — maslay ke hisaab se sahi structure chunna آنا چاہیے. یہ section کتاب کے SLOs اور introduction سے لیا گیا خلاصہ ہے (کتاب میں اس کے لیے کوئی الگ heading نہیں ہے, اس لیے اسے derived guidance سمجھو).

سیدھا اصول یہ ہے: tartib wali list چاہیے تو list; aakhri aaya pehle jaye (undo, back button) to stack; pehle aaya pehle jaye (ticket line, printer) to queue; oopar-neechay ka rishta (folders, family) to tree; jaal jaisa rishta (dosti, roads, networks) تو graph. اور اکثر ایک مسئلہ ایک structure سے حل نہیں ہوتا — مثال کے طور پر ایک network app میں graph roads بتائے گا اور queue requests کو ترتیب سے چلائے گی. Structures کو combine کرنا ہی اصل programming ہے.

اردو

باب کے اسٹوڈنٹ لرننگ آؤٹکمز میں ایک بات خاص ہے: صرف سٹرکچرز کے نام یاد کرنا کافی نہیں — مسئلے کے حساب سے صحیح سٹرکچر چننا آنا چاہیے۔ یہ سیکشن کتاب کے SLOs اور انٹروڈکشن سے لیا گیا خلاصہ ہے (کتاب میں اس کے لیے کوئی الگ ہیڈنگ نہیں ہے، اس لیے اسے ڈیرائیوڈ گائیڈنس سمجھو)۔

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

List: tartibStack: LIFOQueue: FIFOTree: hierarchyGraph: jaal / networkPehle masla dekho, phir structure chuno — aur zaroorat par do structures mila lo.
Chunao samjho: مسئلہ بتائے گا کے list چاہیے یا stack, queue یا tree, یا graph — structure مسئلے کا غلام ہے, الٹا نہیں.
📝 Official Exercise Questions — with Answers📝 کتاب کی مشق — جوابات کے ساتھ
KITAB KI EXERCISE

Below are all questions of the chapter exercise from Unit 4 of the official book (printed pages 65–66): 6 multiple-choice, 6 short and 5 long questions = 22 answer blocks (long questions کے English اور Urdu جواب الگ-الگ blocks میں دیے گئے ہیں). تھے book has no inquisitive, review or numerical section ان this unit, so none اس invented here. MCQ keys book کے final Answers section (printed p. 141, Unit 4) سے cross-check کی گئی ہیں: 1-b, 2-c, 3-b, 4-c, 5-a, 6-c. جہاں جواب derived ہے یا کتاب میں غلطی ہے, وہاں answer میں صاف لکھا گیا ہے.

Multiple Choice Questionsکثیر الانتخابی سوالات

1. The function used to add an item at the end of a list in Python:

Answer / جواب

Answer: (b) append() — append() list کے آخر میں item جوڑتا ہے; insert() کسی خاص index پر ڈالتا ہے, remove() ہٹاتا ہے اور pop() index سے نکلتا ہے. append() لسٹ کے آخر میں آئٹم جوڑتا ہے؛ insert() کسی خاص انڈیکس پر ڈالتا ہے، remove() ہٹاتا ہے اور pop() انڈیکس سے نکالتا ہے۔

2. The purpose of the in keyword used with a Python list:

Answer / جواب

Answer: (c) Checks if an item exists in the list — ان صرف موجودگی check کرتا ہے (True/False); length کے لیے len() ہوتا ہے, add کے لیے append()/insert() اور remove کے لیے remove()/pop(). in صرف موجودگی چیک کرتا ہے (True/False)؛ لمبائی کے لیے len() ہوتا ہے، شامل کرنے کے لیے append()/insert() اور ہٹانے کے لیے remove()/pop()۔

3. An operation that removes an item from the top of the stack:

Answer / جواب

Answer: (b) Pop — Pop top سے item نکلتا ہے; push top پر ڈالتا ہے; peek صرف دیکھتا ہے, ہٹاتا نہیں. Pop ٹاپ سے آئٹم نکالتا ہے؛ Push ٹاپ پر ڈالتا ہے؛ Peek صرف دیکھتا ہے، ہٹاتا نہیں۔

4. The operation used to add an item to a queue:

Answer / جواب

Answer: (c) Enqueue — Enqueue back پر item لگاتا ہے; dequeue front سے نکلتا ہے; peek صرف front دکھاتا ہے. Enqueue بیک پر آئٹم لگاتا ہے؛ Dequeue فرنٹ سے نکالتا ہے؛ Peek صرف فرنٹ دیکھتا ہے۔

5. True statement about the height of a tree:

Answer / جواب

Answer: (a) Number of edges from the root to the deepest node — کتاب height کو root سے farthest leaf تک longest path کہتی ہے اور اسے edges میں گنتی ہے; nodes گننے پر جواب ایک زیادہ آتا, اس لیے (b) غلط ہے. کتاب ہائیٹ کو روٹ سے فارتھسٹ لیف تک لانگسٹ پاتھ کہتی ہے اور اسے ایجز میں گنتی ہے؛ نوڈز گننے پر جواب ایک زیادہ آتا، اس لیے (b) غلط ہے۔

6. A scenario where a graph data structure is most suitable:

Answer / جواب

Answer: (c) Representing connections in a social network — تو-دو list کے لیے list اور customers کی line کے لیے queue بہتر ہے; social network کا جال جیسا رشتہ صرف graph ٹھیک سے دکھاتے ہے. ٹو ڈو لسٹ کے لیے لسٹ اور کسٹمرز کی لائن کے لیے کیو بہتر ہے؛ سوشل نیٹ ورک کا جال جیسا رشتہ صرف گراف ٹھیک سے دکھاتا ہے۔

Short Questionsمختصر سوالات
1. Explain how the 'insert()' function works in Python lists. Provide an example.

insert(index, item) list میں item کو کسی خاص index پر ڈالتا ہے اور باقی items کو ایک position آگے کھسکا دیتا ہے. مثال: party_list = ["Buy drinks", "Buy decorations"] par party_list.insert(0, "Invite friends") chalanay se list ['Invite friends', 'Buy drinks', 'Buy decorations'] بن جاتی ہے. یاد رکھو, کتاب کے printed page 57 پر اس مثال کا output غلط چھپا ہے — صحیح output میں 'Invite friends' سب سے پہلے ضرور آتا ہے. insert() آئٹم کو کسی خاص انڈیکس پر ڈالتا ہے اور باقی آئٹمز کو ایک پوزیشن آگے کھسکا دیتا ہے۔

2. Explain the potential issues which could arise when two variables reference the same list in a program? Provide an example.

⚠️ Derived answer — کتاب کے اس chapter میں aliasing پر کوئی dedicated passage نہیں ہے. جب دو variables ایک ہی list کی طرف اشارہ کرتے ہیں, مثلاً a = [1, 2, 3]; b = a, to b الگ copy نہیں بناتا — دونوں ایک ہی list ہیں. پھر b.append(4) کرنے سے a bhi [1, 2, 3, 4] ہو جائے گا, کیوں کے change ایک ہی list میں ہوا. مسئلہ یہ ہے کہ programmer سمجھتا ہے کہ صرف ایک variable بدلہ ہے, لیکن دوسرا بھی بدل جاتا ہے. حل: اصلی copy کے لیے b = a.copy() ya b = a[:] likho. دو ویری ایبلز ایک ہی لسٹ کی طرف اشارہ کریں تو ایک میں تبدیلی دوسرے میں بھی نظر آتی ہے، کیونکہ دونوں ایک ہی لسٹ ہیں۔

3. Define a stack and explain the Last-In, First-Out (LIFO) principle.

Stack ایک ایسی data structure ہے جس میں insertion اور deletion صرف ایک end — top — پر ہوتے ہیں. LIFO کا مطلب ہے Last-In, First-Out: جو item سب سے آخر میں آیا, وہ سب سے پہلے باہر جائے گا. کتابوں کے ڈھیر کی مثال: Book A کے اوپر Book B رکھی تو پہلے Book B اٹھے گی, پھر Book A. Python میں push append() se aur pop pop() سے ہوتا ہے. اسٹیک میں انسرشن اور ڈیلیشن صرف ٹاپ پر ہوتے ہیں، اور LIFO کا مطلب ہے جو آخر میں آیا وہ پہلے باہر جائے گا۔

4. Differentiate between the Enqueue and Dequeue operations of queue.

Enqueue item کو queue کے back (aakhir) میں لگاتا ہے — line میں نیا شخص پیچھے لگتا ہے. Dequeue front (shuru) سے item کو نکلتا ہے — line میں سب سے آگے والا serve ہوتا ہے. Enqueue size بڑھاتا ہے, dequeue size ghatata ہے; دونوں مل کر FIFO اصول بناتے ہیں. Python کے queue module میں یہی کام put() (enqueue) aur get() (dequeue) سے ہوتا ہے. Enqueue آئٹم کو پیچھے لگاتا ہے اور Dequeue آگے سے نکالتا ہے؛ دونوں مل کر FIFO اصول بناتے ہیں۔

5. Name two basic operations performed on stack.

Stack کے دو بنیادی operations ہیں: 1. Push — item کو top پر add کرنا; 2. Pop — top سے item کو remove کرنا. (Peek — top کو بغیر نکالے دیکھنا — ایک مددگار operation ہے, لیکن کتاب بنیادی operations کے طور پر صرف push اور pop گنواتی ہے.) اسٹیک کے دو بنیادی آپریشنز پش اور پاپ ہیں — پش اوپر ڈالتا ہے، پاپ اوپر سے نکالتا ہے۔

6. What is difference between enqueue() and dequeue().

⚠️ Naam ka note: کتاب کے queue code میں یہ کام put() aur get() سے ہوتا ہے; enqueue/dequeue انہی کے عام نام ہیں. Enqueue = item کو back میں شامل کرنا; Dequeue = front سے item کو نکالنا. فرق صرف end کا ہے — ایک اندر لاتا ہے (peechay se), دوسرا باہر لے جاتا ہے (آگے سے) — اور اسی فرق سے FIFO بنتا ہے. Enqueue آئٹم کو پیچھے سے شامل کرتا ہے اور Dequeue آگے سے نکالتا ہے — یہی فرق FIFO بناتا ہے۔

Long Questions — English Answersطویل سوالات — انگریزی جوابات
1. Discuss the dynamic size property of lists in Python. How does this property make lists more flexible? (English answer)

Python کی list کا size پہلے سے fixed نہیں ہوتا — یہی dynamic size ہے. تم list بنانے کے بعد jitnay چاہو items add کر سکتے ہو (append()/insert() se) ya hata sakte ho (remove()/pop() سے), اور list خود اپنی جگہ (memory) کو adjust کر لیتی ہے. Flexibility اسی میں ہے: اگر students کی list میں نیا student آئے تو پوری list دوبارہ بنانے کی ضرورت نہیں; اگر کوئی چلا جائے تو خالی جگہ کا مسئلہ نہیں. Fixed-size arrays میں پہلے سے size بتانا پڑتا ہے اور bad میں تبدیلی مشکل ہوتی ہے — list اس پابندی کو ختم کر دیتی ہے, اس لیے وہ records, تو-دو lists اور ہر بدلتے huay data کے لیے بہترین ہے.

2. Explain the operations on stack with real-life example and Python code. (English answer)

Stack کے دو operations ہیں — push (top par add) aur pop (top se remove) — اور اصول LIFO ہے. Real-life مثال: کتابوں کا ڈھیر, یا browser کا Back button (آخری خولہ ہوا page پہلے واپس آتا ہے). Python code (کتاب, p. 59): stack_of_books = [] se khaali stack; append('Book A') phir append('Book B') se stack ['Book A', 'Book B']; pop() se 'Book B' nikli aur ['Book A'] رہ گیا. یہی trace دکھاتے ہے کہ آخری آئی چیز پہلے گئی.

3. Write, a simple program to implement a queue (insertion and deletion). (English answer)

کتاب کے queue module والے طریقے سے (p. 60): from queue import Queue; q = Queue(); q.put("Ahmed"); q.put("Fatima") — یہ insertion (enqueue) ہے, queue [Ahmed, Fatima]. Deletion (dequeue) removed_person = q.get() سے ہوتی ہے, جو 'Ahmed' نکلتا ہے کیوں کے وہ front پر تھا; پھر q.put("Sara") se queue [Fatima, Sara] بن جاتی ہے. اگر list سے queue بنانا ہو تو append() enqueue aur pop(0) dequeue کا کام کرتا ہے, لیکن بڑا data پر queue module زیادہ بہتر ہے.

4. Define Tree and explain its properties. (English answer)

Tree ایک hierarchical data structure ہے جس میں data ایک root node سے شروع ہو کر branches میں پھیلتا ہے; ہر node کئی children سے جڑ سکتا ہے. Properties: Root node — سب سے اوپر والا node, جس کا کوئی parent نہیں; Nodes aur edges — nodes elements ہیں, edges ان کو جوڑنے والی lines; Leaf — woh node jis ka koi child na ho; Height — root سے farthest leaf تک longest path (edges میں); Balanced tree — jis ki left aur right branches ki height taqreeban barabar ho. Misaal: family tree, file system ke folders.

5. What is a graph? Explain differences between directed and undirected graphs. (English answer)

Graph vertices (nodes) اور ان کو جوڑنے والی edges پر مشتمل structure ہے جو networks اور connections دکھاتے ہے — شہر اور roads, log اور دوستی اس کی مثالیں ہیں. Directed graph میں ہر edge کی direction ہوتی ہے (teer): A→B کا مطلب صرف A سے B جا سکتے ہو, واپس نہیں — جیسا Figure 4.4 میں A سے سیدھا B کا کوئی راستہ نہیں, صرف A→C→B ہے. Undirected graph میں edge دونوں طرف چلتی ہے: A–B ہے تو B–A بھی ہے — جیسا Figure 4.5 میں دوستی دونوں طرف برابر ہے. تیسری type, weighted graph, ہر edge پر distance/time/cost کا number بھی رکھتا ہے.

Long Questions — Urdu Answersطویل سوالات — اردو جوابات
1. لسٹوں کی ڈائنامک سائز خصوصیت پر بحث کریں۔ یہ خصوصیت لسٹوں کو زیادہ لچکدار کیسے بناتی ہے؟ (Urdu jawab)

پائتھن کی لسٹ کا سائز پہلے سے فکسڈ نہیں ہوتا — یہی ڈائنامک سائز ہے۔ تم لسٹ بنانے کے بعد جتنے چاہو آئٹمز شامل کر سکتے ہو (append()/insert() سے) یا ہٹا سکتے ہو (remove()/pop() سے)، اور لسٹ خود اپنی جگہ کو ایڈجسٹ کر لیتی ہے۔ لچک اسی میں ہے: اگر طلبہ کی لسٹ میں نیا طالب علم آئے تو پوری لسٹ دوبارہ بنانے کی ضرورت نہیں؛ اگر کوئی چلا جائے تو خالی جگہ کا مسئلہ نہیں۔ فکسڈ سائز والے اریز میں پہلے سے سائز بتانا پڑتا ہے اور بعد میں تبدیلی مشکل ہوتی ہے — لسٹ اس پابندی کو ختم کر دیتی ہے۔

2. اسٹیک کے آپریشنز کو حقیقی زندگی کی مثال اور پائتھن کوڈ کے ساتھ سمجھائیں۔ (Urdu jawab)

اسٹیک کے دو آپریشنز ہیں — پش (ٹاپ پر شامل کرنا) اور پاپ (ٹاپ سے ہٹانا) — اور اصول LIFO ہے۔ حقیقی زندگی کی مثال: کتابوں کا ڈھیر، یا براؤزر کا Back بٹن (آخری کھولا ہوا پیج پہلے واپس آتا ہے)۔ پائتھن کوڈ (کتاب، صفحہ 59): stack_of_books = [] سے خالی اسٹیک؛ append('Book A') پھر append('Book B') سے اسٹیک ['Book A', 'Book B']؛ pop() سے 'Book B' نکلی اور ['Book A'] رہ گیا۔ یہی ٹریس دکھاتا ہے کہ آخری آئی چیز پہلے گئی۔

3. کیو کو نافذ کرنے کا ایک سادہ پروگرام لکھیں (انسرشن اور ڈیلیشن)۔ (Urdu jawab)

کتاب کے کیو ماڈیول والے طریقے سے (صفحہ 60): from queue import Queue; q = Queue(); q.put("Ahmed"); q.put("Fatima") — یہ انسرشن (این کیو) ہے، کیو [Ahmed, Fatima]۔ ڈیلیشن (ڈی کیو) removed_person = q.get() سے ہوتی ہے، جو 'Ahmed' نکالتا ہے کیونکہ وہ فرنٹ پر تھا؛ پھر q.put("Sara") سے کیو [Fatima, Sara] بن جاتی ہے۔ اگر لسٹ سے کیو بنانا ہو تو append() این کیو اور pop(0) ڈی کیو کا کام کرتا ہے، لیکن بڑے ڈیٹا پر کیو ماڈیول زیادہ بہتر ہے۔

4. ٹری کی تعریف کریں اور اس کی خصوصیات بیان کریں۔ (Urdu jawab)

ٹری ایک ہائرارکیکل ڈیٹا سٹرکچر ہے جس میں ڈیٹا ایک روٹ نوڈ سے شروع ہو کر برانچز میں پھیلتا ہے؛ ہر نوڈ کئی چلڈرن سے جڑ سکتا ہے۔ خصوصیات: روٹ نوڈ — سب سے اوپر والا نوڈ، جس کا کوئی پیرنٹ نہیں؛ نوڈز اور ایجز — نوڈز ایلیمنٹس ہیں، ایجز ان کو جوڑنے والی لائنز؛ لیف — وہ نوڈ جس کا کوئی چائلڈ نہ ہو؛ ہائیٹ — روٹ سے فارتھسٹ لیف تک لانگسٹ پاتھ (ایجز میں)؛ بیلنسڈ ٹری — جس کی لیفٹ اور رائٹ برانچز کی ہائیٹ تقریباً برابر ہو۔ مثال: فیملی ٹری، فائل سسٹم کے فولڈرز۔

5. گراف کیا ہے؟ ڈائریکٹڈ اور ان ڈائریکٹڈ گرافس کے درمیان فرق بیان کریں۔ (Urdu jawab)

گراف ورٹیسز (نوڈز) اور ان کو جوڑنے والی ایجز پر مشتمل سٹرکچر ہے جو نیٹ ورکس اور کنکشنز دکھاتا ہے — شہر اور روڈز، لوگ اور دوستی اس کی مثالیں ہیں۔ ڈائریکٹڈ گراف میں ہر ایجز کی ڈائریکشن ہوتی ہے (تیر): A→B کا مطلب صرف A سے B جا سکتے ہو، واپس نہیں — جیسا فگر 4.4 میں A سے سیدھا B کا کوئی راستہ نہیں، صرف A→C→B ہے۔ ان ڈائریکٹڈ گراف میں ایجز دونوں طرف چلتی ہے: A–B ہے تو B–A بھی ہے — جیسا فگر 4.5 میں دوستی دونوں طرف برابر ہے۔ تیسری قسم، ویٹڈ گراف، ہر ایجز پر ڈسٹنس/ٹائم/کاسٹ کا نمبر بھی رکھتا ہے۔

📌 باب کا خلاصہ اور رہنمائی — اس باب میں کیا ہے؟
ENGLISH SUMMARY

اس chapter میں تم نے سیکھا کے data کو ترتیب دینے کے پانچ بنیادی طریقے ہیں: list (tartib wali sequence, index 0 se), stack (LIFO — aakhri aaya pehle gaya), queue (FIFO — pehle aaya pehle gaya), tree (root se phailti hierarchy) aur graph (vertices اور edges کا جال). ہر structure کے operations, Python code اور real-life مثالیں — party list, کتابوں کا ڈھیر, bank کی line, family tree اور شہروں کا نقشہ — اس chapter کی جان ہیں.

Revision guidance: exam سے پہلے تین چیزیں پکی کرو — (1) insert/remove/pop/ان کی فرق اور code trace, (2) LIFO vs FIFO ایک line میں, (3) directed vs undirected graph اور Figure 4.4 کا A→C→B راستہ (weight 32). ان تینوں پر عبور ہو تو exercise کے MCQs اور short questions آساں لگیں گے.

اردو خلاصہ

اس باب میں تم نے سیکھا کہ ڈیٹا کو ترتیب دینے کے پانچ بنیادی طریقے ہیں: لسٹ (ترتیب والی سیکوئنس، انڈیکس 0 سے)، اسٹیک (LIFO — آخری آیا پہلے گیا)، کیو (FIFO — پہلے آیا پہلے گیا)، ٹری (روٹ سے پھیلتی ہائرارکی) اور گراف (ورٹیسز اور ایجز کا جال)۔ ہر سٹرکچر کے آپریشنز، پائتھن کوڈ اور حقیقی زندگی کی مثالیں — پارٹی لسٹ، کتابوں کا ڈھیر، بینک کی لائن، فیملی ٹری اور شہروں کا نقشہ — اس باب کی جان ہیں۔

دہرائی کی رہنمائی: امتحان سے پہلے تین چیزیں پکی کرو — (۱) insert/remove/pop/in کا فرق اور کوڈ ٹریس، (۲) LIFO بمقابلہ FIFO ایک لائن میں، (۳) ڈائریکٹڈ بمقابلہ ان ڈائریکٹڈ گراف اور فگر 4.4 کا A→C→B راستہ (ویٹ 32)۔ ان تینوں پر عبور ہو تو ایکسرسائز کے MCQs اور مختصر سوالات آسان لگیں گے۔

🎯 مزید MCQs اور Tests کے لیے

Chapter-wise tests, fresh random papers اور instant score کے لیے PunjabTest.com کا میں test section دیکھو:

PunjabTest.com — Tests →

PunjabTest.com — Complete Guide Book • FSc Part 1 Computer Science, Chapter 4 (New Book, Session 2026–27) • English + Urdu

← Chapter 3Chapter 5 →