이 문제에서는 단일 연결 목록이 제공됩니다. 우리의 임무는 단일 연결 리스트에서 가장 작은 요소와 가장 큰 요소를 찾는 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
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