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

ผลรวมขององค์ประกอบที่น้อยกว่าของโหนดใน Linked List ใน C++

ในปัญหานี้ เราได้รับ linked list ที่โหนดประกอบด้วย 2 ค่าและ pointer ภารกิจคือการสร้างโปรแกรมเพื่อหาผลรวมขององค์ประกอบที่น้อยกว่าของโหนดใน linked list

ที่นี่ ใน linked list เรามี 2 องค์ประกอบคือ X และ Y โปรแกรมจะหาค่าต่ำสุดของ x และ y ค่าต่ำสุดจากทุกโหนดจะถูกรวมกัน ซึ่งเป็นผลลัพธ์ที่ต้องการ

อินพุต

(5,2)→(7,9)→(6,3)→(36,24)→(19,26)→null

เอาต์พุต

55

คำอธิบาย

ให้หาค่าต่ำสุดของ X และ Y จากแต่ละโหนด −

node1 - min = 5
node2 - min = 7
node3 - min = 3
node4 - min = 24
node5 - min = 19
Sum = 55

เพื่อแก้ปัญหานี้ เราจะใช้วิธีตรงไปตรงมาโดยเยี่ยมชมแต่ละโหนดและหาค่าต่ำสุดของ X และ Y แล้วบวกเข้าไปในตัวแปร sum และคืนค่า sum เมื่อจบโหนด

อัลกอริทึม

Initialize − sum = 0

Step 1 − วนลูปผ่านลิสต์และทำดังนี้:

Step 1.1 − หาค่าต่ำสุดของ head→X และ head→Y

Step 1.2 − บวกค่าต่ำสุดเข้าไปใน sum

Step 2 − คืนค่า Sum

ตัวอย่างโปรแกรม

#include <iostream>
using namespace std;

struct Node {
    int X;
    int Y;
    Node* next;
};

void addNode(Node** head, int x, int y) {
    Node* ptr = *head;
    Node* temp = new Node();
    temp->X = x;
    temp->Y = y;
    temp->next = NULL;
    if (*head == NULL)
        *head = temp;
    else {
        while (ptr->next != NULL)
            ptr = ptr->next;
        ptr->next = temp;
    }
}

int findMinSum(Node* head) {
    int sum = 0;
    while (head != NULL) {
        sum += min(head->X, head->Y);
        head = head->next;
    }
    return sum;
}

int main() {
    Node* head = NULL;
    addNode(&head, 5, 2);
    addNode(&head, 7, 9);
    addNode(&head, 6, 3);
    addNode(&head, 36, 24);
    addNode(&head, 19, 26);
    cout << "The sum of smaller elements of nodes in Linked List is " << findMinSum(head) << endl;
    return 0;
}

เอาต์พุต

The sum of smaller elements of nodes in Linked List is 55