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

C++ में डीक्यू को लागू करना


डीक्यू या डबल एंडेड क्यू, क्यू डेटा स्ट्रक्चर का एक सामान्यीकृत वर्जन है जो दोनों छोरों पर इन्सर्ट और डिलीट की अनुमति देता है।

डीक्यू के कुछ बेसिक ऑपरेशन्स हैं −

insert_at_beg(): डीक्यू के फ्रंट पर एक आइटम इन्सर्ट करता है।

insert_at_end(): डीक्यू के रियर पर एक आइटम इन्सर्ट करता है।

delete_fr_beg(): डीक्यू के फ्रंट से एक आइटम डिलीट करता है।

delete_fr_rear(): डीक्यू के रियर से एक आइटम डिलीट करता है।

डीक्यू को लागू करने के लिए C++ प्रोग्राम निम्नलिखित है

एल्गोरिदम

Begin    फ्रंट f और रियर r और निम्नलिखित फंक्शन्स को डिक्लेयर करने के लिए एक क्लास dequeue डिक्लेयर करें:    function insert_at_beg(int) फ्रंट पर आइटम इन्सर्ट करने के लिए:       यदि क्यू पूरी तरह भरा नहीं है, तो एलिमेंट को फ्रंट पर इन्सर्ट करें और फ्रंट और रियर अपडेट करें       अन्यथा overflow प्रिंट करें।    function insert_at_end(int) रियर पर आइटम इन्सर्ट करने के लिए:       यदि क्यू पूरी तरह भरा नहीं है, तो एलिमेंट को रियर पर इन्सर्ट करें और फ्रंट और रियर अपडेट करें       अन्यथा overflow प्रिंट करें।    function delete_fr_beg() फ्रंट से आइटम डिलीट करने के लिए:       यदि क्यू खाली है, तो underflow प्रिंट करें अन्यथा फ्रंट एलिमेंट डिलीट करें और फ्रंट अपडेट करें।    function delete_fr_end() एंड से आइटम डिलीट करने के लिए:       यदि क्यू खाली है, तो underflow प्रिंट करें अन्यथा रियर एलिमेंट डिलीट करें और रियर अपडेट करें। End

उदाहरण कोड

#include<iostream> using namespace std; #define SIZE 10 class dequeue {    int a[20],f,r;    public:       dequeue();       void insert_at_beg(int);       void insert_at_end(int);       void delete_fr_front();       void delete_fr_rear();       void show(); }; dequeue::dequeue() {    f=-1;    r=-1; } void dequeue::insert_at_end(int i) {    if(r>=SIZE-1) {       cout<<"\n insertion is not possible, overflow!!!!";    } else {       if(f==-1) {          f++;          r++;       } else {          r=r+1;       }       a[r]=i;       cout<<"\nInserted item is"<<a[r];    } } void dequeue::insert_at_beg(int i) {    if(f==-1) {       f=0;       a[++r]=i;       cout<<"\n inserted element is:"<<i;    } else if(f!=0) {       a[--f]=i;       cout<<"\n inserted element is:"<<i;    } else {       cout<<"\n insertion is not possible, overflow!!!";    } } void dequeue::delete_fr_front() {    if(f==-1) {       cout<<"deletion is not possible::dequeue is empty";       return;    }    else {       cout<<"the deleted element is:"<<a[f];       if(f==r) {          f=r=-1;          return;       } else          f=f+1;       }    }    void dequeue::delete_fr_rear() {       if(f==-1) {          cout<<"deletion is not possible::dequeue is empty";          return;       }       else {          cout<<"the deleted element is:"<<a[r];          if(f==r) {             f=r=-1;          } else             r=r-1;       }    }    void dequeue::show() {       if(f==-1) {          cout<<"Dequeue is empty";       } else {          for(int i=f;i<=r;i++) {             cout<<a[i]<<" ";          }       }    }    int main() {       int c,i;       dequeue d;       Do//स्विच ऑपरेशन परफॉर्म करें {       cout<<"\n 1.insert at beginning";       cout<<"\n 2.insert at end";       cout<<"\n 3.show";       cout<<"\n 4.deletion from front";       cout<<"\n 5.deletion from rear";       cout<<"\n 6.exit";       cout<<"\n enter your choice:";       cin>>c;       switch(c) {          case 1:             cout<<"enter the element to be inserted";             cin>>i;             d.insert_at_beg(i);          break;          case 2:             cout<<"enter the element to be inserted";             cin>>i;             d.insert_at_end(i);          break;          case 3:             d.show();          break;          case 4:             d.delete_fr_front();          break;          case 5:             d.delete_fr_rear();          break;          case 6:             exit(1);          break;          default:             cout<<"invalid choice";          break;       }    } while(c!=7); }

आउटपुट

1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:4 deletion is not possible::dequeue is empty 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:5 deletion is not possible::dequeue is empty 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:1 enter the element to be inserted7 inserted element is:7 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:1 enter the element to be inserted6 insertion is not possible, overflow!!! 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:1 enter the element to be inserted4 insertion is not possible, overflow!!! 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:2 enter the element to be inserted6 Inserted item is6 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:2 enter the element to be inserted4 Inserted item is4 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:3 7 6 4 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:4 the deleted element is:7 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:5 the deleted element is:4 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:1 enter the element to be inserted7 inserted element is:7 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:3 7 6 1.insert at beginning 2.insert at end 3.show 4.deletion from front 5.deletion from rear 6.exit enter your choice:6

  1. C++ STL में Set_Symmetric_Difference का कार्यान्वयन C++ STL में Set_Symmetric_Difference का कार्यान्वयन

    यह C++ प्रोग्राम set_symmetric_difference को लागू करने के लिए है। दो सेट का सिमेट्रिक डिफरेंस उन तत्वों द्वारा बनाया जाता है जो एक सेट में मौजूद होते हैं, लेकिन दूसरे में नहीं। सामान्य सेट ऑपरेशन हैं: Set Union Set Intersection Symmetric Set Difference या Exclusive-OR Set Difference या Subtraction

  1. C++ प्रोग्राम: एडजेसेंसी मैट्रिक्स इम्प्लीमेंट करना C++ प्रोग्राम: एडजेसेंसी मैट्रिक्स इम्प्लीमेंट करना

    एक ग्राफ का एडजेसेंसी मैट्रिक्स V x V आकार का एक वर्ग मैट्रिक्स होता है। V ग्राफ G के वर्टेक्स की संख्या है। इस मैट्रिक्स में प्रत्येक तरफ V वर्टेक्स मार्क किए जाते हैं। यदि ग्राफ में i से j वर्टेक्स तक कुछ एज हैं, तो एडजेसेंसी मैट्रिक्स में i-वीं पंक्ति और j-वें कॉलम में 1 होगा (या वेटेड ग्राफ के

  1. C++ प्रोग्राम: एडजेसेंसी लिस्ट इम्प्लीमेंट करना C++ प्रोग्राम: एडजेसेंसी लिस्ट इम्प्लीमेंट करना

    एक ग्राफ का एडजेसेंसी लिस्ट प्रतिनिधित्व एक लिंक्ड लिस्ट प्रतिनिधित्व है। इस प्रतिनिधित्व में हमारे पास लिस्ट्स का एक ऐरे होता है। ऐरे का आकार V होता है। यहां V वर्टेक्स की संख्या है। दूसरे शब्दों में, हम कह सकते हैं कि हमारे पास V संख्या की अलग-अलग लिस्ट्स को स्टोर करने के लिए एक ऐरे है। यदि एक लि