이 문제에서는 두 개의 값과 포인터로 구성된 노드가 있는 연결 목록이 제공됩니다. 우리의 임무는 연결 목록에서 노드의 더 작은 요소의 합을 찾는 프로그램을 만드는 것입니다.
여기, 연결 목록에 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