इस ट्यूटोरियल में, हम लिंक्ड लिस्ट का उपयोग करके रन लेंथ एन्कोडिंग को लागू करने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें एक लिंक्ड लिस्ट दी जाएगी। हमारा कार्य भी रन लेंथ एन्कोडिंग का उपयोग करके लिंक्ड सूची के तत्वों को एन्कोड करना है।
उदाहरण के लिए, यदि लिंक की गई सूची के तत्व "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