এই সমস্যায়, আমরা একটি একক লিঙ্ক তালিকা দেওয়া হয়. আমাদের কাজ হল একক লিঙ্কযুক্ত তালিকায় সবচেয়ে ছোট এবং বৃহত্তম উপাদানগুলি খুঁজে বের করা৷
৷সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
linked List : 5 -> 2 -> 7 -> 3 ->9 -> 1 -> 4
আউটপুট
Smallest element = 1 Largest element = 9
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হল লিঙ্ক করা তালিকা নোডবাই নোড অতিক্রম করে। এর আগে, আমরা maxElement এবং minElement কে প্রথম এলিমেন্টের মান অর্থাৎ head -> ডেটার সাথে শুরু করব। তারপর আমরা এলিমেন্ট দ্বারা লিঙ্কডলিস্ট এলিমেন্টকে অতিক্রম করব। এবং তারপর 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