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

ผลรวมขององค์ประกอบที่เล็กกว่าของโหนดในรายการที่เชื่อมโยงใน C++


ในปัญหานี้ เราได้รับรายการเชื่อมโยงที่มีโหนดที่ประกอบด้วยสองค่าและตัวชี้ งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมขององค์ประกอบที่มีขนาดเล็กกว่าของโหนดในรายการที่เชื่อมโยง

ที่นี่ ในรายการที่เชื่อมโยง เรามีสององค์ประกอบคือ 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