इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है। हमारा कार्य लिंक्ड लिस्ट में सम और विषम नोड्स का योग ज्ञात करना है।
उदाहरण से समझते हैं:
इनपुट: लिंक्ड लिस्ट: 3 → 2 → 5 → 7 → 1 → 9 आउटपुट: 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