📘 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
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
| क्रिया | top | Stack सामग्री |
|---|---|---|
| शुरू | -1 | (खाली) |
| push 10 | 0 | 10 |
| push 20 | 1 | 10, 20 |
| pop → 20 | 0 | 10 |
हर 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से शुरूtopindex इस्तेमाल करता है। - 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 पर स्वतंत्र रूप से बढ़ सकता है।
💻 लाइव कोड एडिटर
इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.