Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में दो क्यू का उपयोग करके स्टैक को लागू करना


स्टैक

स्टैक जिसे 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

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)

  1. - C++ में बहुआयामी सरणियों का उपयोग करके दो मैट्रिक्स गुणा करने का प्रोग्राम

    मैट्रिक्स संख्याओं का एक आयताकार सरणी है जो पंक्तियों और कॉलम के रूप में व्यवस्थित होता है। मैट्रिक्स का एक उदाहरण निम्नलिखित है। एक 3*3 मैट्रिक्स में 3 पंक्तियाँ और 3 कॉलम होते हैं जैसा कि नीचे दिखाया गया है: 8 6 3 7 1 9 5 1 9 बहुआयामी सरणियों का उपयोग करके दो मैट्रिक्स गुणा करने का एक प्रोग्राम नि

  1. - पायथन प्रोग्राम: दो कतारों का उपयोग करके स्टैक लागू करना

    जब दो कतारों का उपयोग करके स्टैक लागू करने की आवश्यकता होती है, तो एक Stack_structure क्लास की आवश्यकता होती है साथ में एक Queue_structure क्लास। इन क्लास में स्टैक और कतार से मान जोड़ने और हटाने के लिए संबंधित विधियाँ परिभाषित की जाती हैं। उदाहरण class Stack_structure: def __init__(self):