📘 CodingMarble Learn

डेटा संरचना: ऐरे, लिस्ट, स्टैक, क्यू और ट्री

डेटा संरचना मेमोरी में डेटा को ऐसे जमाने का तरीका है कि प्रोग्राम उसे अच्छे से इस्तेमाल कर सके। ऐरे चीज़ों को क्रमांकित डिब्बों में रखता है ताकि सूचकांक से तुरंत पहुँच हो। लिंक्ड लिस्ट नोड्स को पॉइंटर से जोड़ती है, इसलिए बीच में डालना आसान है। स्टैक LIFO (अंतिम आया, पहले गया) और क्यू FIFO (पहले आया, पहले गया) पर चलते हैं। डिक्शनरी कुंजी (key) से मान खोजती है और ट्री डेटा को स्तरों में रखता है ताकि खोज तेज़ हो।

🎬 कदम-दर-कदम कहानी

  1. ऐरे: एक पंक्ति में डिब्बे, हर एक का सूचकांक 0 से शुरू। A[3] पढ़ने के लिए कंप्यूटर सीधा वहीं कूदता है, एक ही कदम में।
  2. लिंक्ड लिस्ट: हर नोड में एक मान और अगले नोड का पॉइंटर है। 25 डालने के लिए बस दो पॉइंटर बदलो।
  3. स्टैक: push और pop सिर्फ़ ऊपर से। आख़िरी रखी प्लेट पहले निकलती है। यह LIFO है।
  4. क्यू: पीछे से जुड़ो, आगे से निकलो। पहले आया, पहले गया। यह FIFO है, टिकट की लाइन जैसा।
  5. बाइनरी सर्च ट्री: छोटे मान बाएँ, बड़े दाएँ। 60 खोजने में बस 3 कदम लगते हैं।
  6. आपकी बारी: स्टैक या क्यू चुनो, फिर चीज़ें जोड़ो और निकालो। देखो कौन पहले निकलता है।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

ऐरे 0 से क्यों शुरू होते हैं?

सूचकांक पहले डिब्बे से दूरी है। पहला डिब्बा 0 कदम दूर है, तो उसका सूचकांक 0। पता = आधार + सूचकांक × आकार।

लिंक्ड लिस्ट में डालना आसान है, तो ऐरे क्यों?

ऐरे किसी भी सूचकांक पर सीधा कूदता है; लिंक्ड लिस्ट को head से चलना पड़ता है। तेज़ पढ़ने के लिए ऐरे, बहुत डालने के लिए लिंक्ड लिस्ट।

क्या स्टैक के बीच से चीज़ निकाल सकते हैं?

स्टैक के नियम से नहीं। सिर्फ़ top छू सकते हैं। बीच से चाहिए तो दूसरी संरचना लो।

स्टैक और क्यू का अंतर एक पंक्ति में?

स्टैक: सबसे नया पहले (LIFO)। क्यू: सबसे पुराना पहले (FIFO)।

बाइनरी सर्च ट्री तेज़ क्यों है?

हर तुलना बाएँ या दाएँ भेजती है और बचे हुए लगभग आधे मान छूट जाते हैं।

ख़ाली स्टैक या क्यू से निकालें तो क्या होगा?

यह अंडरफ़्लो है। अच्छा प्रोग्राम पहले isEmpty जाँचता है। आख़िरी कदम में आज़माओ।

डेटा संरचना क्या है?

डेटा संरचना डेटा को रखने और व्यवस्थित करने का तरीका है ताकि उसे खोजना, जोड़ना, हटाना और क्रम में लगाना आसान हो।

अमूर्त डेटा प्रकार (ADT) बताता है कि संरचना क्या करती है (उसके ऑपरेशन), यह नहीं कि कैसे बनी है। स्टैक ADT push, pop, peek और isEmpty का वादा करता है; उसे ऐरे से भी बना सकते हैं और लिंक्ड लिस्ट से भी।

ऐरे, रिकॉर्ड, टपल और लिस्ट

ऐरे एक ही प्रकार की चीज़ों को मेमोरी के पास-पास डिब्बों में रखता है। हर डिब्बे का सूचकांक (index) होता है, जो प्रायः 0 से शुरू होता है। डिब्बे साथ-साथ हैं, इसलिए कंप्यूटर A[i] पर एक कदम में पहुँचता है। पर बीच में डालने के लिए बाद की सब चीज़ें खिसकानी पड़ती हैं।

