डेटा संरचनाएँ: ऐरे, लिंक्ड लिस्ट, स्टैक, क्यू
डेटा संरचना डेटा को ऐसे सजाने का तरीका है कि प्रोग्राम उसे तेज़ी और आसानी से इस्तेमाल कर सके।
- ऐरे: तय आकार, आइटम साथ-साथ रखे होते हैं, कोई भी आइटम इंडेक्स (a[3]) से सीधे मिलता है। बीच में जोड़ना धीमा है।
- लिंक्ड लिस्ट (गतिशील): हर नोड में मान और अगले नोड का लिंक होता है। यह ज़रूरत के हिसाब से बढ़ती-घटती है, पर 5वें आइटम तक पहुँचने के लिए 1 से 4 से होकर जाना पड़ता है।
- स्टैक: push और pop सिर्फ एक सिरे पर (LIFO)। undo, बैक बटन और कोष्ठक जाँचने में काम आता है।
- क्यू: पीछे जोड़ो, आगे से हटाओ (FIFO)। प्रिंट काम और प्रतीक्षा की कतार में काम आती है।
लाइब्रेरी में ये औज़ार पहले से होते हैं। Python में list स्टैक की तरह चलती है (append, pop), और collections.deque तेज़ क्यू का काम करती है। जो लाइब्रेरी में है, उसे दोबारा मत लिखो।
stack = []
stack.append(5); stack.append(8)
stack.pop() # 8 मिलेगा
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft() # 4 मिलेगा
IDE का उपयोग: लिखो, चलाओ, जाँचो
IDE (इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट) में एडिटर, चलाने का बटन, डीबगर और औज़ार एक जगह होते हैं। यह कोड को रंगता है, नाम सुझाता है और टाइप करते समय गलतियाँ दिखाता है।
- प्रोग्राम चलाओ और आउटपुट पढ़ो।
- आसान, सामान्य और मुश्किल इनपुट से जाँचो (खाली लिस्ट, शून्य, बहुत बड़ी संख्या)।
- डीबग: ब्रेकपॉइंट लगाओ और एक-एक पंक्ति चलाकर वेरिएबल देखो।
2D और 3D विज़ुअलाइज़ेशन और ऐनिमेशन
चित्र हमें पैटर्न दिखाते हैं। प्रोग्राम चार्ट (बार, लाइन, स्कैटर), 2D चित्र और 3D दृश्य बना सकते हैं। ऐनिमेशन वही चित्र बार-बार थोड़े बदलाव के साथ बनाना है (एक सेकंड में लगभग 30 से 60 बार)। आसान तरीका: x जैसा वेरिएबल रखो, हर फ़्रेम में उसमें थोड़ा जोड़ो और फिर से बनाओ। इस पन्ने का 3D भी 3D लाइब्रेरी से इसी तरह बना है।
उन्नत स्प्रेडशीट फ़ंक्शन
स्प्रेडशीट फ़ंक्शन से प्रोग्राम जैसा काम कर सकती है:
IF(B2>=50,"Pass","Fail")दो नतीजों में से एक चुनता है।SUMIF(B2:B5,">=50")सिर्फ नियम पर खरे उतरने वाले सेल जोड़ता है;COUNTIFउन्हें गिनता है।VLOOKUP(2, A2:B5, 2, FALSE)पहले कॉलम में 2 ढूँढता है और उसी पंक्ति के कॉलम 2 का मान देता है।XLOOKUPयही और आसानी से करता है।- पिवट टेबल बड़े डेटा का समूहों में जोड़ निकालती है और चार्ट नतीजा दिखाता है।
रिलेशनल डेटाबेस और SQL
रिलेशनल डेटाबेस डेटा को पंक्तियों और स्तंभों वाली तालिकाओं में रखता है। हर तालिका की एक प्राइमरी की होती है, यानी ऐसा स्तंभ जिसके मान अनोखे हों (id)। दूसरी तालिका वही मान फॉरेन की के रूप में रखकर जुड़ती है। अच्छे डिज़ाइन में हर तथ्य सिर्फ एक बार रखा जाता है, दोहराव नहीं।
SQL सवाल पूछने और डेटा बदलने की भाषा है:
SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;
INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;अखंडता (integrity) का मतलब है डेटा सही रहे: कुंजियाँ अनोखी हों, फॉरेन की किसी असली पंक्ति से मेल खाए और मान सही प्रकार के हों। सुरक्षा का मतलब है उपयोगकर्ताओं के पासवर्ड, हर किसी को सिर्फ ज़रूरी अधिकार, बैकअप, और उपयोगकर्ता का लिखा टेक्स्ट सीधे क्वेरी में जोड़कर SQL न बनाना (पैरामीटर इस्तेमाल करो), जिससे SQL इंजेक्शन रुकता है।
खुले संसाधनों में योगदान
बहुत से औज़ार और लाइब्रेरी ओपन सोर्स हैं: कोई भी लाइसेंस के तहत उन्हें पढ़, इस्तेमाल और सुधार सकता है। तुम बग ठीक करके, गाइड सुधारकर, पन्ना अनुवाद करके या उदाहरण जोड़कर मदद कर सकते हो। हमेशा लाइसेंस पढ़ो, श्रेय दो और बदलाव सुझाते समय साफ़ और विनम्र संदेश लिखो।
करके देखो
3D के चरण 5 में स्टैक में 3 आइटम push करो, फिर pop करो। क्रम लिखो। क्यू में भी यही करो। फिर पहले अनुमान लगाओ, बाद में जाँचो: 4, 9, 2 जोड़कर एक आइटम हटाने पर क्यू के आगे और स्टैक के ऊपर कौन सा मान बचेगा?
मुख्य सूत्र और परिभाषाएँ
- स्टैक = LIFO (आख़िर में आया, पहले गया): push, pop।
- क्यू = FIFO (पहले आया, पहले गया): enqueue, dequeue।
- ऐरे: तय आकार, इंडेक्स से पहुँच। लिंक्ड लिस्ट: बदलता आकार, लिंक पकड़कर चलो।
- SELECT स्तंभ FROM तालिका WHERE शर्त
- प्राइमरी की = अनोखी id। फॉरेन की = दूसरी तालिका से लिंक।
हल किए गए उदाहरण
1. 5, 8 और 2 इसी क्रम में स्टैक में push किए गए। फिर दो बार pop किया। अब ऊपर क्या है?
push के बाद स्टैक: 5, 8, 2 (2 ऊपर)। pop पहले 2, फिर 8 हटाता है। बचा: 5। ऊपर 5 है।
2. 4, 9, 2 इसी क्रम में क्यू में जुड़े। एक बार dequeue किया। अब आगे कौन है?
सबसे पहले आया निकलता है, इसलिए 4 हट गया। आगे 9 है।
3. अंक तालिका: id 1 से 4 के अंक 72, 45, 88, 51। WHERE score >= 50 कितनी पंक्तियाँ देगा?
72, 88 और 51 अंक 50 या ज़्यादा हैं। यानी 3 पंक्तियाँ।
4. सेल B2:B5 में 72, 45, 88, 51 हैं। =SUMIF(B2:B5,">=50") क्या देगा?
यह सिर्फ 72, 88 और 51 जोड़ेगा: 72 + 88 + 51 = 211।
5. व्यंजक ( [ ] ) जैसे कोष्ठक जाँचने के लिए स्टैक क्यों इस्तेमाल करते हैं?
हर खुला कोष्ठक push करो। बंद कोष्ठक आए तो pop करके मिलान जाँचो। सबसे हाल का खुला कोष्ठक पहले बंद होना चाहिए (LIFO), जो स्टैक देता है। अंत में स्टैक खाली हो तो कोष्ठक मेल खाते हैं।
आम गलतियाँ
- आकार पहले से पता न हो तब ऐरे इस्तेमाल करना। लिस्ट या लिंक्ड लिस्ट बेहतर है।
- स्टैक और क्यू को उलझाना। स्टैक सबसे नया हटाता है; क्यू सबसे पुराना।
- UPDATE या DELETE में WHERE भूल जाना, जिससे हर पंक्ति बदल जाती है।
- उपयोगकर्ता का टेक्स्ट जोड़कर SQL स्ट्रिंग बनाना। पैरामीटर इस्तेमाल करो।