এই সমস্যাতে, আমাদের একটি সিঙ্গলি লিংকড লিস্ট দেওয়া আছে। আমাদের কাজ হলো সিঙ্গল লিংকড লিস্টে সর্বনিম্ন ও সর্বোচ্চ উপাদান বের করা।
উদাহরণ দিয়ে সমস্যা বোঝা যাক,
ইনপুট
Linked List: 5 -> 2 -> 7 -> 3 -> 9 -> 1 -> 4
আউটপুট
Smallest element = 1 Largest element = 9
সমাধানের পদ্ধতি
এই সমস্যার একটি সহজ সমাধান হলো লিংকড লিস্টটি নোড বাই নোড ট্রাভার্স (traverse) করা। এর আগে, আমরা 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