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

C++ में सर्कुलर कतार डेटा संरचना

एक कतार एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। Queue FIFO तंत्र को लागू करता है अर्थात जो तत्व पहले डाला जाता है उसे भी पहले हटा दिया जाता है।

कतार गन्ना एक रैखिक डेटा संरचना हो सकती है। लेकिन अगर हम सरणी का उपयोग करके कतार को लागू करते हैं तो यह कुछ समस्या पैदा कर सकता है। कभी-कभी कुछ लगातार डालने और हटाने के ऑपरेशन का उपयोग करके, आगे और पीछे की स्थिति बदल जाएगी। उस समय, ऐसा लगेगा कि कतार में तत्वों को सम्मिलित करने के लिए कोई स्थान नहीं है। यहां तक ​​कि अगर कुछ खाली स्थान हैं, तो कुछ तार्किक समस्याओं के कारण उनका उपयोग नहीं किया जाएगा। इस समस्या को दूर करने के लिए, हम वृत्ताकार कतार डेटा संरचना का उपयोग करेंगे।

वृत्ताकार कतार एक प्रकार की कतार होती है जिसमें वृत्त बनाने के लिए अंतिम स्थिति पहली स्थिति से जुड़ी होती है।

उदाहरण

#include <iostream>
using namespace std;
int cqueue[5];
int front = -1, rear = -1, n=5;
void insertCQ(int val) {
   if ((front == 0 && rear == n-1) || (front == rear+1)) {
      cout<<"Queue Overflow \n";
      return;
   }
   if (front == -1) {
      front = 0;
      rear = 0;
   }
   else {
      if (rear == n - 1)
         rear = 0;
      else
         rear = rear + 1;
   }
   cqueue[rear] = val ;
}
void deleteCQ() {
   if (front == -1) {
      cout<<"Queue Underflow\n";
      return ;
   }
   cout<<"Element deleted from queue is : "<<cqueue[front<<endl;
   if (front == rear) {
      front = -1;
      rear = -1;
   }
   else {
      if (front == n - 1)
         front = 0;
      else
         front = front + 1;
      }
   }
   void displayCQ() {
      int f = front, r = rear;
      if (front == -1) {
         cout<<"Queue is empty"<<endl;
         return;
      }
      cout<<"Queue elements are :\n";
      if (f <= r) {
         while (f <= r){
            cout<<cqueue[f]<<" ";
            f++;
         }
      }
       else {
         while (f <= n - 1) {
            cout<<cqueue[f]<<" ";
            f++;
         }
         f = 0;
         while (f <= r) {
            cout<<cqueue[f]<<" ";
            f++;
         }
      }
      cout<<endl;
}
int main() {
   int ch, val;
   cout<<"1)Insert\n";
   cout<<"2)Delete\n";
   cout<<"3)Display\n";
   cout<<"4)Exit\n";
   do {
      cout<<"Enter choice : "<<endl;
      cin>>ch;
      switch(ch) {
         case 1:
            cout<<"Input for insertion: "<<endl;
            cin>>val;
            insertCQ(val);
            break;
         case 2:
            deleteCQ();
            break;
         case 3:
            displayCQ();
            break;
         case 4:
            cout<<"Exit\n";
            break;
            default: cout<<"Incorrect!\n";
      }
   }
   while(ch != 4);
      return 0;
}

आउटपुट

1)Insert
2)Delete
3)Display
4)Exit
Enter choice :
1
Input for insertion:
10
Enter choice :
1
Input for insertion:
20
Enter choice :
1
Input for insertion:
30
Enter choice :
1
Input for insertion:
40
Enter choice :
1
Input for insertion:
50
Enter choice :
3
Queue elements are :
10 20 30 40 50
Enter choice :
2
Element deleted from queue is : 10
Enter choice :
2
Element deleted from queue is : 20
Enter choice :
3
Queue elements are :
30 40 50
Enter choice :
4
Exit

  1. सी भाषा में रैखिक डेटा संरचना कतार की व्याख्या करें

    डेटा संरचना संरचित तरीके से व्यवस्थित डेटा का संग्रह है। इसे नीचे बताए अनुसार दो प्रकारों में बांटा गया है - रैखिक डेटा संरचना - डेटा को एक रेखीय तरीके से व्यवस्थित किया जाता है। उदाहरण के लिए, सरणियाँ, संरचनाएँ, ढेर, कतारें, लिंक्ड सूचियाँ। गैर-रेखीय डेटा संरचना - डेटा को एक श्रेणीबद्ध तरीके

  1. सी ++ स्ट्रीम क्लास स्ट्रक्चर

    C++ स्ट्रीम में प्रोग्राम थ्रेड और i/o के बीच स्थानांतरित वर्णों की धारा को संदर्भित करता है। स्ट्रीम कक्षाएं सी ++ में फाइलों और आईओ उपकरणों पर इनपुट और आउटपुट ऑपरेशंस के लिए उपयोग किया जाता है। इन वर्गों में विशिष्ट विशेषताएं हैं और कार्यक्रम के इनपुट और आउटपुट को संभालने के लिए। iostream.h पुस्

  1. हाफेज डेटा संरचना

    परिचय टेम्पलेट पैरामीटर या हाफएज डेटा संरचना (हाफएजडीएस के रूप में संक्षिप्त) के लिए एक एचडीएस को किनारे-केंद्रित डेटा संरचना के रूप में परिभाषित किया गया है, जो शिखर, किनारों और चेहरों की घटनाओं की जानकारी को बनाए रखने में सक्षम है, जैसे कि प्लानर मैप्स, पॉलीहेड्रा, या अन्य उन्मुख, द्वि-आयामी यादृ