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

सी ++ में एक लिंक्ड सूची में व्यंजन और स्वर नोड्स व्यवस्थित करें?

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

Input: A-M-A-Z-O-N
Output: A-A-O-M-Z-N
Code (Complexity: O(N), Space O(1))

उदाहरण

#include<iostream>
using namespace std;
class Node1{
   public:
   char var1;
   Node1 *next1;
   Node1(char v,Node1 *next1=NULL):var1(v),next1(next1){}
};
Node1 *make_list(char array1[],int size1){
   if(size1 ==0)
   return NULL;
   else {
      Node1 *head = new Node1('o');
      Node1 *temp = head;
      for(int i=0;i<size;++i) {
         temp->next1 = new Node1(array1[i]);
         temp=temp->next1;
      }
      temp=head;
      head = head->next1;
      delete temp;
      return head;
   }
}
void print_list(Node1 *head){
   while(head){
      cout<<head->var1<<"--";
      head = head->next1;
   }
   cout<<"END"<<endl;
}
void insertAfter(Node1** temp,Node1 *n){
   n->next1 = (*temp)->next1;
   (*temp)->next1 = n;
}
bool isVowel(char v){
   switch(v){
      case 'A':
      case 'E':
      case 'I':
      case 'O':
      case 'U':
      return true;
      default:
      return false;
   }
}
Node1 *groupByVowels(Node1 *head){
   Node1 *vowel=NULL,*consonant=NULL;
   vowel = new Node1('L');
   consonant = new Node1('C');
   Node1 *tv = vowel,*tc=consonant;
   for(Node1 *temp=head;temp;){
      Node1 *tt = temp->next1;
      if(isVowel(temp->var1)){
         insertAfter(&tv,temp);
         tv = tv->next1;
      }
   Else {
         insertAfter(∓tc,temp);
         tc=tc->next1;
      }
   temp = tt;
   }
   tv->next1 = consonant->next1;
   tv = vowel;
   vowel=vowel->next1;
   delete tv;
   return vowel;
}
int main(){
   char array1[] = {'A','M','A','Z','O','N'};
   Node1 *head = make_list(array1,sizeof(array1)/sizeof(array1[0]));
   print_list(head);
   head = groupByVowels(head);
   print_list(head);
}

आउटपुट

A--M--A--Z--O--N--END
A--A--O--M--Z--N--END

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है। लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं। अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि ह

  1. C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स गिनें

    हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य एक सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की गिनती की गणना करना है। सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लि

  1. सी ++ में रिकर्सन का उपयोग करके लिंक की गई सूची के वैकल्पिक नोड्स प्रिंट करें

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