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

이 문제를 해결하기 위해 우리는 각 노드를 방문하여 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