इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची में सम और विषम नोड्स का योग ज्ञात करना है ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
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 - यदि वर्तमान नोड का मान सम है, तो इसे सम में जोड़ें।
-
चरण 1.2 - यदि वर्तमान नोड का मान विषम है, तो इसे विषम राशि में जोड़ें।
-
-
चरण 2 - विषम राशि और सम राशि लौटाएं।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#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