이 문제에서는 두 개의 값과 포인터로 구성된 노드가 있는 연결 목록이 제공됩니다. 우리의 임무는 연결 목록에서 노드의 더 작은 요소의 합을 찾는 프로그램을 만드는 것입니다.
여기, 연결 목록에 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
이 문제를 해결하기 위해 우리는 각 노드를 방문하여 X와 Y의 최소값을 찾는 직선적 접근 방식을 사용할 것입니다. 그런 다음 이를 sum 변수에 추가하고 노드가 종료되면 sum을 반환합니다.
알고리즘
초기화 - 합계 =0
1단계 − 목록을 탐색하고 다음을 수행하십시오.
1.1단계 − 머리 → X와 머리 → 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