এই সমস্যায়, আমরা একটি লিঙ্ক তালিকা দেওয়া হয়. আমাদের কাজ হল একটি লিঙ্ক করা তালিকায় জোড় এবং বিজোড় নোডের যোগফল খুঁজে বের করা .
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
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৷ − যদি বর্তমান নোডের মান বিজোড় হয়, তাহলে এটিকে 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