2D ऐरे एक ग्रिड है, जैसे तालिका या शतरंज: M[row][col]। स्ट्रिंग अक्षरों का ऐरे है।

रिकॉर्ड एक चीज़ के अलग-अलग प्रकार के डेटा को साथ रखता है, जैसे विद्यार्थी: नाम (टेक्स्ट), रोल नंबर (पूर्णांक), अंक (दशमलव)। हर हिस्सा एक फ़ील्ड है। फ़ाइल कई रिकॉर्ड डिस्क पर स्थायी रूप से रखती है।

Python में लिस्ट [3, 8, 5] बढ़ने वाला ऐरे है; टपल (3, 8, 5) बनने के बाद बदला नहीं जा सकता।

लिंक्ड लिस्ट नोड्स की ज़ंजीर है। हर नोड में एक मान और अगले नोड का पॉइंटर होता है; आख़िरी null की ओर। पहला नोड head है। डालने या हटाने में सिर्फ़ पॉइंटर बदलते हैं, कुछ खिसकता नहीं; पर 100वीं चीज़ तक पहुँचने के लिए 99 नोड से गुज़रना पड़ता है।

स्टैक और क्यू

स्टैक LIFO है: अंतिम आया, पहले गया। सिर्फ़ top को छूते हैं।

रिवर्स पोलिश नोटेशन (RPN) में ऑपरेटर संख्याओं के बाद लिखते हैं: 3 4 + यानी 3 + 4। स्टैक से हल करते हैं: संख्या आए तो push; ऑपरेटर आए तो दो pop करो, हिसाब करो, नतीजा push करो। RPN में कोष्ठक नहीं चाहिए।

क्यू FIFO है: पहले आया, पहले गया। चीज़ें rear (पीछे) से जुड़ती हैं (enqueue) और front (आगे) से निकलती हैं (dequeue)। उपयोग: प्रिंटर के काम, कीबोर्ड बफ़र, ग्राहक सेवा की लाइन, CPU के इंतज़ार वाले काम। वृत्ताकार क्यू तय ऐरे की शुरू की ख़ाली जगह फिर इस्तेमाल करता है, और प्राथमिकता क्यू ज़रूरी चीज़ों को पहले जाने देता है।

डिक्शनरी, ट्री और ग्राफ़

डिक्शनरी (मैप, हैश टेबल) कुंजी → मान जोड़े रखती है, जैसे {"Asha": 9876, "Ravi": 9123}। मान उसकी कुंजी से मिलता है, स्थान से नहीं। हैश फ़ंक्शन कुंजी को डिब्बा नंबर में बदलता है, इसलिए खोज बहुत तेज़ है।

ट्री डेटा को स्तरों में रखता है। सबसे ऊपर का नोड root, नीचे वाले child, जिनके बच्चे नहीं वे leaf। बाइनरी ट्री में हर नोड के अधिकतम दो बच्चे होते हैं।

बाइनरी सर्च ट्री (BST) में बाएँ उप-ट्री के सब मान नोड से छोटे और दाएँ के सब बड़े होते हैं। खोजने के लिए तुलना करो और बाएँ या दाएँ जाओ; हर कदम बचे हुए लगभग आधे मान छोड़ देता है, इसलिए संतुलित दस लाख चीज़ों में भी करीब 20 तुलनाएँ काफ़ी हैं।

ग्राफ़ शीर्षों (vertices) का समूह है जो किनारों (edges) से जुड़े हैं, कोई तय ऊपर नहीं। नक्शे के रास्ते, सोशल नेटवर्क और इंटरनेट ग्राफ़ हैं।

संरचना चुनना: स्थान से तुरंत पहुँच → ऐरे; बीच में बहुत डालना → लिंक्ड लिस्ट; undo या उलटना → स्टैक; निष्पक्ष इंतज़ार → क्यू; नाम से खोज → डिक्शनरी; तेज़ क्रमबद्ध खोज → BST।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. A = [12, 7, 30, 45, 9, 18]। A[3] क्या है और आख़िरी सूचकांक क्या है?

