C ++
 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. 再帰を使用した文字列の長さのC++プログラム

    文字列で与えられ、タスクは、ユーザー定義関数または組み込み関数を使用して、与えられた文字列の長さを計算することです。 文字列の長さは、2つの異なる方法を使用して計算できます- ユーザー定義関数の使用 −この場合、「\ o」が見つかるまで文字列全体をトラバースし、関数を再帰的に呼び出して値を1ずつ増やし続けます。 ユーザー組み込み関数の使用 −文字列の長さを計算するために使用される「string.h」ヘッダーファイル内に定義された組み込み関数strlen()があります。この関数は、文字列型の単一の引数を取り、長さとして整数値を返します。 例 Input-: str[] = "tu

  2. C++のリンクリストを使用して2つの多項式を追加します。

    この概念をよりよく理解するために、最初に必要なすべての基本的な内容をブラッシュアップしましょう。 リンクリスト リストのノードにオブジェクトとして各要素を格納するデータ構造です。すべてのメモには、2つの部分のデータハンと次のノードへのリンクが含まれています。 多項式 は変数と係数で構成される数式です。たとえば、x ^ 2-4x + 7 多項式リンクリスト 、多項式の係数と指数は、リストのデータノードとして定義されます。 リンクリストとして保存されている2つの多項式を追加します。同じ累乗の変数の係数を追加する必要があります。リンクリストノードには3つのメンバーが含まれ、係数値は次のノー