C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++プログラムの各位置で最大要素を選択して、2つのリンクリストからリンクリストを作成します


このチュートリアルでは、指定されたリンクリストから新しいリンクリストを作成するプログラムを作成します。

同じサイズの2つのリンクリストを指定しました。2つのリンクリストから、2つのリンクリストの最大数を使用して新しいリンクリストを作成する必要があります。

問題を解決するための手順を見てみましょう。

  • 構造体ノードを記述します。

  • 同じサイズの2つのリンクリストを作成します。

  • リンクリストを繰り返し処理します。

    • 2つのリンクリストノードから最大数を見つけます。

    • 最大数で新しいノードを作成します。

    • 新しいノードを新しいリンクリストに追加します。

  • 新しいリンクリストを印刷します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node* next;
};
void insertNewNode(Node** root, int item) {
   Node *ptr, *temp;
   temp = new Node;
   temp->data = item;
   temp->next = NULL;
   if (*root == NULL) {
      *root = temp;
   }
   else {
      ptr = *root;
      while (ptr->next != NULL) {
         ptr = ptr->next;
      }
      ptr->next = temp;
   }
}
void printLinkedList(Node* root) {
   while (root != NULL) {
      cout << root->data << " -> ";
      root = root->next;
   }
   cout << "NULL" << endl;
}
Node* generateNewLinkedList(Node* root1, Node* root2) {
   Node *ptr1 = root1, *ptr2 = root2;
   Node* root = NULL;
   while (ptr1 != NULL) {
      int currentMax = ((ptr1->data < ptr2->data) ? ptr2->data : ptr1->data);
      if (root == NULL) {
         Node* temp = new Node;
         temp->data = currentMax;
         temp->next = NULL;
         root = temp;
      }
      else {
         insertNewNode(&root, currentMax);
      }
      ptr1 = ptr1->next;
      ptr2 = ptr2->next;
   }
   return root;
}
int main() {
   Node *root1 = NULL, *root2 = NULL, *root = NULL;
   insertNewNode(&root1, 1);
   insertNewNode(&root1, 2);
   insertNewNode(&root1, 3);
   insertNewNode(&root1, 4);
   insertNewNode(&root2, 3);
   insertNewNode(&root2, 1);
   insertNewNode(&root2, 2);
   insertNewNode(&root2, 4);
   root = generateNewLinkedList(root1, root2);
   printLinkedList(root);
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

3 -> 2 -> 3 -> 4 -> NULL

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++の2Dマトリックスからリンクリストを作成します

    行列が1つあるとすると、再帰的アプローチを使用して2Dリンクリストに変換する必要があります。 リストには右ポインタと下ポインタがあります。 したがって、入力が次のような場合 10 20 30 40 50 60 70 80 90 出力はになります これを解決するには、次の手順に従います- 関数make_2d_list()を定義します。これは、行列mat、i、j、m、n、を取ります。 iとjが行列の境界にない場合、- nullを返す temp:=値mat [i、j]で新しいノードを作成します 温度

  2. C++で二重リンクリストのサイズを見つけるプログラム

    この問題では、二重にリンクされたリストが与えられます。私たちのタスクは、C++で二重リンクリストのサイズを見つけるプログラムを作成することです。 二重リンクリストは特殊なタイプのリンクリストであり、単一リンクリストと比較して、順方向と逆方向の両方の方法で簡単にナビゲーションできます。以下は、二重リンクリストの概念を理解するための重要な用語です。 リンク-リンクリストの各リンクには、要素と呼ばれるデータを格納できます。 次へ-リンクリストの各リンクには、次と呼ばれる次のリンクへのリンクが含まれています。 前-リンクリストの各リンクには、前と呼ばれる前のリンクへのリンクが含ま