কম্পিউটার টিউটোরিয়াল

লিংকড লিস্টে জোড় ও বিজোড় নোডের যোগফল খুঁজে বের করা C++-এ

এই সমস্যায়, আমাদের একটি লিংকড লিস্ট দেওয়া আছে। আমাদের কাজ হল লিংকড লিস্টে জোড় ও বিজোড় নোডের যোগফল খুঁজে বের করা।

উদাহরণ

সমস্যাটি বুঝতে একটি উদাহরণ নিই:

ইনপুট : লিংকড লিস্ট : 3 → 2 → 5 → 7 → 1 → 9
আউটপুট : evenSum = 2 ; oddSum = 25

ব্যাখ্যা:

evenSum = 2
oddSum = 3 + 5 + 7 + 1 + 9 = 25

সমাধানের পদ্ধতি

এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল লিংকড লিস্টটি ট্রাভার্স করা এবং প্রতিটি নোডের মান জোড় কি বিজোড় তা যাচাই করে তাদের সংশ্লিষ্ট যোগফলে যোগ করা।

অ্যালগরিদম

  • স্টেপ ১ − লিংকড লিস্টটি ট্রাভার্স করুন।

    • স্টেপ ১.১ − যদি বর্তমান নোডের মান জোড় হয়, তবে তা evenSum-এ যোগ করুন।

    • স্টেপ ১.২ − যদি বর্তমান নোডের মান বিজোড় হয়, তবে তা oddSum-এ যোগ করুন।

  • স্টেপ ২ − 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 == 0);
}

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 8
Sum of nodes with odd value is 25
  1. সি++-এ সার্কুলার লিংকড লিস্টের নোডগুলোর যোগফল (Sum)

  2. সি++-এ লিংকড লিস্টের অল্টারনেট নোডগুলোর যোগফল

  3. C++-এ সার্কুলার লিঙ্কড লিস্টে নোড গণনা

  4. C++-এ লিংকড লিস্ট বাইনারি ট্রিতে আছে কিনা চেক করা