Home › Hindi › Stack PUSH POP program
Python में Stack (PUSH, POP और PEEK) Program Hindi में — Class 12 Board Exam Guide
🌐 यह page Hindi में है · Python lists and dictionaries guide in English →
CBSE Class 12 (3–4 अंक पक्के)LIFO · PUSH · POP · UnderflowBoard Pattern Dictionary Stack
Stack क्या होता है? (LIFO नियम 30 सेकंड में)
Stack एक रैखिक डेटा स्ट्रक्चर (Linear Data Structure) है जो LIFO (Last In, First Out) के सिद्धांत पर काम करता है — ठीक वैसे ही जैसे शादी में रखी प्लेटों की गड्डी या मेज़ पर रखी किताबों का ढेर। जो प्लेट सबसे आखिर में ऊपर रखी जाती है, वही सबसे पहले बाहर निकलती है।
CBSE Class 12 Computer Science (083) के हर बोर्ड पेपर में 3 से 4 अंकों का एक सीधा प्रोग्रामिंग प्रश्न Python की साधारण list की मदद से Push() और Pop() फ़ंक्शन लिखने पर आता है। नीचे पहले मूल अवधारणा और फिर बोर्ड परीक्षा का असली पैटर्न दिया गया है।
Python List में Stack के चारों मुख्य ऑपरेशन
Python में अलग से Stack क्लास इम्पोर्ट करने की ज़रूरत नहीं होती — साधारण list का आखिरी सिरा (दाहिना छोर) ही हमारा TOP बन जाता है क्योंकि वहाँ से जोड़ना और निकालना दोनों O(1) समय में होता है:
- PUSH (तत्व जोड़ना):
stack.append(item)— सूची के अंत में नया तत्व जोड़ता है। - POP (तत्व निकालना):
stack.pop()— आखिरी तत्व निकालकर लौटाता है। ध्यान रहे: खाली सूची परpop()चलाने सेIndexErrorआता है, इसलिए पहले खाली होने की जाँच (Underflow check) अनिवार्य है! - PEEK / TOP (सिर्फ़ ऊपर का तत्व देखना):
stack[-1]— बिना निकाले सबसे ऊपर रखा तत्व दिखाता है। - isEmpty जाँच:
len(stack) == 0याif not stack:।
stack = []
def push_item(stk, val):
stk.append(val)
print(val, "pushed to stack")
def pop_item(stk):
if len(stk) == 0:
print("Stack Empty / Underflow")
return None
return stk.pop()
def peek_item(stk):
if not stk:
return "Stack Empty"
return stk[-1]
push_item(stack, 10)
push_item(stack, 20)
print("Top right now:", peek_item(stack)) # 20
print("Popped:", pop_item(stack)) # 20
print("Popped:", pop_item(stack)) # 10
print("Popped:", pop_item(stack)) # Stack Empty / Underflow
CBSE Class 12 Board Exam का असली प्रश्न पैटर्न (Dictionary से Conditional Push)
बोर्ड परीक्षा में सादा संख्या जोड़ने को नहीं कहा जाता — वहाँ एक शब्दकोश (dictionary) या नेस्टेड लिस्ट देकर शर्त के साथ Push और पूरा खाली करने वाला Pop लिखने को कहा जाता है। इस नमूना सवाल को ध्यान से देखो:
प्रश्न: R = {"OM": 76, "JAI": 45, "BOB": 89, "ALI": 65, "ANU": 90} नाम का एक शब्दकोश दिया है, जिसमें छात्रों के नाम और अंक हैं। दो फ़ंक्शन लिखिए:
1) PUSH(S, R) — उन छात्रों के नाम stack S में डाले जिनके अंक 75 से अधिक हैं।
2) POP_ALL(S) — एक-एक करके सारे नाम निकाले व छापे, और अंत में "Stack Empty" छापे।
R = {"OM": 76, "JAI": 45, "BOB": 89, "ALI": 65, "ANU": 90}
S = []
def PUSH(S, R):
for name, marks in R.items():
if marks > 75:
S.append(name)
def POP_ALL(S):
while True:
if len(S) == 0:
print("Stack Empty")
break
print(S.pop(), end=" ")
PUSH(S, R)
POP_ALL(S)
# Output: ANU BOB OM Stack Empty
ध्यान दें कि आउटपुट उल्टे क्रम में क्यों आया: पहले OM गया, फिर BOB, और सबसे अंत में ANU ऊपर रखा गया। LIFO नियम के कारण जब pop() चला तो सबसे पहले ANU बाहर आया!
परीक्षा में नंबर कटवाने वाली 4 आम गलतियाँ
- गलती 1 — Underflow जाँच भूल जाना: बोर्ड की मार्किंग स्कीम में
if len(S) == 0:(याif not S:) लिखने का आधा से एक पूरा नंबर अलग से निर्धारित होता है। - गलती 2 —
S.pop(0)लिख देना:pop(0)सबसे पहला तत्व निकालता है — वह Queue (FIFO) बन जाता है, Stack नहीं! Stack में हमेशा बिना इंडेक्स काS.pop()इस्तेमाल करें। - गलती 3 — Display करते समय
range(len(S))सीधा चला देना: Stack को ऊपर से नीचे दिखाने के लिए हमेशा उल्टा लूप चलाएँ:for i in range(len(S) - 1, -1, -1): print(S[i])। - गलती 4 — नाम की जगह अंक push कर देना: सवाल ध्यान से पढ़ें कि stack में key डालनी है, value डालनी है, या
[city, pin]जैसा जोड़ा डालना है।
इस कोड को खुद बदलकर और चलाकर देखने के लिए PyDebug के मुफ़्त ऑनलाइन Python Playground में पेस्ट करें या 30-मिनट का Free Mock Test Paper 1 देकर अपनी गति परखें।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- Function में साझा list का जाल — Stack फ़ंक्शन में डिफ़ॉल्ट [] क्यों ख़तरनाक है
- List methods क्या लौटाते हैं? — append() बनाम pop() के return मान की समझ
अक्सर पूछे जाने वाले सवाल
Stack में Underflow कब होता है?
जब stack पूरी तरह खाली हो (len(stack) == 0) और फिर भी उसमें से तत्व निकालने (POP) की कोशिश की जाए, तो उस स्थिति को Underflow कहते हैं।
Python की साधारण list में Overflow क्यों नहीं होता?
क्योंकि Python की list डायनामिक आकार (dynamic array) की होती है जो मेमोरी उपलब्ध रहने तक अपने आप बढ़ती जाती है — जब तक आप खुद अधिकतम आकार (MAX_SIZE) की शर्त न लगाएँ।
Stack और Queue में मुख्य अंतर क्या है?
Stack में LIFO (आखिर में गया तत्व पहले बाहर: append और pop()) चलता है, जबकि Queue में FIFO (पहले आया तत्व पहले बाहर) चलता है।