ในปัญหานี้ เราได้รับ 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