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