이 문제에서는 연결 목록이 제공됩니다. 우리의 임무는 연결 목록에서 짝수 노드와 홀수 노드의 합을 찾는 것입니다. .
문제를 이해하기 위해 예를 들어 보겠습니다.
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