Stack
Stack क्या है? (LIFO)
Stack सबसे सरल और उपयोगी data structures में से एक है। यह एक नियम मानता है: LIFO — Last In, First Out। जो चीज़ आपने सबसे बाद में जोड़ी वही सबसे पहले निकलती है।
प्लेटों का ढेर सोचिए। आप ऊपर प्लेट जोड़ते हैं, और ऊपर से ही लेते हैं। ऊपर वाली उठाए बिना बीच से प्लेट नहीं खींच सकते। C में stack ठीक ऐसा ही व्यवहार करता है।
मुख्य operations
| Operation | क्या करता है |
|---|---|
push(x) | Item x को top पर जोड़ना |
pop() | Top item हटाकर लौटाना |
peek() | Top item हटाए बिना देखना |
isEmpty() | जाँचना कि stack खाली तो नहीं |
सारी क्रिया top पर होती है। top नामक एक index variable यह याद रखता है कि वह कहाँ है।
Overflow और underflow
दो स्थितियाँ हमेशा जाँचनी चाहिए:
- Overflow — भरे stack पर push करना (
topआख़िरी index पर हो)। - Underflow — खाली stack से pop करना (
top-1हो)।
हर push से पहले full और हर pop से पहले empty जाँचें। ये जाँच छोड़ने से data खोता है या invalid memory पढ़ी जाती है।
Array implementation
यहाँ array से बना पूरा stack है, सभी safety checks के साथ।
#include <stdio.h>
#define SIZE 5
int stack[SIZE];
int top = -1; // khaali stack
void push(int x) {
if (top == SIZE - 1) { printf("Overflow\n"); return; }
stack[++top] = x; // upar badhein, phir store
}
int pop() {
if (top == -1) { printf("Underflow\n"); return -1; }
return stack[top--]; // return karein, phir neeche
}
int main() {
push(10); push(20); push(30);
printf("Popped: %d\n", pop()); // 30 (last in)
printf("Popped: %d\n", pop()); // 20
printf("Top now: %d\n", stack[top]); // 10
return 0;
}Popped: 30
Popped: 20
Top now: 10
ध्यान दें 30 पहले निकला जबकि 10 पहले push हुआ था — यही LIFO है।
Stacks कहाँ इस्तेमाल होते हैं
- Function calls — computer call stack से याद रखता है कि कहाँ लौटना है।
- Undo/redo — आख़िरी कार्य पहले undo होता है।
- Balanced brackets — जाँचना कि हर
(का मेल खाता)हो। - Expression evaluation और backtracking algorithms।
आम गलतियाँ
- Push से पहले overflow या pop से पहले underflow जाँचना भूलना।
- खाली stack के लिए
topको -1 के बजाय 0 से शुरू करना। stack[++top]बनामstack[top++]का क्रम उलझाना।- बीच के elements तक पहुँचने की कोशिश — stack सिर्फ़ top दिखाता है।
एक peek() function जोड़ें जो top item हटाए बिना लौटाए, और एक isEmpty() function। हर push के बाद top print करने में इन्हें इस्तेमाल करें। तुलना करें C में queue से, जो LIFO के बजाय FIFO इस्तेमाल करता है।
सारांश
- Stack LIFO मानता है — आख़िरी push हुआ item पहले pop होता है।
- मुख्य operations:
push,pop,peek,isEmpty। - Top को
-1से शुरू होने वाले index से track करें। - Push से पहले overflow और pop से पहले underflow हमेशा जाँचें।
- Stacks call stacks, undo, bracket matching आदि को शक्ति देते हैं।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C में stack क्या है?
top नामक variable से बनाया जाता है।Stack में push और pop क्या हैं?
push stack के ऊपर एक नया item जोड़ता है, और pop ऊपर मौजूद item को हटाकर लौटाता है। दोनों operations सिर्फ़ top सिरे पर काम करते हैं, जो stack को LIFO बनाता है।Stack overflow और underflow क्या हैं?
push करने की कोशिश करें — जगह नहीं बची। Underflow तब होता है जब आप खाली stack से pop करने की कोशिश करें — हटाने को कुछ नहीं। अच्छा stack code कार्य करने से पहले दोनों जाँचता है।Stack में top variable क्या करता है?
top एक index है जो मौजूदा top element की स्थिति दर्शाता है। यह खाली stack के लिए -1 से शुरू होता है, हर push पर एक बढ़ता है, और हर pop पर एक घटता है। top जाँचने से पता चलता है कि stack खाली है या भरा।