स्टैक
स्टैक जिसे LIFO के रूप में लागू किया जाता है, जहां इन्सर्शन और डिलीशन एक ही छोर, टॉप से किए जाते हैं। अंतिम एलिमेंट जो दर्ज किया गया था, वह पहले डिलीट होता है।
स्टैक ऑपरेशन्स हैं −
- push (int data) − टॉप पर इन्सर्शन
- int pop() − टॉप से डिलीशन
क्यू
क्यू जिसे FIFO के रूप में लागू किया जाता है जहां इन्सर्शन एक छोर (रियर) पर किए जाते हैं और डिलीशन दूसरे छोर (फ्रंट) से किए जाते हैं। पहला एलिमेंट जो दर्ज किया गया था, वह पहले डिलीट होता है।
क्यू ऑपरेशन्स हैं −
- EnQueue (int data) − रियर छोर पर इन्सर्शन
- int DeQueue() − फ्रंट छोर से डिलीशन
यह दो क्यू का उपयोग करके स्टैक को लागू करने का एक C++ प्रोग्राम है
एल्गोरिदम्स
Begin function enqueue1 qu1 पर आइटम a इन्सर्ट करने के लिए: Set, np1 = new qu1 np1->d1 = a np1->n1 = NULL if (f1 == NULL) Then set r1 = np1 r1->n1 = NULL f1 = r1 else r1->n1 = np1 r1 = np1 r1->n1 = NULL End Begin function dequeue1 qu1 से आइटम डिलीट करने के लिए। if queue is null Print no elements present in queue. Else q1 = f1 f1 = f1->n1 a = q1->d1 delete(q1) return a End Begin function enqueue2 qu2 पर आइटम a इन्सर्ट करने के लिए। np2 = new qu2; np2->d2 = a; np2->n2 = NULL; if queue is null Set r2 = np2 r2->n2 = NULL f2 = r2 Else Set r2->n2 = np2 r2 = np2 r2->n2 = NULL End Begin function dequeue2 qu2 से आइटम डिलीट करने के लिए: if queue is null Print no elements present in queue. Else q2 = f2 f2 = f2->n2 a = q2->d2 delete(q2) return a End
उदाहरण कोड
#include<iostream> using namespace std; struct qu1// queue1 डिक्लेरेशन { qu1 *n1; int d1; }*f1 = NULL, *r1 = NULL, *q1 = NULL, *p1 = NULL, *np1 = NULL; struct qu2// queue2 डिक्लेरेशन { qu2 *n2; int d2; }*f2 = NULL, *r2 = NULL, *q2 = NULL, *p2 = NULL, *np2 = NULL; void enqueue1(int a) { np1 = new qu1; np1->d1 = a; np1->n1 = NULL; if (f1 == NULL) { r1 = np1; r1->n1 = NULL; f1 = r1; } else { r1->n1 = np1; r1 = np1; r1->n1 = NULL; } } int dequeue1() { int a; if (f1 == NULL) { cout<<"no elements present in queue\n"; } else { q1 = f1; f1 = f1->n1; a = q1->d1; delete(q1); return a; } } void enqueue2(int a) { np2 = new qu2; np2->d2 = a; np2->n2 = NULL; if (f2 == NULL) { r2 = np2; r2->n2 = NULL; f2 = r2; } else { r2->n2 = np2; r2 = np2; r2->n2 = NULL; } } int dequeue2() { int a; if (f2 == NULL) { cout<<"no elements present in queue\n"; } else { q2 = f2; f2 = f2->n2; a = q2->d2; delete(q2); return a; } } int main() { int n, a, i = 0; cout<<"Enter the number of elements to be entered into stack\n"; cin>>n; while (i < n) { cout<<"enter the element to be entered\n"; cin>>a; enqueue1(a); i++; } cout<<"\n\nElements popped\n\n"; while (f1 != NULL || f2 != NULL)// यदि दोनों क्यू नल नहीं हैं { if (f2 == NULL)// यदि क्यू 2 नल है { while (f1->n1 != NULL) { enqueue2(dequeue1()); } cout<<dequeue1()<<endl; } else if (f1 == NULL)//यदि क्यू 1 नल है { while (f2->n2 != NULL) { enqueue1(dequeue2()); } cout<<dequeue2()<<endl; } } }आउटपुट
Enter the number of elements to be entered into stack 5 enter the element to be entered 1 enter the element to be entered 2 enter the element to be entered 3 enter the element to be entered 4 enter the element to be entered 5 Elements popped 5 4 3 2 1