🔴 Advanced  ·  Lesson 39

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 हो)।
⚠️ हमेशा guard करें

हर push से पहले full और हर pop से पहले empty जाँचें। ये जाँच छोड़ने से data खोता है या invalid memory पढ़ी जाती है।

Array implementation

यहाँ array से बना पूरा stack है, सभी safety checks के साथ।

C Language
#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;
}
Output:
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 क्या है?
Stack एक data structure है जो LIFO नियम मानता है — Last In, First Out। जो item सबसे बाद में जोड़ा जाता है वही सबसे पहले निकलता है, प्लेटों के ढेर की तरह जहाँ आप ऊपर वाली प्लेट पहले लेते हैं। C में यह आमतौर पर एक array और top नामक variable से बनाया जाता है।
Stack में push और pop क्या हैं?
push stack के ऊपर एक नया item जोड़ता है, और pop ऊपर मौजूद item को हटाकर लौटाता है। दोनों operations सिर्फ़ top सिरे पर काम करते हैं, जो stack को LIFO बनाता है।
Stack overflow और underflow क्या हैं?
Overflow तब होता है जब आप पहले से भरे stack पर push करने की कोशिश करें — जगह नहीं बची। Underflow तब होता है जब आप खाली stack से pop करने की कोशिश करें — हटाने को कुछ नहीं। अच्छा stack code कार्य करने से पहले दोनों जाँचता है।
Stack में top variable क्या करता है?
top एक index है जो मौजूदा top element की स्थिति दर्शाता है। यह खाली stack के लिए -1 से शुरू होता है, हर push पर एक बढ़ता है, और हर pop पर एक घटता है। top जाँचने से पता चलता है कि stack खाली है या भरा।
असली programs में stacks कहाँ इस्तेमाल होते हैं?
Stacks function call प्रबंधन (call stack), editors में undo सुविधा, balanced brackets जाँचना, expressions evaluate करना, और algorithms में backtracking के लिए इस्तेमाल होते हैं। जब भी "सबसे नया पहले" व्यवहार चाहिए, stack फिट बैठता है।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.