কম্পিউটার

লিঙ্ক করা তালিকা ব্যবহার করে রান দৈর্ঘ্য এনকোডিং বাস্তবায়নের জন্য 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. C++ ব্যবহার করে লিঙ্ক করা তালিকার জন্য সাজান মার্জ করুন।

  2. C++ ব্যবহার করে দুটি সাজানো লিঙ্কযুক্ত তালিকা একত্রিত করুন।

  3. পুনরাবৃত্তি ব্যবহার করে একটি স্ট্রিংয়ের দৈর্ঘ্যের জন্য C++ প্রোগ্রাম

  4. C++ এ লিঙ্কড লিস্ট ব্যবহার করে দুটি বহুপদ যোগ করা হচ্ছে।