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

C++のリンクリストで偶数ノードと奇数ノードの合計を検索します


この問題では、リンクリストが提供されます。私たちのタスクは、リンクリスト内の偶数ノードと奇数ノードの合計を見つけることです。 。

問題を理解するために例を見てみましょう

Input : linked list : 3 -> 2 -> 5 -> 7 -> 1 -> 9
Output : evenSum = 2 ; oddSum = 25

説明

evenSum = 2
oddSum = 3 + 5 + 7 + 1 + 9 = 25

ソリューションアプローチ

問題を解決するための簡単なアプローチは、リンクリストをトラバースし、偶数または奇数の値をチェックして、それぞれの合計値に追加することです。

アルゴリズム

  • ステップ1 −リンクリストをトラバースします。

    • ステップ1.1 −現在のノードの値が偶数の場合は、evenSumに追加します。

    • ステップ1.2 −現在のノードの値が奇数の場合は、oddSumに追加します。

  • ステップ2 −oddSumとevenSumを返します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
struct Node {
   int data;
   Node* next;
};
void insertNode(Node** root, int item) {
   Node *ptr = *root, *temp = new Node;
   temp->data = item;
   temp->next = NULL;
   if (*root == NULL) 
      *root = temp;
   else {
      while (ptr->next != NULL)
         ptr = ptr->next;
      ptr->next = temp;
   }
}
bool isEven(int a){
   return (a % 2);
}
void findEvenAndOddSum(Node* root) {
   int oddSum = 0, evenSum = 0;
   Node* node = root;
   while (node != NULL) {
      if (isEven(node->data))
         evenSum += node->data;
      else 
         oddSum += node->data;
      node = node->next;
   }
   cout<<"Sum of nodes with even value is "<<evenSum<<endl;
   cout<<"Sum of nodes with odd value is "<<oddSum;
}
int main() {
   Node* root = NULL;
   insertNode(&root, 3);
   insertNode(&root, 2);
   insertNode(&root, 5);
   insertNode(&root, 7);
   insertNode(&root, 1);
   insertNode(&root, 9);
   insertNode(&root, 6);
   findEvenAndOddSum(root);
   return 0;
}

出力

Sum of nodes with even value is 25
Sum of nodes with odd value is 8

  1. C++の循環リンクリストでノードをカウントします

    ノードを含む循環リンクリストが与えられ、タスクは循環リンクリストに存在するノードの数を計算することです。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 以下のプログラムでは、単一リンクリストを循環リンクリストとして実装し、その中のノード数を計算しています。 例 Input − nodes-: 20, 1, 2, 3, 4, 5 Output − count of nodes are-: 6 Input &minus

  2. C++のバイナリツリーのリンクリスト

    二分木ルートと、最初のノードとしてヘッドを持つリンクリストがあるとします。リンクリスト内の先頭から始まるすべての要素が、バイナリツリーで接続されている下向きのパスに対応している場合はTrueを返す必要があり、そうでない場合はFalseを返す必要があります。したがって、ツリーが次のような場合- リンクリストが[1,4,2,6]の場合、出力はtrueになります。 これを解決するには、次の手順に従います- マップdpを定義する ソルブ()と呼ばれるメソッドを定義します。これはヘッド、ルート、フラグを取ります ヘッドがnullの場合はtrueを返し、ルートがnullの場合は