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

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

स्टैक

स्टैक जिसे LIFO के रूप में लागू किया जाता है, जहां सम्मिलन और विलोपन एक ही छोर से किया जाता है, ऊपर। दर्ज किया गया अंतिम तत्व पहले हटा दिया जाता है।

स्टैक संचालन हैं -

  • पुश (इंट डेटा) - शीर्ष पर सम्मिलन
  • इंट पॉप () - ऊपर से हटाना

कतार

कतार जिसे फीफो के रूप में लागू किया जाता है जहां एक छोर (पीछे) पर सम्मिलन किया जाता है और दूसरे छोर (सामने) से हटा दिया जाता है। दर्ज किया गया पहला तत्व पहले हटा दिया जाता है।

कतार संचालन हैं -

  • एनक्यूई (इंट डेटा) - पिछले छोर पर सम्मिलन
  • int DeQueue() - सामने के छोर से हटाना

यह दो स्टैक का उपयोग करके कतार को लागू करने के लिए एक C++ प्रोग्राम है।

कार्यों का विवरण

    किसी आइटम को कतार में लगाने के लिए
  • कार्य enQueue():
    • m को s1 पर पुश करें।
  • क्यू से आइटम को हटाने के लिए deQueue () फ़ंक्शन करें।
    • यदि दोनों ढेर खाली हैं तो प्रिंट कतार खाली है।
    • यदि s2 खाली है तो तत्वों को s1 से s2 में ले जाएँ।
    • एस2 से तत्वों को पॉप करें और इसे वापस करें।
  • स्टैक में आइटम को पुश करने के लिए
  • फ़ंक्शन पुश()।
  • स्टैक से किसी आइटम को पॉप आउट करने के लिए
  • फ़ंक्शन पॉप()।

उदाहरण कोड

#include<stdlib.h>
#include<iostream>
using namespace std;

struct nod//node declaration {
   int d;
   struct nod *n;
};

void push(struct nod** top_ref, int n_d);//functions prototypes.
int pop(struct nod** top_ref);

struct queue {
   struct nod *s1;
   struct nod *s2;
};

void enQueue(struct queue *q, int m) {
   push(&q->s1, m);
}

int deQueue(struct queue *q) {
   int m;
   if (q->s1 == NULL && q->s2 == NULL) {
      cout << "Queue is empty";
      exit(0);
   }
   if (q->s2 == NULL) {
      while (q->s1 != NULL) {
         m = pop(&q->s1);
         push(&q->s2, m);
      }
   }
   m = pop(&q->s2);
   return m;
}

void push(struct nod** top_ref, int n_d) {
   struct nod* new_node = (struct nod*) malloc(sizeof(struct nod));

   if (new_node == NULL) {
      cout << "Stack underflow \n";
      exit(0);
   }
   //put items on stack
   new_node->d= n_d;
   new_node->n= (*top_ref);
   (*top_ref) = new_node;
}

int pop(struct nod** top_ref) {
   int res;
   struct nod *top;
   if (*top_ref == NULL)//if stack is null {
      cout << "Stack overflow \n";
      exit(0);
   } else { //pop elements from stack
      top = *top_ref;
      res = top->d;
      *top_ref = top->n;
      free(top);
      return res;
   }
}

int main() {
   struct queue *q = (struct queue*) malloc(sizeof(struct queue));
   q->s1 = NULL;
   q->s2 = NULL;
   cout << "Enqueuing..7";
   cout << endl;
   enQueue(q, 7);
   cout << "Enqueuing..6";
   cout << endl;
   enQueue(q, 6);
   cout << "Enqueuing..2";
   cout << endl;
   enQueue(q, 2);
   cout << "Enqueuing..3";
   cout << endl;
   enQueue(q, 3);

   cout << "Dequeuing...";
   cout << deQueue(q) << " ";
   cout << endl;
   cout << "Dequeuing...";
   cout << deQueue(q) << " ";
   cout << endl;
   cout << "Dequeuing...";
   cout << deQueue(q) << " ";
   cout << endl;
}

आउटपुट

Enqueuing..7
Enqueuing..6
Enqueuing..2
Enqueuing..3
Dequeuing...7
Dequeuing...6
Dequeuing...2

  1. सी ++ प्रोग्राम सरणी का उपयोग करके स्टैक को लागू करने के लिए

    स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं - पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है। पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है

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

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

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

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