स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं -
-
पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है।
-
पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है
-
पीक - यह स्टैक का शीर्ष डेटा मान देता है
एक प्रोग्राम जो सरणी का उपयोग करके स्टैक को लागू करता है, वह इस प्रकार दिया गया है।
उदाहरण
#include <iostream> using namespace std; int stack[100], n=100, top=-1; void push(int val) { if(top>=n-1) cout<<"Stack Overflow"<<endl; else { top++; stack[top]=val; } } void pop() { if(top<=-1) cout<<"Stack Underflow"<<endl; else { cout<<"The popped element is "<< stack[top] <<endl; top--; } } void display() { if(top>=0) { cout<<"Stack elements are:"; for(int i=top; i>=0; i--) cout<<stack[i]<<" "; cout<<endl; } else cout<<"Stack is empty"; } int main() { int ch, val; cout<<"1) Push in stack"<<endl; cout<<"2) Pop from stack"<<endl; cout<<"3) Display stack"<<endl; cout<<"4) Exit"<<endl; do { cout<<"Enter choice: "<<endl; cin>>ch; switch(ch) { case 1: { cout<<"Enter value to be pushed:"<<endl; cin>>val; push(val); break; } case 2: { pop(); break; } case 3: { display(); break; } case 4: { cout<<"Exit"<<endl; break; } default: { cout<<"Invalid Choice"<<endl; } } }while(ch!=4); return 0; }
आउटपुट
1) Push in stack 2) Pop from stack 3) Display stack 4) Exit Enter choice: 1 Enter value to be pushed: 2 Enter choice: 1 Enter value to be pushed: 6 Enter choice: 1 Enter value to be pushed: 8 Enter choice: 1 Enter value to be pushed: 7 Enter choice: 2 The popped element is 7 Enter choice: 3 Stack elements are:8 6 2 Enter choice: 5 Invalid Choice Enter choice: 4 Exit
उपरोक्त कार्यक्रम में, पुश () फ़ंक्शन तर्क वैल यानी मान को स्टैक में धकेलने के लिए लेता है। यदि कोई शीर्ष n से बड़ा या उसके बराबर है, तो स्टैक में कोई स्थान नहीं है और अतिप्रवाह मुद्रित होता है। अन्यथा, वैल को स्टैक में धकेल दिया जाता है। इसके लिए कोड स्निपेट इस प्रकार है।
void push(int val) { if(top>=n-1) cout<<"Stack Overflow"<<endl; else { top++; stack[top]=val; } }
यदि कोई मान है, तो पॉप () फ़ंक्शन स्टैक के सबसे ऊपरी मान को पॉप करता है। यदि स्टैक खाली है तो अंडरफ्लो मुद्रित होता है। यह इस प्रकार दिया गया है।
void pop() { if(top<=-1) cout<<"Stack Underflow"<<endl; else { cout<<"The popped element is "<< stack[top] <<endl; top--; } }
डिस्प्ले () फ़ंक्शन स्टैक में सभी तत्वों को प्रदर्शित करता है। ऐसा करने के लिए यह लूप के लिए उपयोग करता है। यदि स्टैक में कोई तत्व नहीं हैं, तो स्टैक खाली है मुद्रित है। यह नीचे दिया गया है।
void display() { if(top>=0) { cout<<"Stack elements are:"; for(int i=top; i>=0; i--) cout<<stack[i]<<" "; cout<<endl; }else cout<<"Stack is empty"; }
फ़ंक्शन मुख्य () उपयोगकर्ता को एक विकल्प प्रदान करता है यदि वे स्टैक को पुश, पॉप या प्रदर्शित करना चाहते हैं। उपयोगकर्ता की प्रतिक्रिया के अनुसार, उपयुक्त फ़ंक्शन को स्विच का उपयोग करके कहा जाता है। यदि उपयोगकर्ता एक अमान्य प्रतिक्रिया दर्ज करता है, तो वह मुद्रित होता है। इसके लिए कोड स्निपेट नीचे दिया गया है।
int main() { int ch, val; cout<<"1) Push in stack"<<endl; cout<<"2) Pop from stack"<<endl; cout<<"3) Display stack"<<endl; cout<<"4) Exit"<<endl; do { cout<<"Enter choice: "<<endl; cin>>ch; switch(ch) { case 1: { cout<<"Enter value to be pushed:"<<endl; cin>>val; push(val); break; } case 2: { pop(); break; } case 3: { display(); break; } case 4: { cout<<"Exit"<<endl; break; } default: { cout<<"Invalid Choice"<<endl; } } }while(ch!=4); return 0; }