इस समस्या में, हमें एक सिंगल लिंक्ड लिस्ट दी गई है। हमारा काम सिंगल लिंक्ड लिस्ट में सबसे छोटे और सबसे बड़े तत्वों को खोजना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
linked List : 5 -> 2 -> 7 -> 3 ->9 -> 1 -> 4
आउटपुट
Smallest element = 1 Largest element = 9
समाधान दृष्टिकोण
समस्या का एक सरल समाधान नोड द्वारा लिंक की गई सूची को ट्रैवर्स करके उपयोग कर रहा है। इससे पहले, हम maxElement और minElement को पहले एलिमेंट यानी हेड -> डेटा के वैल्यू में इनिशियलाइज़ करेंगे। फिर हम लिंक्डलिस्ट एलिमेंट बाय एलिमेंट को ट्रैस करेंगे। और फिर वर्तमान नोड के मान की तुलना 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