Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 단일 연결 목록에서 가장 작은 요소와 가장 큰 요소 찾기

<시간/>

이 문제에서는 단일 연결 목록이 제공됩니다. 우리의 임무는 단일 연결 리스트에서 가장 작은 요소와 가장 큰 요소를 찾는 것입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

linked List : 5 -> 2 -> 7 -> 3 ->9 -> 1 -> 4

출력

Smallest element = 1
Largest element = 9

솔루션 접근 방식

문제에 대한 간단한 솔루션은 연결 목록 노드를 노드별로 순회하여 사용하는 것입니다. 그 전에 maxElement와 minElement를 첫 번째 요소, 즉 head -> data의 값으로 초기화합니다. 그런 다음 링크드리스트 요소를 요소별로 탐색합니다. 그리고 현재 노드의 값을 maxElement와 비교하여 더 큰 값을 maxElement 변수에 저장합니다. minElement에 더 작은 값을 저장하려면 동일한 작업을 수행합니다. 순회가 완료되면 두 값을 모두 인쇄합니다.

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void printLargestSmallestLinkedList(struct Node* head) {
   int maxElement = INT_MIN;
   int minElement = INT_MAX;
   while (head != NULL) {
      if (minElement > head->data)
         minElement = head->data;
      if (maxElement < head->data)
         maxElement = head->data;
      head = head->next;
   }
   cout<<"Smallest element in the linked list is : "<<minElement<<endl;
   cout<<"Largest element in the linked list is : "<<maxElement<<endl;
}
void push(struct Node** head, int data) {
   struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
   newNode->data = data;
   newNode->next = (*head);
   (*head) = newNode;
}
int main() {
   struct Node* head = NULL;
   push(&head, 5);
   push(&head, 2);
   push(&head, 7);
   push(&head, 3);
   push(&head, 9);
   push(&head, 1);
   push(&head, 4);
   printLargestSmallestLinkedList(head);
   return 0;
}

출력

Smallest element in the linked list is : 1
Largest element in the linked list is : 9