Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาผลรวมของโหนดเลขคู่และเลขคี่ใน Linked List ด้วย C++

ในปัญหานี้ เราได้รับข้อมูลเป็น Linked List งานของเราคือ การหาผลรวมของโหนดที่มีค่าเป็นเลขคู่และเลขคี่ ใน Linked List นั้น

ตัวอย่างเพื่อความเข้าใจ

Input : linked list : 3 → 2 → 5 → 7 → 1 → 9 
Output : evenSum = 2 ; oddSum = 25

คำอธิบาย

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

แนวทางแก้ปัญหา

วิธีการที่ง่ายที่สุดคือการเดินผ่าน (traverse) Linked List และตรวจสอบค่าของแต่ละโหนดว่าเป็นเลขคู่หรือเลขคี่ จากนั้นนำไปบวกในตัวแปรผลรวมที่เกี่ยวข้อง

อัลกอริทึม

  • ขั้นตอนที่ 1 − เดินผ่าน Linked List ทั้งหมด

    • ขั้นตอนที่ 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 == 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