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

लिंक्ड सूचियों का उपयोग करके रन लेंथ एन्कोडिंग को लागू करने के लिए C++ प्रोग्राम


इस ट्यूटोरियल में, हम लिंक्ड लिस्ट का उपयोग करके रन लेंथ एन्कोडिंग को लागू करने के लिए एक प्रोग्राम पर चर्चा करेंगे।

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

उदाहरण के लिए, यदि लिंक की गई सूची के तत्व "a->a->a->a->a" हैं तो रन लेंथ एन्कोडिंग में उन्हें "a → 5" से बदल दिया जाएगा।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//structuring linked list node
struct Node {
   char data;
   struct Node* next;
};
//creating a new node
Node* newNode(char data){
   Node* temp = new Node;
   temp->data = data;
   temp->next = NULL;
   return temp;
}
//adding nodes to the list
void add_node(struct Node* head_ref, char new_data){
   struct Node* new_node = newNode(new_data);
   struct Node* last = head_ref;
   if (head_ref == NULL) {
      head_ref = new_node;
      return;
   }
   while (last->next != NULL)
      last = last->next;
   last->next = new_node;
   return;
}
void print_llist(Node* node){
   while (node != NULL) {
      cout << node->data << " ";
      node = node->next;
   }
}
//encoding the given list
void llist_encode(Node* head){
   Node* p = head;
   Node* temp = newNode(p->data);
   char c = p->data;
   p = p->next;
   int count = 1;
   while (p != NULL) {
      char x = p->data;
      if (c == x)
         count++;
      else {
         if (count > 1) {
            if (count > 9)
               add_node(temp, '0' + (count / 10));
            add_node(temp, '0' + (count % 10));
         }
         count = 1;
         add_node(temp, x);
         c = x;
      }
      p = p->next;
   }
   if (count != 0)
      add_node(temp, '0' + count);
   print_llist(temp);
}
int main(){
   Node* head = newNode('a');
   head->next = newNode('a');
   head->next->next = newNode('b');
   head->next->next->next = newNode('b');
   head->next->next->next->next = newNode('r');
   head->next->next->next->next->next = newNode('r');
   llist_encode(head);
   return 0;
}

आउटपुट

a 2 b 2 r 2

  1. सी ++ का उपयोग करके दो क्रमबद्ध लिंक्ड सूचियों को मर्ज करें।

    समस्या कथन 2 क्रमबद्ध एकल लिंक्ड सूची को देखते हुए। दो क्रमबद्ध लिंक्ड सूचियों को मर्ज करने के लिए एक फ़ंक्शन लिखें List1: 10->15->17->20 List2: 5->9->13->19 Result: 5->9->10->13->15->17->19->20 एल्गोरिदम 1. Traverse both lists    1.1. If list1->d

  1. रिकर्सन का उपयोग कर एक स्ट्रिंग की लंबाई के लिए सी ++ प्रोग्राम

    स्ट्रिंग और कार्य के साथ दिए गए उपयोगकर्ता परिभाषित फ़ंक्शन या इन-बिल्ट फ़ंक्शन का उपयोग करके दिए गए स्ट्रिंग की लंबाई की गणना करना है। एक स्ट्रिंग की लंबाई की गणना दो अलग-अलग तरीकों से की जा सकती है - उपयोगकर्ता परिभाषित फ़ंक्शन का उपयोग करना - इसमें \o मिलने तक पूरी स्ट्रिंग को ट्रैवर्स करें और

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

    इस अवधारणा को बेहतर ढंग से समझने के लिए आइए सबसे पहले आवश्यक सभी बुनियादी सामग्री को ब्रश करें। लिंक की गई सूची एक डेटा संरचना है जो सूची के नोड में प्रत्येक तत्व को एक वस्तु के रूप में संग्रहीत करती है। प्रत्येक नोट में दो भाग डेटा होते हैं और अगले नोड से लिंक होते हैं। बहुपद एक गणितीय व्यंजक है