📘 Lesson  ·  Lesson 63

Stack using Array

लक्ष्य: एक चलता stack program

यह एक hands-on अभ्यास program है। अगर आप पहले समझना चाहते हैं कि stack क्या है और LIFO कैसे काम करता है, तो C में stack concept lesson पढ़ें। यहाँ हम सीधे एक पूरा, array से बना menu-driven stack program बनाते हैं जिसे आप compile करके चला सकते हैं।

Program क्या करेगा

Program लगातार एक menu दिखाता है और user जो चुने वही करता है:

  • 1. Push — top पर एक number जोड़ें
  • 2. Pop — top number हटाएँ
  • 3. Peek — top number हटाए बिना देखें
  • 4. Display — top से नीचे तक सभी numbers दिखाएँ
  • 5. Exit

पूरा program

C Language
#include <stdio.h>
#define SIZE 100
int stack[SIZE];
int top = -1;

void push(int x) {
    if (top == SIZE - 1) { printf("Stack full\n"); return; }
    stack[++top] = x;
    printf("%d pushed\n", x);
}
void pop() {
    if (top == -1) { printf("Stack empty\n"); return; }
    printf("%d popped\n", stack[top--]);
}
void peek() {
    if (top == -1) { printf("Stack empty\n"); return; }
    printf("Top = %d\n", stack[top]);
}
void display() {
    if (top == -1) { printf("Stack empty\n"); return; }
    printf("Stack: ");
    for (int i = top; i >= 0; i--) printf("%d ", stack[i]);
    printf("\n");
}
int main() {
    int choice, value;
    while (1) {
        printf("\n1.Push 2.Pop 3.Peek 4.Display 5.Exit: ");
        scanf("%d", &choice);
        switch (choice) {
            case 1: printf("Value: "); scanf("%d", &value); push(value); break;
            case 2: pop(); break;
            case 3: peek(); break;
            case 4: display(); break;
            case 5: return 0;
            default: printf("Invalid\n");
        }
    }
}

एक sample run

Sample Output:
1.Push 2.Pop 3.Peek 4.Display 5.Exit: 1
Value: 10
10 pushed
1.Push 2.Pop 3.Peek 4.Display 5.Exit: 1
Value: 20
20 pushed
1.Push 2.Pop 3.Peek 4.Display 5.Exit: 4
Stack: 20 10
1.Push 2.Pop 3.Peek 4.Display 5.Exit: 2
20 popped
1.Push 2.Pop 3.Peek 4.Display 5.Exit: 5

Push और pop का dry run

क्रियाtopStack सामग्री
शुरू-1(खाली)
push 10010
push 20110, 20
pop → 20010

हर push store करने से पहले top ऊपर बढ़ाता है; हर pop top पर पढ़कर उसे नीचे करता है। Display loop top से 0 तक चलता है।

आम गलतियाँ

  • खाली stack के लिए top को -1 के बजाय 0 से शुरू करना।
  • Full/empty जाँच भूलना, जिससे overflow या invalid memory पढ़ना होता है।
  • Display को top से नीचे के बजाय 0 से ऊपर दिखाना (गलत क्रम)।
  • Push/pop में ++top (pre) और top++ (post) गलत मिलाना।
🏋️ अभ्यास

एक "count" विकल्प जोड़ें जो बताए कि stack में कितने items हैं (वह बस top + 1 है)। फिर fixed array को dynamically allocated में बदलने की कोशिश करें।

सारांश

  • Array stack एक array और -1 से शुरू top index इस्तेमाल करता है।
  • Menu-driven loop push, pop, peek और display चलाता है।
  • Push top ऊपर करके store करता है; pop पढ़कर नीचे करता है।
  • Display LIFO क्रम दिखाने के लिए top से 0 तक चलता है।
  • Full और empty स्थितियों से हमेशा बचाव करें।

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

C में array से stack कैसे implement करते हैं?
Items रखने के लिए एक array और मौजूदा top स्थिति दर्शाने के लिए एक integer top इस्तेमाल करते हैं, जो -1 से शुरू होता है। push top बढ़ाकर value रखता है; pop top की value लौटाकर उसे घटाता है। Push से पहले full और pop से पहले empty जाँचते हैं।
Menu-driven stack program क्या है?
Menu-driven stack program user को विकल्पों की सूची दिखाता है — push, pop, peek, display, exit — और एक loop में दोहराता है, user जो चुने वही operation करते हुए। Data structures अभ्यास का यह आम तरीका है क्योंकि यह हर operation को interactively चलाता है।
Stack में peek operation क्या है?
peek (कभी top कहा जाता है) stack के ऊपर मौजूद item की value हटाए बिना लौटाता है। यह आपको अगले pop होने वाले item को देखने देता है, stack अपरिवर्तित रखते हुए।
Array stack के सभी elements कैसे display करते हैं?
आप मौजूदा top index से 0 तक loop चलाते हैं, हर element print करते हुए। Top से नीचे जाना items को उस क्रम में दिखाता है जिसमें वे pop होंगे, जो stack की LIFO प्रकृति दर्शाता है।
Linked-list stack की तुलना में array stack का क्या फ़ायदा है?
Array stack सरल है और हर element के लिए कम memory लेता है क्योंकि वह pointers नहीं रखता, और पहुँच बहुत तेज़ है। इसकी मुख्य सीमा पहले से तय एक fixed अधिकतम size है, जबकि linked-list stack run time पर स्वतंत्र रूप से बढ़ सकता है।
← 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 दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.