ในปัญหานี้ เราได้รับรายการเชื่อมโยงที่มีโหนดที่ประกอบด้วยสองค่าและตัวชี้ งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมขององค์ประกอบที่มีขนาดเล็กกว่าของโหนดในรายการที่เชื่อมโยง
ที่นี่ ในรายการที่เชื่อมโยง เรามีสององค์ประกอบคือ X และ Y โปรแกรมจะค้นหาค่าต่ำสุดของ x และ y เพิ่มองค์ประกอบขั้นต่ำจากโหนดทั้งหมดซึ่งเป็นผลลัพธ์ที่จำเป็น
ป้อนข้อมูล −
(5,2)->(7,9)->(6,3)->(36,24)->(19,26)->null
ผลผลิต −
55
คำอธิบาย −
ลองหาค่าต่ำสุดของ X และ Y จากแต่ละโหนดกัน −
node1 - mini = 5 node2 - mini = 7 node3 - mini = 3 node4 - mini = 24 node5 - mini = 19 Sum = 55
ในการแก้ปัญหานี้ เราจะใช้แนวทาง straigth forward โดยไปที่แต่ละโหนดและหาค่าต่ำสุดของ X และ Y จากนั้นเพิ่มลงในตัวแปร sum แล้วส่งคืนผลรวมเมื่อโหนดสิ้นสุด
อัลกอริทึม
เริ่มต้น − ผลรวม =0
ขั้นที่ 1 − สำรวจรายการและทำสิ่งต่อไปนี้:
ขั้นตอนที่ 1.1 − หาค่า head ขั้นต่ำ → X และ head → Y.
ขั้นตอนที่ 1.2 − เพิ่มขั้นต่ำให้กับผลรวม
ขั้นตอนที่ 2 − ผลตอบแทนรวม
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของอัลกอริทึมของเรา -
#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