सूचकांक 0 से शुरू, तो A[3] = 45। 6 चीज़ें हैं, तो आख़िरी सूचकांक 6 − 1 = 5।

2. ख़ाली स्टैक। push(4), push(9), push(2), pop(), push(7), pop(), pop()। क्या बचा और क्रम से क्या निकला?

push के बाद [4, 9, 2]। pop → 2। push 7 → [4, 9, 7]। pop → 7। pop → 9। बचा [4]। निकले: 2, 7, 9।

3. ख़ाली क्यू। enqueue(4), enqueue(9), enqueue(2), dequeue(), enqueue(7), dequeue()। क्या बचा?

[4, 9, 2] → dequeue से 4 गया → [9, 2] → enqueue 7 → [9, 2, 7] → dequeue से 9 गया → [2, 7]।

4. स्टैक से RPN व्यंजक 5 3 + 2 × हल करो।

push 5, push 3 → '+' पर 3 और 5 pop, 8 push → push 2 → '×' पर 2 और 8 pop, 16 push। उत्तर 16 (यानी (5 + 3) × 2)।

5. BST (root 50, बायाँ 30 जिसके बच्चे 20, 40; दायाँ 70) में 35 डालो। कहाँ जाएगा?

35 < 50 → बाएँ 30 पर। 35 > 30 → दाएँ 40 पर। 35 < 40 → 40 का बायाँ बच्चा बनेगा।

6. पूर्णांक ऐरे पता 1000 से शुरू होता है और हर पूर्णांक 4 बाइट लेता है। A[5] कहाँ है?

पता = 1000 + 5 × 4 = 1020।

आम गलतियाँ

अभ्यास क्विज़

1. कौन-सी संरचना LIFO है?
2. 10 चीज़ों वाले ऐरे का आख़िरी सूचकांक है:
3. कुंजी–मान जोड़े कौन रखता है?
4. बाइनरी सर्च ट्री में नोड से छोटे मान जाते हैं:
5. आने के क्रम में काम करने वाला प्रिंटर इस्तेमाल करता है:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

डेटा संरचना के मुख्य प्रकार कौन-से हैं?

रेखीय: ऐरे, लिस्ट, लिंक्ड लिस्ट, स्टैक, क्यू। अरेखीय: ट्री और ग्राफ़। साथ में रिकॉर्ड और डिक्शनरी (हैश टेबल)।

स्टैक और क्यू में क्या अंतर है?

स्टैक LIFO है और एक छोर इस्तेमाल करता है। क्यू FIFO है: पीछे से जोड़ो, आगे से निकालो।

ऐरे और लिंक्ड लिस्ट में क्या अंतर है?

ऐरे चीज़ें साथ-साथ रखता है, सूचकांक से तुरंत पहुँच पर बीच में डालना धीमा। लिंक्ड लिस्ट पॉइंटर से नोड जोड़ती है: डालना आसान, पर किसी स्थान तक पहुँचना धीमा।

यह कहाँ पढ़ाया जाता है

नीदरलैंडHAVO 4 (bovenbouw, 2e fase)Foundations
नीदरलैंडHAVO 4 (bovenbouw, 2e fase)Information
नीदरलैंडVWO 4 (bovenbouw, 2e fase)Foundations
नीदरलैंडVWO 5Information
पोलैंडLiceum ogólnokształcące, klasa IIIDesigning and programming algorithms (I + II)
रोमानियाClasa a IX-aConceptual organisation of data
रोमानियाClasa a IX-aConceptual organisation of data
रोमानियाClasa a IX-aConceptual organisation of data
रोमानियाClasa a XI-aData structures
इंग्लैंडYear 124.2 Fundamentals of data structures (part 1)
इंग्लैंडYear 134.2 Fundamentals of data structures (A-level)
इंग्लैंडYear 134.3 Fundamentals of algorithms
जापान高校(専門学科)1〜3年Programming for Information Systems
दक्षिण कोरिया중학교 2학년Algorithms and programming
दक्षिण कोरिया고등학교 2학년Algorithms and programming
फ्रांसPremièreData representation
फ्रांसTerminaleData structures
चीन高二Sel.1 Data and data structures

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